From b8c8fb5f40eb04583f4430dc47a652fe1ba8dddb Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Fri, 23 Dec 2016 11:03:15 +0300 Subject: [PATCH 001/857] Init russian translation. --- README-ru.md | 2018 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2018 insertions(+) create mode 100644 README-ru.md diff --git a/README-ru.md b/README-ru.md new file mode 100644 index 0000000000..5b71294f49 --- /dev/null +++ b/README-ru.md @@ -0,0 +1,2018 @@ +# Google Interview University + +Оригинальная версия: [Английский](README.md) + +## Что это? + +Это мой учебный план рассчитанный на несколько месяцев для веб-разарботчиков, не имеющих образования в CS и планирующих +работать разработчиками программного обеспечения в компании Google. + +![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) + +This long list has been extracted and expanded from **Google's coaching notes**, so these are the things you need to know. +There are extra items I added at the bottom that may come up in the interview or be helpful in solving a problem. Many items are from +Steve Yegge's "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" and are reflected +sometimes word-for-word in Google's coaching notes. + +I've pared down what you need to know from what Yegge recommends. I've altered Yegge's requirements +from information received from my contact at Google. This is meant for **new software engineers** or those switching from +software/web development to software engineering (where computer science knowledge is required). If you have +many years of experience and are claiming many years of software engineering experience, expect a harder interview. +[Read more here](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). + +If you have many years of software/web development experience, note that Google views software engineering as +different from software/web development and they require computer science knowledge. + +If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security). + +--- + +## Table of Contents + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Get in a Googley Mood](#get-in-a-googley-mood) +- [Did I Get the Job?](#did-i-get-the-job) +- [Follow Along with Me](#follow-along-with-me) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Google](#about-google) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [The Daily Plan](#the-daily-plan) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Papers](#papers) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [Implement system routines](#implement-system-routines) + - [String searching & manipulations](#string-searching--manipulations) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Dynamic Programming](#dynamic-programming) + - [Compilers](#compilers) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory) + - [Parity & Hamming Code](#parity--hamming-code) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Tries](#tries) + - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming) + - [Geometry, Convex hull](#geometry-convex-hull) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) + - [Go](#go) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) + +--- + +## Why use it? + +I'm following this plan to prepare for my Google interview. I've been building the web, building +services, and launching startups since 1997. I have an economics degree, not a CS degree. I've +been very successful in my career, but I want to work at Google. I want to progress into larger systems +and get a real understanding of computer systems, algorithmic efficiency, data structure performance, +low-level languages, and how it all works. And if you don't know any of it, Google won't hire you. + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. +Every data structure I've ever used was built into the language, and I didn't know how they worked +under the hood at all. I've never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and +thousands of associative arrays, but I've never created data structures from scratch. + +But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me +months. If you are familiar with a lot of this already it will take you a lot less time. + +## How to use it + +Everything below is an outline, and you should tackle the items in order from top to bottom. + +I'm using Github's special markdown flavor, including tasks lists to check progress. + +- [x] Create a new branch so you can check items like this, just put an x in the brackets: [x] + + + Fork a branch and follow the commands below + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/google-interview-university` + +`git fetch --all` + + Mark all boxes with X after you completed your changes + +`git add . ` + +`git commit -m "Marked x" ` + +`git rebase jwasham/master ` + +`git push --force ` + +[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## Get in a Googley Mood + +Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. + +[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf) + +## Did I Get the Job? + +I'm in the queue right now. Hope to interview soon. + + Thanks for the referral, JP. + +## Follow Along with Me + +My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) + +I'm on the journey, too. Follow along: + +- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/) +- Twitter: [@googleyasheck](https://twitter.com/googleyasheck) +- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor) +- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck) +- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham) + +![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) + +## Don't feel you aren't smart enough +- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## About Google + +- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) +- [ ] How Search Works: + - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) + - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) + - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) + - [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) + - [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) +- [ ] Series: + - [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) + - [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) + - [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) + - [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) +- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) +- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) + +## About Video Resources + +Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. + + I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. + I like using university lectures. + + +## Interview Process & General Interview Prep + +- [ ] Videos: + - [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) + - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) + - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) + - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) + - [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8) + +- [ ] Articles: + - [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) + - [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) + - all the things he mentions that you need to know are listed below + - [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) + - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) + +- [ ] Prep Courses: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + +- [ ] Additional (not suggested by Google but I added): + - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) + - [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) + - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) + - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) + - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) + - [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [ ] How to Get a Job at the Big 4: + - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/) + +## Pick One Language for the Interview + +I wrote this short article about it: [Important: Pick One Language for the Google Interview](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) + +You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices: + +- C++ +- Java +- Python + +You could also use these, but read around first. There may be caveats: + +- JavaScript +- Ruby + +You need to be very comfortable in the language and be knowledgeable. + +Read more about choices: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ +- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview + +[See language resources here](programming-language-resources.md) + +You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. + +## Book List + +This is a shorter list than what I used. This is abbreviated to save you time. + +### Interview Prep + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C++ and Java + - recommended in Google candidate coaching + - this is a good warm-up for Cracking the Coding Interview + - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) + - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". + +If you have tons of extra time: + +- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) + - all code is in C++, very good if you're looking to use C++ in your interview + - a good book on problem solving in general. + +### Computer Architecture + +If short on time: + +- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization + +If you have more time (I want this book): + +- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) + - For a richer, more up-to-date (2011), but longer treatment + +### Language Specific + +**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. + +If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. +**You can skip all the video lectures in this project**, unless you'd like a review. + +[Additional language-specific resources here.](programming-language-resources.md) + +### C++ + +I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. + +### Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - videos with book content (and Sedgewick!): + - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) + - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) + +OR: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - by Goodrich, Tamassia, Goldwasser + - used as optional text for CS intro course at UC Berkeley + - see my book report on the Python version below. This book covers the same topics. + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ + + +### Optional Books + +**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** + +- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace + (and important) graph problems are – they should be part of every working programmer's toolkit. The book also + covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half + of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve + them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a + great way to learn how to identify hundreds of problem types." + - Can rent it on kindle + - Half.com is a great resource for textbooks at good prices. + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." + - Half.com is a great resource for textbooks at good prices. + - aka CLR, sometimes CLRS, because Stein was late to the game + +- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. + +- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ + - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. + - Would rather spend time on coding problems from another book or online coding problems. + + +## Before you Get Started + +This list grew over many months, and yes, it kind of got out of hand. + +Here are some mistakes I made so you'll have a better experience. + +### 1. You Won't Remember it All + +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards so I could review. + +Read please so you won't make my mistakes: + +[Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/) + +### 2. Use Flashcards + +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. + +I made a mobile-first website so I could review on my phone and tablet, wherever I am. + +Make your own for free: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. + +**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. 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. + +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) + +### 3. Review, review, review + +I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. + +Take a break from programming problems for a half hour and go through your flashcards. + +### 4. Focus + +There are a lot of distractions that can take up valuable time. Focus and concentration are hard. + +## What you won't see covered + +This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent +technologies but were not mentioned in those notes: + +- SQL +- Javascript +- HTML, CSS, and other front-end technologies + +## The Daily Plan + +Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. + +Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: +- C - using structs and functions that take a struct * and something else as args. +- C++ - without using built-in types +- C++ - using built-in types, like STL's std::list for a linked list +- Python - using built-in types (to keep practicing Python) +- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements +- You may do Java or something else, this is just my thing. + +You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). + +Why code in all of these? +- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) +- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) +- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) + +I may not have time to do all of these for every subject, but I'll try. + +You can see my code here: + - [C] (https://github.com/jwasham/practice-c) + - [C++] (https://github.com/jwasham/practice-cpp) + - [Python] (https://github.com/jwasham/practice-python) + +You don't need to memorize the guts of every algorithm. + +Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. + +## Prerequisite Knowledge + +- [ ] **Learn C** + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - [answers to questions](https://github.com/lekkas/c-algorithms) + +- [ ] **How computers process a program:** + - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + +## Algorithmic complexity / Big-O / Asymptotic analysis +- nothing to implement +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) +- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + + + If some of the lectures are too mathy, you can jump down to the bottom and + watch the discrete mathematics videos to get the background knowledge. + +## Data Structures + +- ### Arrays + - Implement an automatically resizing vector. + - [ ] Description: + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation. + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] Will not implement. Implementing with array is trivial. + +- ### Queue + - [ ] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) + - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) + - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] round to next power of 2: + - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [ ] swap values: + - [Swap](http://bits.stephan-brumme.com/swap.html) + - [ ] absolute value: + - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - BFS (breadth-first search) + - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - level order (BFS, using queue) + time complexity: O(n) + space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS (depth-first search) + - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - notes: + time complexity: O(n) + space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap + - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable. + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) + - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) + - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above. + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) + - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes from Yegge: + - There are three basic ways to represent a graph in memory: + - objects and pointers + - matrix + - adjacency list + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none. + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Yegge: If you get a chance, try to study up on fancier algorithms: + - [ ] Dijkstra's algorithm - see above - 6.006 + - [ ] A* + - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +You'll get more graph practice in Skiena's book (see Books section below) and the interview books + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - when it is appropriate to use it + - how is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): + - Can skip this if you have a great grasp of OO and OO design practices. + - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] SOLID OOP Principles: + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) + - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - difference between processes and threads + - processes + - threads + - locks + - mutexes + - semaphores + - monitors + - how they work + - deadlock + - livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Papers + - These are Google papers and well-known papers. + - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. + - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) + - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) + - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 + - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? + - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) + - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available + - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [ ] 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) + - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) + - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) + - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) + - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) + - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - in an OS, how it works + - can be gleaned from Operating System videos + +- ### Implement system routines + - understand what lies beneath the programming APIs you use + - can you implement them? + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) + - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +--- + +## System Design, Scalability, Data Handling +- **You can expect system design questions if you have 4+ years of experience.** +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this. +- Considerations from Yegge: + - scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - system design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Paxos Consensus algorithm: + - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the Video Series section. +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - define the use cases, with interviewer's help + - suggest additional features + - remove items that interviewer deems out of scope + - assume high availability is required, add as a use case + 2. Think about constraints: + - ask how many requests per month + - ask how many requests per second (they may volunteer it or make you do the math) + - estimate reads vs. writes percentage + - keep 80/20 rule in mind when estimating + - how much data written per second + - total storage required over 5 years + - how much data read per second + 3. Abstract design: + - layers (service, data, caching) + - infrastructure: load balancing, messaging + - rough overview of any key algorithm that drives the service + - consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a function to return the top k requests during past time interval]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) + - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) + - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) + - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) + - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) + - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) + - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) + - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) + - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) +- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) + - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) + - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) + - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) + - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) + - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) + - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) + - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) + - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) + - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) + - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- problem recognition, and where the right data structures and algorithms fit in +- gathering requirements for the problem +- talking your way through the problem like you will in the interview +- coding on a whiteboard or paper, not a computer +- coming up with time and space complexity for 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/) + +[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. + +![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) +- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) + +Challenge sites: +- [LeetCode](https://leetcode.com/) +- [TopCoder](https://www.topcoder.com/) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Codewars](http://www.codewars.com) +- [HackerRank](https://www.hackerrank.com/) +- [Codility](https://codility.com/programmers/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) + +Maybe: +- [Mock interviewers from big companies](http://www.gainlo.co/) + +## Once you're closer to the interview + +- [ ] Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) + +## Your Resume + +- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed + + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing Google product. +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? + +## Once You've Got The Job + +Congratulations! + +- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. These are my recommendations, not Google's. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + +- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) + - an oldie but a goodie +- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - a modern option +- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - a gentle introduction to design patterns +- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - aka the "Gang Of Four" book, or GOF + - the canonical design patterns book +- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) + - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) +- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) + +## Additional Learning + +- ### Dynamic Programming + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Compilers + - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Emacs and vi(m) + - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. + - [ ] bash + - [ ] cat + - [ ] grep + - [ ] sed + - [ ] awk + - [ ] curl or wget + - [ ] sort + - [ ] tr + - [ ] uniq + - [ ] [strace](https://en.wikipedia.org/wiki/Strace) + - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - [ ] more about Markov processes: + - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below. + +- ### Parity & Hamming Code (videos) + - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - [ ] Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - also see videos below + - make sure to watch information theory videos first + - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - also see videos below + - make sure to watch information theory videos first + - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - make sure to watch information theory videos first + - [ ] Computerphile (videos): + - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Networking + - **if you have networking experience or want to be a systems engineer, expect questions** + - otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [ ] [Garbage collection (Java); Augmenting data str (video)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) + - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) + - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [ ] [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [ ] [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [ ] [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [ ] [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ ] [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ ] [ActiveMQ](http://activemq.apache.org/) + - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [ ] [MessagePack](http://msgpack.org/index.html) + - [ ] [Avro](https://avro.apache.org/) + +- ### Fast Fourier Transform + - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - used to determine the similarity of documents + - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [ ] [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path. + - I read through code, but will not implement. + - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Balanced search trees + - Know least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. + - splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets. + - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - [ ] **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - [ ] **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc. + - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + - [ ] MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - [ ] **Red/black trees** + - these are a translation of a 2-3 tree (see below) + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used. + - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - [ ] **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - [ ] **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - [ ] **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - [ ] **B-Trees** + - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address. + - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - great for finding number of points in a rectangle or higher dimension object + - a good fit for k-nearest neighbors + - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) + - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + +- ### Math for Fast Processing + - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) + - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - see videos below + +- ### Machine Learning + - [ ] Why ML? + - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +- ### Go + - [ ] Videos: + - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) + - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) + - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) + - [ ] Books: + - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) + - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) + - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) + +-- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- [ ] **Union-Find** + - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- [ ] **More Dynamic Programming** (videos) + - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- [ ] **Advanced Graph Processing** (videos) + - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- [ ] **String Matching** + - [ ] Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - [ ] Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - [ ] Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- [ ] **Sorting** + + - [ ] Stanford lectures on sorting: + - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [ ] Steven Skiena lectures on sorting: + - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. "Netflix and skill" :P + +- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) + +- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- [ ] CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) + +- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) + +- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + From 195ad48c4fd0495216e8b6b17cfa0589936dd440 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sat, 24 Dec 2016 11:57:27 +0300 Subject: [PATCH 002/857] Header and the table of contents until optional items. --- README-ru.md | 167 ++++++++++++++++++++++++++------------------------- 1 file changed, 85 insertions(+), 82 deletions(-) diff --git a/README-ru.md b/README-ru.md index 5b71294f49..192d0d8ea9 100644 --- a/README-ru.md +++ b/README-ru.md @@ -4,97 +4,100 @@ ## Что это? -Это мой учебный план рассчитанный на несколько месяцев для веб-разарботчиков, не имеющих образования в CS и планирующих -работать разработчиками программного обеспечения в компании Google. +Это мой учебный план рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) +и планирующих работать инженерами-программистами (software engineer) в компании Google. ![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) -This long list has been extracted and expanded from **Google's coaching notes**, so these are the things you need to know. -There are extra items I added at the bottom that may come up in the interview or be helpful in solving a problem. Many items are from -Steve Yegge's "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" and are reflected -sometimes word-for-word in Google's coaching notes. +За основу учебного плана я взял список вопросов **Google's coaching notes** и значительно расширил его. Тут вы найдёте +много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка, их могут задавать на +интервью, так же они могут быть полезны в решении повседневных задач. Некоторые пункты я взял из поста Стива Йеги (Steve Yegge) +"[Получить работу в Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)", а некоторые слово в слово +соответствуют вопросам, разбираемых Google в их постах о подготовке. -I've pared down what you need to know from what Yegge recommends. I've altered Yegge's requirements -from information received from my contact at Google. This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. -[Read more here](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). +Я сократил тот объем знаний, который необходим, по сравнению с рекомендациями Йеги. Я изменил требования Йеги исходя +из той информации, которую мне предоставил мой знакомый из Google. Это важно для тех, кто сейчас еще **новички в +разработке программного обеспечения** или являются веб-разработчиками и планируют стать инженерами-программистами +(это та профессия где требуются знания в области CS). Если вы опытный разработчик, ожидайте что собеседование будет сложным. +[Подробнее](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). -If you have many years of software/web development experience, note that Google views software engineering as -different from software/web development and they require computer science knowledge. +Если вы обладаете многолетним опытом разработки ПО, помните, что Google разделяет понятия инженер-программист и +разработчик ПО/веб-разработчик. Первое требует знаний в области CS. -If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security). +Если вы хотите быть инженерами обеспечивающими надежность ПО или системными инженерами, то уделить внимание вопросом из +опционального списка(разделы сеть, безопасность). --- -## Table of Contents - -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Get in a Googley Mood](#get-in-a-googley-mood) -- [Did I Get the Job?](#did-i-get-the-job) -- [Follow Along with Me](#follow-along-with-me) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Google](#about-google) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) +## Содержание + +- [Что это?](#what-is-it) +- [Почему нужно это использовать?](#why-use-it) +- [Как пользоваться](#how-to-use-it) +- [Получи гугловское настроение](#get-in-a-googley-mood) +- [Получил ли я работу?](#did-i-get-the-job) +- [Двигайся вместе со мной](#follow-along-with-me) +- [Не переживай о том, что ты не достаточно умный](#dont-feel-you-arent-smart-enough) +- [О Google](#about-google) +- [О видео ресурсах](#about-video-resources) +- [Процесс собеседования & Основное в подготовке к интервью](#interview-process--general-interview-prep) +- [Выберите один язык для собеседования](#pick-one-language-for-the-interview) +- [Список книг](#book-list) +- [Перед тем как ты начнешь](#before-you-get-started) +- [Что еще не охвачено](#what-you-wont-see-covered) +- [Необходимые знания](#prerequisite-knowledge) +- [План на день](#the-daily-plan) +- [Сложность алгоритмов / Big-O / Асимптотический анализ](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Структуры данных](#data-structures) + - [Массив](#arrays) + - [Связанный список](#linked-lists) + - [Стек](#stack) + - [Очередь](#queue) + - [Хэш-таблица](#hash-table) +- [Дополнительно](#more-knowledge) + - [Двоичный поиск](#binary-search) + - [Битовые операции](#bitwise-operations) +- [Деревья](#trees) + - [Деревья](#trees---notes--background) + - [Двоичное дерево поиска: BSTs](#binary-search-trees-bsts) + - [Куча / Очередь с приоритетом / Двоичная куча](#heap--priority-queue--binary-heap) + - Сбалансированные деревья поиска (основная идея, без деталей) + - Обходы: прямой, симметричный, обратный, BFS, DFS +- [Сортировка](#sorting) + - выбором + - вставками + - пирамидальная + - быстрая + - слиянием +- [Графы](#graphs) + - ориентированные + - неориентированные + - матрица смежности + - лист смежности + - обходы: BFS, DFS +- [Еще больше знаний](#even-more-knowledge) + - [Рекурсия](#recursion) + - [Объектно-ориентированное программирование](#object-oriented-programming) + - [Шаблоны проектирования](#design-patterns) + - [Комбинаторика & Вероятность](#combinatorics-n-choose-k--probability) + - [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms) + - [Кэш](#caches) + - [Процессы и нити](#processes-and-threads) + - [Статьи](#papers) + - [Тестирование](#testing) + - [Планирование](#scheduling) + - [Реализация системных вызовов](#implement-system-routines) + - [Поиск в строке & манипуляции](#string-searching--manipulations) +- [Проектирование систем, Масштабируемость, Обработка данных](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Финальный обзор](#final-review) +- [Практические вопросы по программированию](#coding-question-practice) +- [Упражнения по программированию](#coding-exerciseschallenges) +- [Перед собеседованием](#once-youre-closer-to-the-interview) +- [Ваше резюме](#your-resume) +- [О чем нужно думать на собеседовании](#be-thinking-of-for-when-the-interview-comes) +- [Вопросы к собеседующим](#have-questions-for-the-interviewer) +- [После того как вы получили работу](#once-youve-got-the-job) + ---------------- Everything below this point is optional ---------------- From 98ab3637d2f00ce518c12349328eb9edd198242c Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sat, 24 Dec 2016 20:30:55 +0300 Subject: [PATCH 003/857] The table of contents is finished --- README-ru.md | 96 ++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/README-ru.md b/README-ru.md index 192d0d8ea9..6e0a47e5b3 100644 --- a/README-ru.md +++ b/README-ru.md @@ -25,7 +25,7 @@ разработчик ПО/веб-разработчик. Первое требует знаний в области CS. Если вы хотите быть инженерами обеспечивающими надежность ПО или системными инженерами, то уделить внимание вопросом из -опционального списка(разделы сеть, безопасность). +опционального списка (разделы сеть, безопасность). --- @@ -99,57 +99,57 @@ - [После того как вы получили работу](#once-youve-got-the-job) ----------------- Everything below this point is optional ---------------- +---------------- Все что ниже - опционально ---------------- -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Dynamic Programming](#dynamic-programming) - - [Compilers](#compilers) - - [Floating Point Numbers](#floating-point-numbers) +- [Дополнительные книги](#additional-books) +- [Дополнительное обучение](#additional-learning) + - [Динамическое программирование](#dynamic-programming) + - [Компиляторы](#compilers) + - [Числа с плавующей запятой](#floating-point-numbers) - [Unicode](#unicode) - - [Endianness](#endianness) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory) - - [Parity & Hamming Code](#parity--hamming-code) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Порядок следования байт](#endianness) + - [Emacs и vi(m)](#emacs-and-vim) + - [Командная строка Unix](#unix-command-line-tools) + - [Теория информации](#information-theory) + - [Четность & Код Хемминга](#parity--hamming-code) + - [Энтропия](#entropy) + - [Криптография](#cryptography) + - [Сжатие](#compression) + - [Сети](#networking) (if you have networking experience or want to be a systems engineer, expect questions) + - [Компьютерная безопасность](#computer-security) + - [Сборщики мусора](#garbage-collection) + - [Параллельное программирование](#parallel-programming) + - [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems) + - [Быстрое преобразование Фурье](#fast-fourier-transform) + - [Фильтр Блума](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Tries](#tries) - - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming) - - [Geometry, Convex hull](#geometry-convex-hull) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) + - [Локально-чувствительное хеширование](#locality-sensitive-hashing) + - [Дерево ван Эмде Боаса](#van-emde-boas-trees) + - [Дополнительные структуры данных](#augmented-data-structures) + - [Префиксные деревья](#tries) + - [N-арные (K-арные, M-арные) деревья](#n-ary-k-ary-m-ary-trees) + - [Сбалансированные деревья поиска](#balanced-search-trees) + - АВЛ деревья + - Splay-деревья + - Красно-черные деревья + - 2-3 деревья поиска + - 2-3-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) + - [Геометрия, Выпуклая оболочка](#geometry-convex-hull) + - [Дискретная математика](#discrete-math) + - [Машинное обучение](#machine-learning) - [Go](#go) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) +- [Дополнительные детали](#additional-detail-on-some-subjects) +- [Видео](#video-series) +- [Курсы по Computer Science](#computer-science-courses) --- From fda116c4acc771d5deee8a060f03391d9de74511 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sun, 25 Dec 2016 18:45:59 +0300 Subject: [PATCH 004/857] The first paragraph is checked --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 6e0a47e5b3..40aeba18ee 100644 --- a/README-ru.md +++ b/README-ru.md @@ -31,7 +31,7 @@ ## Содержание -- [Что это?](#what-is-it) +- [Что это?](#что-это) - [Почему нужно это использовать?](#why-use-it) - [Как пользоваться](#how-to-use-it) - [Получи гугловское настроение](#get-in-a-googley-mood) From 48c412e808cdc67db466bd495d4db623e7ce8187 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sun, 25 Dec 2016 18:52:42 +0300 Subject: [PATCH 005/857] Changed the main readme. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 054fe2ce08..92b1fd1bdd 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Translations: - [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/google-interview-university/issues/80) - हिन्दी (in progress) [Issue #81](https://github.com/jwasham/google-interview-university/issues/81) - [עברית (in progress)](README-he.md) [Issue #82] (https://github.com/jwasham/google-interview-university/issues/82) - +- [Russian (in progress)](README-ru.md) [Issue #87] (https://github.com/jwasham/google-interview-university/issues/87) ## What is it? From 1397d07c6404442df06925b58a98004b94f76ccc Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sun, 25 Dec 2016 19:16:33 +0300 Subject: [PATCH 006/857] Fixed a link. --- README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ru.md b/README-ru.md index 40aeba18ee..e490e2b12d 100644 --- a/README-ru.md +++ b/README-ru.md @@ -31,7 +31,7 @@ ## Содержание -- [Что это?](#что-это) +- [Что это?](#Что-это) - [Почему нужно это использовать?](#why-use-it) - [Как пользоваться](#how-to-use-it) - [Получи гугловское настроение](#get-in-a-googley-mood) From 8bf2224483f43fe0484b00ebaed27815082ecf3e Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sun, 25 Dec 2016 20:07:41 +0300 Subject: [PATCH 007/857] "Why use it" was translated. --- README-ru.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README-ru.md b/README-ru.md index e490e2b12d..b9c38d8d76 100644 --- a/README-ru.md +++ b/README-ru.md @@ -2,7 +2,7 @@ Оригинальная версия: [Английский](README.md) -## Что это? +## Для кого это? Это мой учебный план рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) и планирующих работать инженерами-программистами (software engineer) в компании Google. @@ -31,8 +31,8 @@ ## Содержание -- [Что это?](#Что-это) -- [Почему нужно это использовать?](#why-use-it) +- [Для кого это?](#Для-кого-это) +- [Чем это полезно?](#Чем-это-полезно) - [Как пользоваться](#how-to-use-it) - [Получи гугловское настроение](#get-in-a-googley-mood) - [Получил ли я работу?](#did-i-get-the-job) @@ -153,23 +153,23 @@ --- -## Why use it? +## Чем это полезно? -I'm following this plan to prepare for my Google interview. I've been building the web, building -services, and launching startups since 1997. I have an economics degree, not a CS degree. I've -been very successful in my career, but I want to work at Google. I want to progress into larger systems -and get a real understanding of computer systems, algorithmic efficiency, data structure performance, -low-level languages, and how it all works. And if you don't know any of it, Google won't hire you. +Я следую этому плану, готовясь к собеседованию в Google. Я разрабатываю веб-приложения, сервисы и запускаю стартапы с +1997 года. У меня есть степень по экономике, но нет по CS. До сих пор у меня очень успешная карьера, но я хочу работать +в Google. Я хочу работать с большими системами и понять принципы их работы, изучить эффективность алгоритмов и различные +структуры данных, узнать, как работают низкоуровневые языки программирования. Если ты не знаешь что-то из перечисленного, +Google не возьмёт тебя на работу. -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +Когда я начал этот проект, я ничего не знал о стеке, куче, Big-O, деревья и способах обхода графа. Если бы мне нужно +было писать код для сортировки, это было бы не очень хорошо. Структуры данных, которые я использовал, были частью языка, +и я не знал, как они на самом деле работали. Мне никогда не приходилось управлять памятью, если процесс, который я +запускал, сообщал об ошибке "out of memory", я искал способ как ее обойти. Я использовал в своей работе несколько +многомерных массивов и тысячи ассоциативных, но никогда не создавал структуру данных "с нуля". + +Но после выполнения этого учебного плана я поверил, что Google меня наймет. Это длинный план. Я потрачу на это месяцы. +Если вы уже знакомы с большинством тем, то прохождение всех тем то потратите намного меньше времени. -But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me -months. If you are familiar with a lot of this already it will take you a lot less time. ## How to use it From ca8756a397ec2a8df0a2e11c2db422865387a408 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Mon, 2 Jan 2017 15:23:20 +0300 Subject: [PATCH 008/857] Moved the translation file to the translations directory. --- README.md | 2 +- README-ru.md => translations/README-ru.md | 67 +++++++++++------------ 2 files changed, 34 insertions(+), 35 deletions(-) rename README-ru.md => translations/README-ru.md (97%) diff --git a/README.md b/README.md index 92b1fd1bdd..923fa4cac4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Translations: - [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/google-interview-university/issues/80) - हिन्दी (in progress) [Issue #81](https://github.com/jwasham/google-interview-university/issues/81) - [עברית (in progress)](README-he.md) [Issue #82] (https://github.com/jwasham/google-interview-university/issues/82) -- [Russian (in progress)](README-ru.md) [Issue #87] (https://github.com/jwasham/google-interview-university/issues/87) +- [Russian (in progress)](translations/README-ru.md) [Issue #87] (https://github.com/jwasham/google-interview-university/issues/87) ## What is it? diff --git a/README-ru.md b/translations/README-ru.md similarity index 97% rename from README-ru.md rename to translations/README-ru.md index b9c38d8d76..41941181cf 100644 --- a/README-ru.md +++ b/translations/README-ru.md @@ -1,6 +1,6 @@ # Google Interview University -Оригинальная версия: [Английский](README.md) +Оригинальная версия: [Английский](../README.md) ## Для кого это? @@ -33,12 +33,12 @@ - [Для кого это?](#Для-кого-это) - [Чем это полезно?](#Чем-это-полезно) -- [Как пользоваться](#how-to-use-it) -- [Получи гугловское настроение](#get-in-a-googley-mood) -- [Получил ли я работу?](#did-i-get-the-job) -- [Двигайся вместе со мной](#follow-along-with-me) -- [Не переживай о том, что ты не достаточно умный](#dont-feel-you-arent-smart-enough) -- [О Google](#about-google) +- [Как пользоваться](#Как-пользоваться) +- [Получи гугловское настроение](#Получи-гугловское-настроение) +- [Получил ли я работу?](#Получил-ли-я-работу) +- [Двигайся вместе со мной](#Двигайся-вместе-со-мной) +- [Не переживай о том, что ты не достаточно умный](#Не-переживай-о-том-что-ты-не-достаточно-умный) +- [О Google](#О-google) - [О видео ресурсах](#about-video-resources) - [Процесс собеседования & Основное в подготовке к интервью](#interview-process--general-interview-prep) - [Выберите один язык для собеседования](#pick-one-language-for-the-interview) @@ -167,20 +167,19 @@ Google не возьмёт тебя на работу. запускал, сообщал об ошибке "out of memory", я искал способ как ее обойти. Я использовал в своей работе несколько многомерных массивов и тысячи ассоциативных, но никогда не создавал структуру данных "с нуля". -Но после выполнения этого учебного плана я поверил, что Google меня наймет. Это длинный план. Я потрачу на это месяцы. -Если вы уже знакомы с большинством тем, то прохождение всех тем то потратите намного меньше времени. +Но после выполнения этого учебного плана я поверил, что Google меня наймет. Это длинный путь. Я потрачу на это месяцы. +Если вы уже знакомы с большинством тем, то потратите намного меньше времени. -## How to use it +## Как пользоваться -Everything below is an outline, and you should tackle the items in order from top to bottom. +Ниже описан способ использования, вы должны выпонить пункты в описаном порядке. -I'm using Github's special markdown flavor, including tasks lists to check progress. +Я использую разметку Github, включая список задач для оценки прогресса. -- [x] Create a new branch so you can check items like this, just put an x in the brackets: [x] +- [x] Создай новую ветку и тогда вы сможете оставлять отметки у элементов списка, просто добавляя x внутрь скобок: [x] - - Fork a branch and follow the commands below + Скопируй репозиторий и выполни команды перечисленные ниже `git checkout -b progress` @@ -198,25 +197,25 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git push --force ` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[Подробнее о разметке на Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Get in a Googley Mood +## Получи гугловское настроение -Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. +Напечатай знак "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" и смотри на приз. [![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf) -## Did I Get the Job? +## Получил ли я работу? -I'm in the queue right now. Hope to interview soon. +Пока я ожидаю своей очереди. Надеюсь интервью будет скоро. Thanks for the referral, JP. -## Follow Along with Me +## Двигайся вместе со мной -My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +Моя история: [Почему я готовился в течении 8 месяцев для собеседования в Google](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) -I'm on the journey, too. Follow along: +Я еще на пути к цели. Двигаемся вперед: - **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/) - Twitter: [@googleyasheck](https://twitter.com/googleyasheck) @@ -226,26 +225,26 @@ I'm on the journey, too. Follow along: ![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) -## Don't feel you aren't smart enough -- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +## Не переживай о том, что ты не достаточно умный +- Инженеры в Google умные, но многие из них переживают что недостаточно, хотя там уже работают. +- [Миф о гениальных программистах](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Это опасно, идти в одиночку: Сражаться с невидимыми монстрами в технологиях](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## About Google +## О Google -- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) -- [ ] How Search Works: +- [ ] Для студентов - [Google Careers: Руководство по развитию в технологиях](https://www.google.com/about/careers/students/guide-to-technical-development.html) +- [ ] Как работает поиск: - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) - [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) -- [ ] Series: +- [ ] Серии: - [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) - [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) - [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) - [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) -- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) +- [ ] [Книга: Как работает Google](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) - [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) ## About Video Resources @@ -312,7 +311,7 @@ Read more about choices: - http://blog.codingforinterviews.com/best-programming-language-jobs/ - https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview -[See language resources here](programming-language-resources.md) +[See language resources here](../programming-language-resources.md) You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. @@ -368,7 +367,7 @@ If you have more time (I want this book): If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. **You can skip all the video lectures in this project**, unless you'd like a review. -[Additional language-specific resources here.](programming-language-resources.md) +[Additional language-specific resources here.](../programming-language-resources.md) ### C++ From 72e1d8a9e059cc5c5707aca657b39bd1b349893e Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Wed, 4 Jan 2017 20:54:52 +0300 Subject: [PATCH 009/857] About Video Resources and Interview Process --- translations/README-ru.md | 83 ++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 41941181cf..851adde358 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -39,8 +39,8 @@ - [Двигайся вместе со мной](#Двигайся-вместе-со-мной) - [Не переживай о том, что ты не достаточно умный](#Не-переживай-о-том-что-ты-не-достаточно-умный) - [О Google](#О-google) -- [О видео ресурсах](#about-video-resources) -- [Процесс собеседования & Основное в подготовке к интервью](#interview-process--general-interview-prep) +- [О видео ресурсах](#О-видео-ресурсах) +- [Процесс собеседования & Основное в подготовке к интервью](#Процесс-собеседования-Основное-в-подготовке-к-интервью) - [Выберите один язык для собеседования](#pick-one-language-for-the-interview) - [Список книг](#book-list) - [Перед тем как ты начнешь](#before-you-get-started) @@ -225,7 +225,7 @@ Google не возьмёт тебя на работу. ![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) -## Не переживай о том, что ты не достаточно умный +## Не переживайте о том, что вы не достаточно умны - Инженеры в Google умные, но многие из них переживают что недостаточно, хотя там уже работают. - [Миф о гениальных программистах](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Это опасно, идти в одиночку: Сражаться с невидимыми монстрами в технологиях](https://www.youtube.com/watch?v=1i8ylq4j_EY) @@ -247,47 +247,48 @@ Google не возьмёт тебя на работу. - [ ] [Книга: Как работает Google](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) - [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) -## About Video Resources +## О видео ресурсах -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. - - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. - - -## Interview Process & General Interview Prep - -- [ ] Videos: - - [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8) - -- [ ] Articles: - - [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - all the things he mentions that you need to know are listed below - - [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - -- [ ] Prep Courses: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - -- [ ] Additional (not suggested by Google but I added): - - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - - [ ] Cracking The Coding Interview Set 1: +Некоторые видео доступно в том случае, если вы являетесь слушателями курсов Coursera, EdX или Lynda.com +Их называют MOOCs. Некоторые курсы не имеют круглогодичного доступа и вам нужно подождать несколько месяцев, +прежде чем получите к ним доступ. Курсы на Lynda.com платные. + + Я был бы вам благодарен за помощь в добавлении бесплатных, всегда доступных публичных ресурсов, таких как видео с YouTube + сопровождающих онлайн курсы. Мне нравяться использовать университетские лекции. + + +## Процесс собеседования & Основное в подготовке к интервью + +- [ ] Видео: + - [ ] [Как работать в Google: Подготовка к собеседованию на позицию инженера (видео)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) + - [ ] [Как работать в Google: Пример кодированияg/Собеседование инженера (видео)](https://www.youtube.com/watch?v=XKu_SEDAykw) + - [ ] [Как работать в Google - Подготовка кандидатов (видео)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) + - [ ] [Советы для технического собеседования от рекрутеров из Google (видео)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) + - [ ] [Как работать в Google: Подготовка технического резюме] (видео)](https://www.youtube.com/watch?v=8npJLXkcmu8) + +- [ ] Статьи: + - [ ] [Стать гуглером за три шага](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) + - [ ] [Получить работу Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) + - все что он упоминает из того что вы должны знать перечисленно ниже + - [ ] (сильно устаревшее)[Как получить работу в Google, Вопросы на собеседовании, Процесс найма](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) + - [ ] [Вопросы с собеседования по телефону](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) + +- [ ] Подготовительные курсы: + - [ ] [Собеседование инженера-программиста (платный курс)](https://www.udemy.com/software-engineer-interview-unleashed): + - Как самосттоятельно подготовиться с собеседованию на позицию инженера-программиста от бывшего сотрудника Google + +- [ ] Дополнительно (это не рекомендация Google, а моя собственная): + - [ ] [ABC: Программируй всегда](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) + - [ ] [4 шага в Google без образованияв CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) + - [ ] [Кодирование на доске](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) + - [ ] [Что думает Google о найме, управлении и культуре](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) + - [ ] [Эффективное кодирование на доске в процессе собеседования](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) + - [ ] Прохождения собеседования по программированию набор 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - - [ ] How to Get a Job at the Big 4: - - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/) + - [ ] Как получить работу в большой четверке: + - [ ] ['Как получить работу в большой четверк - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Ошибки на собеседованиях в Google](http://alexbowe.com/failing-at-google-interviews/) ## Pick One Language for the Interview From 403beb8e705534f09139e2b83c373ab27e3d5024 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Wed, 4 Jan 2017 20:57:51 +0300 Subject: [PATCH 010/857] Fixed a bug --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 851adde358..8e180d3111 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -37,7 +37,7 @@ - [Получи гугловское настроение](#Получи-гугловское-настроение) - [Получил ли я работу?](#Получил-ли-я-работу) - [Двигайся вместе со мной](#Двигайся-вместе-со-мной) -- [Не переживай о том, что ты не достаточно умный](#Не-переживай-о-том-что-ты-не-достаточно-умный) +- [Не переживайте о том, что вы не достаточно умны](#Не-переживай-о-том-что-ты-не-достаточно-умный) - [О Google](#О-google) - [О видео ресурсах](#О-видео-ресурсах) - [Процесс собеседования & Основное в подготовке к интервью](#Процесс-собеседования-Основное-в-подготовке-к-интервью) From 41694bfbd2703fa636dccf41467bbe47346fcb49 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 6 Jan 2017 00:41:05 +0300 Subject: [PATCH 011/857] Add "Graph" section --- translations/README-ru.md | 123 +++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 8e180d3111..11806000ef 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -892,69 +892,68 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes from Yegge: - - There are three basic ways to represent a graph in memory: - - objects and pointers - - matrix - - adjacency list - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- Yegge: If you get a chance, try to study up on fancier algorithms: - - [ ] Dijkstra's algorithm - see above - 6.006 +## Графы +Графы могут быть использованы для представления многих задач в области CS, поэтому раздел включает в себя такие темы как деревья и сортировку. + +- Заметки от Стива Йеги: + - Существуют три основных способа представления графа в памяти: + - объекты и указатели + - матрица + - список смежности + - Ознакомьтесь с каждым представлением, его преимуществами и недостатками + - BFS и DFS - узнайте их вычислительную сложность, соотношение преимуществ и недостатков, способы реализации в коде + - Когда вы получили задачу, в первую очередь попробуйте построить свое решение с использованием графов, а затем двигайтесь дальше, если такого решения нет. + +- [ ] Лекции профессора Стивена Скина - хорошее введение: + - [ ] [CSE373 2012 - Лекция 11 - Структуры данных для представления графов (видео)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Лекция 12 - Поиск в ширину (видео)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Лекция 13 - Алгоритмы на графах (видео)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Лекция 14 - Алгоритмы на графах (продолжение) (видео)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 15 - Алгоритмы на графах (продолжение 2) (видео)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 16 - Алгоритмы на графах (продолжение 3) (видео)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Графы (обзор и многое другое): + + - [ ] [6.006 Задача поиска кратчайших путей из одной вершины (видео)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Алгоритм Дейкстры (видео)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Алгоритм Беллмана-Форда (видео)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Оптимизация алгоритма Дейкстры (видео)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Алгоритмы на графах I: Топологическая сортировка, Минимальное остовное дерево, Алгоритм Прима - Лекция 6 (видео)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Алгоритмы на графах II: DFS, BFS, Алгоритм Краскала, Система непересекающихся множеств - Лекция 7 (видео)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Алгоритмы на графах III: Кратчайший путь - Лекция 8 (видео)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Алгоритмы на графах IV: Введение в геометрические алгоритмы - Лекция 9 (видео)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014 (начиная с 58:09) (видео)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014: Взвешенные графы (видео)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [Жадные алгоритмы: Минимальное остовное дерево (видео)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Сильно связные компоненты, Алгоритм Косарайю, Алгоритмы на графах (видео)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Полный курс на Coursera: + - [ ] [Алгоритмы на графах (видео)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Стив Йеги: Если у вас есть возможность, попробуйте изучить более продвинутые алгоритмы: + - [ ] Алгоритм Дейкстры - смотри выше - 6.006 - [ ] A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books + - [ ] [Алгоритм поиска A](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ ] [Учебное пособие по основам алгоритма поиска пути A* (видео)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [ ] [Поиск пути A* (E01: объяснение алгоритма) (видео)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- Я смогу применить: + - [ ] DFS со списком смежности (рекурсия) + - [ ] DFS со списком смежности (итерационный подход со стеком) + - [ ] DFS с матрицей смежности (рекурсия) + - [ ] DFS с матрицей смежности (итерационный подход со стеком) + - [ ] BFS со списком смежности + - [ ] BFS с матрицей смежности + - [ ] Поиск кратчайшего пути из одной вершины (алгоритм Дейкстры) + - [ ] Минимальное остовное дерево + - Алгоритмы основанные на DFS (см видео Aduni выше): + - [ ] Поиск циклов в графе (необходимо для топологической сортировки, так как мы проверяем наличие циклов в графе перед началом работы алгоритма) + - [ ] топологическую сортировку + - [ ] подсчет компонентов связности в графе + - [ ] список сильно связных компонентов + - [ ] проверку графа на двудольность + +Вы найдете больше практических задач на графах в книге Стивена Скина (см раздел книги ниже) и в книгах о прохождении интервью. ## Even More Knowledge From 68604d5e916455cfc0076da1f82023c2ebb2bb4e Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Fri, 6 Jan 2017 12:23:23 +0300 Subject: [PATCH 012/857] Translated "List of books" --- translations/README-ru.md | 246 +++++++++++++++++++------------------- 1 file changed, 124 insertions(+), 122 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 8e180d3111..59945a1c2a 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -41,8 +41,8 @@ - [О Google](#О-google) - [О видео ресурсах](#О-видео-ресурсах) - [Процесс собеседования & Основное в подготовке к интервью](#Процесс-собеседования-Основное-в-подготовке-к-интервью) -- [Выберите один язык для собеседования](#pick-one-language-for-the-interview) -- [Список книг](#book-list) +- [Выберите один язык для собеседования](#Выберите-один-язык-для-собеседования) +- [Список книг](#Список-книг) - [Перед тем как ты начнешь](#before-you-get-started) - [Что еще не охвачено](#what-you-wont-see-covered) - [Необходимые знания](#prerequisite-knowledge) @@ -253,18 +253,18 @@ Google не возьмёт тебя на работу. Их называют MOOCs. Некоторые курсы не имеют круглогодичного доступа и вам нужно подождать несколько месяцев, прежде чем получите к ним доступ. Курсы на Lynda.com платные. - Я был бы вам благодарен за помощь в добавлении бесплатных, всегда доступных публичных ресурсов, таких как видео с YouTube - сопровождающих онлайн курсы. Мне нравяться использовать университетские лекции. + Я был бы вам благодарен за помощь в добавлении бесплатных, всегда доступных публичных ресурсов, таких + как видео с YouTube сопровождающих онлайн курсы. Мне нравяться использовать университетские лекции. ## Процесс собеседования & Основное в подготовке к интервью - [ ] Видео: - [ ] [Как работать в Google: Подготовка к собеседованию на позицию инженера (видео)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [Как работать в Google: Пример кодированияg/Собеседование инженера (видео)](https://www.youtube.com/watch?v=XKu_SEDAykw) + - [ ] [Как работать в Google: Пример кодирования/Собеседование инженера (видео)](https://www.youtube.com/watch?v=XKu_SEDAykw) - [ ] [Как работать в Google - Подготовка кандидатов (видео)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - [ ] [Советы для технического собеседования от рекрутеров из Google (видео)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [Как работать в Google: Подготовка технического резюме] (видео)](https://www.youtube.com/watch?v=8npJLXkcmu8) + - [ ] [Как работать в Google: Подготовка технического резюме (видео)](https://www.youtube.com/watch?v=8npJLXkcmu8) - [ ] Статьи: - [ ] [Стать гуглером за три шага](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) @@ -275,7 +275,7 @@ Google не возьмёт тебя на работу. - [ ] Подготовительные курсы: - [ ] [Собеседование инженера-программиста (платный курс)](https://www.udemy.com/software-engineer-interview-unleashed): - - Как самосттоятельно подготовиться с собеседованию на позицию инженера-программиста от бывшего сотрудника Google + - Как самостоятельно подготовиться r собеседованию на позицию инженера-программиста от бывшего сотрудника Google - [ ] Дополнительно (это не рекомендация Google, а моя собственная): - [ ] [ABC: Программируй всегда](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) @@ -284,170 +284,172 @@ Google не возьмёт тебя на работу. - [ ] [Что думает Google о найме, управлении и культуре](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - [ ] [Эффективное кодирование на доске в процессе собеседования](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Прохождения собеседования по программированию набор 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [ ] [Gayle L McDowell - Прохождения собеседования по программированию (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Прохождения собеседования по программированию с Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] Как получить работу в большой четверке: - - [ ] ['Как получить работу в большой четверк - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] ['Как получить работу в большой четверке - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [Ошибки на собеседованиях в Google](http://alexbowe.com/failing-at-google-interviews/) -## Pick One Language for the Interview +## Выберите один язык для собеседования -I wrote this short article about it: [Important: Pick One Language for the Google Interview](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) +Я написал небольшую статью об этом: [Важно: Выберите один язык для собеседования в Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) -You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices: +На этапе собеседования, когда требуется программировать, вы можете использовать наиболее комфортный для вас язык +программирования. Для Google лучшим выбором будут следующие: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Так же подойдут: - JavaScript - Ruby -You need to be very comfortable in the language and be knowledgeable. +Для вас должно быть комфортно писать программы на выбранном языке и вы должны его хорошо знать. -Read more about choices: +Подробнее о выборе: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ - https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview -[See language resources here](../programming-language-resources.md) +[Ресурсы по языкам программирования вы можете найти тут](../programming-language-resources.md) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +Вы найдете кое-что по С, С++ и Python ниже, потому-что я еще в процессе обучения. -## Book List +## Список книг -This is a shorter list than what I used. This is abbreviated to save you time. +Это краткий список, того чем я пользовался. Он сокращен, для того что-бы сэкономить ваше время. -### Interview Prep +### Подготовка к собеседованию -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C++ and Java - - recommended in Google candidate coaching - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". +- [ ] [Собеседование по программированию в подробнастях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - ответы на C++ и Java + - рекомендации Google по обучению кандидатов + - это отличная разминка перед подробным разбором собеседования по программированию + - не так уж и сложно, некоторые задачи проще чем вам кажутся на собеседовании (из того что я прочитал) +- [ ] [Разбор собеседования по программированию, 6-е издание](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - ответа на Java + - рекомендована [Google Careers сайт](https://www.google.com/about/careers/how-we-hire/interview/) + - Если вы видели ссылку на "The Google Resume", эта книга заменена "Разбор собеседования по программированию" + ("Cracking the Coding Interview"). -If you have tons of extra time: +Если у вас есть много свободного времени: -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - all code is in C++, very good if you're looking to use C++ in your interview - - a good book on problem solving in general. +- [ ] [Элементы собеседования по программированию](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) + - весь код написан на C++, полезна если вы планируете использовать C++ на собеседовании + - хорошая книга, описывающая решения общих задач. -### Computer Architecture +### Архитектура компьютера -If short on time: +Если мало времени: -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization +- [ ] [Писать отличный код: Том 1: Понимание компьютера](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Книга была опубликована в 2004 и отчасти она устарела, но благодаря ей вы быстро поймете как устроены компьютеры. + - Автор придумал HLA, поэтому скептически отнеситесь к примерам и упоминаниям HLA. Широко не используется, но содержит ряд примеров, демострирующих assembler. + - Чтение следующих глав не займет много времени и даст хорошую основу: + - Глава 2 - Представление в числовой форме + - Глава 3 - Двоичная арифметика и битовые операции + - Глава 4 - Представление числа с плавующей запятой + - Глава 5 - Представление символа + - Глава 6 - Организация памяти и доступа + - Глава 7 - Составные типы данных и объекты в памяти + - Глава 9 - Архитектура CPU + - Глава 10 - Набор инструкций + - Глава 11 - Архитектура и организация памяти -If you have more time (I want this book): +Если вы рапологаете свободным временем (я хочу купить эту книгу): -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment +- [ ] [Архитектура компьютера, 5-е издание: Количественный подход](https://www.amazon.com/dp/012383872X/) -### Language Specific +### По языкам программирования -**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +**Вам необходимо выбрать один язык для интервью (смотри выше).** Здесь вы найдете мои рекомендации по языкам. У меня нет информации по всем языкам, но если есть у вас - добро пожаловать. -If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Если вы читали одну из них, то у вас есть достаточно знаний по алгоритмам и структурам данных и вы можете приступить к решению задач по программированию. +**Вы можете пропустить все видео лекции в этом разделе**, если не хотите повторить темы. -[Additional language-specific resources here.](../programming-language-resources.md) +[Дополнительные ресурсы по языкам программирования здесь](../programming-language-resources.md) ### C++ -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Я не читал обе, но они весьма полезны и написаны Седжвиком (Sedgewick). Он отличный автор. -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Алгоритмы на C++, Части 1-4: Основы, Структуры данных, Сортировка, Поиск](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Алгоритмы на C++ Часть 5: Алгоритмы графов](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +Если вы можете порекоммендовать литературу по C++, которая лучше, сообщите мне об этом. Я ищу лучшие книги. ### Java -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) +- [ ] [Алгоритмы (Седжвик и Вайн)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - книга с видео контентом (и Седжвик!): + - [Алгоритмы I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) + - [Алгоритмы II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) -OR: +или: -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. +- [ ] [Структуры данных и алгоритмы на Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - авторы Goodrich, Tamassia, Goldwasser + - используется в Беркли США как опциональный учебник по введению в CS + - смотрите мой отчет по книги по Python ниже. Эта книга содержит те же темы. ### Python -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. +- [ ] [Структуры данных и алгоритмы на Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - авторы Goodrich, Tamassia, Goldwasser + - Я люблю эту книгу. Она содержит все что нужно и даже больше. - Pythonic code - - my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ - - -### Optional Books - -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** - -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace - (and important) graph problems are – they should be part of every working programmer's toolkit. The book also - covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half - of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve - them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a - great way to learn how to identify hundreds of problem types." - - Can rent it on kindle - - Half.com is a great resource for textbooks at good prices. - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." - - Half.com is a great resource for textbooks at good prices. - - aka CLR, sometimes CLRS, because Stein was late to the game - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. - -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - - Would rather spend time on coding problems from another book or online coding problems. + - мой отчет по книге: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ + + +### Опциональные книги + +**Некоторые рекомендую эти книги, но я думаю это перебор, если только вы не инженер-программист с большим опытом работы и не ожидаете более сложного собеседования. + +- [ ] [Руководство по разработке алгоритмов](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - Как обзор и описание проблем + - Некоторые алгоритмы вряд ли попадутся вам на собеседовании. + - Эта книга состоит из 2-х частей: + - классный учебник по структурам данных и алгоритмам + - преимущества: + - отличный учебник, содержащий обзор существующих алгоритмов + - автор описывает реальный опыт решения задач как академических, так и промышленных + - примеры кода написаны на C + - недостатки: + - местами изложение может быть не очевидным и не понятным как в CLRS (Cormen, Leiserson, Rivest, Stein), некоторые темы лучше описаны в CLRS + - главы 7, 8, 9 сложно понять, некоторые вещи плохо разъяснены или требуют больших знаний чем есть у меня + - не поймите меня не правильно: Мне нравиться Skiena, ее стиль и манера изложения, но я не могу стать физически Stony Brook. + - каталог алгоритмов: + - это реальная причина, почему следует купить эту книгу. + - о том как дойти до этой части. Обновлю, когда изучу этот раздел. + - Цитата Йеги: "Больше чем какая-либо другая книга, эта помогла мне понять насколько банальны задачи на графы - они должны + быть в инструментарии каждого программиста. Книга так же включает в себя разбор базовых структур данных и алгоритмов сортировки, + что является приятным бонусом. Но важнейшей частью стала вторая часть книги, которая написана как энциклопедия, описывающая большое + количество различных алгоритмических задач и способов их решения без лишних деталей. Почти каждая страница-описание содержит + изображение, облегчающее запоминание. Это полезный способ, позволяющий запомнить и в последствии идентифицировать сотни + типов задач." + + - Можете ее арендовать + - Half.com - отличный ресурс, где можно заказать книги по выгодным ценам. + - Ответы: + - [Решения](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Решения](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Опечатки](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [ ] [Введение в алгоритмы](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Важно:** Чтение этой книги будет полезно только для повторения алгоритмов и структур данных. Она не научит вас программировать. + - Цитата Йеги: "Но если вы хотите идти на собеседование, отложите его пока не изучите эту книгу." + - Half.com - отличный ресурс, где можно заказать книги по выгодным ценам. + - известная как CLR, иногда CLRS, потому что Stein опоздал на игру + +- [ ] [Жемчужины программирования](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - В первых двух главах представлены решения задач программирования (в некоторых из них используются устаревшие типы данных), но + это только введение. Это руководство по разработке программ и архитектуре, такое же как Code Complete, но более краткое. + +- ~~"Алгоритмы и программирование: Проблемы и решения" автор Shen~~ + - Отличная книга, но после разбора нескольких задач написанных на Pascal я разочаровался в его синтаксисе. + - Лучше провести время решая задачи по программированию из других книг или онлайн ресурсов. ## Before you Get Started From 46d54e6e18b4120c64f9e7007f3682b60c180b23 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Fri, 6 Jan 2017 12:30:44 +0300 Subject: [PATCH 013/857] Change the link of graphs. --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index adc4fa46c1..4582e22759 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -69,7 +69,7 @@ - пирамидальная - быстрая - слиянием -- [Графы](#graphs) +- [Графы](#Графы) - ориентированные - неориентированные - матрица смежности From a84bf36485e4774e32f930d5461fcede66ae0880 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 6 Jan 2017 14:50:33 +0300 Subject: [PATCH 014/857] Add " Recursion", "object-oriented-programming" and "design-patterns" sections. --- translations/README-ru.md | 132 +++++++++++++++++++------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 4582e22759..ac4c6446df 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -75,10 +75,10 @@ - матрица смежности - лист смежности - обходы: BFS, DFS -- [Еще больше знаний](#even-more-knowledge) - - [Рекурсия](#recursion) - - [Объектно-ориентированное программирование](#object-oriented-programming) - - [Шаблоны проектирования](#design-patterns) +- [Еще больше знаний](#еще-больше-знаний) + - [Рекурсия](#рекурсия) + - [Объектно-ориентированное программирование](#объектно-ориентированное-программирование) + - [Шаблоны проектирования](#шаблоны-проектирования) - [Комбинаторика & Вероятность](#combinatorics-n-choose-k--probability) - [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms) - [Кэш](#caches) @@ -957,68 +957,68 @@ If you need more detail on this subject, see "Sorting" section in [Additional De Вы найдете больше практических задач на графах в книге Стивена Скина (см раздел книги ниже) и в книгах о прохождении интервью. -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) +## Еще больше знаний + +- ### Рекурсия + - [ ] Лекции Стэнфорда по рекурсии и механизмам возврата: + - [ ] [Лекция 8 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Лекция 9 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Лекция 10 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Лекция 11 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - когда уместно её использование + - когда лучше использовать хвостовую рекурсию? + - [ ] [Что такое хвостовая рекурсия и почему её использование нежелательно?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Хвостовая рекурсия (видео)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Объектно-ориентированное программирование + - [ ] [Дополнительно: Серия уроков по UML 2.0 (видео)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] Объектно-ориентированная разработка программного обеспечения: Разработка программного обеспечения с использованием UML и Java (21 видео): + - Можно пропустить эту часть, если у вас есть хорошее понимание концепции ООП и практик проектирования. + - [ООП: Разработка программного обеспечения с использованием UML и Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] Принципы дизайна ООП (SOLID): + - [ ] [Боб Мартин SOLID принципы объектно-ориентированного программирования и гибкое проектирование (видео)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [Шаблоны проектирования SOLID в C# (видео)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) + - [ ] [Принципы SOLID (видео)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] S - [Принцип единственной ответственности](http://www.oodesign.com/single-responsibility-principle.html) | [Одна зона ответственности для каждого объекта](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [больше подробностей](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Принцип открытости/закрытости](http://www.oodesign.com/open-close-principle.html) | [Программные сущности должны быть готовы для расширения, но не для модификации](https://en.wikipedia.org/wiki/Open/closed_principle) + - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Принцип подстановки Барбары Лисков](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Функции, которые используют ссылки на базовые классы, должны иметь возможность использовать объекты производных классов, не зная об этом](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Принцип разделения интерфейса](http://www.oodesign.com/interface-segregation-principle.html) | Клиенты не должны быть вынуждены реализовывать интерфейсы, которые они не используют + - [Принцип разделения интерфейса за 5 минут (видео)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Принцип инверсии зависимостей](http://www.oodesign.com/dependency-inversion-principle.html) | Снизить зависимость в составе объектов. + - [Что такое принцип инверсии зависимостей и почему он так важен](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- ### Шаблоны проектирования + - [ ] [Краткий обзор UML (видео)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Изучите эти шаблоны: + - [ ] стратегия + - [ ] одиночка + - [ ] адаптер + - [ ] прототип + - [ ] декоратор + - [ ] посетитель + - [ ] фабричный метод, абстрактная фабрика + - [ ] фасад + - [ ] наблюдатель + - [ ] заместитель + - [ ] делегирование + - [ ] команда + - [ ] состояние + - [ ] хранитель + - [ ] итератор + - [ ] компоновщик + - [ ] приспособленец + - [ ] [Глава 6 (Часть 1) - Паттерны (видео)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Глава 6 (Часть 2) - Абстрактное представление, Общая иерархия, Актер – Роль, Одиночка, Наблюдатель, Делегирование (видео)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Глава 6 (Часть 3) - Адаптер, Фасад, Неизменяемый объект, интерфейс типа read-only, Заместитель (видео)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Серия уроков (27 видео)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Паттерны проектирования](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Я знаю, что классической книгой для изучения паттернов является "Приемы объектно-ориентированного проектирования. Паттерны проектирования" (Джон Влиссидес, Ральф Джонсон, Ричард Хелм, Эрих Гамма), но "Паттерны проектирования" отлично подходят для тех, кто только начал изучать ООП. + - [ ] [Удобный справочник: 101 шаблон проектирования и советы для разработчиков](https://sourcemaking.com/design-patterns-and-tips) - ### Combinatorics (n choose k) & Probability - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) From 1575303aa0c697c3f9618b254bcf4128b0a76b15 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 6 Jan 2017 14:54:55 +0300 Subject: [PATCH 015/857] Fixed a bug --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index ac4c6446df..486b14b8b5 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -75,10 +75,10 @@ - матрица смежности - лист смежности - обходы: BFS, DFS -- [Еще больше знаний](#еще-больше-знаний) - - [Рекурсия](#рекурсия) - - [Объектно-ориентированное программирование](#объектно-ориентированное-программирование) - - [Шаблоны проектирования](#шаблоны-проектирования) +- [Еще больше знаний](#Еще-больше-знаний) + - [Рекурсия](#Рекурсия) + - [Объектно-ориентированное программирование](#Объектно-ориентированное-программирование) + - [Шаблоны проектирования](#Шаблоны-проектирования) - [Комбинаторика & Вероятность](#combinatorics-n-choose-k--probability) - [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms) - [Кэш](#caches) From 767e7147fec4e2139e02fcd41ab5121bc1c15899 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 6 Jan 2017 15:03:27 +0300 Subject: [PATCH 016/857] Fixed a typo --- translations/README-ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 486b14b8b5..29d2ce23b7 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -965,7 +965,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] [Лекция 9 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Лекция 10 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Лекция 11 | Абстракции программирования (видео)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - когда уместно её использование + - когда уместно использование рекурсии? - когда лучше использовать хвостовую рекурсию? - [ ] [Что такое хвостовая рекурсия и почему её использование нежелательно?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Хвостовая рекурсия (видео)](https://www.youtube.com/watch?v=L1jjXGfxozc) @@ -988,7 +988,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] I - [Принцип разделения интерфейса](http://www.oodesign.com/interface-segregation-principle.html) | Клиенты не должны быть вынуждены реализовывать интерфейсы, которые они не используют - [Принцип разделения интерфейса за 5 минут (видео)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Принцип инверсии зависимостей](http://www.oodesign.com/dependency-inversion-principle.html) | Снизить зависимость в составе объектов. + - [ ] D -[Принцип инверсии зависимостей](http://www.oodesign.com/dependency-inversion-principle.html) | Снизить зависимость в составе объектов - [Что такое принцип инверсии зависимостей и почему он так важен](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [больше подробностей](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) From f0c4df98a21d2ad33aad14e9602462cda977812b Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 6 Jan 2017 15:42:20 +0300 Subject: [PATCH 017/857] Fixed a typo --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 29d2ce23b7..f2fae278d9 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1014,7 +1014,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] приспособленец - [ ] [Глава 6 (Часть 1) - Паттерны (видео)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - [ ] [Глава 6 (Часть 2) - Абстрактное представление, Общая иерархия, Актер – Роль, Одиночка, Наблюдатель, Делегирование (видео)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Глава 6 (Часть 3) - Адаптер, Фасад, Неизменяемый объект, интерфейс типа read-only, Заместитель (видео)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Глава 6 (Часть 3) - Адаптер, Фасад, Неизменяемый объект, интерфейс типа read-only, Заместитель (видео)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Серия уроков (27 видео)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Паттерны проектирования](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - Я знаю, что классической книгой для изучения паттернов является "Приемы объектно-ориентированного проектирования. Паттерны проектирования" (Джон Влиссидес, Ральф Джонсон, Ричард Хелм, Эрих Гамма), но "Паттерны проектирования" отлично подходят для тех, кто только начал изучать ООП. From 25d125dc5e95ad14d21e3782232db28b636ad117 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Wed, 11 Jan 2017 13:50:50 +0300 Subject: [PATCH 018/857] Before you Get Started was translated --- translations/README-ru.md | 101 +++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f2fae278d9..6d36df5d12 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -43,7 +43,7 @@ - [Процесс собеседования & Основное в подготовке к интервью](#Процесс-собеседования-Основное-в-подготовке-к-интервью) - [Выберите один язык для собеседования](#Выберите-один-язык-для-собеседования) - [Список книг](#Список-книг) -- [Перед тем как ты начнешь](#before-you-get-started) +- [Перед тем как вы начнете](#Перед-тем-как-вы-начнете) - [Что еще не охвачено](#what-you-wont-see-covered) - [Необходимые знания](#prerequisite-knowledge) - [План на день](#the-daily-plan) @@ -452,90 +452,91 @@ Google не возьмёт тебя на работу. - Лучше провести время решая задачи по программированию из других книг или онлайн ресурсов. -## Before you Get Started +## Перед тем как вы начнете -This list grew over many months, and yes, it kind of got out of hand. +Я создавал эту учебную программу на протяжении нескольких месяцев своими руками. -Here are some mistakes I made so you'll have a better experience. +Ниже я описал некоторые ошибки, которые я совершил. Это поможет вам их избежать. -### 1. You Won't Remember it All +### 1. Вы не сможете сразу запомнить все -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +Я смотрел часами видео делая заметки, но спустя несколько месяцев многое из этого я не помнил. После чего потратил +3 дня разбираясь в своих заметках и делая карточки-напоминания(flashcards), для того что бы потом можно было повторить пройденный материал. -Read please so you won't make my mistakes: +Прочитайте пожалуйста эту статью, что бы не совершать моих ошибок: -[Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/) +[Как сохранить знания в CS](https://googleyasheck.com/retaining-computer-science-knowledge/) -### 2. Use Flashcards +### 2. Используйте карточки-напоминания -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. +Для решения этой проблемы я сделал не большой сайт, на котором можно добавлять карточки двух типов: общие и с кодом. +Каждая карта имеет разный формат. -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +Я сделал мобильную версию сайта и могу читать карточки на мобильном телефоне или планшете. -Make your own for free: +Сделай свой собственный бесплатно: -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. +- [Репозиторий сайта Flashcards](https://github.com/jwasham/computer-science-flash-cards) +- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте ввиду, я зделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. -**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. 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. +В качестве альтернативы вы можете использовать сайт [Anki](http://ankisrs.net/), который мне рекомендовали много раз. Он использует систему повторений для того что бы помочь вам запомнить. +Это ресурс user-friendly, доступен на всех платформах и имеет возможность синхронизации с облаком. На платформе iOS стоит 25$ на других бесплатный. -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 (спасибо [@xiewenya](https://github.com/xiewenya)) -### 3. Review, review, review +### 3. Повторение, повторение, повторение -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +У меня постоянно с собой шпаргалки по ASCII, стеку OSI, Big-O нотации и другим темам. Я повторяю их когда у меня есть свободное время. -Take a break from programming problems for a half hour and go through your flashcards. +Делай перерывы от программирования на пол часа и повторяй свои карточки. -### 4. Focus +### 4. Фокусируйтесь -There are a lot of distractions that can take up valuable time. Focus and concentration are hard. +Есть много отвлекающих факторов, на которые тратится время. Сосредотачиваться и концентрироваться сложно. -## What you won't see covered +## То, что не охватывает этот учебный план -This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent -technologies but were not mentioned in those notes: +Это список персональных тем, взятых из заметок Google по подготовке к собеседованию. Это распространенные технологии, +но они не встречаются в других ресурсах: - SQL -- Javascript -- HTML, CSS, and other front-end technologies +- JavaScript +- HTML, CSS и другие front-end технологии + +## План на день -## The Daily Plan +Для изучения некоторых тем требуется один день, для других несколько. Некоторые нужно только изучить и не нужно программировать. -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. +Каждый день я беру одну тему из списка ниже, смотрю видео на эту тему и программирую, используя пройденный материал: +- C - используя структуры и функции, которые в качестве аргументов принимают указатель на структуру или что-нибудь еще. +- C++ - без использования встроенных типов +- C++ - используя встроенные типы, такие как std::list для связанного списка +- Python - используя встроенные типы (для практики на Python) +- написание тестов для проверки правильности кода, иногда просто используя выражение assert() +- Вы можете программировать на Java или других языках, это только лишь мой выбор. -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +Вам не нужны все эти языки для собеседования, нужен только один [один язык для собеседования](#Выберите-один-язык-для-собеседования). -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). +Зачем нужно программировать на нескольких языках: +- Практика, практика, практика пока это не надоедает мне я программирую +- Работа в рамках установленных ограничений (выделение/освобождение памяти без помощи сборщика мусора (кроме Python)) +- Используйте встроенные типы, потому как у меня есть опыт использования встроенных инструментах в реальных проектах (нет смысла в написание своей реализации связанного списка для продакшена) -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +У меня может и не будет времени на все это, но я попробую. -I may not have time to do all of these for every subject, but I'll try. -You can see my code here: +Вы можете посмотреть на мой код тут: - [C] (https://github.com/jwasham/practice-c) - [C++] (https://github.com/jwasham/practice-cpp) - [Python] (https://github.com/jwasham/practice-python) -You don't need to memorize the guts of every algorithm. +Вам не нужно запоминать внутренности каждого алгоритма. -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +Пишите код на доске или листе бумаги, но не компьютере. Проверяйте на простых входных данных. Затем тестируйте на компьютере. ## Prerequisite Knowledge From 24653db1ace2df6f34c8ee5463b4b2805ebd78b4 Mon Sep 17 00:00:00 2001 From: amoraitis Date: Mon, 13 Mar 2017 15:29:54 +0200 Subject: [PATCH 019/857] Added README-el.md under translations/ --- translations/README-el.md | 135 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 translations/README-el.md diff --git a/translations/README-el.md b/translations/README-el.md new file mode 100644 index 0000000000..381079681b --- /dev/null +++ b/translations/README-el.md @@ -0,0 +1,135 @@ +#Coding Interview University + +>Επίσημη έκδοση: [Αγγλικά](https://github.com/jwasham/coding-interview-university/blob/master/README.md) + +## Τι είναι; + +Είναi ο πλάνο διαβάσματός μου για να γίνω από web developer (αυτοδίδακτος, χωρίς πτυχίο στην Επιστήμη των Υπολογιστών), μηχανικός λογισμικού για μία μεγάλη εταιρία. + +![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) + +Αυτό το έργο προορίζεται για νέους μηχανικούς λογισμικού ή για αυτούς που μεταβαίνουν από την ανάπτυξη λογισμικού/ιστοσελίδων στην τεχνολογία λογισμικού(εκεί που η γνώση για την επιστήμη των υπολογιστών ειναι προαπαιτούμενο). Αν έχεις αρκετά χρόνια εμπειρίας και αξιώνεις πολλά χρόνια εμπερίας στην τεχνολογία λογισμικού, πρέπει να περιμένεις μία δυσκολότερη συνέντευξη. + +Εάν έχεις αρκετά χρόνια εμπειρίας στην ανάπτυξη λογισμικού/ιστοσελίδων, σημείωσε ότι οι μεγάλες εταιρίες λογισμικού όπως οι Google, Amazon, Facebook και Microsoft βλέπουν την τεχνολογία λογισμικού ως ενα διαφορετικό κομμάτι από την ανάπτυξη λογισμικού/ιστοσελίδων, και απαιτούν γνώσεις πάνω στην επιστήμη υπολογιστών. + +Εάν θέλεις να είσαι ένας αξιόπιστος μηχανικός ή μηχανικός συστημάτων, διάβασε περισσότερο απο την προεραιτική λίστα(δίκτυα, ασφάλεια). + +--- +# Πίνακας περιεχομένων + +- [Τι είναι;](#τι-είναι) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [The Daily Plan](#the-daily-plan) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Papers](#papers) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [Implement system routines](#implement-system-routines) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) +- [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory) + - [Parity & Hamming Code](#parity--hamming-code) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming) + - [Geometry, Convex hull](#geometry-convex-hull) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) + +--- \ No newline at end of file From 7495d81e3dc4bc85bdae2938a093c7214e3d37b6 Mon Sep 17 00:00:00 2001 From: amoraitis Date: Mon, 13 Mar 2017 15:55:57 +0200 Subject: [PATCH 020/857] Introduction translated --- translations/README-el.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-el.md b/translations/README-el.md index 381079681b..fa0e41381c 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -2,7 +2,7 @@ >Επίσημη έκδοση: [Αγγλικά](https://github.com/jwasham/coding-interview-university/blob/master/README.md) -## Τι είναι; +## Τι είναι Είναi ο πλάνο διαβάσματός μου για να γίνω από web developer (αυτοδίδακτος, χωρίς πτυχίο στην Επιστήμη των Υπολογιστών), μηχανικός λογισμικού για μία μεγάλη εταιρία. @@ -17,7 +17,7 @@ --- # Πίνακας περιεχομένων -- [Τι είναι;](#τι-είναι) +- [Τι είναι](#τι-είναι) - [Why use it?](#why-use-it) - [How to use it](#how-to-use-it) - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) From c3d99c79536c1a0b6188b7531feb456b3bdc7728 Mon Sep 17 00:00:00 2001 From: amoraitis Date: Mon, 13 Mar 2017 17:38:51 +0200 Subject: [PATCH 021/857] EL-translate: Added sections until->general interview prep. --- translations/README-el.md | 80 +++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 7 deletions(-) diff --git a/translations/README-el.md b/translations/README-el.md index fa0e41381c..96b329fc19 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -17,12 +17,12 @@ --- # Πίνακας περιεχομένων -- [Τι είναι](#τι-είναι) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Τι είναι](#Tι-είναι) +- [Γιατί να το χρησιμοποιήσεις](#Γιατί-να-το-χρησιμοποιήσεις) +- [Πώς να το χρησιμοποιήσεις](#Πώς-να-το-χρησιμοποιήσεις) +- [Μη νιώθεις ανίκανος](#Μη-νιώθεις-ανίκανος) +- [Σχετικά με τα βίντεο](#Σχετικά-με-τα-βίντεο) +- [Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης](#Διαδικασία-Συνέντευξης--Γενική-προετοιμασία-συνέντευξης) - [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [Book List](#book-list) - [Before you Get Started](#before-you-get-started) @@ -132,4 +132,70 @@ - [Video Series](#video-series) - [Computer Science Courses](#computer-science-courses) ---- \ No newline at end of file +--- + +## Γιατί να το χρησιμοποιήσεις + +Όταν άρχισα αυτό το πρότζεκτ, δεν ήξερα τη διαφορά μίας στοίβας από μία ουρά, δεν ήξερα τίποτα σχετικά με τον συμβολισμό Big-Ο, τίποτα σχετικά με τα δέντρα ή πως να διασχίσω ένα δέντρο. Εάν έπρεπε να γράψω σε κώδικα έναν αλγόριθμο ταξινόμησης, μπορώ να σου πω ότι δεν θα ήταν πολύ καλός. Κάθε δομή δεδομένων που είχα χρησιμοποιήσει ήταν πακέτο της γλώσσας, και δεν ήξερα καθόλου πως δούλευαν "κάτω από το καπό". Ποτέ δεν είχα να διαχειριστώ τη μνήμη εκτός εάν μία διεργασία που έτρεχα, μου επέστρεφε ένα σφάλμα του τύπου: "out of memory", και μετά έπρεπε να βρώ μία λύση. Έχω χρησιμοποιήσει μερικούς πολυδιάστατους πίνακες στη ζωή μου και χιλιάδες συναφείς πίνακες, αλλά δεν είχα δημιουργήσει δομές δεδομένων από το 0. + +Είναι ένα μακροπρόθεσμο πλάνο. Μπορεί να σου πάρει μήνες. Εάν είσαι οικείος με πολλά από αυτά ήδη, θα σου πάρει πολύ λιγότερο χρόνο. + +## Πώς να το χρησιμοποιήσεις + +Οτιδήποτε παρακάτω είναι μία συνοπτική περιγραφή, και πρέπει να τα καταλάβεις από την αρχή μέχρι το τέλος. + +Χρησιμοποιώ τη χαρακτηρηστική markdown γλώσσα του Github, σεμπεριλαμβανομένων και των tasks lists για να ελέγχω την εξέλιξη του πρότζεκτ. + +**Δημιούργησε ένα καινούργιο branch [x]** + + + Κάνε fork το branch και ακολούθησε τις παρακάτω εντολές + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + Μάρκαρε όλα τα κουτιά με X αφού ολοκληρώσεις τις αλλαγές + +`git add . ` + +`git commit -m "Marked x" ` + +`git rebase jwasham/master ` + +`git push --force ` + +[Περισσότερα σχετικά με την Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## Μη νιώθεις ανίκανος +- Οι επιτυχυμένοι μηχανικοί λογισμικού είναι έξυπνοι, αλλά πολλοί έχουν την ανασφάλεια ότι δεν είναι αρκετά έξυπνοι. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Σχετικά με τα βίντεο + +Μερικά βίντεο είναι διαθέσιμα μόνο κάνοντας εγγραφή σε μία Coursera, EdX, or Lynda.com τάξη. Αυτές καλούνται MOOCs. +Μερικές φορές οι τάξεις δεν είναι διαθέσιμες, έτσι πρέπει να περιμένεις 1-2 μήνες, έτσι ώστε να αποκτήσεις πρόσβαση. Τα μαθήματα του Lynada.com δεν είναι δωρεάν. + + Θα εκτιμούσα τη βοήθεια σου να προσθέσεις δωρεάν και πάντοτε-διαθέσιμες ανοικτές πηγές, όπως βίντεο από το Youtube να συνοδεύσουν τα online μαθήματα βίντεο. + Μου αρέσει να χρησιμοποιώ πανεπιστημιακές διαλέξεις. + +## Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης + +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Αποτελεσματικό Whiteboarding κατά τη διάρκεια των Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + +- [ ] Μαθήματα προετοιμασίας: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. \ No newline at end of file From 1ad3f89c8df41c0f9dbea3a249915d0cbef25055 Mon Sep 17 00:00:00 2001 From: amoraitis Date: Mon, 20 Mar 2017 20:30:43 +0200 Subject: [PATCH 022/857] Updated by the list of books section --- translations/README-el.md | 150 +++++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 4 deletions(-) diff --git a/translations/README-el.md b/translations/README-el.md index 96b329fc19..6eabdd1ffa 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -4,7 +4,7 @@ ## Τι είναι -Είναi ο πλάνο διαβάσματός μου για να γίνω από web developer (αυτοδίδακτος, χωρίς πτυχίο στην Επιστήμη των Υπολογιστών), μηχανικός λογισμικού για μία μεγάλη εταιρία. +Είναi το πλάνο διαβάσματός μου για να γίνω από web developer (αυτοδίδακτος, χωρίς πτυχίο στην Επιστήμη των Υπολογιστών), μηχανικός λογισμικού για μία μεγάλη εταιρία. ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) @@ -23,8 +23,8 @@ - [Μη νιώθεις ανίκανος](#Μη-νιώθεις-ανίκανος) - [Σχετικά με τα βίντεο](#Σχετικά-με-τα-βίντεο) - [Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης](#Διαδικασία-Συνέντευξης--Γενική-προετοιμασία-συνέντευξης) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) +- [Pick One Language for the Interview](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη) +- [Book List](#Λίστα-βιβλίων) - [Before you Get Started](#before-you-get-started) - [What you Won't See Covered](#what-you-wont-see-covered) - [Prerequisite Knowledge](#prerequisite-knowledge) @@ -198,4 +198,146 @@ - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. \ No newline at end of file + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + +## Διάλεξε μία γλώσσα για τη συνέντευξη + +Μπορείς να χρησιμοποιήσεις μία γλώσσα με την οποία είσαι άνετος για να κάνεις το προγραμματιστικό κομμάτι της συνέντευξης, αλλά για τις μεγάλες εταιρίες, υπάρχουν ατόφιες επιλογές: + +- C++ +- Java +- Python + +Μπορείς, επίσης, να χρησιμοποιήσεις αυτές, αλλά διάβασε γύρω από αυτό πρώτα. Μπορεί να υπάρχουν προειδοποιήσεις: + +- Javascript +- Ruby + +Πρέπει να είσαι πολύ εξοικιωμένος με τη γλώσσα και γνώστης. + +Διάβασε περισσότερα σχετικά με τις παραπάνω επιλογές: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[Βρες πόρους για τη γλώσσα εδώ](programming-language-resources.md) + +Θα δείς λίγη γνώση σχετικά με τις C, C++ και Python να περιέχεται παρακάτω, επείδη μαθαίνω. Υπάρχουν μερικά εμπλεκόμενα βιβλία, δες το κάτω μέρος. + +## Λίστα βιβλίων + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - απαντήσεις στην C++ και στην Java + - αυτό είναι ένα καλό ζέσταμα για να είσαι άριστος/η στο Coding Interview + - όχι τόσο δύσκολο, τα περισσότερα προβλήματα ίσως είναι ευκολότερα από ότι θα δείς στην συνέντευξη (από αυτά που έχω διαβάσει) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - απαντήσεις στην Java + +Εάν έχεις αρκετό ελεύθερο χρόνο: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + +### Αρχιτεκτονική Υπολογιστών + +Αν έχεις λίγο χρόνο: + +- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Το βιβλίο δημοσιεύτηκε το 2004, και είναι λίγο απαρχεωμένο, αλλά είναι ένας υπέροχος πόρος για να κατανοήσεις έναν υπολογιστή εν συντομία. + - Ο συγγραφέας εφηύρε το HLA, έτσι μην παίρνεις τις αναφορές του και παραδείγματά του για το HLA, τοις μετρητοίς. + - Αυτά τα κεφάλαια αξίζουν το διάβασμα για να σου δώσουν ισχυρά θεμέλια: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization + +Αν έχεις αρκετό χρόνο (Το θέλω αυτό το βιβλίο): + +- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) + - Για μία πλουσιότερη, περισσότερο ενημερωμένη (2011), αλλά εκτενέστερη αντιμετώπιση + +### Συγκεκριμένη γλώσσα + +**Θα πρέπει να επιλέξεις μία γλώσσα για τη συνέντευξη (δες παραπάνω).** Εδώ είναι οι προτάσεις μου ανά γλώσσα. Δεν έχω τους πόρους για όλες τις γλώσσες. Καλοδεχούμενες οι προσθήκες. + +Εάν διαβάσεις μία από αυτές, θα πρέπει να έχεις όλη την γνώση σχετικά με δομές δεδομένων και αλγόριθμους που θα χρειαστείς για να αρχίσεις να λύνεις προβλήματα προγραμματισμού. +**Μπορείς να παραλείψεις όλες τα βίντεο-διαλέξεις που περιέχονται σε αυτό το πρότζεκτ**, εκτός εάν θέλεις να κάνεις μία ανασκόπηση. + +[Επιπρόσθετοι πόροι που αφορούν συγκεκριμένες γλώσσες εδώ.](programming-language-resources.md) + +### C++ + +Δεν έχω διαβάσει αυτά τα δύο, αλλά έχουν λάβει υψηλές αξιολογήσεις και έχουν γραφτεί από τον Sedgewick. Είναι φοβερός. + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +Εάν έχεις μία καλύτερη πρόταση για τη C++, παρακαλώ ενημέρωσέ με. Ψάχνοντας για έναν περιεκτικό πόρο. + +### Java + +- [ ] [Αλγόριθμοι σε Java(Sedgewick)](http://www.skroutz.gr/books/142957.%CE%91%CE%BB%CE%B3%CF%8C%CF%81%CE%B9%CE%B8%CE%BC%CE%BF%CE%B9-%CF%83%CE%B5-Java.html) + - Διδάσκεται στο Τμήμα Πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών + - βιντεο με το περιεχόμενο του βιβλίου (and Sedgewick!): + - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) + - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) + +Ή: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - by Goodrich, Tamassia, Goldwasser + - used as optional text for CS intro course at UC Berkeley + - see my book report on the Python version below. This book covers the same topics. + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +### Προαιρετικά Βιβλία + +**Ορισμένοι συστήνουν αυτά, αλλά το παρακάνουν, εκτός εάν έχεις πολλά χρόνια εμπειρίας και περιμένεις μία δυσκολότερη συνέντευξη:** + +- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Half.com is a great resource for textbooks at good prices. + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - Half.com is a great resource for textbooks at good prices. + - aka CLR, sometimes CLRS, because Stein was late to the game + +- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. + +- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ + - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. + - Would rather spend time on coding problems from another book or online coding problems. From bb38421f4ca6db65a16233fce98a2776b846b17b Mon Sep 17 00:00:00 2001 From: amoraitis Date: Tue, 21 Mar 2017 18:08:45 +0200 Subject: [PATCH 023/857] Updated till "Algorithmic complexity / Big-O / Asymptotic analysis" section. --- translations/README-el.md | 134 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 7 deletions(-) diff --git a/translations/README-el.md b/translations/README-el.md index 6eabdd1ffa..71bedc68ae 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -23,13 +23,13 @@ - [Μη νιώθεις ανίκανος](#Μη-νιώθεις-ανίκανος) - [Σχετικά με τα βίντεο](#Σχετικά-με-τα-βίντεο) - [Διαδικασία Συνέντευξης & Γενική προετοιμασία συνέντευξης](#Διαδικασία-Συνέντευξης--Γενική-προετοιμασία-συνέντευξης) -- [Pick One Language for the Interview](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη) -- [Book List](#Λίστα-βιβλίων) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Διάλεξε μία γλώσσα για τη συνέντευξη](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη) +- [Λίστα βιβλίων](#Λίστα-βιβλίων) +- [Πριν αρχίσεις](#Πριν-αρχίσεις) +- [Τι δε θα δεις να καλύπτετε](#Τι-δε-θα-δεις-να-καλύπτετε) +- [Προαπαιτούμενη γνώση](#Προαπαιτούμενη-γνώση) +- [Το καθημερινό πλάνο](#Το-καθημερινό-πλάνο) +- [Αλγοριθμική πολυπλοκότητα / Big-O / Ασυμπτωτική ανάλυση](#Αλγοριθμική-πολυπλοκότητα--Big-O--Ασυμπτωτική-ανάλυση) - [Data Structures](#data-structures) - [Arrays](#arrays) - [Linked Lists](#linked-lists) @@ -341,3 +341,123 @@ - ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - Would rather spend time on coding problems from another book or online coding problems. + +## Πριν αρχίσεις + +Αυτή η λίστα αυξήθηκε με την περίοδο πολλών μηνών, και ναι, βρίσκεται εκτός ελέγχου. + +Εδώ βρίσκονται κάποια λάθη που έκανα για να έχεις μία καλύτερη εμπειρία. + +### 1. Δε θα το θυμάσαι καθόλου + +Είδα αρκετές ώρες βίντεο και πήρα άφθονες σημειώσεις, κα μήνες μετά υπήρχαν πολλά τα οποία δεν θυμόμουν. Ξόδεψα 3 μέρες εξετάζοντας λεπτομερώς τις σημειώσεις μου και έκανα καρτέλες για να μπορούσα να τις αξιολογήσω. + +Σε παρακαλώ διάβασε τα για να μην κανεις τα ίδια λάθη με τα δικά μου: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) + +### 2. Χρησιμοποιήσε κάρτες σημειώσεων + +Να λύνεις το πρόβλημα, Εγώ έκανα μία μικρή ιστοσελίδα με κάρτες σημειώσεων 2 τύπων: γενικές και κώδικα. Κάθε μία κάρτα έχει διαφορετικό φορμάτ. + +Έκανα ένα mobile-first website για να μπορούσα να τις αξιολογήσω στο κινητό μου και στο tablet μου, όπου κι αν είμαι. + +Φτιάξε το δικό σου δωρεάν: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +Θυμήσου ότι ξεπέρασα τα όρια και είχα κάρτες που κάλυπταν τα πάντα, από assembly και Python trivia έως και μηχανική μάθηση και στατιστική. Ήταν κάπως υπερβολικό από αυτό που χρειαζόταν. + +**Σημείωσε στα flashcards:** Τον πρώτο καιρό θα αναγνωρίζεις ότι γνωρίζεις την απάντηση, μην την μαρκάρεις ως γνωστή. Έχεις να δεις την ίδια κάρτα και να την απαντήσεις αρκετές φορές σωστά πριν την κατανοήσεις πλήρως. Η επανάληψις είναι μήτηρ πάσης μαθήσεως!-Πλάτωνας. + +Η εναλλακτική είναι να χρησιμοποιήσεις το δικό μου flashcard site: [Anki](http://ankisrs.net/), το οποίο έχει προταθεί σε εμένα αρκετές φορές. Χρησιμοποιεί ένα επαναληπτικό σύστημα για να σε βοηθήσει να θυμηθείς. +Είναι φιλικό προς τον χρήστη, διαθέσιμο σε όλες τις πλατφόρμες και διαθέτει συγχρονισμό με το cloud. Κοστίζει 25$ για iOS αλλά είναι δωρεάν στις άλλες πλατφόρμες. + +Η flashcard βάση δεδομένων μου σε φορμάτ Anki: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) + +### 3. Αναθεώρησε, αναθεώρησε, αναθεώρησε + +Διατηρώ το σετ μου απο σκονάκια σε ASCII, στοίβα OSI, σχηματισμούς Big-O, και άλλα. Τα μελετώ όταν έχω λίγο χρόνο. + +Κάνε ένα διάλειμμα από τα προβλήματα προγραμματισμού για μισή ώρα και δούλεψε με τα flashcards. + +### 4. Συγκεντρώσου + +Υπάρχουν πολλοί αντιπερισπασμοί που μπορούν να κοστίσουν πολύτιμο χρόνο. Η συγκέντρωση είναι ένα αρκετά δύσκολο κομμάτι. + +## Τι δε θα δεις να καλύπτετε + +Υπάρχουν επικρατέστερες τεχνολογίες αλλά δεν είναι κομμάτι αυτού του πλάνου διαβάσματος: + +- SQL +- Javascript +- HTML, CSS, και άλλες front-end τεχνολογίες + +## Το καθημερινό πλάνο + +Μερικά θέματα παίρνουν μία ολόκληρη μέρα, και μερικά θα κοστίσουν μερικές μέρες. Μερικά είναι μόνο γνώση χωρίς να χρειαστεί να υλοποιήσεις οτιδήποτε. + +Κάθε μέρα παίρνω ένα θέμα από την παρακάτω λίστα, βλέπω βίντεο για το συγκεκριμένο θέμα, και γρράφω μία υλοποίηση σε: +- C - χρησιμοποιώντας structs και functions που παίρνουν struct * και κάτι άλλο σαν ορίσματα. +- C++ - χωρίς να χρησιμοποιώ built-in τύπους +- C++ - χρησιμοποιώντας built-in τύπους, όπως τα std::list της STL για μία συνδεδεμένη λίστα +- Python - χρησιμοποιώντας built-in τύπους (για να εξασκούμε στην Python) +- και γράφω tests για να σιγουρευτώ ότι το κάνω καλά, μερικές φορές χρησιμοποιώντας μόνο assert() δηλώσεις +- Μπορεί να κάνεις Java ή κάτι άλλο, αυτό είναι μόνο αυτό που κάνω. + +Δεν χρειάζεσαι όλα αυτά. Χρειάζεσαι μόνο [μία γλώσσα για τη συνέντευξη](#Διάλεξε-μία-γλώσσα-για-τη-συνέντευξη). + +Γιατί γράφω κώδικα σε όλα αυτά; +- Εξάσκηση, εξάσκηση, εξάσκηση, μέχρι να γίνω άρρωστος από αυτό, και να μπορώ να το κάνω χωρίς κανένα πρόβλημα (μερικά έχουν πολλές ακραίες περιπτώσεις και και τήρηση των λεπτομερειών του βιβλίου να θυμηθείς) +- Δουλέυω με τα εμπόδια (allocating/freeing memory χωρίς την βοήθεια του garbage collection (εκτός της Python)) +- Κάνω χρήση των built-in τύπων έτσι έχω λίγη εμπειρία στη χρήση built-in εργαλείων για χρήση στον πραγματικό κόσμο (δεν πάω να γράψω τη δικιά μου υλοποίηση για τη συνδεδεμένη λίστα στην παραγωγή) + +Μπορεί να μην έχω χρόνο να τα κάνω αυτά για όλα τα θέματα, αλλά θα προσπαθήσω. + +Μπορείς να δεις τον κώδικα μου εδώ: + - [C] (https://github.com/jwasham/practice-c) + - [C++] (https://github.com/jwasham/practice-cpp) + - [Python] (https://github.com/jwasham/practice-python) + +Δε χρειάζεται να απομνημονεύσεις κάθε κομμάτι ενός αλγόριθμου. + +Γράψε κώδικα σε ένα πίνακα ή σε ένα χαρτί, όχι σε υπολογιστή. Τέσταρε τον με μερικές απλές εισόδους. Μετά τέσταρε τον και σε έναν υπολογιστή. + +## Προαπαιτούμενη γνώση + +- [ ] **Μάθε C** (καλή τύχη με αυτό... :disappointed: ) + - Η C είναι παντού. Θα δείς παραδείγματα σε βιβλία, διαλέξεις, βίντεο, *ΠΑΝΤΟΥ* όσο θα διαβάζεις. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Είναι ένα σύντομο βιβλίο, αλλά θα σου δώσει ένα χεράκι στην γλώσσα C και εάν την εξασκείς λίγο + θα την καταλάβεις γρήγορα. Το να καταλάβεις τη C θα σε βοηθήσει να καταλάβεις πως δουλεύουν τα προγράμματα και η μνήμη. + - [απαντήσεις και ερωτήσεις από έναν Έλληνα](https://github.com/lekkas/c-algorithms) + +- [ ] **How computers process a program:** + - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + +## Αλγοριθμική πολυπλοκότητα / Big-O / Ασυμπτωτική ανάλυση +- τίποτα προς υλοποίηση +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) +- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + + + Εάν μερικές διαλέξεις είναι πολύ μαθηματικές, μπορείς να μεταβείς προς τα κάτω και να παρακολουθήσεις μερικά βίντεο σχετικά με τα διακριτά μαθηματικά για να πάρεις όλες τις γνώσεις που απαιτούνται. + From 7c856ae699eb600b3cdef4124a6d5db12fde6c13 Mon Sep 17 00:00:00 2001 From: Yakup AD Date: Tue, 11 Apr 2017 12:46:32 +0300 Subject: [PATCH 024/857] Create README-tr.md We start Turkish translation --- translations/README-tr.md | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 translations/README-tr.md diff --git a/translations/README-tr.md b/translations/README-tr.md new file mode 100644 index 0000000000..8f7ef7fe07 --- /dev/null +++ b/translations/README-tr.md @@ -0,0 +1,52 @@ +# Görüşme Kodlama Üniversitesi + +Aslında bunu bir yazılım mühendisi olabilmek için kısa çalışma listeleri olarak hazırladım, +ancak bugün gördüğünüz gibi geniş bir listeye dönüştü. +Bu çalışma planını yapmaya başladıktan sonra, Amazon'da (https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Yazılım Geliştirme Mühendisi olarak işe alındım. +Muhtemelen benim yaptığım gibi çok çalışmak zorunda kalmazsınız. +Her neyse, ihtiyacınız olan her şey burada. + + +Burada listelenen öğeler devlerde dahil olmak üzere (Amazon, Facebook, Google ya da Microsoft...) hemen hemen her yazılım şirketindeki mülakatlara hazırlayacak. + +*Size iyi şanlar!* + +Çeviriler: +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vn.md) +- Çeviri İlerlemeleri: + - [İspanyolca](https://github.com/jwasham/coding-interview-university/issues/80) + - [Hintçe](https://github.com/jwasham/coding-interview-university/issues/81) + - [İbranice](https://github.com/jwasham/coding-interview-university/issues/82) + - [Endonezya](https://github.com/jwasham/coding-interview-university/issues/101) + - [Arabça](https://github.com/jwasham/coding-interview-university/issues/98) + - [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) + - [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) + - [Rusça](https://github.com/jwasham/coding-interview-university/issues/87) + - [Ukraynaca](https://github.com/jwasham/coding-interview-university/issues/106) + - [Brezilya Portekizcesi](https://github.com/jwasham/coding-interview-university/issues/113) + - [Korece](https://github.com/jwasham/coding-interview-university/issues/118) + - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) + - [Lehçe](https://github.com/jwasham/coding-interview-university/issues/122) + - [Almanca](https://github.com/jwasham/coding-interview-university/issues/135) + - [Urduca](https://github.com/jwasham/coding-interview-university/issues/140) + - [Tay Dili](https://github.com/jwasham/coding-interview-university/issues/156) + - [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) + - [Italyanca](https://github.com/jwasham/coding-interview-university/issues/170) + +## Bu Nedir? + +Bu rehber bir web geliştiricinin (kendi kendini eğitmiş, BT derecesi olmayan) büyük bir şirkette yazılım mühendisi olabilmek için aylık çalışma planı. + +![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) + +Bu rehber yeni mezun yazılım mühendisleri veya yazılım / web geliştiriciler'in Yazılım Mühendisliği'ne geçişi için hazırlanmıştır. +Uzun yıllara dayanan tecrübeniz veya uzun yıllardır yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir mülakat bekleyin ve + + +Bu, yeni yazılım mühendisleri ** veya yazılım / web geliştirme yazılım mühendisliğine (bilgisayar bilimi bilgisinin gerekli olduğu yerlerde) geçen yazılım mühendisleri içindir **. +Uzun yıllara dayanan tecrübeniz varsa ve uzun yıllar yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir röportaj bekleyin ve +Google, Amazon, Facebook ve Microsoft gibi büyük yazılım şirketlerinin yazılım mühendisliğini, yazılım/web geliştiricilerden farklı gördüğünü ve bilgisayar bilimi bilgisine ihtiyaç duyduklarını unutmayın. +Eğer güvenlik mühendisi veya sistem mühendisi olmak istiyorsanız, bu listeden daha fazla çalışın (ağ oluşturma, güvenlik...). + +--- From 8e34df272be24e0de1942244ab486385ea852168 Mon Sep 17 00:00:00 2001 From: Yakup AD Date: Tue, 11 Apr 2017 12:52:48 +0300 Subject: [PATCH 025/857] Update README-tr.md --- translations/README-tr.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/translations/README-tr.md b/translations/README-tr.md index 8f7ef7fe07..e9122733d0 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -36,17 +36,10 @@ Burada listelenen öğeler devlerde dahil olmak üzere (Amazon, Facebook, Google ## Bu Nedir? -Bu rehber bir web geliştiricinin (kendi kendini eğitmiş, BT derecesi olmayan) büyük bir şirkette yazılım mühendisi olabilmek için aylık çalışma planı. +Bu rehber bir web geliştiricinin (kendi kendini eğitmiş, BT derecesi olmayan) büyük bir şirkette yazılım mühendisi olabilmesi için aylık çalışma planı olarak hazırlanmıştır. ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) -Bu rehber yeni mezun yazılım mühendisleri veya yazılım / web geliştiriciler'in Yazılım Mühendisliği'ne geçişi için hazırlanmıştır. -Uzun yıllara dayanan tecrübeniz veya uzun yıllardır yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir mülakat bekleyin ve - - -Bu, yeni yazılım mühendisleri ** veya yazılım / web geliştirme yazılım mühendisliğine (bilgisayar bilimi bilgisinin gerekli olduğu yerlerde) geçen yazılım mühendisleri içindir **. -Uzun yıllara dayanan tecrübeniz varsa ve uzun yıllar yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir röportaj bekleyin ve -Google, Amazon, Facebook ve Microsoft gibi büyük yazılım şirketlerinin yazılım mühendisliğini, yazılım/web geliştiricilerden farklı gördüğünü ve bilgisayar bilimi bilgisine ihtiyaç duyduklarını unutmayın. -Eğer güvenlik mühendisi veya sistem mühendisi olmak istiyorsanız, bu listeden daha fazla çalışın (ağ oluşturma, güvenlik...). +Yeni mezun yazılım mühendisleri veya yazılım / web geliştiriciler'in Yazılım Mühendisliği'ne geçişi için hazırlanan bu rehberde uzun yıllara dayanan tecrübeniz varsa veya uzun yıllardır yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir mülakat bekleyin ve Google, Amazon, Facebook ve Microsoft gibi büyük yazılım şirketlerinin yazılım mühendisliğini, yazılım/web geliştiricilerden farklı gördüğünü ve bilgisayar bilimi bilgisine ihtiyaç duyduklarını unutmayın. Eğer güvenlik veya sistem mühendisi olmak istiyorsanız, bu listeden daha fazla çalışın (ağ oluşturma, güvenlik...). --- From 2ca71e00a7363ecb459bc6d3e87ad230ef300084 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Tue, 25 Apr 2017 15:50:31 +0300 Subject: [PATCH 026/857] =?UTF-8?q?=D0=90=D0=BA=D1=89=D1=8C=20Prerequisite?= =?UTF-8?q?=20Knowledge=20to=20Data=20Structures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-ru.md | 69 +++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 6d36df5d12..4a43a480e4 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -538,42 +538,41 @@ Google не возьмёт тебя на работу. Пишите код на доске или листе бумаги, но не компьютере. Проверяйте на простых входных данных. Затем тестируйте на компьютере. -## Prerequisite Knowledge - -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) - -- [ ] **How computers process a program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - -## Algorithmic complexity / Big-O / Asymptotic analysis -- nothing to implement -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +## Необходимые знания + +- [ ] **Изучайте C** + - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будите учиться. + - [ ] [Язык программирования С, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Это не большая книга, но после ее прочтения вы получите необходимые знания по С и если будите практиковать, + то достаточно быстро его освоите. Понимание С поможет вам понять как программы и память работают. + - [ответы на вопросы](https://github.com/lekkas/c-algorithms) + +- [ ] **Как компьютеры выполняют программу:** + - [ ] [Как CPU выполняет программы (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Коды машинных инструкций(video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + +## Сложность алгоритмов / Big-O / Асимптотический анализ +- ничего не реализовывать +- [ ] [Harvard CS50 - Асимптотическая нотация (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O нотация (основное, короткое руководство) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O нотация (и Omega и Theta) - лучшее математическое объяснение (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) - - - If some of the lectures are too mathy, you can jump down to the bottom and - watch the discrete mathematics videos to get the background knowledge. + - [видео](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [слайды](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [Плавное введение в анализ сложности алгоритмов](http://discrete.gr/complexity/) +- [ ] [Порядок роста (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) +- [ ] [Асимптотика (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UC Berkeley Big O (видео)](https://youtu.be/VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (видео)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Amortized Analysis (видео)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Иллюстрация "Big O" (ыидео)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] TopCoder (включая рекуррентные соотношений и основную теорему): + - [Вычислительная сложность: Часть 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - [Вычислительная сложность: Часть 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] [Шпаргалка](http://bigocheatsheet.com/) + + Если в некоторых лекциях слишком много математики, вы можете ниже найти и посмотреть + лекции по дискретной математике для получения базовых знаний. ## Data Structures From c13e60eae24ccfbcdff4f9ffe877c9e0ababadb1 Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Tue, 25 Apr 2017 19:15:48 +0300 Subject: [PATCH 027/857] Data Structures to Linked Lists --- translations/README-ru.md | 72 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 4a43a480e4..521f0276bf 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -565,7 +565,7 @@ Google не возьмёт тебя на работу. - [ ] [UC Berkeley Big O (видео)](https://youtu.be/VIS4YDpuP98) - [ ] [UC Berkeley Big Omega (видео)](https://youtu.be/ca3e7UVmeUc) - [ ] [Amortized Analysis (видео)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Иллюстрация "Big O" (ыидео)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] [Иллюстрация "Big O" (видео)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] TopCoder (включая рекуррентные соотношений и основную теорему): - [Вычислительная сложность: Часть 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Вычислительная сложность: Часть 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) @@ -574,44 +574,44 @@ Google не возьмёт тебя на работу. Если в некоторых лекциях слишком много математики, вы можете ниже найти и посмотреть лекции по дискретной математике для получения базовых знаний. -## Data Structures - -- ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) - - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold +## Структуры данных + +- ### Массивы + - Реализация динамического вектора. + - [ ] Описание: + - [Массивы (видео)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - Линейные и многомерные массивы (видео)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [Основные массивы (видео)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [Многомерные массивы (видео)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [Динамические массивы (видео)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Массив массивов (видео)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Массив массивов (видео)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [Динамические массивы (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) + - [ ] Реализация вектора (изменяемый массив с автоматическим изменением размера): + - [ ] Тренируйтесь программировать используя массивы, указатели и арифметику указателей для перехода к индексу вместо индексации. + - [ ] выделение памяти для массива + - можно выделить память для массива целых чисел, просто не используя его возможности + - начиная с 16, или если начальная цифра больше, использовать степень 2 - 16, 32, 64, 128 + - [ ] size() - количество элементов + - [ ] capacity() - количество элементов которое он может содержать - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] at(index) - возвращает элемент по индексу, изменяет размер, если индекс выходит за пределы - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] insert(index, item) - вставка элемента по индексу, сдвигает значение по индексу и следующие за ним элементы вправо + - [ ] prepend(item) - может вставить элемент выше индекса 0 + - [ ] pop() - удалить последний элемент, вернуть значение + - [ ] delete(index) - удаляет элемент по индексу, сдвигает все следующие за ним элементы в лево + - [ ] remove(item) - ищет элементы по значению и удаляет их, даже если их несколько + - [ ] find(item) - ищет элемент по значению и возвращает индекс первого найденного элемента, возвращает -1 если ничего не найденно - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + - когда массив полностью заполнен, увеличивает его размер вдвое + - при добавлении элемента, если размер массива 1/4 от общего размера, увеличиваем на половину + - [ ] Время + - O(1) для операций add/remove в конце (амортизируется для размещения большего объема), index, или update + - O(n) для insert/remove в любом месте + - [ ] Работа с памятью + - смежные в памяти, это помогает повысить производительность + - необходимое пространство = (размер массива, который >= n) * размер элемента, но даже если 2n, по прежнему O(n) - ### Linked Lists - [ ] Description: From 551745986a3e2f46284ed7c3d7e89081e133423d Mon Sep 17 00:00:00 2001 From: redmou Date: Wed, 26 Apr 2017 20:14:24 +0300 Subject: [PATCH 028/857] Update README-ru.md --- translations/README-ru.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 521f0276bf..8afbe387eb 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -201,7 +201,7 @@ Google не возьмёт тебя на работу. ## Получи гугловское настроение -Напечатай знак "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" и смотри на приз. +Напечатай знак "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" и не отводи глаз от желанной добычи. [![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf) @@ -613,23 +613,24 @@ Google не возьмёт тебя на работу. - смежные в памяти, это помогает повысить производительность - необходимое пространство = (размер массива, который >= n) * размер элемента, но даже если 2n, по прежнему O(n) -- ### Linked Lists - - [ ] Description: +- ### Связные списки (Linked Lists) + - [ ] Описание: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. - - [ ] Linked List vs Arrays: + - не все видео целиком, только кусочки об узлах и распределении памяти. + - [ ] Связные списки vs Массивы: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty + - [ ] Ага, попался: тебе нужны знания указетелей на указатели: + (для тех случаев, когда ты передаешь указатель функции, которая может менять адрес, куда указывает указатель) + Это страница просто для того, чтобы понять указатели на указатели. Читабельность и обслуживаемость страдает + из-за искусность. + - [Указатели на указатели](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] воплотить в жизнь (я сделал это с помощью указателя на хвост и без): + - [ ] size() - возвращает количество элементов в листе + - [ ] empty() - bool returnвs true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - [ ] push_front(value) - adds an item to the front of the list - [ ] pop_front() - remove front item and return its value From bac49f8c189f4749d04a2ee75b481cce2c97b4a4 Mon Sep 17 00:00:00 2001 From: redmou Date: Wed, 26 Apr 2017 22:04:22 +0300 Subject: [PATCH 029/857] Linked Lists section translation. Little amendment. --- translations/README-ru.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 8afbe387eb..306030c6d5 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -630,22 +630,23 @@ Google не возьмёт тебя на работу. - [Указатели на указатели](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] воплотить в жизнь (я сделал это с помощью указателя на хвост и без): - [ ] size() - возвращает количество элементов в листе - - [ ] empty() - bool returnвs true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List + - [ ] empty() - возвращет true если список пуст + - [ ] value_at(n) - возращет значение n-го элемента, где 0 - первый элемент + - [ ] push_front(value) - добавляет элемент в начало списка + - [ ] pop_front() - удаляет первый и возращает его значение + - [ ] push_back(value) - добавляет элемент в конец списка + - [ ] pop_back() - удаляет последний и возращает его значение + - [ ] front() - возращает значение первого элемента в списке + - [ ] back() - возращает значение последнего элемента в списке + - [ ] insert(index, value) - помещает значение (value) в элемент по индексу (index), при этом заменяемый элемент + добавлен в список как новый элемент + - [ ] erase(index) - удаляет узел (элемент) по данному индексу + - [ ] value_n_from_end(n) - возращает значение n-го элемента c конца списка + - [ ] reverse() - реверсирует весь список + - [ ] remove_value(value) - удаляет первый элемент в списке с указанным значением (value) + - [ ] Двусвязный список - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement + - Можно не делать - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) From 1b106173a17c6b76581b47127749e9ade525a772 Mon Sep 17 00:00:00 2001 From: amoraitis Date: Tue, 6 Jun 2017 21:37:48 +0300 Subject: [PATCH 030/857] Untill linkedlists --- translations/README-el.md | 189 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) diff --git a/translations/README-el.md b/translations/README-el.md index 71bedc68ae..8a83dbd357 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -461,3 +461,192 @@ Εάν μερικές διαλέξεις είναι πολύ μαθηματικές, μπορείς να μεταβείς προς τα κάτω και να παρακολουθήσεις μερικά βίντεο σχετικά με τα διακριτά μαθηματικά για να πάρεις όλες τις γνώσεις που απαιτούνται. +## Δομές Δεδομένων + +- ### Πίνακες + - Υλοποίησε μία λίστα, η οποία αλλάζει αυτόματα μέγεθος. + - [ ] Περιγραφή: + - [Πίνακες(EN) (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) + - [ ] Υλοποίησε μία συλλογή (ευμετάβλητο πίνακα με αυτόματη αλλαγή μεγέθους): + - [ ] Κάνε πρακτική σε κώδικα χρησιμοποιώντας πίνακες και δείκτες, και pointer math για να πας σε ένα δείκτη από το να χρησιμοποιήσεις ευρετηρίαση. + - [ ] new raw data array with allocated memory + - 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 + - [ ] size() - αριθμός των στοιχείων + - [ ] capacity() - αριθμός στοιχείων που μπορεί να περιέχει + - [ ] is_empty() + - [ ] at(index) - επιστρέφει που υπάρχει στη θέση index, *εκρύγνειται* αν ο δείκτης είναι εκτός συνόρων του πίνακα + - [ ] push(item) + - [ ] insert(index, item) - εισάγει ένα σημείο στη θέση index, μετακινεί την τιμή του index και σύρει όλα τα στοιχεία στα δεξιά + - [ ] prepend(item) - εισάγει το αντικείμενο στην αρχή της συλλογής(insert(0,item)) + - [ ] pop() - αφαιρεί από το τέλος, επιστρέφει την τιμή + - [ ] delete(index) - διγράφη το στοιχείο στη θέση index, σύρει όλα τα στοιχεία στα αριστερά + - [ ] remove(item) - ψάχνει για την τιμή και διαγράφει το δείκτη που την έχει (ακόμα και αν είναι σε περισσότερες από 1 θέσεις) + - [ ] find(item) - ψάχνει για την τιμή και επιστρέφει τον πρώτο δείκτη με αυτή την τιμή, -1 έαν δε βρεθεί + - [ ] resize(new_capacity) // private function + - όταν φτάνεις στη χωρητικώτητα, άλλαξε το μέγεθος του πίνακα κατά το διπλάσιο + - όταν αφαιρείς ένα στοιχείο, εάν το μέγεθος είναι 1/4 της χωρητικότητας, άλλαξε το μέγεθος κατά το μισό + - [ ] Χρόνος + - O(1) για πρόσθεση/αφαίρεση στο τέλος (απελευθέρωση των δεσμευμένων θέσεων για περισσότερο χώρο) + - O(n) για πρόσθεση/αφαίρεση αλλού + - [ ] Χώρος + - συνεχόμενος στη μνήμη, έτσι η μικρή απόσταση βοηθάει στην απόδοση + - απαιτούμενος χώρος = (χωρητικότητα πίνακα, η οποία είναι >= n) * μέγεθος του στοιχείου, αλλά ακόμα και αν είναι 2n => O(n) + +- ### Συνδεδεμένες λίστες + - [ ] Περιγραφή: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation. + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] υλοποίηση (Το έκανα με δείκτη ουράς και χωρίς): + + # untill here + + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] Will not implement. Implementing with array is trivial. + +- ### Queue + - [ ] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) + - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) + - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] round to next power of 2: + - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [ ] swap values: + - [Swap](http://bits.stephan-brumme.com/swap.html) + - [ ] absolute value: + - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - BFS (breadth-first search) + - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - level order (BFS, using queue) + time complexity: O(n) + space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS (depth-first search) + - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - notes: + time complexity: O(n) + space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) \ No newline at end of file From 6dd0bf2a4e15f602a214224c7ed07eb5fe6b2904 Mon Sep 17 00:00:00 2001 From: Yuta Kawai Date: Sun, 11 Jun 2017 15:23:26 +0900 Subject: [PATCH 031/857] [add] japanese readme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 日本語のREADMEを追加 --- translations/README-ja.md | 1975 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1975 insertions(+) create mode 100644 translations/README-ja.md diff --git a/translations/README-ja.md b/translations/README-ja.md new file mode 100644 index 0000000000..fcd3862c6e --- /dev/null +++ b/translations/README-ja.md @@ -0,0 +1,1975 @@ +#コーディングインタビュー大学 + +>私はもともとこれをソフトウェアエンジニアになるための短期的な研究テーマのリストとして作成しましたが、 +>しかし、それは今日あなたが見る大きなリストに成長しました。この調査計画を経て、[私は雇われました +> Amazonのソフトウェア開発エンジニアとして](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +>あなたは私のように勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 +> +>ここに記載されている項目は、ほぼすべてのソフトウェア会社のインタビューの中で、 +>巨人を含む:Amazon、Facebook、GoogleまたはMicrosoft。 +> +> *あなたに最高の運勢!* + +翻訳: +- [中文版本](翻訳/ README-cn.md) +- [TiếngViệt - ベトナム語](翻訳/ README-vi.md) +- [Español](翻訳/ README-es.md) + +翻訳中: +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [インドネシア語](https://github.com/jwasham/coding-interview-university/issues/101) +- [アラビア語](https://github.com/jwasham/coding-interview-university/issues/98) +- [トルコ語](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [ロシア語](https://github.com/jwasham/coding-interview-university/issues/87) +- [ウクライナ](https://github.com/jwasham/coding-interview-university/issues/106) +- [ブラジルのポルトガル語](https://github.com/jwasham/coding-interview-university/issues/113) +- [韓国語](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) +- [ドイツ語](https://github.com/jwasham/coding-interview-university/issues/135) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [タイ語](https://github.com/jwasham/coding-interview-university/issues/156) +- [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) + +## それは何ですか? + +これは、Web開発者(独学で、CS指導なし)から大企業のソフトウェアエンジニアに向かうための私の複数月の学習計画です。 + +![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) + +これは、**新しいソフトウェアエンジニア**または +ソフトウェア/ウェブ開発からソフトウェア工学(コンピュータサイエンスの知識が必要な場合)。あなたが持っている場合 +長年の経験とソフトウェア工学の長年の経験を主張している、より面白いインタビューを期待しています。 + +何年ものソフトウェア/ウェブ開発経験がある場合は、Google、Amazon、 +FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウェア/ Web開発とは異なるものと見ており、コンピュータ科学の知識が必要です。 + +信頼性エンジニアまたはシステムエンジニアになりたい場合は、オプションのリスト(ネットワーク、セキュリティ)から詳細を調べてください。 + +--- + +## 目次 + +- [これはなんで?](何のことなの?) +- (なぜそれを使うの?)(#why-use-it) +- [使い方](#使い方) +- [あなたが十分にスマートではないと感じないでください](十分にスマートではありません) +- [ビデオリソースについて](#about-video-resources) +- [インタビュープロセスと一般インタビューの準備](#インタビュープロセス - 一般インタビュー - 準備) +- [インタビューのための1つの言語を選ぶ](インタビューのために1つの言語を選択する) +- [ブックリスト](#ブックリスト) +- [あなたが始める前に](始める前に#) +- あなたがカバーしていないもの(何があなたには見えません) +- [前提知識](#前提条件知識) +- [日々の計画](日々の計画) +- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム - 複雑 - big-o - 漸近分析) +- [データ構造](#データ構造) + - [配列](#配列) + - [リンクリスト](#リンクリスト) + - [スタック](#スタック) + - [キュー](#キュー) + - [ハッシュテーブル](#ハッシュテーブル) +- [その他の知識](#more-knowledge) + - [バイナリ検索](#バイナリ検索) + - [ビット単位演算](#ビット単位演算) +- [ツリー](#木) + - [ツリー - ノートと背景](#木---ノート - 背景) + - [バイナリ検索ツリー:BST](#binary-search-trees-bsts) + - [ヒープ/優先度キュー/バイナリヒープ](#ヒープ - 優先度キュー - バイナリヒープ) + - バランスの取れた検索ツリー(詳細ではなく一般概念) + - トラバーサル:preorder、inorder、postorder、BFS、DFS +- [ソート](#ソート) + - 選択 + - 挿入 + - heapsort + - クイックソート + - マージソート +- [グラフ](#グラフ) + - 監督 + - 無向 + - 隣接行列 + - 隣接リスト + - トラバーサル:BFS、DFS +- [さらに多くの知識](#偶数知識) + - [再帰](#再帰) + - [動的プログラミング](#動的プログラミング) + - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング) + - [デザインパターン](#デザインパターン) + - [組み合わせ(n choose k)と確率](#combinatorics-n-choose-k - 確率) + - [NP、NP-完全近似アルゴリズム](#np-np-complete-and-approximation-algorithms) + - [キャッシュ](#キャッシュ) + - [プロセスとスレッド](#processes-and-threads) + - [論文](#論文) + - [テスト](#テスト) + - [スケジューリング](#スケジューリング) + - [システムルーチンを実装する](#implement-system-routines) + - [文字列検索と操作](#文字列検索 - 操作) + - [試行](#試行) + - [浮動小数点数](浮動小数点数) + - [Unicode](#ユニコード) + - [エンディアン](#エンディアン) +- [ネットワーキング](#ネットワーキング) +- [システム設計、スケーラビリティ、データ処理](#システム設計 - スケーラビリティデータ処理)(4年以上の経験がある場合) +- [最終審査](#最終審査) +- [コーディング質問練習](#コーディング質問練習) +- [コーディング練習問題/挑戦](#コーディング演習問題) +- [インタビューに近づいたら](インタビューに一度近づいて) +- [あなたの履歴書](あなたの履歴書) +- [インタビューが来たときに考える](インタビューのときに考えている) +- [インタビュアーに質問があります](#面接のための質問があります) +- [一度あなたは仕事を得ました](一度あなたが仕事をしたこと) + +----------------この時点より下のものはすべてオプションです---------------- + +- [追加の書籍](追加の書籍数) +- [追加学習](追加学習) + - [コンパイラ](#コンパイラ) + - [Emacsとvi(m)](#emacs-and-vim) + - [Unixコマンドラインツール](#unix-command-line-tools) + - [情報理論](#情報理論) + - [パリティ&ハミングコード](#パリティ - ハミングコード) + - [Entropy](#エントロピー) + - [暗号化](#暗号化) + - [圧縮](#圧縮) + - [コンピュータセキュリティ](#コンピュータセキュリティ) + - [ガベージコレクション](#ガベージコレクション) + - [パラレルプログラミング](#パラレルプログラミング) + - [メッセージング、シリアライゼーション、キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) + - [A *](#a) + - [高速フーリエ変換](#高速フーリエ変換) + - [ブルームフィルタ](#ブルームフィルタ) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#ローカリティセンシティブハッシング) + - [van Emde Boas Trees](ヴァン・エムード・ボア・ツリー) + - [拡張データ構造](#拡張データ構造) + - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) + - [バランス検索木](#バランス検索木) + - AVLツリー + - スプレッドツリー + - レッド/ブラックの木 + - 2-3の検索木 + - 2-3-4樹木(別名2-4木) + - N-ary(K-ary、M-ary)木 + - Bツリー + - [k-D木](#k-d-trees) + - [スキップリスト](#スキップリスト) + - [ネットワークフロー](#ネットワークフロー) + - [分離セットとユニオン検索](#disjoint-sets - union-find) + - [高速処理のための数学](#数学のための高速処理) + - [Treap](#treap) + - [線形計画法](#線形計画法) + - [ジオメトリ、凸包](#ジオメトリ - 凸包) + - [離散数学](離散数学) + - [機械学習](機械学習) +- [いくつかの科目の追加の詳細](#追加の詳細 - いくつかの科目) +- [ビデオシリーズ](#ビデオシリーズ) +- [コンピュータサイエンスコース](#コンピュータサイエンスコース) + +## なぜそれを使用するのですか? + +私がこのプロジェクトを始めたとき、ヒープからスタックを知りませんでした、Big-Oの何か、木のこと、または +グラフを横断する。並べ替えアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 +これまで使用してきたすべてのデータ構造は言語に組み込まれており、どのように動作するのか分かりませんでした +ボンネットの下にすべて。私が実行していたプロセスが " +私は人生でいくつかの多次元配列を使いました。 +何千もの連想配列ですが、データ構造を一から作成したことはありません。 + +それは長い計画です。あなたに数ヶ月かかるかもしれません。すでに多くのことに慣れていれば、それほど時間がかかりません。 + +## それの使い方 + +下のすべてがアウトラインです。アイテムを上から下に順番に取り組まなければなりません。 + +私はGithubの特別なマークダウンフレーバーを使用しています。 + +**新しいブランチを作成して、このような項目をチェックできるようにするには、xを角かっこで囲みます:[x] ** + + +    ブランチをフォークし、以下のコマンドに従ってください。 + +`git checkout -b progress` + +`git remote add jwasham https:// github.com / jwasham / coding-interview-university` + +`git fetch --all` + +    変更を完了した後にXですべてのボックスにマークを付ける + +`git add。 ` + +`git commit -m `とマークしたx" + +`git rebase jwasham / master` + +`git push --force` + +[Github風味のマークアップの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +##あなたは十分にスマートではないと感じないでください +- 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 +- [Geniusプログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [独り言に行くのは危険だ:Tech in Invisible Monstersと戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) +--- + +##ビデオリソースについて + +一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。これらはMOOCと呼ばれています。 +時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 Lynda.comコースは無料ではありません。 + +    オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 +    私は大学の講義を使うのが好きです。 + + +##インタビュープロセスと一般インタビュー準備 + +- [ ] [ABC:常にコーディングする](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [プログラミングインタビュー中の効果的なホワイトボード](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Tech Recruitingの謎解き](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] クラッキングコーディングインタビューセット1: + - [ ] [Gayle L McDowell - コーディングインタビュー(ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Gayle Laakmann McDowell(ビデオ)](https://www.youtube.com/watch?v=aClxtDcdpsQ)とのコーディングインタビューをクラッキング +- [ ] ビッグ4で仕事を得る方法: + - [ ] [Amazon、Facebook、Google、Microsoft(ビデオ)](https://www.youtube.com/watch?v=YJZCUhxNCv8)でビッグ4の仕事を手に入れる方法 +- [ ] 準備コース: + - [ ] [Software Engineer Interview Unleashed(有料コース)](https://www.udemy.com/software-engineer-interview-unleashed): + - 以前のGoogleインタビュアーのソフトウェアエンジニアインタビューの準備をする方法を学びます。 + - [ ] [データ構造、アルゴリズム、インタビューのためのPython! (有料コース)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - データ構造、アルゴリズム、模擬インタビューなどを扱うPython中心のインタビューの準備コース。 + +##インタビューのための1つの言語を選ぶ + +インタビューのコーディングの部分に慣れ親しんだ言語を使用することはできますが、大企業にとってはこれらの選択肢が確実です。 + +- C ++ +- Java +- Python + +これらを使用することもできますが、最初に読んでください。注意が必要な場合があります: + +- JavaScript +- Ruby + +あなたは言語に非常に慣れて知識が必要です。 + +選択肢についてもっと読む: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[言語リソースはこちら](programming-language-resources.md) + +私は学習しているので、以下に含まれるC、C ++、Pythonの学習を見ることができます。いくつかの本があります、下を参照してください。 + +## 予約リスト + +これは私が使ったものよりも短いリストです。これは時間を節約するために省略されています。 + +### インタビュー準備 + +- [ ] [プログラミングインタビュー公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - C ++とJavaの回答 + - コーディングインタビューをクラッキングするためのウォームアップが良い + - それほど難しくない、ほとんどの問題は、私が読んだことから、あなたがインタビューで見るよりも簡単かもしれません。 +- [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Javaでの回答 + +もし余分な時間があれば: + +- [ ] [プログラミングインタビューの要素(C ++版)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] インタビュープログラミングの要素(Java版) + - [本](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [コンパニオンプロジェクト - 本のすべての問題のメソッドスタブとテストケース](https://github.com/gardncl/elements-of-programming-interviews) + +### コンピュータアーキテクチャ + +短い時間: + +- [ ] [グレートコードの作成:第1巻:マシンの理解](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - この本は2004年に出版され、幾分古いですが、コンピュータを簡単に理解するには素晴らしいリソースです。 + - 作者はHLAを発明したので、塩の穀物でHLAの言及と例を取り上げます。広く使われているわけではありませんが、どのようなアセンブリのように見えますか? + - これらの章はあなたに素敵な基礎を与えるために読む価値があります: + - 第2章 - 数値表現 +        第3章2進算術とビット演算 + - 第4章 - 浮動小数点表現 + - 第5章 - キャラクター表現 + - 第6章 - メモリ構成とアクセス +        第7章複合データ型とメモリオブジェクト +        第9章CPUアーキテクチャ + - 第10章命令セットのアーキテクチャ + - 第11章 - メモリのアーキテクチャと構成 + +もっと時間があれば(私はこの本が欲しい): + +- [ ] [Computer Architecture、第5版:定量的アプローチ](https://www.amazon.com/dp/012383872X/) + - より豊かで最新の(2011年)、より長い治療のために + +###言語固有 + +**インタビューの言語を選択する必要があります(上記参照)。** 私はすべての言語のためのリソースがありません。私は追加を歓迎する。 + +これらのうちの1つを読んだら、コーディングの問題を開始するために必要なすべてのデータ構造とアルゴリズムの知識が必要です。 +**あなたがレビューしたいと思わない限り、このプロジェクト**のビデオ講義をすべてスキップすることができます**。 + +[ここに言語固有の追加リソースがあります](programming-language-resources.md) + +### C ++ + +私はこれらの2つを読んだことはありませんが、Sedgewickによって高く評価され書かれています。彼は素晴らしいです。 + +- [ ] [C ++でのアルゴリズム、パート1-4:基礎、データ構造、ソート、検索](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [C ++でのアルゴリズム第5部:グラフアルゴリズム](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +C ++の推奨事項がある場合は、私に知らせてください。包括的なリソースを探しています。 + +### Java + +- [ ] [アルゴリズム(Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 本のコンテンツを持つビデオ(とSedgewick!): + - [アルゴリズム1](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) + - [アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) + +OR: + +- [ ] [Javaにおけるデータ構造とアルゴリズム](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - Goodrich、Tamassia、Goldwasserによる + - UCバークレーのCSイントロコースのオプションテキストとして使用 + - 下のPython版の私の本のレポートを見てください。この本は同じトピックを扱っています。 + +### Python + +- [ ] [Pythonのデータ構造とアルゴリズム](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Goodrich、Tamassia、Goldwasserによる + - 私はこの本が好きだった。それはすべてをカバーしました。 + - Pythonコード + - 私の輝く本のレポート:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +###オプションの書籍 + +**何人かはこれをお勧めしますが、何年ものソフトウェアエンジニアリング経験があり、より面白いインタビューを期待している場合を除いて、** + +- [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) + - レビューと問題認識として + - アルゴリズムのカタログ部分は、インタビューで得られる難易度の範囲をはるかに超えています。 + - この本は2つの部分を持っています: + - データ構造とアルゴリズムに関する教科書 + - プロ: + - アルゴリズムの教科書はどんなものでも良いレビューです + - 業界および学界の問題を解決した経験から得た素敵な話 + - Cのコード例 + - 短所: + - CLRSと同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の被験者にとってより良い選択肢になる可能性があります + - 章7,8,9は、いくつかの項目がうまく説明されていない、または私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります + - 私は間違っていない:私はSkiena、彼の教授のスタイル、そしてマタニズムが好きだが、私はストーニーブルックの素材ではないかもしれない。 + - アルゴリズムカタログ: + - これがあなたがこの本を買う本当の理由です。 + - この部分に近づくこと。一度私がそれを通り抜けたら、ここで更新されます。 + - それを光り輝かせることができます + - Half.comは、良い価格で教科書のための素晴らしいリソースです。 + - 回答: + - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [ ] [アルゴリズムの紹介](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **重要:** この本の読書は価値が限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 + - Half.comは、良い価格で教科書のための素晴らしいリソースです。 + - スタインはゲームに遅れていたので、別名CLR、ときにはCLRS + +- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - 章の最初の2つは、プログラミング上の問題(データテープを使用して非常に古くなっているもの) +      それはちょうどイントロです。これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 + +- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ + - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 + - 別の書籍やオンラインのコーディングの問題からコーディングの問題に時間を費やすことになります。 + + +##あなたが始める前に + +このリストは何ヶ月にもわたって成長しました。 + +ここで私が作ったいくつかの間違いがあります。あなたはより良い経験をするでしょう。 + +### 1.あなたはそれをすべて覚えていない + +私は数時間のビデオを見て、豊富なメモを取りました。そして数ヶ月後に私は覚えていないほどでした。私は3日間過ごした +私のメモとフラッシュカードを作って見直すことができました。 + +あなたが私の間違いをしないように読んでください: + +[コンピュータ科学知識の保持](https://startupnextdoor.com/retaining-computer-science-knowledge/) + +### 2.フラッシュカードを使用する + +この問題を解決するために、私は2種類のフラッシュカード、一般とコードを追加できる小さなフラッシュカードサイトを作った。 +各カードのフォーマットは異なります。 + +私はモバイル先のウェブサイトを作ったので、どこにいても電話とタブレットを見直すことができました。 + +あなた自身を無料で作る: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [マイフラッシュカードデータベース(旧1200カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [マイフラッシュカードデータベース(新1800カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +私は船外に出て、アセンブリ言語やPythonのトリビアからマシンの学習や統計に至るまですべてのカードをカバーしています。何が必要なのかはあまりにも大変です。 + +**フラッシュカードについての注意:** あなたが最初に答えを知っているときは、知らないようにしてください。あなたは +あなたが本当にそれを知る前に、同じカードを数回正しく答えてください。繰り返しは、その知識を深く +あなたの脳。 + +私のフラッシュカードサイトを使用する代わりに[Anki](http://ankisrs.net/)が何度も私に勧められています。繰り返しシステムを使用して覚えやすくなります。 +ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウドシンクシステムを備えています。 iOSでは25ドル、他のプラットフォームでは無料です。 + +Ankiフォーマットの私のフラッシュカードデータベース:https://ankiweb.net/shared/info/25173560(thanks [@xiewenya](https://github.com/xiewenya)) + + +### 3.レビュー、レビュー、評価 + +私は、ASCII、OSIスタック、Big-O表記などのチートシートを用意しています。私は余裕があるときに勉強します。 + +プログラミングの問題から30分ほど休み、フラッシュカードを通過してください。 + +### 4.フォーカス + +貴重な時間を費やす可能性のある注意散漫がたくさんあります。集中と集中が難しい。 + +##カバーされていないもの + +これらは一般的な技術ですが、この調査計画の一部ではありません: + +- SQL +- Javascript +- HTML、CSS、およびその他のフロントエンド技術 + +##日々の計画 + +一部の被験者は1日を要し、いくつかは複数日を要する。いくつかは、何も実装することなく学習しているだけです。 + +毎日私は以下のリストから1つのテーマを取り上げ、そのテーマに関するビデオを見て、以下の実装を書いています: +- C - structと他のものをargsとする構造体と関数を使う。 +- C ++ - 組み込み型を使用しない +- C + + - リンクリストのSTLのstd :: listのような組込み型の使用 +- Python - 組み込み型を使用する(Pythonの練習を続ける) +私は正しいことをするためのテストを書いています。単純なassert()文を使って +- あなたはJavaや他の何かをするかもしれませんが、これは私のことです。 + +あなたはこれらのすべてを必要としません。あなたは[インタビューのための1つの言語]だけが必要です(インタビューのための1つの言語を選択します)。 + +なぜこれらすべてのコード? +- 私はそれが病気になるまで、練習、練習、練習、そして何も問題なく行うことができます(いくつかは覚えておくべき多くのエッジケースと簿記の詳細があります) +- 生の制約内で作業する(ガベージコレクションの助けを借りずにメモリを割り当てる/解放する(Pythonを除く)) +- 組み込み型を利用するので、組み込みのツールを実世界で使用する経験があります(実稼働環境で自分のリンクリストの実装を作成するつもりはありません) + +私はすべてのテーマでこれらのすべてをやる時間がないかもしれませんが、私は試してみます。 + +あなたは私のコードをここに見ることができます: +- [C](https://github.com/jwasham/practice-c) +- [C ++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) + +あなたはすべてのアルゴリズムの勇気を暗記する必要はありません。 + +コンピューターではなく、ホワイトボードや紙にコードを書く。いくつかのサンプル入力でテストします。次に、コンピュータでテストします。 + +##前提知識 + +- [ ] **Learn C** + - Cはどこにでもあります。あなたは勉強している間、書籍、講義、ビデオ、*どこでも*の例を見ることができます。 + - [ ] [Cプログラミング言語、Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - これは短い本ですが、C言語の優れた処理方法を提供し、少しでも練習すれば +            あなたはすぐに熟練を得るでしょう。 Cを理解すると、プログラムやメモリの仕組みを理解するのに役立ちます。 + - [質問への回答](https://github.com/lekkas/c-algorithms) + +- [ ] **コンピュータがプログラムをどのように処理するか:** + - [ ] [CPUがプログラム(ビデオ)をどのように実行するか](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [機械コード命令(ビデオ)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + +##アルゴリズムの複雑さ/ Big-O / Asymptotic解析 +- 何もしない +- [ ] [Harvard CS50 - Asymptotic Notation(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [ビッグO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) +ビッグO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)(https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] スキナ: + - [動画](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [スライド](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [複雑なアルゴリズムの複雑さの概要](http://discrete.gr/complexity/) +- [ ] [成長の命令(ビデオ)](https://class.coursera.org/algorithmicthink1-004/lecture/59) +- [ ] [Asymptotics(video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UCバークレービッグO(ビデオ)](https://youtu.be/VIS4YDpuP98) +- [ ] [UCバークレービッグオメガ(ビデオ)](https://youtu.be/ca3e7UVmeUc) +- [ ] [償却分析(ビデオ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [「Big O」(ビデオ)を説明する](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] TopCoder(漸化関係とマスター定理を含む): + - [計算の複雑さ:セクション1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - [計算の複雑さ:セクション2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] [チートシート](http://bigocheatsheet.com/) + + +    講義の中には数学的にも余裕がある場合は、下にジャンプして +    離散数学ビデオを見て、バックグラウンドの知識を得る。 + +## データ構造 + +- ###配列 + - 自動的にサイズ変更ベクトルを実装する。 + - [ ] 説明: + - [アレイ(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - 線形および多次元アレイ(ビデオ)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [Basic Arrays(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [Multi-dim(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [ダイナミックアレイ(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [ギザギザアレイ(動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ギザギザアレイ(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [配列のサイズ変更(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) + - [ ] ベクトルを実装する(自動サイズ変更可能な可変配列): + - [ ] 配列とポインタを使ったコーディングと、インデックスを使わずにインデックスにジャンプするポインタ演算を練習します。 + - [ ] 割り当てられたメモリを持つ新しい生データ配列 + - フードの中でint配列を割り当てることができます。 + - 16で開始するか、開始番号が大きい場合は、2 - 16,32,64,128の出力を使用します + - [ ] size() - 項目数 + - [ ] capacity() - 保持できるアイテムの数 + - [ ] is_empty() + - [ ] at(index) - 指定されたインデックスでitemを返し、インデックスが範囲外であれば吹き飛ばす + - [ ] プッシュ(項目) + - [ ] insert(index、item) - itemをindexに挿入し、そのインデックスの値と末尾の要素を右側にシフトする + - [ ] prepend(item) - インデックス0に上記の挿入を使用できます + - [ ] pop() - 最後から削除し、値を返す + - [ ] delete(index) - インデックスの項目を削除し、すべての末尾の要素を左にシフトする + - [ ] remove(item) - 値を探し、それを保持するインデックスを削除します(複数の場所であっても) + - [ ] find(item) - valueを検索し、その値を持つ最初のインデックスを返します。見つからなければ-1を返します。 + - [ ] resize(new_capacity)//プライベート関数 + - 容量に達すると、サイズを2倍に変更します + - アイテムをポップするとき、サイズが容量の1/4である場合、サイズを半分に変更 + - [ ] 時間 + - 最後に追加/削除するO(1)(スペースを増やすために償却される)、索引、または更新 + - 他の場所に挿入/削除するO(n) +    - [ ] スペース + - メモリ内で連続しているため、プロキシミティがパフォーマンスに役立ちます + - 必要なスペース=(配列の容量は> = n)*アイテムのサイズですが、2nでもO(n) + +- ###リンクリスト + - [ ] 説明: + - [ ] [単独リンクされたリスト(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - リンクリスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) + - [ ] [CS 61B - リンクリスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) + - [ ] [Cコード(動画)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) +            ビデオ全体ではなく、Node構造体とメモリ割り当てに関する部分だけです。 + - [ ] リンクリストと配列: + - [Core Linked Lists Vs Arrays(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [Real World Linked Lists Vs Arrays(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs)アレー) + - [ ] [なぜあなたはリンクされたリスト(ビデオ)を避けるべきですか](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha:ポインタの知識へのポインタが必要です: +        (そのポインタが指すアドレスを変更する可能性のある関数へのポインタを渡すとき) +        このページはptrからptrまでを把握するためのものです。このリストトラバーサルスタイルはお勧めしません。読みやすさと保守性は巧みさのために苦しんでいます。 + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] 実装する(私はテールポインタ&なしで行った): + - [ ] size() - リスト内のデータ要素の数を返す + - [ ] empty() - 空の場合はboolを返します + - [ ] value_at(index) - n番目の項目の値を返します(最初は0から始まります) + - [ ] push_front(value) - リストの先頭に項目を追加します + - [ ] pop_front() - 前面アイテムを削除してその値を返します + - [ ] push_back(値) - 最後に項目を追加する + - [ ] pop_back() - 終了アイテムを削除し、その値を返します + - [ ] front() - フロントアイテムの値を取得する + - [ ] back() - 終了項目の値を取得する + - [ ] insert(index、value) - インデックスに値を挿入するので、そのインデックスの現在のアイテムはインデックスの新しいアイテムによってポイントされます + - [ ] erase(index) - 指定したインデックスのノードを削除する + - [ ] value_n_from_end(n) - リストの最後からn番目のノードの値を返します + - [ ] reverse() - リストを逆順にする + - [ ] remove_value(value) - この値を持つリストの最初の項目を削除します。 + - [ ] 二重リンクリスト + - [説明(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - 実装する必要はありません + +- ### Stack + - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [スタックを先入れ先出しで使用する(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4 .html) + - [ ] 実装されません。配列で実装するのは簡単です。 + +- ###キュー + - [ ] [先入れ先出し(ビデオ)の使用](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4 .html) + - [ ] [Queue(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [循環バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [優先度キュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] テールポインタ付きリンクリストを使って実装する: + - エンキュー(値) - テールの位置に値を追加する + - dequeue() - 値を返し、最近追加された要素のうち少なくとも最近削除されたもの(前面) +        - 空の() + - [ ] 固定長配列を使って実装する: + - エンキュー(値) - 利用可能なストレージの最後にアイテムを追加する + - dequeue() - 値を返し、最近追加された要素のうち最も古い要素を削除します +        - 空の() + - full() + - [ ] コスト: +        あなたが頭にエンキューし、テールでデキューするリンクリストを使った悪い実装はO(n) +            あなたが最後の要素の次の要素を必要とするため、各デキューを完全にトラバースさせるためです + - エンキュー:O(1)(償却、リンクリストと配列[プロービング]) + - デキュー:O(1)(リンクされたリストと配列) + - 空:O(1)(リンクリストと配列) + +- ### ハッシュ表 + - [ ] 動画: + - [ ] [連鎖によるハッシング(動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [テーブルダブリング、Karp-Rabin(ビデオ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [公開アドレス指定、暗号化ハッシング(動画)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010:The Mighty Dictionary(video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced)Randomization:Universal&Perfect Hashing(ビデオ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(高度)パーフェクトハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] オンラインコース: + - [ ] [ハッシュ関数(ビデオ)の理解](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [ハッシュテーブル(ビデオ)の使用](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] [ハッシングをサポートする(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) + - [ ] [言語サポートハッシュテーブル(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) + - [ ] [Core Hash Tables(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [データ構造(ビデオ)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [電話帳の問題(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] 分散ハッシュテーブル: + - [Dropbox(ビデオ)でインスタントアップロードとストレージの最適化](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [分散ハッシュテーブル(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] 線形プロービングを使用して配列で実装する + - hash(k、m) - mはハッシュテーブルのサイズです + - add(key、value) - キーがすでに存在する場合は、値を更新します。 + - 存在する(キー) + - get(key) + - 削除(キー) + +##その他の知識 + +- ###バイナリ検索 + - [ ] [バイナリ検索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [バイナリ検索(ビデオ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [詳細](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] 実装: + - バイナリ検索(ソートされた整数の配列) + - 再帰を使用したバイナリ検索 + +- ###ビット演算 + - [ ] [ビットチートシート](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - (2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗) + - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] 良いイントロ: +            [ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [Cプログラミングチュートリアル2-10:ビット演算子(ビデオ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [ビット操作](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [ビット単位の操作](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) + - [ ] [ビットツイダーインタラクティブ](http://bits.stephan-brumme.com/interactive.html) + - [ ] 2と1の補数 + - [バイナリ:Plusses&Minuses(なぜ2の補数を使うのか)(ビデオ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s補完](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s補完](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] カウントセットビット + - [1バイトのビットを数える4つの方法(ビデオ)](https://youtu.be/Hzuzo9NJrlc) + - [カウントビット数](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [32ビット整数で設定されたビット数を数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数) + - [ ] 2の次の累乗に丸めます: + - [2つの次のパワーに回す](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [ ] スワップ値: + - [Swap](http://bits.stephan-brumme.com/swap.html) +    - [ ] 絶対値: + - [絶対整数](http://bits.stephan-brumme.com/absInteger.html) + +## 木 + +- ###木 - ノートと背景 + - [ ] [シリーズ:Core Trees(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [シリーズ:木々(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - 基本的な木の構築 + - トラバーサル + - 操作アルゴリズム + - BFS(幅優先検索) + - [MIT(動画)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - レベルオーダー(BFS、キューを使用) +            時間複雑度:O(n) +            空間の複雑さ:最適:O(1)、最悪:O(n / 2)= O(n) + - DFS(深さ優先探索) + - [MIT(動画)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) +        - ノート: +            時間複雑度:O(n) +            スペースの複雑さ: +                最良:O(log n) - 平均。木の高さ +                最悪:O(n) + - インオーダー(DFS:left、self、right) + - ポストオーダー(DFS:left、right、self) + - プレオーダー(DFS:自己、左、右) + +- ###バイナリ検索ツリー:BST + - [ ] [バイナリ検索ツリーレビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [シリーズ(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - シンボルテーブルから始まり、BSTアプリケーションを経由します + - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT(動画)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C / C ++: + - [ ] [バイナリ検索ツリー - C / C ++での実装(ビデオ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(ビデオ)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [バイナリ検索ツリー(ビデオ)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [バイナリツリーの高さを見つける(ビデオ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [バイナリツリートラバース - 幅優先戦略(ビデオ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [バイナリツリー:レベルオーダートラバーサル(動画)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [バイナリツリートラバーサル:Preorder、Inorder、Postorder(video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [バイナリツリーがバイナリ検索ツリーかどうかを確認する(ビデオ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [バイナリ検索ツリー(ビデオ)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [バイナリ検索ツリー(ビデオ)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] 実装: + - [ ] insert //ツリーに値を挿入する + - [ ] get_node_count //格納された値の数を取得する + - [ ] print_values //最小値から最大値までツリーの値を出力します + - [ ] delete_tree + - [ ] is_in_tree //与えられた値がツリーに存在する場合はtrueを返します + - [ ] get_height //ノードの高さを返します(単一ノードの高さは1です) + - [ ] get_min //ツリーに格納されている最小値を返します + - [ ] get_max //ツリーに格納されている最大値を返します + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor //指定された値の後にツリーの次に高い値を返し、存在しなければ-1を返します + +- ###ヒープ/プライオリティキュー/バイナリヒープ + - ツリーとして可視化されますが、通常はストレージ内で線形です(配列、リンクリスト) + - [ ] [ヒープ](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations(video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [バイナリツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [ツリー高さ備考(ビデオ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [基本操作(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [完全なバイナリツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [疑似コード(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [ヒープソート - 開始(ビデオ)にジャンプ](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [ヒープソート(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [ヒープを作る(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT:ヒープとヒープソート(ビデオ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B講義24:優先度キュー(ビデオ)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Linear Time BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] 最大ヒープを実装する: + - [ ] 挿入 + - [ ] sift_up - 挿入に必要 + - [ ] get_max - 最大項目を削除せずに返します + - [ ] get_size() - 格納された要素の数を返す + - [ ] is_empty() - ヒープに要素が含まれていない場合はtrueを返します。 + - [ ] extract_max - 最大アイテムを返し、それを削除します。 + - [ ] sift_down - extract_maxに必要です + - [ ] remove(i) - インデックスxのアイテムを削除する + - [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する + - [ ] heap_sort() - ソートされていない配列を取り出し、最大ヒープを使用してソート済みの配列に変換します + - 注意:代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります(インプレースでは実行できません)。 + +##並べ替え + +- [ ] ノート: + - ソートを実装し、最良のケース/最悪のケース、それぞれの平均的な複雑さを知る: + - バブルソートなし - ひどい - O(n ^ 2)、ただしn <= 16の場合を除く + - ソートアルゴリズムの安定性( "Quicksortは安定していますか?") + - [ソートアルゴリズムの安定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [ソーティングアルゴリズムの安定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [ソーティングアルゴリズムの安定性](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [ソートアルゴリズム - 安定性](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] どのアルゴリズムをリンクリストに使用できますか?どの配列ですか?両方でどちら? + - リンクされたリストのソートはお勧めしませんが、マージソートは実行可能です。 + - [リンクされたリストのマージソート](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。 + +- [ ] [Sedgewick - Mergesort(5ビデオ)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [1。 Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) + - [ ] [2。 Mergesortボトムアップ](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) + - [ ] [3。複雑さの並べ替え](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [4。コンパレータ](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [5。安定性](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + +- [ ] [Sedgewick - Quicksort(4ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [1。 Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [2。選択](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [3。 Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [4。システムソート](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + +- [ ] UCバークレー: + - [ ] [CS 61B講義29:ソートI(ビデオ)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) + - [ ] [CS 61B講義30:ソートII(ビデオ)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) + - [ ] [CS 61B講義32:ソートIII(ビデオ)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B講義33:ソートV(ビデオ)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + +- [ ] [バブルソート(動画)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [バブルソートの分析(動画)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [挿入ソート、マージソート(動画)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [挿入順(動画)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [マージソート(動画)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [クイックソート(動画)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [選択ソート(動画)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] マージソートコード: + - [ ] [出力配列(C)の使用](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [出力配列(Python)を使う](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [インプレース(C ++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] クイックソートコード: + - [ ] [Implementation(C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [実装(C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [実装(Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] 実装: + - [ ] Mergesort:O(n log n)平均と最悪の場合 + - [ ] Quicksort O(n log n)平均の場合 + - 選択ソートと挿入ソートは両方ともO(n ^ 2)の平均と最悪の場合です + - ヒープソートについては、上記のヒープデータ構造を参照してください。 + +- [ ] 必須ではありませんが、私はそれらをお勧めしました: + - [ ] [Sedgewick - Radix Sorts(6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [1。 Javaの文字列](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) + - [ ] [2。 Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) + - [ ] [3。最下位桁の最初の文字列の基数ソート](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) + - [ ] [4。最も重要な数字の最初の文字列の基数ソート](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [5。 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [6。接尾辞配列](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) + - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [基数ソート(動画)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [基数ソート、ソート(線形時間指定の制約)(ビデオ)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [無作為化:Matrix Multiply、Quicksort、Freivaldsのアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [線形時間で並べ替える(ビデオ)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +要約すると、[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現です。 +このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects) + +##グラフ + +グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。 + +- ノート: + - メモリにグラフを表示するには4つの基本的な方法があります: + - オブジェクトとポインタ + - 隣接行列 + - 隣接リスト + - 隣接地図 + - 各表現とその長所と短所をよく知っている + - BFSとDFS - 計算の複雑さとそのトレードオフ、そしてそれらを実際のコードに実装する方法を知っている + - 質問が表示されたら、まずグラフベースのソリューションを探し、見つからない場合は次に進みます。 + +- [ ] Skiena Lectures - 素晴らしいイントロ: + - [ ] [CSE373 2012 - 講義11 - グラフデータ構造(ビデオ)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - 講義12 - 幅優先検索(ビデオ)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(ビデオ)(ビデオ)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(動画2)(ビデオ)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(コンター3)(ビデオ)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] グラフ(レビューなど): + + - [ ] [6.006シングルソース最短経路問題(ビデオ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra(video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford(video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Dijkstraのスピードアップ(ビデオ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) +    グラフアルゴリズムI - トポロジカルソート、最小スパニングツリー、プリムのアルゴリズム - 講演6(ビデオ)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Aduni:グラフアルゴリズムII - DFS、BFS、Kruskalのアルゴリズム、連合探索データ構造 - 講義7(ビデオ)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) + - [Aduni:グラフアルゴリズムIII:最短経路 - レクチャー8(ビデオ)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni:Graph Alg。 IV:幾何学アルゴリズムの紹介 - 第9講(ビデオ)(https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014(58:09から開始)(ビデオ)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014:加重グラフ(ビデオ)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [欲張りアルゴリズム:最小スパニングツリー(ビデオ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- フルコースラコース: + - [ ] [グラフ上のアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- 私は実装します: + - [ ] 隣接リストを持つDFS(再帰的) + - [ ] 隣接リストを持つDFS(スタックで反復) + - [ ] 隣接行列を持つDFS(再帰的) + - [ ] 隣接行列を持つDFS(スタックで反復) +    隣接リストを持つ - [ ] BFS +    隣接行列を持つ[ - ] BFS + - [ ] 単一ソースの最短経路(ダイクストラ) + - [ ] 最小スパニングツリー + - DFSベースのアルゴリズム(上記のAduniの動画を参照): + - [ ] サイクルをチェックする(トポロジカルソートに必要、開始前にサイクルをチェックするので) + - [ ] トポロジカルソート + - [ ] グラフ内の接続されたコンポーネントをカウントする + - [ ] 強く接続されたコンポーネントを一覧表示する + - [ ] 二部グラフをチェックする + +Skienaの本(下記の書籍の節を参照)とインタビューの書籍 + +##さらに多くの知識 + +- ###再帰 + - [ ] スタンフォードは再帰とバックトラックに関する講義を行います: + - [ ] [講義8 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [講義9 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [講義10 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [講義11 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - それを使用するのが適切なとき + - 尾の再帰はどのように優れていないのですか? + - [ ] [テール再帰とは何かなぜそれが悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [テール再帰(ビデオ)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ###動的プログラミング + - この問題はかなり難しいかもしれません。なぜなら、各DPの可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 + - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 + - [ ] 動画: + - Skienaのビデオは、時には見ることができないほど小さすぎるホワイトボードを使用することがあるため、フォローするのが難しい場合があります + - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(ビデオ)(https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena:CSE373 2012 - 講義20 - 編集距離(ビデオ)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena:CSE373 2012 - 講義21 - 動的プログラミング例(ビデオ)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミング(ビデオ)のアプリケーション](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [Simonson:Dynamic Programming 0(59:18から開始)(ビデオ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson:ダイナミックプログラミングI - 講義11(ビデオ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson:Dynamic Programming II - 講演12(ビデオ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] 個々のDP問題のリスト(それぞれ短い): +            [動的プログラミング(動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale講義ノート: + - [ ] [動的プログラミング](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング) + - [ ] Coursera: + - [ ] [RNA二次構造の問題(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [動的プログラミングアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [DPアルゴリズム(ビデオ)の説明](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [DPアルゴリズムの実行時間(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) +        [[DP対再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [グローバル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [ローカル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### オブジェクト指向プログラミング + - [ ] [オプション:UML 2.0シリーズ(動画)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] オブジェクト指向ソフトウェアエンジニアリング:UMLとJavaを使ったソフトウェア開発(21ビデオ): + - OOおよびOO設計の実践を十分に把握している場合は、これをスキップできます。 + - [OOSE:UMLとJavaを使用したソフトウェア開発](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] SOLID OOP原則: + - [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(ビデオ)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [ソリッド原則(ビデオ)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html)| [各オブジェクトへの単一責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [もっと味](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open / Closed Principal](http://www.oodesign.com/open-close-principle.html)| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません](https://en.wikipedia.org/wiki/Open/closed_principle) + - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html)| [基本クラスと派生クラスは `IS A`プリンシパルに従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=ja) + - [ ] I - [インタフェース分離原理](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません + - [インタフェース分離原理5分(ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) + - [ ] D - [Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 + - なぜ依存関係の逆転の原則とそれが重要なのか(http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja) + +- ### デザインパターン + - [ ] [クイックUMLレビュー(ビデオ)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] これらのパターンを学ぶ: + - [ ] 戦略 + - [ ] シングルトン + - [ ] アダプタ + - [ ] プロトタイプ + - [ ] デコレータ + - [ ] 訪問者 + - [ ] 工場、抽象工場 + - [ ] ファサード + - [ ] 観察者 + - [ ] プロキシ + - [ ] 委任 + - [ ] コマンド + - [ ] 状態 + - [ ] 記念品 + - [ ] イテレータ + - [ ] コンポジット + - [ ] フライウェイト + - [ ] [第6章(パート1) - パターン(ビデオ)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - 抽象化 - 発生、一般階層、プレーヤー役割、シングルトン、オブザーバー、代表団(ビデオ)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index= 12&リスト= PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(ビデオ)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [一連の動画(27ビデオ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - 正式な本は「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」であることは分かっていますが、ヘッドファーストはOOの初心者には最適です。 + - [ ] [参考:101のデザインパターンとヒント(開発者向け)](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [人間のデザインパターン](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ###コンビナトリアル(nをkとする)と確率 + - [ ] [数学のスキル:ファクター、パーミュテーション、コンビネーションの検索方法(選択)(ビデオ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [学校を作る:確率(ビデオ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [学校を作る:確率とマルコフ連鎖(ビデオ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - コースのレイアウト: + - [ ] [基本理論的確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - ちょうどビデオ - 41(それぞれ単純で、それぞれ短いです): + - [ ] [確率説明(ビデオ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) +- ### NP、NP-完全近似アルゴリズム + - 旅行者のセールスマンやナップザックの問題など、NP完全問題の最も有名なクラスについて知っています。 +        面接官があなたに偽装して尋ねると、それらを認識することができます。 + - NP完成の意味を知る。 + - [ ] [計算上の複雑さ(ビデオ)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs。 II&NP完全性へのイントロ(ビデオ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP完全性II&リダクション(ビデオ)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP完全性III(ビデオ)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP完全性IV(ビデオ)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] スキナ: + - [ ] [CSE373 2012 - 講義23 - NP完全性入門(ビデオ)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - 講義24 - NP完全性証明(ビデオ)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講演25 - NP完全性挑戦(ビデオ)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [複雑さ:P、NP、NP完全性、リダクション(ビデオ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [複雑さ:近似アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [複雑さ:固定パラメータアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するために最適なソリューションについて議論しています。 + - [ジュピターノート](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - あなたが持っているなら、CLRSの1048 - 1140ページ。 + +- ###キャッシュ + - [ ] LRUキャッシュ: + - [ ] [LRUキャッシュの魔法(100日間のGoogle Dev)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRU(ビデオ)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache(C ++)(video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPUキャッシュ: + - [ ] [MIT 6.004 L15:メモリ階層(ビデオ)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16:キャッシュの問題(動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ###プロセスとスレッド + - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): + - プロセスとスレッド用 + - [オペレーティングシステムとシステムプログラミング(ビデオ)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [プロセスとスレッドの違いは何ですか?](https://www.quora.com/What-is-the-difference-between-a-process-and-thread) + - カバー: + - プロセス、スレッド、並行性の問題 + - プロセスとスレッドの違い + - プロセス + - スレッド + - ロック + - mutexes + - セマフォー + - モニター + - 彼らはどのように動作する + - デッドロック + - ライブロック + - CPUの動作、割り込み、コンテキストの切り替え + - マルチコアプロセッサを使用した最新の並行性構成 + - [ページング、セグメンテーション、仮想メモリ(動画)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [割り込み(動画)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [スケジュール設定(動画)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) + - プロセスリソースのニーズ(メモリ:コード、静的ストレージ、スタック、ヒープ、ファイル記述子、I / O) + - スレッドリソースの必要性(同じプロセス内の他のスレッドとの上の(マイナススタック)の共有、それぞれが独自のpc、スタックカウンタ、レジスタ、およびスタックを持つ) + - フォークは、新しいプロセスがメモリに書き込むまで、実際には書き込み時にコピー(読み取り専用)され、次に完全なコピーを行います。 + - コンテキストスイッチ + - オペレーティングシステムとその基盤となるハードウェアによってコンテキスト切り替えが開始される仕組み + - [ ] [C ++のスレッド(シリーズ - 10ビデオ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] Pythonでの並行性(ビデオ): + - [ ] [スレッドに関する短いシリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Pythonスレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Python GIL(2010)の理解](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [参考文献](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - 地上からのPython並行処理:LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [基調講演David Beazley - 興味のあるトピック(Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ###論文 + - 全面的に完全に理解することは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。 + - [古典的な論文を愛する?](https://www.cs.cmu.edu/~crary/819-f09/) + - [ ] [1978:順次プロセスの通信](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Goで実装](https://godoc.org/github.com/thomas11/csp) + - [ ] [2003:The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012年に巨像に置き換えられました + - [ ] [2004:MapReduce:大規模クラスタでのデータ処理の簡略化](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - 主にCloud Dataflowに置き換えられましたか? + - [ ] [2006:Bigtable:構造化データ用分散ストレージシステム](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [Google BigQueryの内部を見る](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) + - [ ] [2006:疎結合分散システムのChubby Lockサービス](https://research.google.com/archive/chubby-osdi06.pdf) + - [ ] [2007:Dynamo:Amazonの高可用キー値ストア](https://www.akkadia.org/drepper/cpumemory.pdf) + - Dynamo紙がNoSQL革命を開始 + - すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する)](https://www.akkadia.org/drepper/cpumemory.pdf) + - [ ] [2010:Dapper、大規模分散システム追跡基盤](https://research.google.com/pubs/archive/36356.pdf) + - [ ] [2010:Dremel:Web-Scaleデータセットのインタラクティブ解析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) + - [ ] [2012:Googleの巨像](https://www.wired.com/2012/07/google-colossus/) + - 紙がありません + - [ ] 2012:AddressSanitizer:高速アドレス整合性チェッカー: + - [ペーパー](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [ビデオ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [ ] 2013:スパナ:Googleのグローバル分散データベース: + - [ペーパー](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [ビデオ](https://www.usenix.org/node/170855) + - [ ] [2014年:機械学習:技術的な負債の高い金利のクレジットカード](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2015:Googleの継続的なパイプライン](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) + - [ ] [2015年:大規模な高可用性:Googleの広告用データ基盤の構築](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) + - [ ] [2015:TensorFlow:異種分散システムで学ぶ大規模マシン](http://download.tensorflow.org/paper/whitepaper2015.pdf) + - [ ] [2015年:開発者がコードを検索する仕組み:ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2016:Borg、Omega、Kubernetes](http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44843.pdf) + +- ###テスト + - カバーするために: + - ユニットテストの仕組み + - モックオブジェクトとは何ですか? + - 統合テストとは + - 依存性注入とは + - [ ] [James Bachによるアジャイルソフトウェアテスト(ビデオ)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [ジェイムス・バッハによるソフトウェアテストの公開講座(ビデオ)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - テスト駆動開発(これは私たちが意味するものではありません)(ビデオ)](https://vimeo.com/83960706) + - [スライド](http://goocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] [TDDは死んでいます。長いライブテスト。](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) + - [ ] [TDDは死んでいますか? (ビデオ)](https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ ] [ビデオシリーズ(152ビデオ) - すべてではない(ビデオ)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [ ] [Pythonでテスト駆動型Web開発](http://www.obeythetestinggoat.com/pages/book.html#toc) + - [ ] 依存性注入: + - [ ] [動画](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [テストのタオ](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ###スケジューリング + - OSで、どのように動作するのですか + - オペレーティングシステムのビデオから収集できます + +- ###システムルーチンを実装する + - 使用するプログラミングAPIの下にあるものを理解する +    あなたはそれらを実装できますか? + +- ###文字列の検索と操作 + - [ ] [Sedgewick - 接尾辞配列(ビデオ)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] [Sedgewick - サブストリング検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [1。サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [2。ブルートフォースサブストリング検索](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] [3。 Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [4。 Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) + - [ ] [5。 Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [テキストの検索パターン(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + +    このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects) + +- ###試行 + - 試行の種類が異なることに注意してください。いくつかは接頭辞を持ち、いくつかは接頭辞を持ち、あるものはビットの代わりに文字列を使います +        パスを追跡する。 + - 私はコードを読んだが、実装しないだろう。 + - [ ] [Sedgewick - 試してみる(3ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [1。 R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [2。 Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [3。キャラクターベースの操作](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] [データ構造とプログラミング手法に関する注記](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] 短期コースビデオ: + - [ ] [紹介する(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [パフォーマンスの試行(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Trie(ビデオ)の実装](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [Trie:無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - 試用版の使用](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [スタンフォード講演(現実世界のユースケース)(ビデオ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ###浮動小数点数 + - [ ] 単純な8ビット:[浮動小数点数の表現 - 1(ビデオ - 計算にエラーがあります - ビデオの説明を参照)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32ビット:[IEEE754 32ビット浮動小数点バイナリ(ビデオ)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [すべてのプログラマーが、エンコーディングと文字セットについて知る必要があることは間違いない](http://kunststube.net/encoding/) + +- ###エンディアン + - [ ] [ビッグ・アンド・リトル・エンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [ビッグエンディアン対リトルエンディアン(ビデオ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside / Out(ビデオ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。 + - 前半で十分です。 + +- ###ネットワーキング + - **ネットワーク経験がある、またはシステムエンジニアになりたい場合は、質問を期待してください** + - そうでなければ、これは知っているだけでいいです + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDPとTCP:トランスポートプロトコルの比較](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [[TCP / IPとOSIモデルの説明!](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [インターネット経由のパケット伝送。ネットワーク&TCP / IPチュートリアル](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSLとHTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL / TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [ビデオシリーズ(21ビデオ)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IggfoqO4iPnPYQui46QqT0j) + - [ ] [不確かさのサブネット化 - 第5部CIDR表記](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] ソケット: + - [ ] [Java - Sockets - Introduction(video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [ソケットプログラミング(ビデオ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +##システム設計、スケーラビリティ、データ処理 +- **4年以上の経験があれば、システム設計の質問を期待できます。** +- スケーラビリティとシステム設計は、多くのトピックとリソースを持つ非常に大きなトピックです。 +      拡張可能なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。 +      これにかなりの時間を費やすことを期待してください。 +- 考察: + - スケーラビリティ + - 大きなデータセットを単一の値に変換する + - あるデータセットを別のデータセットに変換する + - 莫大な量のデータを扱う + - システム設計 + - 機能セット + - インターフェース + - クラス階層 + - 一定の制約の下でシステムを設計する + - シンプルさと丈夫さ + - トレードオフ + - パフォーマンス分析と最適化 + +- [ ] **ここをクリック**:[The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) +- [ ] [テクニカルインバビューで設計質問に答えるための準備方法](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical -interview?redirected_qid = 1500023) +- [ ] [システムデザインインタビューの前に知っておくべき8つの事柄](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before - システム設計 - インタビュー/) +- [ ] [アルゴリズム設計](http://www.hiredintech.com/algorithm-design/) +- [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(ビデオ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。 +- [ ] [システム設計インタビューの方法](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [誰もが知るべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [コンテキストスイッチを作るのにどれくらい時間がかかりますか?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [データセンター間の取引(動画)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [CAP定理の簡単な英語入門](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] パクソス合意アルゴリズム: + - [短い動画](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ユースケースとマルチパクソーズの拡張動画](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [ペーパー](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) + +- [ ] スケーラビリティ: + - [ ] [概要(動画)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] 短いシリーズ: + - [Clones](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) + - [ ] [スケーラブルなWebアーキテクチャと分散システム](http://www.aosabook.org/ja/distsys.html) + - [ ] [分散コンピューティングの説明](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra:Google Pregelグラフ処理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Googleでソフトウェアシステムを構築し、教訓(ビデオ)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [規模の設計システムの紹介](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [App EngineとCloud Datastore(ビデオ)を使用して世界中の視聴者にモバイルゲームを拡大](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [GoogleがPlanet-Scale Infra(プラチナスケールインフラ)のプラネットスケールエンジニアリングを行う仕組み](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [アルゴリズムの重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [シャーディング](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook(2009)](https://www.infoq.com/presentations/Scale-at-Facebook) +    Facebook(2012年)、「10億ユーザー向けビルド(ビデオ)」(https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(ビデオ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7年間のYouTubeスケーラビリティレッスン30分](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) + - [動画](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用)](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -ju.html) + - [ ] [大きなデータセットで重複を削除する方法](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [EtsyのスケールとJon Cowieによるエンジニアリング文化(ビデオ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - Amazonが独自のマイクロサービスアーキテクチャに導いたこと(http://thenewstack.io/led-amazon-microservices-architecture/) + - [圧縮するか圧縮しない、それはUberの質問でした](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Tarantool非同期キュー、キューに入れる](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [おおよそのクエリ処理をいつ使うべきか](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + + - [ ] [単一のデータセンターからフェイルオーバーするための、Googleのネイティブマルチホームアーキテクチャへの移行](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover- to-an.html) + - [ ] [スパナ](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [Egnyteアーキテクチャ:マルチペタバイト分散システムの構築とスケーリングの教訓](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and- scaling.html) + - [ ] [機械学習型プログラミング:新しい世界のための新しいプログラミング](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for- a.html) + - [ ] [1日あたり何百万ものリクエストを処理する画像最適化技術](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder:どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-largest-recommendation-engines-de.html) + - [ ] [現代のキャッシュのデザイン](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Facebookのスケールでライブビデオストリーミング](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) +    AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド(http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million- users-on-amazons.html) + - [ ] [ドッカーの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [AMPはGoogleに存在する脅威に対抗していますか?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) + - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) ) + - [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless(非常に長い、要点が必要)](http://martinfowler.com/articles/serverless.html) + - [ ] [Instagramのパワーは何百ものインスタンス、何十ものテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d。 html) + - [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfishのソーシャルゲームアーキテクチャ - 50百万人の月間ユーザーと成長(http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) ) + - [ ] [アーキテクチャ - 40Mビジター、200M動的ページビュー、30TBデータ](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view .html) + - [ ] [PlentyOfFishアーキテクチャ](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) ) + - [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -nuh-nuhs.html) + - [ ] 一緒にサービスを接着できる技術の情報については、下記の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 + - [ ] Twitter: + - [O`Reilly MySQL CE 2011:Jeremy Cole、「@Twitterの大小データ」(ビデオ)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [スケール時のタイムライン](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - さらに詳しくは、[Video Series](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。 + +- [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように扱われたのかについてのいくつかの文書があります。 + - レビュー:[The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) + - [チートシート](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - 流れ: + 1. 問題と範囲を理解する: +            - インタビュアーの助けを借りてユースケースを定義する + - 追加の機能を提案する + - インタビュアーが範囲外とみなすアイテムを削除する + - 高可用性が必要と仮定し、ユースケースとして追加する + 2. 制約について考える: + - 1か月あたりのリクエスト数を尋ねる + - 1秒あたりにどれくらい多くのリクエストをするか(彼らはボランティアでもよいし、あなたに数学をさせるかもしれない) + - 読み込みの見積もりと書き込みの割合 + - 推定時に80/20ルールを覚えておいてください + - 1秒あたりに書き込まれるデータの量 + - 5年間に必要な合計ストレージ + - 1秒あたりに読み取られるデータの量 + 3. 抽象的なデザイン: + - レイヤー(サービス、データ、キャッシング) + - インフラストラクチャ:負荷分散、メッセージング + - サービスを駆動する主要なアルゴリズムの概要 + - ボトルネックを考慮し、解決策を決定する + - 演習: + - [CDNネットワークの設計:古い記事](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [ランダムなID生成システムの設計](https://blog.twitter.com/2010/announcing-snowflake) + - [オンラインマルチプレイヤーカードゲームのデザイン](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Key-Valueデータベースの設計](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [画像共有システムの設計](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [推薦システムの設計](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [URL短縮システムの設計:上からコピー](http://www.hiredintech.com/system-design/the-system-design-process/) + - [キャッシュシステム設計](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +##最終レビュー + +    このセクションでは、重要な概念のほとんどを見直すためにかなり短いビデオを見ることができます。 +    あなたが頻繁にリフレッシャーをしたいならいいですね。 + +- [ ] 2〜3分短編ビデオシリーズ(23ビデオ) + - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] マイケル・サンボール(18ビデオ) + - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - アルゴリズムI](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) + - [ ] [01。ユニオン検索](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [ ] [02。アルゴリズムの分析](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) + - [ ] [03。スタックとキュー](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) + - [ ] [04。初級](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) + - [ ] [05。 Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [06。 Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [07。優先度キュー](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) + - [ ] [08。 Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) + - [ ] [09。平衡検索ツリー](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) + - [ ] [10。 BSTの幾何学的応用](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) + - [ ] [11。ハッシュテーブル](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) +- [ ] [Sedgewick Videos - アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) + - [ ] [01。間違ったグラフ](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) + - [ ] [02。 (Directed Graphs)](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) + - [ ] [03。最小スパニングツリー](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) + - [ ] [04。最短経路](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) + - [ ] [05。最大フロー](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) + - [ ] [06。基数ソート](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [07。試してください](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [08。サブストリング検索](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [09。正規表現](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) + - [ ] [10。データ圧縮](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) + - [ ] [11。減額](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) + - [ ] [12。リニアプログラミング](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) + - [ ] [13。難易度](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) + +--- + +##コーディングの質問練習 + +上のすべてのコンピュータ科学のトピックを知ったので、コーディングの問題に答える練習をしましょう。 + +**コーディング質問の練習は、プログラミング問題への回答を記憶することではありません。** + +プログラミングの問題を練習する必要がある理由 +- 問題の認識、そして適切なデータ構造とアルゴリズムの適合 +- 問題のための要件を集める +- インタビューであなたのように問題を話している +- コンピュータではなく、ホワイトボードや紙でのコーディング +- ソリューションの時間と空間の複雑さが増す +- ソリューションのテスト + +インタビューでは、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングからこれを得るでしょう +インタビューの本もありましたが、私はこの優れた発見しました: +[アルゴリズム設計キャンバス](http://www.hiredintech.com/algorithm-design/) + +自宅にホワイトボードはありませんか?それは理にかなっている。私は変わった人で、大きなホワイトボードを持っています。ホワイトボードの代わりに、 +アートストアからの大きな描画パッド。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。 +私はスケールの写真にペンを追加しました。ペンを使うと、あなたは消すことができます。すぐに厄介になる。 + +![私のソファホワイトボード](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) + +補足: + +- [Topcodersの数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) +- [動的プログラミング - 初心者から上級者へ](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [MITインタビュー資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [特定の言語をより良くするための練習](http://exercism.io/languages) + +**プログラミングの問題を読んでやる(この順番で):** + +- [ ] [プログラミングインタビュー公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - C、C ++、Javaの回答 +- [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Javaでの回答 + +[上記のブックリスト](#ブックリスト)を参照してください + +##コード演習/挑戦 + +あなたの脳を学んだら、脳を働かせてください。 +できるだけ多く、毎日コーディングの課題に取り組んでください。 + +- [ ] [解決方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) +- [ ] [Topcoder Problem Statementを解読する方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) + +コーディングインタビュー質問ビデオ: +- [IDeserve(88ビデオ)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy(5プレイリスト)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + +チャレンジサイト: +- [LeetCode](https://leetcode.com/) +- [TopCoder](https://www.topcoder.com/) +- [プロジェクトオイラー(Math-focused)](https://projecteuler.net/index.php?section=problems) +- [コードワード](http://www.codewars.com) +- [HackerEarth](https://www.hackerearth.com/) +- [HackerRank](https://www.hackerrank.com/) +- [Codility](https://codility.com/programmers/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Sphere(Sphere)](http://www.spoj.com/) + +チャレンジレポ: +- [Pythonの対話型コーディングインタビューの課題](https://github.com/donnemartin/interactive-coding-challenges) + +モックインタビュー: +- [Gainlo.co:大企業のモックインタビュアー](http://www.gainlo.co/) +- [Pramp:仲間との懇談会](https://www.pramp.com/) +- [Refdash:Mock interviews](https://refdash.com/) + +##あなたが面接に近づいたら + +- [ ] クラッキングコーディングインタビューセット2(ビデオ): + - [コードインタビューをクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [コードインタビューをクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## あなたの履歴書 + +- クラッキングでの準備項目の再開を参照してください。コーディングインタビューとプログラミングインタビューの公開 + + +##インタビューが来る時を考えている + +あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。それぞれ2-3の答えがあります。 +あなたが達成したことについての物語だけでなく、データを持ってください。 + +- なぜあなたはこの仕事をしたいです? +- あなたが解決した厳しい問題は何ですか? +- 最大の課題に直面した? +- ベスト/最悪のデザインが見られる? +- 既存の製品を改善するためのアイデア。 +- 個人として、そしてチームの一員として、どのようにベストを尽くしていますか? +- あなたのスキルや経験のうち、その役割の資産とその理由は? +- [job x / project y]で一番楽しかったことは何ですか? +- [job x / project y]に直面した最大の課題は何ですか? +- [job x / project y]で直面した最も難しいバグは何でしたか? +- [job x / project y]で何を学びましたか? +- あなたは[job x / project y]で何を良くしていますか? + +##インタビュアーに質問があります + +    私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です): + +あなたのチームはどれくらいですか? +- あなたの開発サイクルはどのように見えるのですか?あなたは滝/スプリント/アジャイルをしますか? +- 締め切りまでの時間は共通ですか?それとも柔軟性はありますか? +- あなたのチームではどのように意思決定が行われますか? +- 週に何回会議がありますか? +- あなたの仕事環境が集中するのに役立つと思いますか? +- 何をしているの? +- それについて何が好きですか? +- 仕事の生活はどうですか? + +##一度あなたは仕事を得た + +おめでとう! + +学び続けます。 + +あなたは決して本当に終わらない。 + +--- + +    *************************************************** *************************************************** * +    *************************************************** *************************************************** * + +    この点以下のものはすべてオプションです。 +    これらを勉強することで、より多くのCSコンセプトにさらされることになります。 +    任意のソフトウェアエンジニアリングジョブ。あなたはもっと豊富なソフトウェアエンジニアになるでしょう。 + +    *************************************************** *************************************************** * +    *************************************************** *************************************************** * + +--- + + +##その他の書籍 + +- [ ] [Unixプログラミング環境](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=情報) + - 古き良き時代 +- [ ] [Linuxコマンドライン:完全な紹介](https://www.amazon.com/dp/1593273894/) + - 現代的な選択肢 +- [ ] [TCP / IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/gp/product/0596007124/) + - デザインパターンへの穏やかな紹介 +- [ ] [デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - 別名「Gang Of Four」の本、またはGOF + - 正式なデザインパターンの本 +- [ ] [UNIXおよびLinuxシステム管理ハンドブック、第4版](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) + +##その他の学習 + +これらの話題はインタビューでは出てこないかもしれませんが、 +特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 + +- ###コンパイラ + - [ ] [1分でコンパイラがどのように動作するか(ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - コンパイラ(ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [C ++(video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [ ] [コンパイラの最適化について(C ++)(ビデオ)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacsとvi(m) + - UNIXベースのコードエディタに慣れましょう + - vi(m): + - [vim 01での編集 - インストール、設定、およびモード(ビデオ)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - 4ビデオのセット: + - [vi / vimエディタ - レッスン1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [vi / vimエディタ - レッスン2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [vi / vimエディター - レッスン3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [vi / vimエディタ - レッスン4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Emacsの代わりにViを使う](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [基本Emacsチュートリアル(ビデオ)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3つのセット(ビデオ): + - [Emacsチュートリアル(初心者向け) - 第1部 - ファイルコマンド、カット/コピー/ペースト、カーソルコマンド](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacsチュートリアル(初心者向け) - パート2 - バッファ管理、検索、M-grep、rgrepモード](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacsチュートリアル(初心者) - 第3章式、ステートメント、〜/ .emacsファイルとパッケージ](https://www.youtube.com/watch?v=paSgzPso-yc) + - [邪悪なモード:または、私がEmacsを気絶させ、愛する方法(動画)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [EmacsでCプログラムを書く](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(多分)組織モードの詳細:構造の管理(ビデオ)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unixコマンドラインツール + - 私は良いツールから下のリストに記入しました。 + - [ ] bash + - [ ] cat + - [ ] grep + - [ ] sed + - [ ] awk + - [ ] カールまたはwget + - [ ] ソート + - [ ] tr + - [ ] uniq + - [ ] [strace](https://en.wikipedia.org/wiki/Strace) + - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ###情報理論(ビデオ) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - [ ] Markovプロセスの詳細: + - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [ ] [Markov Text Generationを実装するコア](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [ ] [プロジェクト=マルコフテキスト生成ウォークスルー](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs) + - 下記のMIT 6.050J Information and Entropyシリーズを参照してください。 + +- ###パリティ&ハミングコード(ビデオ) + - [ ] [イントロ](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - [ ] ハミングコード: + - [エラー検出](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ###エントロピー + - 下記の動画もご覧ください + - 最初に情報理論ビデオを見てください + - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ###暗号化 + - 下記の動画もご覧ください + - 最初に情報理論ビデオを見てください + - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [ ] [暗号化:ハッシュ関数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [ ] [暗号化:暗号化](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ###圧縮 + - 最初に情報理論ビデオを見てください + - [ ] Computerphile(ビデオ): + - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [ ] [上向きの木(ハフマンツリー)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [ ] [エキストラビット/ TRITS - ハフマンツリー](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [ ] [テキストのエレガントな圧縮(LZ 77方式)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [ ] [テキスト圧縮が確率を満たす](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [ ] [(オプション)Google Developers Live:GZIPでは不十分です!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ###コンピュータセキュリティ + - [MIT(23ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [はじめに、脅威モデル](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [ハイジャック攻撃の制御](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [ ] [バッファオーバーフローの悪用と防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [ ] [特権の分離](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [機能](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [サンドボックス化ネイティブコード](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [ ] [ウェブセキュリティモデル](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Webアプリケーションの保護](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [シンボリック実行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [ネットワークセキュリティ](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [ネットワークプロトコル](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [サイドチャネル攻撃](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ###ガベージコレクション + - [ ] [ガベージコレクション(Java);データの拡張(動画)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) + - [ ] [コンパイラ(ビデオ)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) + - [ ] [GC in Python(video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ ] [ディープダイブJava:ガーベッジコレクションは良いです!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [ ] [Deep Dive Python:CPythonでのガベージコレクション(ビデオ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ###パラレルプログラミング + - [ ] [Coursera(Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [ ] [高性能並列計算のための効率的なPython(ビデオ)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ###メッセージング、シリアライゼーション、およびキューイングシステム + - [ ] [Thrift](https://thrift.apache.org/) + - [チュートリアル](http://thrift-tutorial.readthedocs.io/ja/latest/intro.html) + - [ ] [プロトコルバッファ](https://developers.google.com/protocol-buffers/) + - [チュートリアル](https://developers.google.com/protocol-buffers/docs/tutorials) + - [ ] [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers(video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [ ] [Redis](http://redis.io/) + - [チュートリアル](http://try.redis.io/) + - [ ] [Amazon SQS(キュー)](https://aws.amazon.com/sqs/) + - [ ] [Amazon SNS(pub-sub)](https://aws.amazon.com/sns/) + - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [はじめに](https://www.rabbitmq.com/getstarted.html) + - [ ] [Celery](http://www.celeryproject.org/) + - [セロリの最初のステップ](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ ] [ZeroMQ](http://zeromq.org/) + - [イントロ - マニュアルを読む](http://zeromq.org/intro:read-the-manual) + - [ ] [ActiveMQ](http://activemq.apache.org/) + - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [ ] [MessagePack](http://msgpack.org/index.html) + - [ ] [Avro](https://avro.apache.org/) + +- ### A * + - [ ] [検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ ] [A * Pathfinding Tutorial(video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [ ] [A *経路探索(E01:アルゴリズムの説明)(ビデオ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ###高速フーリエ変換 + - [ ] [フーリエ変換のインタラクティブガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [ ] [フーリエ変換とは何ですか?それは何のために使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [ ] [フーリエ変換とは何ですか? (ビデオ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ ] [Divide&Conquer:FFT(ビデオ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ ] [FFTの理解](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ###ブルームフィルター + - mビットとkハッシュ関数を持つBloomフィルタが与えられた場合、挿入とメンバーシップの両方のテストはO(k) + - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [ブルームフィルター|大規模なデータセットのマイニング|スタンフォード大学](https://www.youtube.com/watch?v=qBTdukbzc78) + - [チュートリアル](http://billmill.org/bloomfilter-tutorial/) + - [Bloom Filter Appを書く方法](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -objects-us.html) + +- ###局所性に敏感なハッシング + - ドキュメントの類似性を判断するために使用されます。 + - 2つの文書/文字列がまったく同じかどうかを判断するために使用されるMD5またはSHAの反対。 + - [Simhashing(うまくいけば)シンプルに](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ###ヴァンEmde Boasの木 + - [Divide&Conquer:van Emde Boas Trees(ビデオ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [ ] [MIT講義ノート](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) + +- ###拡張データ構造 + - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) + +- ###バランスの取れた検索ツリー + - 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている): + - "バランスの取れた探索木の​​中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。 +        特に興味深い自己組織化データ構造は、スプレイツリーであり、回転を使用します +        アクセスされたキーをルートに移動する」 - Skiena +    これらのうち、私はスプレイツリーを実装することを選択しました。私が読んだことから、あなたは +        あなたのインタビューでバランスの取れた検索ツリー。しかし、私は1つのコーディングへの露出を望んでいた +        そしてそれに直面しましょう、スプレーの木はミツバチの膝です。私は赤黒の木のコードをたくさん読んだ。 + - スプレイツリー:挿入、検索、削除機能 +        あなたが赤/黒の木の実装を終わらせるならば、これらを試してみてください: + - 検索と挿入機能、削除をスキップする +    B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。 + - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - [ ] ** AVLツリー** +        - 実際には: +            私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。 +            AVLツリーは、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に +            赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより +            一度構築され、再構成なしでロードされる、例えば言語 +            辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。 + - [ ] [MIT AVL Trees / AVL Sort(ビデオ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [ ] [AVLツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [ ] [AVLツリー実装(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - [ ] **スプレッドツリー** +        - 実際には: +            スプレイ・ツリーは、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、 +            データ圧縮、ロープ(長いテキスト文字列に使用される文字列の置換)、Windows NT(仮想メモリ、 +            ネットワークおよびファイルシステムコードなど) + - [ ] [CS 61B:Splay Trees(video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + - [ ] MIT講義:Splay Trees: + - 非常にマッシーになりますが、最後の10分を確かめてください。 + - [動画](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - [ ] **レッド/ブラックの木** + - これらは2-3木の翻訳です(下記参照) +        - 実際には: +            赤黒の木は、挿入時間、削除時間、および検索時間に対して最悪の場合の保証を提供します。 +            これは、リアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、これらを貴重なものにするだけでなく、 +            それは最悪の場合の保証を提供する他のデータ構造における貴重なビルディングブロックになります。 +            例えば、計算幾何学で使用される多くのデータ構造は赤黒の木に基づくことができ、 +            現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒のツリーを使用します。 Javaのバージョン8では、 +            Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに +            ハッシュコードでは、赤黒のツリーが使用されます。 + - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(ビデオ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - アルゴリズム - 講義5(ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [ ] [バイナリサーチとレッドブラックツリーの紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red -black-trees /) + +- [ ] **2-3の検索ツリー** + - 実際には: +            2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。 + - 2-3のツリーは非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 + - [ ] [23木の直感と定義(ビデオ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [ ] [23-Treeのバイナリビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [2-3木(学生の暗唱)(ビデオ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - [ ] **2-3-4木(別名2-4木)** +        - 実際には: +            すべての2-4ツリーには、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除 +            2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を +            赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、 +            2〜4本の木は実用的ではありません**。 + - [ ] [CS 61B講義26:バランスの取れた検索ツリー(ビデオ)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [ボトムアップ234-Trees(ビデオ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [トップダウン234ツリー(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - [ ] **N-ary(K-ary、M-ary)木** + - 注記:NまたはKは分岐因子(最大分岐)であり、 + - 2分木は2分木であり、分岐因子= 2 + - 2-3本の木は3本である + - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - [ ] **B-Tree** + - 楽しい事実:それは謎ですが、Bはボーイング、バランスの取れた、またはバイエル(共同発明家)のために立つことができます。 +        - 実際には: +            Bツリーはデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて +            Bツリーはファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします +            特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです +            (またはおそらくシリンダーヘッドセクターへの)アドレスである。 + - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [ ] [Bツリー(ビデオ)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [Bツリーの定義と挿入(ビデオ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Bツリー削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [MIT 6.851 - メモリ階層モデル(ビデオ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - キャッシュに気付かないBツリー、非常に興味深いデータ構造 + - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) + + +- ### k-D木 + - 矩形または高次元のオブジェクトの点数を見つけるのに最適 + - k最近接の隣人に適している + - [ ] [Kd Trees(ビデオ)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [ ] [kNN K-dツリーアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ###リストをスキップする + - 「これは多少のカルトデータ構造です」 - Skiena + - [ ] [ランダム化:リストをスキップ(ビデオ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [アニメーションともう少し詳しく](https://en.wikipedia.org/wiki/Skip_list) + +- ###ネットワークの流れ + - [ ] [Ford-Fulkerson(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Ford-Fulkersonアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ###分離集合と連合検索 + - [ ] [UCB 61B - ばらばらのセット;並べ替えと選択(動画)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) + - [ ] [Sedgewickアルゴリズム - Union-Find(6ビデオ)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + +- ###高速処理のための数学 + - [ ] [整数演算、Karatsuba倍数(ビデオ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### + - バイナリ検索ツリーとヒープの組み合わせ + - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) + - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) + - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ###リニアプログラミング(ビデオ) + - [ ] [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [ ] [最小費用の見積もり](https://www.youtube.com/watch?v=2ACJ9EWUC6U) + - [ ] [最大値の検索](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ###幾何学、凸包(ビデオ) + - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9(https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ###離散数学 + - 下のビデオを見る + +- ###機械学習 + - [ ] なぜMLですか? + - [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [ ] [知的コンピュータシステムのための大規模な深い学習(ビデオ)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [ ] [深い学習と理解度対ソフトウェア工学と検証、Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [ ] [Googleのクラウドマシン学習ツール(動画)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [ ] [Google Developers `Machine Learning Recipes(Scikit Learn&Tensorflow)(ビデオ)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [ ] [Tensorflow(video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [ ] [Tensorflowチュートリアル](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [ ] [Pythonでニューラルネットワークを実装する実践ガイド(Theanoを使用)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - コース: + - [グレートスターターコース:機械学習](https://www.coursera.org/learn/machine-learning) +   - [動画のみ](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) +   - 線形代数のレビューについてはビデオ12〜18を参照してください(14と15は重複しています) + - [機械学習のためのニューラルネットワーク](https://www.coursera.org/learn/neural-networks) + - [GoogleのDeep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google / Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [自己運転車技術者Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course(2ヶ月間99ドル)](http://www.thisismetis.com/explore-data-science) + - リソース: + - 書籍: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [ゼロからのデータ科学:Pythonの第一原理](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Pythonによる機械学習入門](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [ソフトウェアエンジニア向け機械学習](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - データスクール:http://www.dataschool.io/ + +- + +##追加科目の詳細 + +    私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした +    それはちょうどあまりにも多くのためです。それは被験者にそれを過ごすのは簡単です。 +    あなたは今世紀に雇われたかったですね。 + +- [ ] **連合検索** + - [ ] [概要](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [ ] [ツリー](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [ ] [ランキングによる連合](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [ ] [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [ ] [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- [ ] **もっとダイナミックなプログラミング**(ビデオ) + - [ ] [6.006:動的プログラミングI:フィボナッチ、最短経路](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [ ] [6.006:ダイナミックプログラミングII:テキストジャスティフィケーション、ブラックジャック](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [ ] [6.006:DP III:かっこ、編集距離、ナップザック](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006:DP IV:Guitar Fingering、Tetris、Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.046:Dynamic Programming&Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [6.046:ダイナミックプログラミング:オールペア最短パス](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [ ] [6.046:ダイナミックプログラミング(学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- [ ] **高度なグラフ処理**(ビデオ) + - [ ] [同期分散アルゴリズム:対称性を破る。ツリーにまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [ ] [非同期分散アルゴリズム:ツリーにまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(ビデオ): + - [ ] [MIT 6.042J - 確率の紹介](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - 条件付き確率](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - 独立性](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - ランダム変数](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [ ] [MIT 6.042J - 期待値I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - 大きな偏差](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - ランダムウォーク](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [ ] [Simonson:Approximation Algorithms(video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- [ ] **文字列マッチング** + - [ ] Rabin-Karp(ビデオ): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [最適化:実装と分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [表倍増、Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [ローリングハッシュ、償却分析](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - [ ] クヌース・モリス・プラット(KMP): + - [Knuth-Morris-Pratt(KMP)文字列マッチングアルゴリズム](https://www.youtube.com/watch?v=5i7oKodCRJo) + - [ ] Boyer-Moore文字列検索アルゴリズム + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [ ] [Coursera:文字列のアルゴリズム](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - すごく始まりますが、KMPを過ぎるまでには、必要以上に複雑になります + - 試行の良い説明 + - スキップすることができます + +- [ ] **ソート** + + - [ ] スタンフォードのソーティングに関する講義: + - [ ] [講義15 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [ ] [講義16 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - [ ] Shai Simonson、[Aduni.org](http://www.aduni.org/): + - [ ] [アルゴリズム - ソート - 講義2(ビデオ)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [ ] [アルゴリズム - ソートII - レクチャー3(ビデオ)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [ ] Steven Skienaのソーティングに関する講義: + - [ ] [講義は26:46に始まります(ビデオ)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [ ] [講義は27:40(ビデオ)から開始](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [講演は35:00(ビデオ)から開始](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [講演は23:50から始まります(ビデオ)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + + +##ビデオシリーズ + +座って楽しんでください。 「ネットフリックスとスキル」:P + +- [ ] [個々の動的プログラミングの問題のリスト(それぞれ短いです)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [ ] [x86アーキテクチャ、アセンブリ、アプリケーション(11ビデオ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [ ] [MIT 18.06線形代数、2005年春(35ビデオ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [ ] [優秀 - MIT Calculus Revisited:単一変数計算](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [ ] [コンピュータサイエンス70,001 - 春2015 - 離散数学と確率論](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) + +- [ ] [Shai Simonsonによる離散数学(19ビデオ)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [ ] [離散数学第1部:Sarada Herke(5ビデオ)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- [ ] CSE373 - アルゴリズムの分析(25ビデオ) + - [アルゴリズム設計マニュアルのSkiena講義](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UCバークレー61B(Spring 2014):データ構造(25ビデオ)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B(2006年秋):データ構造(39ビデオ)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C:機械構造物(26ビデオ)](https://www.youtube.com/watch?v=gJJUUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [ ] [OOSE:UMLとJavaを使用したソフトウェア開発(21ビデオ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [ ] [UC Berkeley CS 152:コンピュータアーキテクチャとエンジニアリング(20ビデオ)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) + +- [ ] [MIT 6.004:計算構造(49ビデオ)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- [Carnegie Mellon - Computer Architecture Lectures(39ビデオ)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [ ] [MIT 6.006:アルゴリズム紹介(47ビデオ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [ ] [MIT 6.033:コンピュータシステムエンジニアリング(22ビデオ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [ ] [MIT 6.034人工知能、2010年秋(30ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [ ] [MIT 6.042J:コンピュータサイエンスの数学、2010年秋(25ビデオ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [ ] [MIT 6.046:アルゴリズムの設計と分析(34ビデオ)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [ ] [MIT 6.050J:情報とエントロピー、2008年春(19ビデオ)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [ ] [MIT 6.851:高度なデータ構造(22ビデオ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [ ] [MIT 6.854:Advanced Algorithms、Spring 2016(24ビデオ)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [ ] [Harvard COMPSCI 224:Advanced Algorithms(25ビデオ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [ ] [MIT 6.858コンピュータシステムセキュリティ、2014年秋](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [ ] [Stanford:Programming Paradigms(27ビデオ)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [ ] [Christof Paarによる暗号の概要](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [スライドと問題セットと一緒のコースウェブサイト](http://www.crypto-textbook.com/) + +- [ ] [Mining Massive Datasets - スタンフォード大学(94ビデオ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [ ] グラフ理論(Sarada Herke)(67ビデオ)(https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +##コンピュータサイエンスコース + +- [オンラインCSコースのディレクトリ](https://github.com/open-source-society/computer-science) +- [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) \ No newline at end of file From 02d9aad7b2475b3e24b771d3ea1d12838ca8a87d Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sat, 1 Jul 2017 20:16:28 +0300 Subject: [PATCH 032/857] Stack and queue --- translations/README-ru.md | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 306030c6d5..afecf44bd1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -645,34 +645,34 @@ Google не возьмёт тебя на работу. - [ ] reverse() - реверсирует весь список - [ ] remove_value(value) - удаляет первый элемент в списке с указанным значением (value) - [ ] Двусвязный список - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [Описание (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - Можно не делать -- ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) - - [ ] Will not implement. Implementing with array is trivial. +- ### Стек + - [ ] [Стек (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Использование стека Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] Не будет реализован. Реализация с помощью массива очевидна. -- ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) +- ### Очередь + - [ ] [Использование очереди First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) + - [ ] [Очередь (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) + - [ ] [Очередь с приоритетом (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] Реализация с использованием связанного списка и указателя на последний элемент(tail): + - enqueue(value) - добавляет элемент в конец очереди + - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент(front) - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element + - [ ] Реализация с приминением массива фиксированного размера: + - enqueue(value) - добавляет элемент в конец очереди + - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент - empty() - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) + - [ ] Затраты: + - плохая реализация с приминением связанного списка когда элемент добавляется в начало очереди и удаляется с конца очереди за O(n), + операция dequeue в таком случае будет требовать каждый раз обхода всего списка + - enqueue: O(1) (amortized, связанный список и массив [probing]) + - dequeue: O(1) (связанный список и массив) + - empty: O(1) (связанный список и массив) - ### Hash table - [ ] Videos: From b84f3b875c397ea6163c8ad32a0baa88911109ad Mon Sep 17 00:00:00 2001 From: Ilyushin Evgeniy Date: Sat, 1 Jul 2017 20:32:16 +0300 Subject: [PATCH 033/857] Hash table, binary search & bitwise operations --- translations/README-ru.md | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index afecf44bd1..f56603d60d 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -674,8 +674,8 @@ Google не возьмёт тебя на работу. - dequeue: O(1) (связанный список и массив) - empty: O(1) (связанный список и массив) -- ### Hash table - - [ ] Videos: +- ### Хеш-таблица + - [ ] Видео: - [ ] [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) - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -683,7 +683,7 @@ Google не возьмёт тебя на работу. - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] Online Courses: + - [ ] Онлайн курсы: - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) - [ ] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) @@ -691,32 +691,32 @@ Google не возьмёт тебя на работу. - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: + - [ ] распределенные хеш-таблицы: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - [ ] реализация с помощью массива и приминением linear probing + - hash(k, m) - m размер хеш-таблицы + - add(key, value) - если ключ уже существует обновляем значение - exists(key) - get(key) - remove(key) -## More Knowledge +## Больше знаний -- ### Binary search +- ### Бинарный поиск - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion + - [ ] Реализация: + - бинарный поиск (на отсортированном числовом массиве) + - бинарный поиск с использованием рекурсии -- ### Bitwise operations +- ### Побитовые операции - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] Даст отличное понимание манипуляции битами с помощью: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: + - [ ] Хорошее введение: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) @@ -724,19 +724,19 @@ Google не возьмёт тебя на работу. - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] 2s and 1s complement + - [ ] 2s и 1s дополнения: - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits + - [ ] счетчик битов: - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: + - [ ] округление до следующей степени 2: - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: + - [ ] обмен значениями: - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: + - [ ] абсолютные значения: - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) ## Trees From 8f06d1b8ebe085b6c080d93685d78873f4547af9 Mon Sep 17 00:00:00 2001 From: riverwell Date: Mon, 30 Oct 2017 23:17:27 +0900 Subject: [PATCH 034/857] [update] modified wording --- translations/README-ja.md | 1148 +++++++++++++++++++------------------ 1 file changed, 578 insertions(+), 570 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index fcd3862c6e..20a39550f0 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1,19 +1,19 @@ -#コーディングインタビュー大学 +#コーディング面接の大学 ->私はもともとこれをソフトウェアエンジニアになるための短期的な研究テーマのリストとして作成しましたが、 ->しかし、それは今日あなたが見る大きなリストに成長しました。この調査計画を経て、[私は雇われました -> Amazonのソフトウェア開発エンジニアとして](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! ->あなたは私のように勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 +>私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、 +>今日それは大きなリストに成長しました。この調査計画を経て、[私はAmazonで +> ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) +>おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 > ->ここに記載されている項目は、ほぼすべてのソフトウェア会社のインタビューの中で、 ->巨人を含む:Amazon、Facebook、GoogleまたはMicrosoft。 +>ここに掲載されている項目を学べば、Amazon、Facebook、Google、Microsoftなど +>大手企業を含む、ほぼすべてのソフトウェア会社の面接に備えることができます。 > -> *あなたに最高の運勢!* +> *あなたに最高の幸運がありますように!* 翻訳: -- [中文版本](翻訳/ README-cn.md) -- [TiếngViệt - ベトナム語](翻訳/ README-vi.md) -- [Español](翻訳/ README-es.md) +- [中文版本](translations/README-cn.md) +- [TiếngViệt - ベトナム語](translations/README-vi.md) +- [Español](translations/README-es.md) 翻訳中: - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) @@ -34,62 +34,59 @@ - [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) -## それは何ですか? +## これは何? -これは、Web開発者(独学で、CS指導なし)から大企業のソフトウェアエンジニアに向かうための私の複数月の学習計画です。 +これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) +これは、 **新人ソフトウェアエンジニア** 、またはソフトウェア/ Webエンジニアからソフトウェアエンジニア(CSの知識が必要な場合)に転職する人を対象にしています。 +長年のソフトウェアエ開発経験をお持ちの場合は、より面白い面接を期待してください。 -これは、**新しいソフトウェアエンジニア**または -ソフトウェア/ウェブ開発からソフトウェア工学(コンピュータサイエンスの知識が必要な場合)。あなたが持っている場合 -長年の経験とソフトウェア工学の長年の経験を主張している、より面白いインタビューを期待しています。 +あなたに何年ものソフトウェア/Web開発経験がある場合、Google、Amazon、Facebook、Microsoftなどの大規模なソフトウェア会社は、ソフトウェア/Web開発力ではなくソフトウェア工学に関して見ており、そのためにはCSに関する知識が必要となることをご了承ください。 -何年ものソフトウェア/ウェブ開発経験がある場合は、Google、Amazon、 -FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウェア/ Web開発とは異なるものと見ており、コンピュータ科学の知識が必要です。 - -信頼性エンジニアまたはシステムエンジニアになりたい場合は、オプションのリスト(ネットワーク、セキュリティ)から詳細を調べてください。 +SREまたはシステムエンジニアになりたい場合は、オプションのリスト(ネットワーク、セキュリティ)から詳細を調べてください。 --- ## 目次 -- [これはなんで?](何のことなの?) -- (なぜそれを使うの?)(#why-use-it) +- [これは何?](#何のことなの?) +- [なぜこれを使うの?](#why-use-it) - [使い方](#使い方) -- [あなたが十分にスマートではないと感じないでください](十分にスマートではありません) +- [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) - [ビデオリソースについて](#about-video-resources) -- [インタビュープロセスと一般インタビューの準備](#インタビュープロセス - 一般インタビュー - 準備) -- [インタビューのための1つの言語を選ぶ](インタビューのために1つの言語を選択する) +- [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備) +- [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する) - [ブックリスト](#ブックリスト) -- [あなたが始める前に](始める前に#) +- [始める前に](始める前に#) - あなたがカバーしていないもの(何があなたには見えません) - [前提知識](#前提条件知識) - [日々の計画](日々の計画) -- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム - 複雑 - big-o - 漸近分析) +- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析) - [データ構造](#データ構造) - [配列](#配列) - - [リンクリスト](#リンクリスト) + - [連結リスト](#連結リスト) - [スタック](#スタック) - [キュー](#キュー) - [ハッシュテーブル](#ハッシュテーブル) - [その他の知識](#more-knowledge) - - [バイナリ検索](#バイナリ検索) - - [ビット単位演算](#ビット単位演算) -- [ツリー](#木) - - [ツリー - ノートと背景](#木---ノート - 背景) - - [バイナリ検索ツリー:BST](#binary-search-trees-bsts) - - [ヒープ/優先度キュー/バイナリヒープ](#ヒープ - 優先度キュー - バイナリヒープ) - - バランスの取れた検索ツリー(詳細ではなく一般概念) - - トラバーサル:preorder、inorder、postorder、BFS、DFS + - [二分探索](#二分探索) + - [ビット演算](#ビット演算) +- [木構造](#木) + - [木構造 - ノートと背景](#木---ノート--背景) + - [二分探索木:BST](#binary-search-trees-bsts) + - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ--優先度キュー--バイナリヒープ) + - 平衡探索木(詳細ではなく一般概念) + - 木の走査(traversal):行きがけ順(pre-order)、通りがかり順(in-order)、帰りがけ順(postorder)、深さ優先探索(BFS)、幅優先探索(DFS) - [ソート](#ソート) - - 選択 - - 挿入 - - heapsort + - 選択ソート + - 挿入ソート + - ヒープソート - クイックソート - マージソート - [グラフ](#グラフ) - - 監督 - - 無向 + - 有向グラフ + - 無向グラフ - 隣接行列 - 隣接リスト - トラバーサル:BFS、DFS @@ -98,151 +95,156 @@ FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウ - [動的プログラミング](#動的プログラミング) - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング) - [デザインパターン](#デザインパターン) - - [組み合わせ(n choose k)と確率](#combinatorics-n-choose-k - 確率) - - [NP、NP-完全近似アルゴリズム](#np-np-complete-and-approximation-algorithms) + - [組み合わせと確率](#combinatorics-n-choose-k--確率) + - [NP、NP完全/近似アルゴリズム](#np-np-complete-and-approximation-algorithms) - [キャッシュ](#キャッシュ) - [プロセスとスレッド](#processes-and-threads) - [論文](#論文) - [テスト](#テスト) - [スケジューリング](#スケジューリング) - [システムルーチンを実装する](#implement-system-routines) - - [文字列検索と操作](#文字列検索 - 操作) + - [文字列検索と操作](#文字列検索--操作) - [試行](#試行) - [浮動小数点数](浮動小数点数) - - [Unicode](#ユニコード) - - [エンディアン](#エンディアン) + - [ユニコード](#ユニコード) + - [バイト順(エンディアン)](#エンディアン) - [ネットワーキング](#ネットワーキング) -- [システム設計、スケーラビリティ、データ処理](#システム設計 - スケーラビリティデータ処理)(4年以上の経験がある場合) +- [システム設計、スケーラビリティ、データ処理](#システム設計--スケーラビリティなデータ処理)(4年以上の経験がある場合) - [最終審査](#最終審査) - [コーディング質問練習](#コーディング質問練習) - [コーディング練習問題/挑戦](#コーディング演習問題) -- [インタビューに近づいたら](インタビューに一度近づいて) -- [あなたの履歴書](あなたの履歴書) -- [インタビューが来たときに考える](インタビューのときに考えている) -- [インタビュアーに質問があります](#面接のための質問があります) -- [一度あなたは仕事を得ました](一度あなたが仕事をしたこと) +- [面接に近づいたら](面接に一度近づいて) +- [履歴書](あなたの履歴書) +- [面接が来たときに考える](面接のときに考えている) +- [面接官に質問があります](#面接のための質問があります) +- [一度あなたは仕事を得た](一度あなたが仕事をしたこと) ----------------この時点より下のものはすべてオプションです---------------- - [追加の書籍](追加の書籍数) -- [追加学習](追加学習) +- [追加の学習](追加学習) - [コンパイラ](#コンパイラ) - [Emacsとvi(m)](#emacs-and-vim) - [Unixコマンドラインツール](#unix-command-line-tools) - [情報理論](#情報理論) - - [パリティ&ハミングコード](#パリティ - ハミングコード) - - [Entropy](#エントロピー) + - [パリティとハミング符号](#パリティ--ハミングコード) + - [情報量(エントロピー)](#エントロピー) - [暗号化](#暗号化) - [圧縮](#圧縮) - [コンピュータセキュリティ](#コンピュータセキュリティ) - [ガベージコレクション](#ガベージコレクション) - - [パラレルプログラミング](#パラレルプログラミング) - - [メッセージング、シリアライゼーション、キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) + - [並列計算](#パラレルプログラミング) + - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) - [A *](#a) - [高速フーリエ変換](#高速フーリエ変換) - [ブルームフィルタ](#ブルームフィルタ) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#ローカリティセンシティブハッシング) - - [van Emde Boas Trees](ヴァン・エムード・ボア・ツリー) + - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング) + - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木) - [拡張データ構造](#拡張データ構造) - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) - - [バランス検索木](#バランス検索木) - - AVLツリー - - スプレッドツリー - - レッド/ブラックの木 - - 2-3の検索木 - - 2-3-4樹木(別名2-4木) - - N-ary(K-ary、M-ary)木 - - Bツリー - - [k-D木](#k-d-trees) + - [平衡探索木](#バランス検索木) + - AVL木 + - スプレー木 + - 赤黒木 + - 2-3木 + - 2-3-4木(別名2-4木) + - 多分木(N-ary,K-ary,M-ary木) + - B木 + - [kd木](#k-d-trees) - [スキップリスト](#スキップリスト) - - [ネットワークフロー](#ネットワークフロー) - - [分離セットとユニオン検索](#disjoint-sets - union-find) + - [ネットワークのフロー](#ネットワークフロー) + - [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find) - [高速処理のための数学](#数学のための高速処理) - [Treap](#treap) - [線形計画法](#線形計画法) - - [ジオメトリ、凸包](#ジオメトリ - 凸包) + - [ジオメトリ、凸包](#ジオメトリ--凸包) - [離散数学](離散数学) - [機械学習](機械学習) -- [いくつかの科目の追加の詳細](#追加の詳細 - いくつかの科目) +- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目) - [ビデオシリーズ](#ビデオシリーズ) - [コンピュータサイエンスコース](#コンピュータサイエンスコース) ## なぜそれを使用するのですか? -私がこのプロジェクトを始めたとき、ヒープからスタックを知りませんでした、Big-Oの何か、木のこと、または -グラフを横断する。並べ替えアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 -これまで使用してきたすべてのデータ構造は言語に組み込まれており、どのように動作するのか分かりませんでした -ボンネットの下にすべて。私が実行していたプロセスが " -私は人生でいくつかの多次元配列を使いました。 -何千もの連想配列ですが、データ構造を一から作成したことはありません。 +私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 +ソートアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 +これまで使用してきたすべてのデータ構造は言語に組み込まれていて、どのようにしてそれらがどのようにして動作するのか分かりませんでした。 +私が実行していたプロセスが "メモリ不足"エラーを出さない限り、メモリを管理する必要はありませんでしたが、回避策を見つけなければなりません。 +私は人生で数多くの多次元配列を使用していましたが、何千もの連想配列を使用しましたが、データ構造を一から作成したことはありません。 + -それは長い計画です。あなたに数ヶ月かかるかもしれません。すでに多くのことに慣れていれば、それほど時間がかかりません。 +それは長い計画です。あなたに数ヶ月かかるかもしれません。 +すでに多くのことに慣れていれば、それほど時間がかかりません。 ## それの使い方 -下のすべてがアウトラインです。アイテムを上から下に順番に取り組まなければなりません。 +下のすべてがアウトラインです。 +アイテムを上から下に順番に取り組まなければなりません。 私はGithubの特別なマークダウンフレーバーを使用しています。 -**新しいブランチを作成して、このような項目をチェックできるようにするには、xを角かっこで囲みます:[x] ** +**新しいブランチを作成して、このような項目をチェックできるようにしてください.xを角かっこに入れてください:[x]**     ブランチをフォークし、以下のコマンドに従ってください。 `git checkout -b progress` -`git remote add jwasham https:// github.com / jwasham / coding-interview-university` +`git remote add jwasham https://github.com/jwasham/coding-interview-university` `git fetch --all`     変更を完了した後にXですべてのボックスにマークを付ける -`git add。 ` +`git add . ` -`git commit -m `とマークしたx" +`git commit -m "マークされたx"` -`git rebase jwasham / master` +`git rebase jwasham/master` `git push --force` -[Github風味のマークアップの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[Github風マークダウンの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ##あなたは十分にスマートではないと感じないでください - 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 - [Geniusプログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [独り言に行くのは危険だ:Tech in Invisible Monstersと戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [一人で行くのは危険だ:テクノロジーの見えない魔物と戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) + --- ##ビデオリソースについて -一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。これらはMOOCと呼ばれています。 -時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 Lynda.comコースは無料ではありません。 +一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 +これらはMOOCと呼ばれています。 +時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 +Lynda.comコースは無料ではありません。     オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。     私は大学の講義を使うのが好きです。 -##インタビュープロセスと一般インタビュー準備 +## 面接のプロセスと一般的な面接の準備 - [ ] [ABC:常にコーディングする](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [プログラミングインタビュー中の効果的なホワイトボード](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [ ] [Tech Recruitingの謎解き](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] クラッキングコーディングインタビューセット1: - - [ ] [Gayle L McDowell - コーディングインタビュー(ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Gayle Laakmann McDowell(ビデオ)](https://www.youtube.com/watch?v=aClxtDcdpsQ)とのコーディングインタビューをクラッキング +- [ ] [プログラミング面接中の効果的なホワイトボード](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [技術職募集での謎解き](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] クラッキングコーディング面接セット1: + - [ ] [Gayle L McDowell - コーディング面接(ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Gayle Laakmann McDowell(ビデオ)](https://www.youtube.com/watch?v=aClxtDcdpsQ)とのコーディング面接をクラッキング - [ ] ビッグ4で仕事を得る方法: - - [ ] [Amazon、Facebook、Google、Microsoft(ビデオ)](https://www.youtube.com/watch?v=YJZCUhxNCv8)でビッグ4の仕事を手に入れる方法 + - [ ] [Amazon、Facebook、Google、Microsoftで仕事を手に入れる方法(ビデオ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] 準備コース: - [ ] [Software Engineer Interview Unleashed(有料コース)](https://www.udemy.com/software-engineer-interview-unleashed): - - 以前のGoogleインタビュアーのソフトウェアエンジニアインタビューの準備をする方法を学びます。 - - [ ] [データ構造、アルゴリズム、インタビューのためのPython! (有料コース)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - データ構造、アルゴリズム、模擬インタビューなどを扱うPython中心のインタビューの準備コース。 + - 以前のGoogle面接官からソフトウェアエンジニアの面接準備をする方法を学びます。 + - [ ] [データ構造、アルゴリズム、面接のためのPython! (有料コース)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - データ構造、アルゴリズム、模擬面接などを扱うPython中心の面接の準備コース。 -##インタビューのための1つの言語を選ぶ +##面接のための1つの言語を選ぶ -インタビューのコーディングの部分に慣れ親しんだ言語を使用することはできますが、大企業にとってはこれらの選択肢が確実です。 +面接のコーディングの部分に慣れ親しんだ言語を使用することはできますが、大企業にとってはこれらの選択肢が確実です。 - C ++ - Java @@ -261,25 +263,26 @@ FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウ [言語リソースはこちら](programming-language-resources.md) -私は学習しているので、以下に含まれるC、C ++、Pythonの学習を見ることができます。いくつかの本があります、下を参照してください。 +私は学習しているので、以下に含まれるC、C ++、Pythonの学習を見ることができます。 +いくつかの本があります、下を参照してください。 -## 予約リスト +## ブックリスト これは私が使ったものよりも短いリストです。これは時間を節約するために省略されています。 -### インタビュー準備 +### 面接の準備 -- [ ] [プログラミングインタビュー公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [プログラミング面接の公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - C ++とJavaの回答 - - コーディングインタビューをクラッキングするためのウォームアップが良い - - それほど難しくない、ほとんどの問題は、私が読んだことから、あなたがインタビューで見るよりも簡単かもしれません。 + - コーディング面接をクラッキングするためのウォームアップが良い + - あまりにも難しくない、ほとんどの問題はあなたが面接で(私が読んだことから)見ることよりも簡単かもしれない - [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - Javaでの回答 もし余分な時間があれば: -- [ ] [プログラミングインタビューの要素(C ++版)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] インタビュープログラミングの要素(Java版) +- [ ] [プログラミング面接の要素(C ++版)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] プログラミング面接の要素(Java版) - [本](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [コンパニオンプロジェクト - 本のすべての問題のメソッドスタブとテストケース](https://github.com/gardncl/elements-of-programming-interviews) @@ -292,13 +295,13 @@ FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウ - 作者はHLAを発明したので、塩の穀物でHLAの言及と例を取り上げます。広く使われているわけではありませんが、どのようなアセンブリのように見えますか? - これらの章はあなたに素敵な基礎を与えるために読む価値があります: - 第2章 - 数値表現 -        第3章2進算術とビット演算 +        - 第3章 - 2進算術とビット演算 - 第4章 - 浮動小数点表現 - 第5章 - キャラクター表現 - 第6章 - メモリ構成とアクセス -        第7章複合データ型とメモリオブジェクト -        第9章CPUアーキテクチャ - - 第10章命令セットのアーキテクチャ +        - 第7章 - 複合データ型とメモリオブジェクト +        - 第9章 - CPUアーキテクチャ + - 第10章 - 命令セットのアーキテクチャ - 第11章 - メモリのアーキテクチャと構成 もっと時間があれば(私はこの本が欲しい): @@ -306,28 +309,28 @@ FacebookとMicrosoftはソフトウェアエンジニアリングをソフトウ - [ ] [Computer Architecture、第5版:定量的アプローチ](https://www.amazon.com/dp/012383872X/) - より豊かで最新の(2011年)、より長い治療のために -###言語固有 +### 言語固有 -**インタビューの言語を選択する必要があります(上記参照)。** 私はすべての言語のためのリソースがありません。私は追加を歓迎する。 +**面接の言語を選択する必要があります(上記参照)。** ここで私の推奨する言語です。私はすべての言語のためのリソースがありません。私は追加を歓迎する。 これらのうちの1つを読んだら、コーディングの問題を開始するために必要なすべてのデータ構造とアルゴリズムの知識が必要です。 -**あなたがレビューしたいと思わない限り、このプロジェクト**のビデオ講義をすべてスキップすることができます**。 +**あなたがレビューをしたくない場合は、このプロジェクト**のビデオ講義をすべてスキップすることができます。 [ここに言語固有の追加リソースがあります](programming-language-resources.md) -### C ++ +### C++ 私はこれらの2つを読んだことはありませんが、Sedgewickによって高く評価され書かれています。彼は素晴らしいです。 -- [ ] [C ++でのアルゴリズム、パート1-4:基礎、データ構造、ソート、検索](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [C ++でのアルゴリズム第5部:グラフアルゴリズム](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [C++でのアルゴリズム、パート1-4:基礎、データ構造、ソート、検索](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [C++でのアルゴリズム第5部:グラフアルゴリズム](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -C ++の推奨事項がある場合は、私に知らせてください。包括的なリソースを探しています。 +C++の推奨事項がある場合は、私に知らせてください。包括的なリソースを探しています。 ### Java - [ ] [アルゴリズム(Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - 本のコンテンツを持つビデオ(とSedgewick!): + - 書籍コンテンツの動画(とSedgewick!): - [アルゴリズム1](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - [アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) @@ -349,57 +352,60 @@ OR: ###オプションの書籍 -**何人かはこれをお勧めしますが、何年ものソフトウェアエンジニアリング経験があり、より面白いインタビューを期待している場合を除いて、** +**ソフトウェア工学の長年の経験があり、もっと面白い面接を期待しない限り、これらのことをお勧めする人もいます。** - [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) - レビューと問題認識として - - アルゴリズムのカタログ部分は、インタビューで得られる難易度の範囲をはるかに超えています。 + - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 - この本は2つの部分を持っています: - データ構造とアルゴリズムに関する教科書 - - プロ: + - 長所: - アルゴリズムの教科書はどんなものでも良いレビューです - 業界および学界の問題を解決した経験から得た素敵な話 - Cのコード例 - 短所: - - CLRSと同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の被験者にとってより良い選択肢になる可能性があります - - 章7,8,9は、いくつかの項目がうまく説明されていない、または私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります - - 私は間違っていない:私はSkiena、彼の教授のスタイル、そしてマタニズムが好きだが、私はストーニーブルックの素材ではないかもしれない。 + - Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります + - 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります + - 誤解しないで:私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。 - アルゴリズムカタログ: - これがあなたがこの本を買う本当の理由です。 - - この部分に近づくこと。一度私がそれを通り抜けたら、ここで更新されます。 - - それを光り輝かせることができます - - Half.comは、良い価格で教科書のための素晴らしいリソースです。 + - この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。 + - Kindleで読むことが出来ます + - Half.comは教科書のための良いリソースです。 - 回答: - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [ ] [アルゴリズムの紹介](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **重要:** この本の読書は価値が限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 + - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 - Half.comは、良い価格で教科書のための素晴らしいリソースです。 - スタインはゲームに遅れていたので、別名CLR、ときにはCLRS - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - 章の最初の2つは、プログラミング上の問題(データテープを使用して非常に古くなっているもの) -      それはちょうどイントロです。これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 + - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 +      これはプログラムの設計とアーキテクチャに関するガイドブックです。 + これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 - ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 - - 別の書籍やオンラインのコーディングの問題からコーディングの問題に時間を費やすことになります。 + - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう -##あなたが始める前に +## 始める前に このリストは何ヶ月にもわたって成長しました。 -ここで私が作ったいくつかの間違いがあります。あなたはより良い経験をするでしょう。 +ここで私が作ったいくつかの間違いがあります。 +あなたはより良い経験をするでしょう。 ### 1.あなたはそれをすべて覚えていない -私は数時間のビデオを見て、豊富なメモを取りました。そして数ヶ月後に私は覚えていないほどでした。私は3日間過ごした -私のメモとフラッシュカードを作って見直すことができました。 +私は数時間のビデオを見て、豊富なメモを取りました。 +そして数ヶ月後に私は覚えていないほどでした。 +私はメモを書き、フラッシュカードを作って見直すことができるように3日間過ごしました。 -あなたが私の間違いをしないように読んでください: +あなたが私と同じ間違いをしないように読んでください: [コンピュータ科学知識の保持](https://startupnextdoor.com/retaining-computer-science-knowledge/) @@ -416,21 +422,25 @@ OR: - [マイフラッシュカードデータベース(旧1200カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): - [マイフラッシュカードデータベース(新1800カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): -私は船外に出て、アセンブリ言語やPythonのトリビアからマシンの学習や統計に至るまですべてのカードをカバーしています。何が必要なのかはあまりにも大変です。 +覚えておいてほしいのですが,私はやりすぎてしまい、アセンブリ言語,機械学習のためのPythonのトリビア,統計に至るまですべてのカードをカバーしています。 +何が必要なのかはあまりにも大変です。 + +**フラッシュカードについての注意:** 最初に答えを知っているときは、それを既知のものとしてマークしないでください。 +あなたは本当にそれを知る前に、同じカードを見て、それを正しく数回答えなければなりません。 +繰り返すことで、その知識があなたの脳に深く浸透します。 -**フラッシュカードについての注意:** あなたが最初に答えを知っているときは、知らないようにしてください。あなたは -あなたが本当にそれを知る前に、同じカードを数回正しく答えてください。繰り返しは、その知識を深く -あなたの脳。 -私のフラッシュカードサイトを使用する代わりに[Anki](http://ankisrs.net/)が何度も私に勧められています。繰り返しシステムを使用して覚えやすくなります。 -ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウドシンクシステムを備えています。 iOSでは25ドル、他のプラットフォームでは無料です。 +私のフラッシュカードサイトを使用する代わりに[Anki](http://ankisrs.net/)が何度も私に勧められています。 +繰り返しシステムを使用して覚えやすくなります。 +ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウド同期システムを備えています。 +iOSでは25ドル、他のプラットフォームでは無料です。 -Ankiフォーマットの私のフラッシュカードデータベース: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)) ### 3.レビュー、レビュー、評価 -私は、ASCII、OSIスタック、Big-O表記などのチートシートを用意しています。私は余裕があるときに勉強します。 +私は、ASCII、OSI参照モデル、Big-O記法などのチートシートを用意しています。私は余裕があるときに勉強します。 プログラミングの問題から30分ほど休み、フラッシュカードを通過してください。 @@ -448,22 +458,23 @@ Ankiフォーマットの私のフラッシュカードデータベース:http ##日々の計画 -一部の被験者は1日を要し、いくつかは複数日を要する。いくつかは、何も実装することなく学習しているだけです。 +一部の科目は1日を要し、いくつかは複数日を要する。 +いくつかは、何も実装することなく学習しているだけです。 毎日私は以下のリストから1つのテーマを取り上げ、そのテーマに関するビデオを見て、以下の実装を書いています: -- C - structと他のものをargsとする構造体と関数を使う。 -- C ++ - 組み込み型を使用しない -- C + + - リンクリストのSTLのstd :: listのような組込み型の使用 +- C - struct*と何か他のものをargsとする構造体と関数を使用する。 +- C++ - 組み込み型を使用しない +- C++ - 連結リストのSTLのstd :: listのような組込み型の使用 - Python - 組み込み型を使用する(Pythonの練習を続ける) -私は正しいことをするためのテストを書いています。単純なassert()文を使って +- 簡単なassert()文を使って、時には正しく動作することを保証するテストを書く - あなたはJavaや他の何かをするかもしれませんが、これは私のことです。 -あなたはこれらのすべてを必要としません。あなたは[インタビューのための1つの言語]だけが必要です(インタビューのための1つの言語を選択します)。 +あなたはこれらのすべてを必要としません。[面接のために必要な言語は1つだけです](面接のための1つの言語を選択します)。 なぜこれらすべてのコード? -- 私はそれが病気になるまで、練習、練習、練習、そして何も問題なく行うことができます(いくつかは覚えておくべき多くのエッジケースと簿記の詳細があります) +- 私はそれが病気になるまで練習、練習、練習をし、何の問題もありません(忘れてはいけないことがいくつかあります) - 生の制約内で作業する(ガベージコレクションの助けを借りずにメモリを割り当てる/解放する(Pythonを除く)) -- 組み込み型を利用するので、組み込みのツールを実世界で使用する経験があります(実稼働環境で自分のリンクリストの実装を作成するつもりはありません) +- 組み込みの型を利用して、実際の使用のために組み込みのツールを使用した経験を持ちます(本番環境で自分のリンクされたリストの実装を書くつもりはありません) 私はすべてのテーマでこれらのすべてをやる時間がないかもしれませんが、私は試してみます。 @@ -472,38 +483,38 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - [C ++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -あなたはすべてのアルゴリズムの勇気を暗記する必要はありません。 +あなたはすべてのアルゴリズムの内容を暗記する必要はありません。 コンピューターではなく、ホワイトボードや紙にコードを書く。いくつかのサンプル入力でテストします。次に、コンピュータでテストします。 ##前提知識 -- [ ] **Learn C** - - Cはどこにでもあります。あなたは勉強している間、書籍、講義、ビデオ、*どこでも*の例を見ることができます。 +- [ ] **Cを学ぶ** + - Cはどこにでもあります。あなたは勉強している間、書籍、講義、ビデオ、*どこにでも*見ることができます。 - [ ] [Cプログラミング言語、Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - これは短い本ですが、C言語の優れた処理方法を提供し、少しでも練習すれば -            あなたはすぐに熟練を得るでしょう。 Cを理解すると、プログラムやメモリの仕組みを理解するのに役立ちます。 + - これは短い本ですが、それはC言語の優れた処理方法を提供します。 + 少しでも練習すれば、すばやく習得できます。 Cを理解すると、プログラムやメモリの仕組みを理解するのに役立ちます。 - [質問への回答](https://github.com/lekkas/c-algorithms) - [ ] **コンピュータがプログラムをどのように処理するか:** - [ ] [CPUがプログラム(ビデオ)をどのように実行するか](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [機械コード命令(ビデオ)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + - [ ] [マシンコード命令(ビデオ)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) ##アルゴリズムの複雑さ/ Big-O / Asymptotic解析 -- 何もしない -- [ ] [Harvard CS50 - Asymptotic Notation(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [ビッグO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) -ビッグO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)(https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] スキナ: +- 実装するものは何もない +- [ ] [Harvard CS50 - 漸近表記(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [BigO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] BigO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)(https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: - [動画](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [スライド](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [複雑なアルゴリズムの複雑さの概要](http://discrete.gr/complexity/) +- [ ] [アルゴリズム複雑さ分析への穏やかな紹介](http://discrete.gr/complexity/) - [ ] [成長の命令(ビデオ)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics(video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UCバークレービッグO(ビデオ)](https://youtu.be/VIS4YDpuP98) -- [ ] [UCバークレービッグオメガ(ビデオ)](https://youtu.be/ca3e7UVmeUc) +- [ ] [漸近線(Asymptotics)(video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UCバークレー BigO(ビデオ)](https://youtu.be/VIS4YDpuP98) +- [ ] [UCバークレー Big オメガ(ビデオ)](https://youtu.be/ca3e7UVmeUc) - [ ] [償却分析(ビデオ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [「Big O」(ビデオ)を説明する](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] [「Big Oを描く」(ビデオ)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] TopCoder(漸化関係とマスター定理を含む): - [計算の複雑さ:セクション1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [計算の複雑さ:セクション2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) @@ -511,32 +522,32 @@ Ankiフォーマットの私のフラッシュカードデータベース:http     講義の中には数学的にも余裕がある場合は、下にジャンプして -    離散数学ビデオを見て、バックグラウンドの知識を得る。 +    離散数学ビデオを見て、背景知識を得る。 ## データ構造 - ###配列 - 自動的にサイズ変更ベクトルを実装する。 - [ ] 説明: - - [アレイ(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - 線形および多次元アレイ(ビデオ)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - - [Multi-dim(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - - [ダイナミックアレイ(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [ギザギザアレイ(動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ギザギザアレイ(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [配列(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - 線形および多次元配列(ビデオ)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [基本的な配列(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [多次元(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [動的配列(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [ジャグ配列(動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ジャグ配列(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) - [配列のサイズ変更(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) - [ ] ベクトルを実装する(自動サイズ変更可能な可変配列): - - [ ] 配列とポインタを使ったコーディングと、インデックスを使わずにインデックスにジャンプするポインタ演算を練習します。 + - [ ] 配列とポインタを使用してコーディングを実践し、インデックスを使用する代わりにインデックスにジャンプするポインタ演算 - [ ] 割り当てられたメモリを持つ新しい生データ配列 - - フードの中でint配列を割り当てることができます。 + - 内部で配列を割り当てることができますが、その機能は使用しません。 - 16で開始するか、開始番号が大きい場合は、2 - 16,32,64,128の出力を使用します - [ ] size() - 項目数 - [ ] capacity() - 保持できるアイテムの数 - [ ] is_empty() - [ ] at(index) - 指定されたインデックスでitemを返し、インデックスが範囲外であれば吹き飛ばす - - [ ] プッシュ(項目) - - [ ] insert(index、item) - itemをindexに挿入し、そのインデックスの値と末尾の要素を右側にシフトする + - [ ] push(item) + - [ ] insert(index,item) - itemをindexに挿入し、そのインデックスの値と末尾の要素を右側にシフトする - [ ] prepend(item) - インデックス0に上記の挿入を使用できます - [ ] pop() - 最後から削除し、値を返す - [ ] delete(index) - インデックスの項目を削除し、すべての末尾の要素を左にシフトする @@ -548,85 +559,84 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - [ ] 時間 - 最後に追加/削除するO(1)(スペースを増やすために償却される)、索引、または更新 - 他の場所に挿入/削除するO(n) -    - [ ] スペース - - メモリ内で連続しているため、プロキシミティがパフォーマンスに役立ちます - - 必要なスペース=(配列の容量は> = n)*アイテムのサイズですが、2nでもO(n) +    - [ ] 空間 + - メモリ内で連続しているため、プロキシミティはパフォーマンスに役立ちます + - 必要なスペース=(配列の容量, > = n)*アイテムのサイズですが、2nでもO(n) -- ###リンクリスト +- ### 連結リスト - [ ] 説明: - - [ ] [単独リンクされたリスト(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - リンクリスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) - - [ ] [CS 61B - リンクリスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) + - [ ] [単独連結されたリスト(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - 連結リスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) + - [ ] [CS 61B - 連結リスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) - [ ] [Cコード(動画)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) -            ビデオ全体ではなく、Node構造体とメモリ割り当てに関する部分だけです。 - - [ ] リンクリストと配列: - - [Core Linked Lists Vs Arrays(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [Real World Linked Lists Vs Arrays(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs)アレー) - - [ ] [なぜあなたはリンクされたリスト(ビデオ)を避けるべきですか](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha:ポインタの知識へのポインタが必要です: +            ビデオ全体ではなく、ノード構造体とメモリ割り当てに関する部分だけです。 + - [ ] 連結リスト Vs 配列: + - [コア連結リストs Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [実世界の連結リスト Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs)アレー) + - [ ] [連結リスト(ビデオ)を避けるべき理由](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] 分かったぞ!:ポインタの知識へのポインタが必要です:         (そのポインタが指すアドレスを変更する可能性のある関数へのポインタを渡すとき)         このページはptrからptrまでを把握するためのものです。このリストトラバーサルスタイルはお勧めしません。読みやすさと保守性は巧みさのために苦しんでいます。 - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ポインターへのポインター](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] 実装する(私はテールポインタ&なしで行った): - [ ] size() - リスト内のデータ要素の数を返す - [ ] empty() - 空の場合はboolを返します - [ ] value_at(index) - n番目の項目の値を返します(最初は0から始まります) - [ ] push_front(value) - リストの先頭に項目を追加します - [ ] pop_front() - 前面アイテムを削除してその値を返します - - [ ] push_back(値) - 最後に項目を追加する + - [ ] push_back(value) - 最後に項目を追加する - [ ] pop_back() - 終了アイテムを削除し、その値を返します - [ ] front() - フロントアイテムの値を取得する - [ ] back() - 終了項目の値を取得する - [ ] insert(index、value) - インデックスに値を挿入するので、そのインデックスの現在のアイテムはインデックスの新しいアイテムによってポイントされます - [ ] erase(index) - 指定したインデックスのノードを削除する - [ ] value_n_from_end(n) - リストの最後からn番目のノードの値を返します - - [ ] reverse() - リストを逆順にする + - [ ] reverse() - リストを反転する - [ ] remove_value(value) - この値を持つリストの最初の項目を削除します。 - - [ ] 二重リンクリスト + - [ ] 二重連結リスト - [説明(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - 実装する必要はありません -- ### Stack +- ### スタック - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [スタックを先入れ先出しで使用する(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4 .html) + - [ ] [スタックをの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4 .html) - [ ] 実装されません。配列で実装するのは簡単です。 -- ###キュー - - [ ] [先入れ先出し(ビデオ)の使用](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4 .html) - - [ ] [Queue(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [循環バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [優先度キュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) - - [ ] テールポインタ付きリンクリストを使って実装する: - - エンキュー(値) - テールの位置に値を追加する - - dequeue() - 値を返し、最近追加された要素のうち少なくとも最近削除されたもの(前面) -        - 空の() +- ### キュー + - [ ] [キューの使用 First-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4 .html) + - [ ] [キュー(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [環状バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [優先度つきキュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] テールポインタ付き連結リストを使って実装する: + - enqueue(value) - テールの位置に値を追加する + - dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面) +        - empty() - [ ] 固定長配列を使って実装する: - - エンキュー(値) - 利用可能なストレージの最後にアイテムを追加する + - enqueue(value) - 利用可能なストレージの最後にアイテムを追加する - dequeue() - 値を返し、最近追加された要素のうち最も古い要素を削除します -        - 空の() +        - empty() - full() - [ ] コスト: -        あなたが頭にエンキューし、テールでデキューするリンクリストを使った悪い実装はO(n) -            あなたが最後の要素の次の要素を必要とするため、各デキューを完全にトラバースさせるためです - - エンキュー:O(1)(償却、リンクリストと配列[プロービング]) - - デキュー:O(1)(リンクされたリストと配列) - - 空:O(1)(リンクリストと配列) + - 最後の要素の次の要素が必要になるため、先頭にエンキューし、末尾をデキューするリンクリストを使用する悪い実装はO(n)になり、デキューごとに完全なトラバーサルが発生します + - enqueue:O(1)(償却、連結リストと配列[プロービング]) + - dequeue:O(1)(連結リストと配列) + - empty:O(1)(連結リストと配列) -- ### ハッシュ表 +- ### ハッシュテーブル - [ ] 動画: - [ ] [連鎖によるハッシング(動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [テーブルダブリング、Karp-Rabin(ビデオ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ダブリング、ラビン-カープ(ビデオ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [公開アドレス指定、暗号化ハッシング(動画)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010:The Mighty Dictionary(video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced)Randomization:Universal&Perfect Hashing(ビデオ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(高度)パーフェクトハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [(上級)Randomization:ユニバーサル&完全 ハッシング(ビデオ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(高度)完全ハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] オンラインコース: - - [ ] [ハッシュ関数(ビデオ)の理解](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) - - [ ] [ハッシュテーブル(ビデオ)の使用](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] [ハッシュ関数について(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [ハッシュテーブルの使用(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) - [ ] [ハッシングをサポートする(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) - [ ] [言語サポートハッシュテーブル(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) - - [ ] [Core Hash Tables(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [コアハッシュテーブル(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [データ構造(ビデオ)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [電話帳の問題(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] 分散ハッシュテーブル: @@ -636,50 +646,49 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - [ ] 線形プロービングを使用して配列で実装する - hash(k、m) - mはハッシュテーブルのサイズです - add(key、value) - キーがすでに存在する場合は、値を更新します。 - - 存在する(キー) + - exists(キー) - get(key) - - 削除(キー) + - remove(キー) -##その他の知識 +## その他の知識 -- ###バイナリ検索 - - [ ] [バイナリ検索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [バイナリ検索(ビデオ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) +- ### 二分探索 + - [ ] [二分探索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [二分探索(ビデオ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [詳細](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - [ ] 実装: - - バイナリ検索(ソートされた整数の配列) - - 再帰を使用したバイナリ検索 + - 二分探索(ソートされた整数の配列) + - 再帰を利用した二分探索 - ###ビット演算 - - [ ] [ビットチートシート](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - (2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗) + - [ ] [ビットチートシート- 2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗の多くを知るべきです](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] 良いイントロ: -            [ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ]  [良いイントロ:ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) - [ ] [Cプログラミングチュートリアル2-10:ビット演算子(ビデオ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [ビット操作](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [ビット単位の操作](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [ビット演算](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [ビットツイダーインタラクティブ](http://bits.stephan-brumme.com/interactive.html) + - [ ] [インタラクティブなBit Twiddler](http://bits.stephan-brumme.com/interactive.html) - [ ] 2と1の補数 - [バイナリ:Plusses&Minuses(なぜ2の補数を使うのか)(ビデオ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s補完](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s補完](https://en.wikipedia.org/wiki/Two%27s_complement) + - [1の補数](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2の補数](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] カウントセットビット - [1バイトのビットを数える4つの方法(ビデオ)](https://youtu.be/Hzuzo9NJrlc) - - [カウントビット数](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [32ビット整数で設定されたビット数を数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数) + - [カウントビット](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [セットビットの数を32ビット整数で数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数) - [ ] 2の次の累乗に丸めます: - [2つの次のパワーに回す](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - [ ] スワップ値: - - [Swap](http://bits.stephan-brumme.com/swap.html) + - [スワップ](http://bits.stephan-brumme.com/swap.html)     - [ ] 絶対値: - [絶対整数](http://bits.stephan-brumme.com/absInteger.html) ## 木 -- ###木 - ノートと背景 +- ### 木 - メモと背景 - [ ] [シリーズ:Core Trees(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [シリーズ:木々(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - 基本的な木の構築 @@ -692,63 +701,63 @@ Ankiフォーマットの私のフラッシュカードデータベース:http             空間の複雑さ:最適:O(1)、最悪:O(n / 2)= O(n) - DFS(深さ優先探索) - [MIT(動画)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -        - ノート: +        - メモ:             時間複雑度:O(n) -            スペースの複雑さ: +            空間の複雑さ:                 最良:O(log n) - 平均。木の高さ                 最悪:O(n) - - インオーダー(DFS:left、self、right) - - ポストオーダー(DFS:left、right、self) - - プレオーダー(DFS:自己、左、右) + - inorder(DFS:left、self、right) + - postorder(DFS:left、right、self) + - preorder(DFS:自己、左、右) -- ###バイナリ検索ツリー:BST - - [ ] [バイナリ検索ツリーレビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) +- ### 二分探索木:BST + - [ ] [二分探索木レビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [シリーズ(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - シンボルテーブルから始まり、BSTアプリケーションを経由します - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT(動画)](https://www.youtube.com/watch?v=9Jry5-82I68) - C / C ++: - - [ ] [バイナリ検索ツリー - C / C ++での実装(ビデオ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [二分探索木 - C / C ++での実装(ビデオ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(ビデオ)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [バイナリ検索ツリー(ビデオ)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [バイナリツリーの高さを見つける(ビデオ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [バイナリツリートラバース - 幅優先戦略(ビデオ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [バイナリツリー:レベルオーダートラバーサル(動画)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [バイナリツリートラバーサル:Preorder、Inorder、Postorder(video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [バイナリツリーがバイナリ検索ツリーかどうかを確認する(ビデオ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [バイナリ検索ツリー(ビデオ)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [バイナリ検索ツリー(ビデオ)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分探索木(ビデオ)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分木の高さを見つける(ビデオ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [二分木トラバース - 幅優先戦略(ビデオ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [二分木:レベルオーダートラバーサル(動画)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分木トラバーサル:Preorder、Inorder、Postorder(video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分木が二分探索木かどうかを確認する(ビデオ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分探索木(ビデオ)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [二分探索木(ビデオ)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] 実装: - - [ ] insert //ツリーに値を挿入する + - [ ] insert //木に値を挿入する - [ ] get_node_count //格納された値の数を取得する - - [ ] print_values //最小値から最大値までツリーの値を出力します - - [ ] delete_tree - - [ ] is_in_tree //与えられた値がツリーに存在する場合はtrueを返します + - [ ] print_values //最小値から最大値まで木の値を出力します + - [ ] delete_tree + - [ ] is_in_tree //与えられた値が木に存在する場合はtrueを返します - [ ] get_height //ノードの高さを返します(単一ノードの高さは1です) - - [ ] get_min //ツリーに格納されている最小値を返します - - [ ] get_max //ツリーに格納されている最大値を返します + - [ ] get_min //木に格納されている最小値を返します + - [ ] get_max //木に格納されている最大値を返します - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor //指定された値の後にツリーの次に高い値を返し、存在しなければ-1を返します + - [ ] get_successor //指定された値の後に木の次に高い値を返し、存在しなければ-1を返します -- ###ヒープ/プライオリティキュー/バイナリヒープ - - ツリーとして可視化されますが、通常はストレージ内で線形です(配列、リンクリスト) +- ### ヒープ/優先度つきキュー/二分ヒープ + - 木として可視化されますが、通常はストレージ内で線形です(配列、連結リスト) - [ ] [ヒープ](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations(video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [バイナリツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [ツリー高さ備考(ビデオ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [基本操作(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [完全なバイナリツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [ナイーブな実装(video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [二分木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [木の高さ備考(ビデオ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [基本的な操作(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [完全な二分木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [疑似コード(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [ヒープソート - 開始(ビデオ)にジャンプ](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [ヒープソート - ジャンプして開始(ビデオ)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - [ ] [ヒープソート(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - [ ] [ヒープを作る(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - [ ] [MIT:ヒープとヒープソート(ビデオ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B講義24:優先度キュー(ビデオ)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [Linear Time BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [CS 61B講義24:優先度つきキュー(ビデオ)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [線形時間BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] 最大ヒープを実装する: - - [ ] 挿入 + - [ ] insert - [ ] sift_up - 挿入に必要 - [ ] get_max - 最大項目を削除せずに返します - [ ] get_size() - 格納された要素の数を返す @@ -758,36 +767,36 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - [ ] remove(i) - インデックスxのアイテムを削除する - [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する - [ ] heap_sort() - ソートされていない配列を取り出し、最大ヒープを使用してソート済みの配列に変換します - - 注意:代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります(インプレースでは実行できません)。 + - 注意:代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります([in-place](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)では実行できません)。 -##並べ替え +## ソート -- [ ] ノート: +- [ ] note: - ソートを実装し、最良のケース/最悪のケース、それぞれの平均的な複雑さを知る: - バブルソートなし - ひどい - O(n ^ 2)、ただしn <= 16の場合を除く - ソートアルゴリズムの安定性( "Quicksortは安定していますか?") - [ソートアルゴリズムの安定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [ソーティングアルゴリズムの安定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [ソーティングアルゴリズムの安定性](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [ソートアルゴリズムの安定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [ソートアルゴリズムの安定性](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [ソートアルゴリズム - 安定性](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] どのアルゴリズムをリンクリストに使用できますか?どの配列ですか?両方でどちら? - - リンクされたリストのソートはお勧めしませんが、マージソートは実行可能です。 - - [リンクされたリストのマージソート](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + - [ ] 連結リストで使用できるアルゴリズムはどれですか?どの配列ですか?両方でどちら? + - 連結リストのソートはお勧めしませんが、マージソートは実行可能です。 + - [連結リストのマージソート](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。 - [ ] [Sedgewick - Mergesort(5ビデオ)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1。 Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2。 Mergesortボトムアップ](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) + - [ ] [1。 マージソート](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) + - [ ] [2。 マージソート・ボトムアップ](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - [ ] [3。複雑さの並べ替え](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - [ ] [4。コンパレータ](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - [ ] [5。安定性](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - [ ] [Sedgewick - Quicksort(4ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1。 Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2。選択](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3。 Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4。システムソート](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [1. クイックソート](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [2. 選択](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [3. 重複キー](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [4. システムソート](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - [ ] UCバークレー: - [ ] [CS 61B講義29:ソートI(ビデオ)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) @@ -798,14 +807,14 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - [ ] [バブルソート(動画)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [バブルソートの分析(動画)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [挿入ソート、マージソート(動画)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [挿入順(動画)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [挿入ソート(動画)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) - [ ] [マージソート(動画)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) - [ ] [クイックソート(動画)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [選択ソート(動画)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - [ ] マージソートコード: - [ ] [出力配列(C)の使用](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [出力配列(Python)を使う](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [出力配列(Python)の使用](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [インプレース(C ++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) - [ ] クイックソートコード: - [ ] [Implementation(C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) @@ -819,202 +828,202 @@ Ankiフォーマットの私のフラッシュカードデータベース:http - ヒープソートについては、上記のヒープデータ構造を参照してください。 - [ ] 必須ではありませんが、私はそれらをお勧めしました: - - [ ] [Sedgewick - Radix Sorts(6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1。 Javaの文字列](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2。 Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3。最下位桁の最初の文字列の基数ソート](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4。最も重要な数字の最初の文字列の基数ソート](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5。 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [Sedgewick - 基数ソート(6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [1. Javaの文字列](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) + - [ ] [2. キーインデックスのカウント](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) + - [ ] [3. 最下位桁の最初の文字列の基数ソート](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) + - [ ] [4. 最も重要な数字の最初の文字列の基数ソート](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [5. 基数ソートの3つの方法](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [6。接尾辞配列](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [基数ソート(動画)](https://www.youtube.com/watch?v=xhr26ia4k38) - [ ] [基数ソート、ソート(線形時間指定の制約)(ビデオ)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [無作為化:Matrix Multiply、Quicksort、Freivaldsのアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [ランダム化:行列乗算、クイックソート、Freivaldsのアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [線形時間で並べ替える(ビデオ)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -要約すると、[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現です。 +まとめとして、ここには[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現があります。 このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects) ##グラフ グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。 -- ノート: +- note: - メモリにグラフを表示するには4つの基本的な方法があります: - オブジェクトとポインタ - 隣接行列 - 隣接リスト - - 隣接地図 - - 各表現とその長所と短所をよく知っている + - 隣接マップ + - それぞれの表現とその長所と短所を熟知してください - BFSとDFS - 計算の複雑さとそのトレードオフ、そしてそれらを実際のコードに実装する方法を知っている - - 質問が表示されたら、まずグラフベースのソリューションを探し、見つからない場合は次に進みます。 + - 質問が表示されたら、まずグラフベースのソリューションを探し、それがなければ進んでください。 - [ ] Skiena Lectures - 素晴らしいイントロ: - [ ] [CSE373 2012 - 講義11 - グラフデータ構造(ビデオ)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - 講義12 - 幅優先検索(ビデオ)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(ビデオ)(ビデオ)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(動画2)(ビデオ)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(コンター3)(ビデオ)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(1)(ビデオ)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(2)(動画)(ビデオ)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(3)(ビデオ)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] グラフ(レビューなど): - - [ ] [6.006シングルソース最短経路問題(ビデオ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra(video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford(video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Dijkstraのスピードアップ(ビデオ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) -    グラフアルゴリズムI - トポロジカルソート、最小スパニングツリー、プリムのアルゴリズム - 講演6(ビデオ)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Aduni:グラフアルゴリズムII - DFS、BFS、Kruskalのアルゴリズム、連合探索データ構造 - 講義7(ビデオ)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) + - [ ] [6.006単一始点最短経路問題(ビデオ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 ダイクストラ(ビデオ)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 ベルマン-フォード法(ビデオ)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 ダイクストラ法のスピードアップ(ビデオ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni:グラフアルゴリズムI - トポロジカルソート、最小スパニング木、プリムのアルゴリズム - 講演6(ビデオ)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Aduni:グラフアルゴリズムII - DFS、BFS、クラスカル法のアルゴリズム、連合探索データ構造 - 講義7(ビデオ)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) - [Aduni:グラフアルゴリズムIII:最短経路 - レクチャー8(ビデオ)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni:Graph Alg。 IV:幾何学アルゴリズムの紹介 - 第9講(ビデオ)(https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [Aduni:グラフアルゴリズムIV:幾何学アルゴリズムの紹介 - 第9講(ビデオ)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - [ ] [CS 61B 2014(58:09から開始)(ビデオ)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - [ ] [CS 61B 2014:加重グラフ(ビデオ)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [欲張りアルゴリズム:最小スパニングツリー(ビデオ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [欲張りアルゴリズム:最小スパニング木(ビデオ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- フルコースラコース: - - [ ] [グラフ上のアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) +- フルcourseraコース: + - [ ] [グラフのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - 私は実装します: - [ ] 隣接リストを持つDFS(再帰的) - [ ] 隣接リストを持つDFS(スタックで反復) - [ ] 隣接行列を持つDFS(再帰的) - [ ] 隣接行列を持つDFS(スタックで反復) -    隣接リストを持つ - [ ] BFS -    隣接行列を持つ[ - ] BFS - - [ ] 単一ソースの最短経路(ダイクストラ) - - [ ] 最小スパニングツリー + - [ ] 隣接リストを持つBFS + - [ ] 隣接行列を持つBFS + - [ ] 単一始点の最短経路(ダイクストラ) + - [ ] 最小スパニング木 - DFSベースのアルゴリズム(上記のAduniの動画を参照): - - [ ] サイクルをチェックする(トポロジカルソートに必要、開始前にサイクルをチェックするので) + - [ ] サイクルをチェックする(トポロジカルソートに必要.開始前にサイクルをチェックする) - [ ] トポロジカルソート - [ ] グラフ内の接続されたコンポーネントをカウントする - [ ] 強く接続されたコンポーネントを一覧表示する - [ ] 二部グラフをチェックする -Skienaの本(下記の書籍の節を参照)とインタビューの書籍 +Skienaの本(下記の書籍の節を参照)と面接の書籍 ##さらに多くの知識 - ###再帰 - - [ ] スタンフォードは再帰とバックトラックに関する講義を行います: - - [ ] [講義8 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] 再帰とバックトラックに関するスタンフォードの講義: + - [ ] [講義8 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [講義9 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [講義10 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [講義11 |プログラミング抽象概念(ビデオ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - [ ] [講義10 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [講義11 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - それを使用するのが適切なとき - 尾の再帰はどのように優れていないのですか? - [ ] [テール再帰とは何かなぜそれが悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [テール再帰(ビデオ)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ###動的プログラミング - - この問題はかなり難しいかもしれません。なぜなら、各DPの可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 + - この問題はかなり難しいかもしれません。なぜなら、それぞれのDP可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 - [ ] 動画: - Skienaのビデオは、時には見ることができないほど小さすぎるホワイトボードを使用することがあるため、フォローするのが難しい場合があります - - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(ビデオ)(https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(ビデオ)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [ ] [Skiena:CSE373 2012 - 講義20 - 編集距離(ビデオ)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - [ ] [Skiena:CSE373 2012 - 講義21 - 動的プログラミング例(ビデオ)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミング(ビデオ)のアプリケーション](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [Simonson:Dynamic Programming 0(59:18から開始)(ビデオ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson:ダイナミックプログラミングI - 講義11(ビデオ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson:Dynamic Programming II - 講演12(ビデオ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミングのアプリケーション(ビデオ)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson:動的プログラミング0(59:18から開始)(ビデオ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson:動的プログラミングI - 講義11(ビデオ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson:動的プログラミングII - 講演12(ビデオ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] 個々のDP問題のリスト(それぞれ短い):             [動的プログラミング(動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale講義ノート: + - [ ] イェール講義ノート: - [ ] [動的プログラミング](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング) - [ ] Coursera: - [ ] [RNA二次構造の問題(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [動的プログラミングアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [DPアルゴリズム(ビデオ)の説明](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [動的プログラミングのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [DPアルゴリズムの説明(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - [ ] [DPアルゴリズムの実行時間(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) -        [[DP対再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) +        - [ ] [[DP Vs 再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [グローバル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [ローカル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### オブジェクト指向プログラミング - [ ] [オプション:UML 2.0シリーズ(動画)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - [ ] オブジェクト指向ソフトウェアエンジニアリング:UMLとJavaを使ったソフトウェア開発(21ビデオ): - - OOおよびOO設計の実践を十分に把握している場合は、これをスキップできます。 + - OOとOOの設計方法を十分に理解している場合は、これをスキップできます。 - [OOSE:UMLとJavaを使用したソフトウェア開発](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] SOLID OOP原則: - [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(ビデオ)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [ソリッド原則(ビデオ)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html)| [各オブジェクトへの単一責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [ ] [SOLID原則(ビデオ)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] S - [単一責任の原則](http://www.oodesign.com/single-responsibility-principle.html)| [各オブジェクトへの単一責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [もっと味](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open / Closed Principal](http://www.oodesign.com/open-close-principle.html)| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません](https://en.wikipedia.org/wiki/Open/closed_principle) + - [ ] O - [オープン/クローズの原則l](http://www.oodesign.com/open-close-principle.html)| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません](https://en.wikipedia.org/wiki/Open/closed_principle) - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html)| [基本クラスと派生クラスは `IS A`プリンシパルに従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [ ] L - [リスコフの置換原則](http://www.oodesign.com/liskov-s-substitution-principle.html)| [基本クラスと派生クラスは `IS A`プリンシパルに従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=ja) - - [ ] I - [インタフェース分離原理](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません - - [インタフェース分離原理5分(ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [ ] I - [インタフェース分離の原則](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません + - [インタフェース分離の原則5分(ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) - - [ ] D - [Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 + - [ ] D - [依存性逆転の原則(http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 - なぜ依存関係の逆転の原則とそれが重要なのか(http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja) - ### デザインパターン - [ ] [クイックUMLレビュー(ビデオ)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] これらのパターンを学ぶ: - - [ ] 戦略 - - [ ] シングルトン - - [ ] アダプタ - - [ ] プロトタイプ - - [ ] デコレータ - - [ ] 訪問者 - - [ ] 工場、抽象工場 - - [ ] ファサード - - [ ] 観察者 - - [ ] プロキシ - - [ ] 委任 - - [ ] コマンド - - [ ] 状態 - - [ ] 記念品 - - [ ] イテレータ - - [ ] コンポジット - - [ ] フライウェイト + - [ ] Strategy(戦略) + - [ ] Singleton(単一要素) + - [ ] Adapter(アダプタ) + - [ ] Prototype(原型) + - [ ] Decorator(装飾者) + - [ ] Visitor(訪問者) + - [ ] Factory,AbstractFactory(工場、抽象工場) + - [ ] Facade(外見) + - [ ] Observer(観察者) + - [ ] Proxy(代理) + - [ ] Delegate(委任) + - [ ] Command(命令) + - [ ] State(状態) + - [ ] Memento(記念品) + - [ ] Iterator(イテレータ) + - [ ] Composite(合成) + - [ ] Flyweight(フライ級) - [ ] [第6章(パート1) - パターン(ビデオ)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - 抽象化 - 発生、一般階層、プレーヤー役割、シングルトン、オブザーバー、代表団(ビデオ)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index= 12&リスト= PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(ビデオ)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [一連の動画(27ビデオ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [第6章(パート2) - 抽象化 - 発生、一般階層、プレーヤーロール、シングルトン、オブザーバー、代表団(ビデオ)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(ビデオ)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [ビデオシリーズ(27ビデオ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - 正式な本は「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」であることは分かっていますが、ヘッドファーストはOOの初心者には最適です。 - - [ ] [参考:101のデザインパターンとヒント(開発者向け)](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [参考:開発者のための101のデザインパターンとヒント](https://sourcemaking.com/design-patterns-and-tips) - [ ] [人間のデザインパターン](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -- ###コンビナトリアル(nをkとする)と確率 - - [ ] [数学のスキル:ファクター、パーミュテーション、コンビネーションの検索方法(選択)(ビデオ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) +- ###組み合わせ(nCk)と確率 + - [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(ビデオ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [学校を作る:確率(ビデオ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [学校を作る:確率とマルコフ連鎖(ビデオ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - コースのレイアウト: - [ ] [基本理論的確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - ちょうどビデオ - 41(それぞれ単純で、それぞれ短いです): - - [ ] [確率説明(ビデオ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP、NP-完全近似アルゴリズム - - 旅行者のセールスマンやナップザックの問題など、NP完全問題の最も有名なクラスについて知っています。 -        面接官があなたに偽装して尋ねると、それらを認識することができます。 - - NP完成の意味を知る。 + - [ ] [確率の説明(ビデオ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) +- ### NP、NP-完全/近似アルゴリズム + - 巡回セールスマン問題やナップザック問題など、NP完全問題の最も有名なクラスについて知りましょう。 +       そうすれば面接官がこれらについて偽装して尋ねるとき、それらを認識することができます。 + - NP完全の意味を知る。 - [ ] [計算上の複雑さ(ビデオ)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs。 II&NP完全性へのイントロ(ビデオ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [貪欲アルゴリズム。 II&NP完全性へのイントロ(ビデオ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - [ ] [NP完全性II&リダクション(ビデオ)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP完全性III(ビデオ)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP完全性IV(ビデオ)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] スキナ: - - [ ] [CSE373 2012 - 講義23 - NP完全性入門(ビデオ)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - 講義24 - NP完全性証明(ビデオ)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講演25 - NP完全性挑戦(ビデオ)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [複雑さ:P、NP、NP完全性、リダクション(ビデオ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [CSE373 2012 - 講義23 - NP完全性の紹介(ビデオ)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - 講義24 - NP完全性の証明(ビデオ)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講演25 - NP完全性への挑戦(ビデオ)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [複雑さ:P、NP、NP完全性、削減(ビデオ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [複雑さ:近似アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [複雑さ:固定パラメータアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するために最適なソリューションについて議論しています。 - - [ジュピターノート](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するための最適なソリューションについて説明しています。 + - [JupyterNotebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - あなたが持っているなら、CLRSの1048 - 1140ページ。 - ###キャッシュ - [ ] LRUキャッシュ: - - [ ] [LRUキャッシュの魔法(100日間のGoogle Dev)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRUキャッシュの魔法(Google Devの100日間)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [LRU(ビデオ)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache(C ++)(video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPUキャッシュ: @@ -1023,7 +1032,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - ###プロセスとスレッド - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): - - プロセスとスレッド用 + - プロセスとスレッドのためのビデオ表示1-11 - [オペレーティングシステムとシステムプログラミング(ビデオ)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [プロセスとスレッドの違いは何ですか?](https://www.quora.com/What-is-the-difference-between-a-process-and-thread) - カバー: @@ -1032,67 +1041,67 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - プロセス - スレッド - ロック - - mutexes - - セマフォー - - モニター - - 彼らはどのように動作する + - ミューテックス + - セマフォ + - モニタ(同期) + - 彼らの動作の仕方 - デッドロック - ライブロック - CPUの動作、割り込み、コンテキストの切り替え - - マルチコアプロセッサを使用した最新の並行性構成 + - マルチコアプロセッサを使用した最新の並行構成 - [ページング、セグメンテーション、仮想メモリ(動画)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - [割り込み(動画)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [スケジュール設定(動画)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - - プロセスリソースのニーズ(メモリ:コード、静的ストレージ、スタック、ヒープ、ファイル記述子、I / O) + - [スケジューリング(動画)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) + - プロセスリソースのニーズ(メモリ:コード、静的ストレージ、スタック、ヒープ、ファイル記述子、I/O) - スレッドリソースの必要性(同じプロセス内の他のスレッドとの上の(マイナススタック)の共有、それぞれが独自のpc、スタックカウンタ、レジスタ、およびスタックを持つ) - フォークは、新しいプロセスがメモリに書き込むまで、実際には書き込み時にコピー(読み取り専用)され、次に完全なコピーを行います。 - コンテキストスイッチ - オペレーティングシステムとその基盤となるハードウェアによってコンテキスト切り替えが開始される仕組み - - [ ] [C ++のスレッド(シリーズ - 10ビデオ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [C++のスレッド(シリーズ - 10ビデオ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] Pythonでの並行性(ビデオ): - [ ] [スレッドに関する短いシリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Pythonスレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Python GIL(2010)の理解](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [ ] [Python GIL(2010)について理解する](https://www.youtube.com/watch?v=Obt-vMVdM8s) - [参考文献](http://www.dabeaz.com/GIL) - [ ] [David Beazley - 地上からのPython並行処理:LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [基調講演David Beazley - 興味のあるトピック(Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ ] [Pythonのミューテックス](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ###論文 - - 全面的に完全に理解することは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。 + - 完全に理解した上ですべてを読むことは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。 - [古典的な論文を愛する?](https://www.cs.cmu.edu/~crary/819-f09/) - [ ] [1978:順次プロセスの通信](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [Goで実装](https://godoc.org/github.com/thomas11/csp) - - [ ] [2003:The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - [ ] [2003:The Googleファイルシステム](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - 2012年に巨像に置き換えられました - [ ] [2004:MapReduce:大規模クラスタでのデータ処理の簡略化](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - 主にCloud Dataflowに置き換えられましたか? - [ ] [2006:Bigtable:構造化データ用分散ストレージシステム](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [Google BigQueryの内部を見る](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [ ] [2006:疎結合分散システムのChubby Lockサービス](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007:Dynamo:Amazonの高可用キー値ストア](https://www.akkadia.org/drepper/cpumemory.pdf) + - [ ] [2007:Dynamo:Amazonの高可用性 key valueストア](https://www.akkadia.org/drepper/cpumemory.pdf) - Dynamo紙がNoSQL革命を開始 - すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する)](https://www.akkadia.org/drepper/cpumemory.pdf) - [ ] [2010:Dapper、大規模分散システム追跡基盤](https://research.google.com/pubs/archive/36356.pdf) - [ ] [2010:Dremel:Web-Scaleデータセットのインタラクティブ解析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [ ] [2012:Googleの巨像](https://www.wired.com/2012/07/google-colossus/) - - 紙がありません + - 論文がありません - [ ] 2012:AddressSanitizer:高速アドレス整合性チェッカー: - - [ペーパー](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [論文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [ビデオ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - [ ] 2013:スパナ:Googleのグローバル分散データベース: - - [ペーパー](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [論文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [ビデオ](https://www.usenix.org/node/170855) - - [ ] [2014年:機械学習:技術的な負債の高い金利のクレジットカード](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2014年:機械学習:技術的負債の高利貸しクレジットカード](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [ ] [2015:Googleの継続的なパイプライン](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [ ] [2015年:大規模な高可用性:Googleの広告用データ基盤の構築](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015:TensorFlow:異種分散システムで学ぶ大規模マシン](http://download.tensorflow.org/paper/whitepaper2015.pdf) - - [ ] [2015年:開発者がコードを検索する仕組み:ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2015:TensorFlow:異種分散システムの大規模機械学習](http://download.tensorflow.org/paper/whitepaper2015.pdf) + - [ ] [2015年:開発者がコードを検索する方法:ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [ ] [2016:Borg、Omega、Kubernetes](http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44843.pdf) - ###テスト - カバーするために: - - ユニットテストの仕組み + - ユニット(単体)テストの仕組み - モックオブジェクトとは何ですか? - 統合テストとは - 依存性注入とは @@ -1110,7 +1119,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ###スケジューリング - - OSで、どのように動作するのですか + - OSで、どのように動作するか - オペレーティングシステムのビデオから収集できます - ###システムルーチンを実装する @@ -1119,31 +1128,30 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - ###文字列の検索と操作 - [ ] [Sedgewick - 接尾辞配列(ビデオ)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - サブストリング検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1。サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2。ブルートフォースサブストリング検索](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3。 Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4。 Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5。 Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [Sedgewick - サブストリング(文字列の一部)検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [1. サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [2. ブルートフォースサブストリング検索](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] [3. クヌース・モーリス・プラット法](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [4. ボイヤー-ムーア文字列検索アルゴリズム](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) + - [ ] [5. ラビン-カープ文字列検索アルゴリズム](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - [ ] [テキストの検索パターン(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)     このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects) -- ###試行 - - 試行の種類が異なることに注意してください。いくつかは接頭辞を持ち、いくつかは接頭辞を持ち、あるものはビットの代わりに文字列を使います -        パスを追跡する。 +- ###トライ木 + - さまざまなトライ木があることに注意してください。いくつかは接頭辞を持ち、あるものはパスを追跡するビットの代わりに文字列を使用します。 - 私はコードを読んだが、実装しないだろう。 - [ ] [Sedgewick - 試してみる(3ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1。 R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2。 Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3。キャラクターベースの操作](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] [1. R Way トライ木](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [2. 3分探索木](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [3. キャラクターベースの操作](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - [ ] [データ構造とプログラミング手法に関する注記](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] 短期コースビデオ: - - [ ] [紹介する(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [パフォーマンスの試行(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Trie(ビデオ)の実装](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [トライ木の紹介(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [トライ木のパフォーマンス(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [トライ木の実装ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [Trie:無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - 試用版の使用](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [TopCoder - トライ木の使用](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - [ ] [スタンフォード講演(現実世界のユースケース)(ビデオ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) @@ -1155,10 +1163,10 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること](http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [すべてのプログラマーが、エンコーディングと文字セットについて知る必要があることは間違いない](http://kunststube.net/encoding/) -- ###エンディアン - - [ ] [ビッグ・アンド・リトル・エンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [ビッグエンディアン対リトルエンディアン(ビデオ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside / Out(ビデオ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) +- ###バイト順(エンディアン) + - [ ] [ビッグエンディアンとリトルエンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [ビッグエンディアン Vs リトルエンディアン(ビデオ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(ビデオ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。 - 前半で十分です。 @@ -1174,7 +1182,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] [SSL / TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - [ ] [ビデオシリーズ(21ビデオ)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IggfoqO4iPnPYQui46QqT0j) - - [ ] [不確かさのサブネット化 - 第5部CIDR表記](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [詳解サブネット化 - 第5部CIDR表記](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] ソケット: - [ ] [Java - Sockets - Introduction(video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [ソケットプログラミング(ビデオ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) @@ -1182,9 +1190,9 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 ##システム設計、スケーラビリティ、データ処理 - **4年以上の経験があれば、システム設計の質問を期待できます。** - スケーラビリティとシステム設計は、多くのトピックとリソースを持つ非常に大きなトピックです。 -      拡張可能なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。 +      スケーラビリティ(拡張可能)なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。       これにかなりの時間を費やすことを期待してください。 -- 考察: +- 考慮事項: - スケーラビリティ - 大きなデータセットを単一の値に変換する - あるデータセットを別のデータセットに変換する @@ -1198,102 +1206,102 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - トレードオフ - パフォーマンス分析と最適化 -- [ ] **ここをクリック**:[The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] **ここをクリック**:[システム設計入門](https://github.com/donnemartin/system-design-primer) - [ ] [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) -- [ ] [テクニカルインバビューで設計質問に答えるための準備方法](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical -interview?redirected_qid = 1500023) -- [ ] [システムデザインインタビューの前に知っておくべき8つの事柄](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before - システム設計 - インタビュー/) +- [ ] [技術面接で設計質問に答えるための準備方法](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [システムデザイン面接の前に知っておくべき8つの事柄](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [アルゴリズム設計](http://www.hiredintech.com/algorithm-design/) - [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(ビデオ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。 -- [ ] [システム設計インタビューの方法](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [誰もが知るべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [システム設計の面接](https://github.com/checkcheckzz/system-design-interview) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。 +- [ ] [システム設計面接の方法](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [誰もが知っておくべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [コンテキストスイッチを作るのにどれくらい時間がかかりますか?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [データセンター間の取引(動画)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [CAP定理の簡単な英語入門](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] パクソス合意アルゴリズム: +- [ ] Paxosアルゴリズム: - [短い動画](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ユースケースとマルチパクソーズの拡張動画](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [ペーパー](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) + - [ユースケースとマルチパクソスによる拡張動画](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [論文](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [コンシステントハッシュ法](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [NoSQLパターン](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] スケーラビリティ: - [ ] [概要(動画)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] 短いシリーズ: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [クローン](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) - [ ] [スケーラブルなWebアーキテクチャと分散システム](http://www.aosabook.org/ja/distsys.html) - - [ ] [分散コンピューティングの説明](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra:Google Pregelグラフ処理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Googleでソフトウェアシステムを構築し、教訓(ビデオ)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [規模の設計システムの紹介](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [App EngineとCloud Datastore(ビデオ)を使用して世界中の視聴者にモバイルゲームを拡大](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [GoogleがPlanet-Scale Infra(プラチナスケールインフラ)のプラネットスケールエンジニアリングを行う仕組み](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [分散コンピューティングの説明の誤り](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [実用的なプログラミングテクニック](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra:Google Pregel グラフ処理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Googleのソフトウェアシステム構築と教訓(ビデオ)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [スケールのための設計システムの紹介](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [App EngineとCloud Datastoreを使用してモバイルゲームを世界中の視聴者に拡大(ビデオ)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Googleがプラネットスケールのインフラのプラネットスケールエンジニアリングを行う仕組み](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [アルゴリズムの重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - [ ] [シャーディング](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook(2009)](https://www.infoq.com/presentations/Scale-at-Facebook) -    Facebook(2012年)、「10億ユーザー向けビルド(ビデオ)」(https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Facebook(2009)でスケール](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Facebook(2012年)、「10億ユーザー向けビルド(ビデオ)」](https://www.youtube.com/watch?v=oodS71YtkGU) - [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(ビデオ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7年間のYouTubeスケーラビリティレッスン30分](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) - [動画](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用)](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -ju.html) + - [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用)](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - [ ] [大きなデータセットで重複を削除する方法](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [EtsyのスケールとJon Cowieによるエンジニアリング文化(ビデオ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - Amazonが独自のマイクロサービスアーキテクチャに導いたこと(http://thenewstack.io/led-amazon-microservices-architecture/) - - [圧縮するか圧縮しない、それはUberの質問でした](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Tarantool非同期キュー、キューに入れる](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [おおよそのクエリ処理をいつ使うべきか](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Jon CowieによるEtsyのスケールとエンジニアリング文化の中の一見(ビデオ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Amazonは独自のマイクロサービスアーキテクチャをどのように導いたか](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [圧縮するか圧縮しないか、それはUberの質問でした](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Tarantoolの非同期キュー、キューに入れる](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [おおよそのクエリ処理を使用するタイミング](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [単一のデータセンターからフェイルオーバーするための、Googleのネイティブマルチホームアーキテクチャへの移行](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover- to-an.html) + - [ ] [単一のデータセンターからフェイルオーバーするための、Googleのネイティブマルチホームアーキテクチャへの移行](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - [ ] [スパナ](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [Egnyteアーキテクチャ:マルチペタバイト分散システムの構築とスケーリングの教訓](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and- scaling.html) - - [ ] [機械学習型プログラミング:新しい世界のための新しいプログラミング](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for- a.html) - - [ ] [1日あたり何百万ものリクエストを処理する画像最適化技術](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder:どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-largest-recommendation-engines-de.html) + - [ ] [Egnyteアーキテクチャ:マルチペタバイト分散システムの構築とスケーリングの教訓](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [機械学習駆動プログラミング:新しい世界のための新しいプログラミング](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [1日あたり何百万ものリクエストを処理する画像最適化技術](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Patreonのアーキテクチャの概要](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder:どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - [ ] [現代のキャッシュのデザイン](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - [ ] [Facebookのスケールでライブビデオストリーミング](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) -    AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド(http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million- users-on-amazons.html) - - [ ] [ドッカーの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) +    - [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [Dockerの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - [ ] [AMPはGoogleに存在する脅威に対抗していますか?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) ) - [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless(非常に長い、要点が必要)](http://martinfowler.com/articles/serverless.html) - - [ ] [Instagramのパワーは何百ものインスタンス、何十ものテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d。 html) + - [ ] [サーバーレス(非常に長い、要点が必要)](http://martinfowler.com/articles/serverless.html) + - [ ] [Instagramを動かすもの:何百ものインスタンス、数十のテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfishのソーシャルゲームアーキテクチャ - 50百万人の月間ユーザーと成長(http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) ) - - [ ] [アーキテクチャ - 40Mビジター、200M動的ページビュー、30TBデータ](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view .html) + - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) ) + - [ ] [アーキテクチャ - 40Mビジター、200Mダイナミックページビュー、30TBデータ]() - [ ] [PlentyOfFishアーキテクチャ](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) ) - - [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -nuh-nuhs.html) - - [ ] 一緒にサービスを接着できる技術の情報については、下記の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 + - [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 - [ ] Twitter: - [O`Reilly MySQL CE 2011:Jeremy Cole、「@Twitterの大小データ」(ビデオ)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [スケール時のタイムライン](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - さらに詳しくは、[Video Series](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。 + - さらに詳しくは、[ビデオシリーズ](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。 -- [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように扱われたのかについてのいくつかの文書があります。 - - レビュー:[The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように処理されたかについてのいくつかの文書があります。 + - レビュー:[システム設計入門](https://github.com/donnemartin/system-design-primer) - [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) - [チートシート](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - 流れ: 1. 問題と範囲を理解する: -            - インタビュアーの助けを借りてユースケースを定義する +            - 面接官の助けを借りてユースケースを定義する - 追加の機能を提案する - - インタビュアーが範囲外とみなすアイテムを削除する + - 面接官が範囲外とみなすアイテムを削除する - 高可用性が必要と仮定し、ユースケースとして追加する 2. 制約について考える: - - 1か月あたりのリクエスト数を尋ねる - - 1秒あたりにどれくらい多くのリクエストをするか(彼らはボランティアでもよいし、あなたに数学をさせるかもしれない) - - 読み込みの見積もりと書き込みの割合 - - 推定時に80/20ルールを覚えておいてください + - 毎月のリクエスト数を尋ねる + - 毎秒どれくらいのリクエストをするか(彼らはボランティアでもよいし、あなたに数学をさせるかもしれない) + - 読み込みと書き込みの割合を見積もります + - 推定時に80/20ルールを守って下さい - 1秒あたりに書き込まれるデータの量 - 5年間に必要な合計ストレージ - - 1秒あたりに読み取られるデータの量 + - 毎秒読み取られるデータの量 3. 抽象的なデザイン: - レイヤー(サービス、データ、キャッシング) - インフラストラクチャ:負荷分散、メッセージング @@ -1307,68 +1315,67 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [画像共有システムの設計](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [推薦システムの設計](http://ijcai13.org/files/tutorial_slides/td3.pdf) - [URL短縮システムの設計:上からコピー](http://www.hiredintech.com/system-design/the-system-design-process/) - - [キャッシュシステム設計](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - [キャッシュシステムの設計](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) --- ##最終レビュー     このセクションでは、重要な概念のほとんどを見直すためにかなり短いビデオを見ることができます。 -    あなたが頻繁にリフレッシャーをしたいならいいですね。 +    あなたが頻繁に再学習をしたいならいいですね。 - [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] マイケル・サンボール(18ビデオ) +- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(18ビデオ) - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - アルゴリズムI](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01。ユニオン検索](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02。アルゴリズムの分析](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03。スタックとキュー](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04。初級](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05。 Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06。 Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07。優先度キュー](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08。 Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09。平衡検索ツリー](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10。 BSTの幾何学的応用](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11。ハッシュテーブル](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) + - [ ] [01.Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [ ] [02.アルゴリズムの分析](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) + - [ ] [03.スタックとキュー](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) + - [ ] [04.初級ソート](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) + - [ ] [05. マージソート](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [06. クイックソート](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [07.優先度つきキュー](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) + - [ ] [08. 基本記号表](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) + - [ ] [09. 平衡探索木](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) + - [ ] [10. BSTの幾何学的応用](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) + - [ ] [11.ハッシュテーブル](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) - [ ] [Sedgewick Videos - アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01。間違ったグラフ](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02。 (Directed Graphs)](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03。最小スパニングツリー](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04。最短経路](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05。最大フロー](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06。基数ソート](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07。試してください](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08。サブストリング検索](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09。正規表現](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10。データ圧縮](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11。減額](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12。リニアプログラミング](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13。難易度](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) + - [ ] [01.無向グラフ](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) + - [ ] [02. 有向グラフ](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) + - [ ] [03.最小スパニング木](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) + - [ ] [04.最短経路](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) + - [ ] [05.最大フロー](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) + - [ ] [06.基数ソート](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [07.トライ木](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [08.部分文字列検索](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [09.正規表現](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) + - [ ] [10.データ圧縮](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) + - [ ] [11.リダクション](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) + - [ ] [12.線形プログラミング](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) + - [ ] [13.難易度](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- ##コーディングの質問練習 -上のすべてのコンピュータ科学のトピックを知ったので、コーディングの問題に答える練習をしましょう。 +上のすべてのコンピュータサイエンスのトピックを知ったので、コーディングの問題に答える練習をしましょう。 **コーディング質問の練習は、プログラミング問題への回答を記憶することではありません。** プログラミングの問題を練習する必要がある理由 - 問題の認識、そして適切なデータ構造とアルゴリズムの適合 - 問題のための要件を集める -- インタビューであなたのように問題を話している +- 面接であなたのように問題をあなたの方法で話している - コンピュータではなく、ホワイトボードや紙でのコーディング - ソリューションの時間と空間の複雑さが増す - ソリューションのテスト -インタビューでは、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングからこれを得るでしょう -インタビューの本もありましたが、私はこの優れた発見しました: +面接では、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングの面接の本からもこれを手に入れるでしょうが、私はこの優れた発見しました: [アルゴリズム設計キャンバス](http://www.hiredintech.com/algorithm-design/) 自宅にホワイトボードはありませんか?それは理にかなっている。私は変わった人で、大きなホワイトボードを持っています。ホワイトボードの代わりに、 -アートストアからの大きな描画パッド。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。 +アートストアから大きなドローイングパッドを拾い上げます。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。 私はスケールの写真にペンを追加しました。ペンを使うと、あなたは消すことができます。すぐに厄介になる。 ![私のソファホワイトボード](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) @@ -1376,15 +1383,15 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 補足: - [Topcodersの数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [動的プログラミング - 初心者から上級者へ](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MITインタビュー資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [特定の言語をより良くするための練習](http://exercism.io/languages) +- [動的プログラミング - 初心者から上級者まで](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT面接資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [特定の言語でより良くなるための練習](http://exercism.io/languages) **プログラミングの問題を読んでやる(この順番で):** -- [ ] [プログラミングインタビュー公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [プログラミング面接公開:あなたが次の仕事に着任する秘訣、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - C、C ++、Javaの回答 -- [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) +- [ ] [コーディング面接をクラッキング、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - Javaでの回答 [上記のブックリスト](#ブックリスト)を参照してください @@ -1394,10 +1401,10 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 あなたの脳を学んだら、脳を働かせてください。 できるだけ多く、毎日コーディングの課題に取り組んでください。 -- [ ] [解決方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [Topcoder Problem Statementを解読する方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [ ] [解決策を見つける方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) +- [ ] [Topcoderの問題を解読する方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -コーディングインタビュー質問ビデオ: +コーディング面接質問ビデオ: - [IDeserve(88ビデオ)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [Tushar Roy(5プレイリスト)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) @@ -1415,27 +1422,28 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [Sphere(Sphere)](http://www.spoj.com/) チャレンジレポ: -- [Pythonの対話型コーディングインタビューの課題](https://github.com/donnemartin/interactive-coding-challenges) +- [Pythonでインタラクティブなコーディング面接の課題](https://github.com/donnemartin/interactive-coding-challenges) -モックインタビュー: -- [Gainlo.co:大企業のモックインタビュアー](http://www.gainlo.co/) -- [Pramp:仲間との懇談会](https://www.pramp.com/) -- [Refdash:Mock interviews](https://refdash.com/) +疑似面接: +- [Gainlo.co:大企業の疑似面接官](http://www.gainlo.co/) +- [Pramp:仲間との面接](https://www.pramp.com/) +- [Refdash:疑似面接](https://refdash.com/) -##あなたが面接に近づいたら +##面接に近づいたら -- [ ] クラッキングコーディングインタビューセット2(ビデオ): - - [コードインタビューをクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [コードインタビューをクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) +- [ ] クラッキングコーディング面接セット2(ビデオ): + - [コード面接をクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [コード面接をクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) ## あなたの履歴書 -- クラッキングでの準備項目の再開を参照してください。コーディングインタビューとプログラミングインタビューの公開 +- クラッキングでの準備項目の再開を参照してください。コーディング面接とプログラミング面接の公開 -##インタビューが来る時を考えている +##面接が来たときに考えてください -あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。それぞれ2-3の答えがあります。 +あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。 +それぞれ2-3の答えがあります。 あなたが達成したことについての物語だけでなく、データを持ってください。 - なぜあなたはこの仕事をしたいです? @@ -1451,13 +1459,13 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [job x / project y]で何を学びましたか? - あなたは[job x / project y]で何を良くしていますか? -##インタビュアーに質問があります +##面接官に質問があります     私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です): -あなたのチームはどれくらいですか? -- あなたの開発サイクルはどのように見えるのですか?あなたは滝/スプリント/アジャイルをしますか? -- 締め切りまでの時間は共通ですか?それとも柔軟性はありますか? +あなたのチームはどれくらいの規模ですか? +- あなたの開発サイクルはどのように見えるのですか?あなたはウォーターフォール/スプリント/アジャイルをしますか? +- 締め切りまでのフローは共通ですか?それとも柔軟性はありますか? - あなたのチームではどのように意思決定が行われますか? - 週に何回会議がありますか? - あなたの仕事環境が集中するのに役立つと思いますか? @@ -1504,7 +1512,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 ##その他の学習 -これらの話題はインタビューでは出てこないかもしれませんが、 +これらの話題は面接では出てこないかもしれませんが、 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 - ###コンパイラ @@ -1581,8 +1589,8 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] Computerphile(ビデオ): - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [上向きの木(ハフマンツリー)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [エキストラビット/ TRITS - ハフマンツリー](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [ ] [上向きの木(ハフマン木)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [ ] [エキストラビット/ TRITS - ハフマン木](https://www.youtube.com/watch?v=DV8efuB3h2g) - [ ] [テキストのエレガントな圧縮(LZ 77方式)](https://www.youtube.com/watch?v=goOa3DGezUA) - [ ] [テキスト圧縮が確率を満たす](https://www.youtube.com/watch?v=cCDCfoHTsaU) - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) @@ -1670,35 +1678,35 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - ###拡張データ構造 - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) -- ###バランスの取れた検索ツリー +- ###バランスの取れた検索木 - 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている): - "バランスの取れた探索木の​​中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。 -        特に興味深い自己組織化データ構造は、スプレイツリーであり、回転を使用します +        特に興味深い自己組織化データ構造は、スプレイ木であり、回転を使用します         アクセスされたキーをルートに移動する」 - Skiena -    これらのうち、私はスプレイツリーを実装することを選択しました。私が読んだことから、あなたは -        あなたのインタビューでバランスの取れた検索ツリー。しかし、私は1つのコーディングへの露出を望んでいた +    これらのうち、私はスプレイ木を実装することを選択しました。私が読んだことから、あなたは +        あなたの面接でバランスの取れた検索木。しかし、私は1つのコーディングへの露出を望んでいた         そしてそれに直面しましょう、スプレーの木はミツバチの膝です。私は赤黒の木のコードをたくさん読んだ。 - - スプレイツリー:挿入、検索、削除機能 + - スプレイ木:挿入、検索、削除機能         あなたが赤/黒の木の実装を終わらせるならば、これらを試してみてください: - 検索と挿入機能、削除をスキップする     B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。 - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - [ ] ** AVLツリー** + - [ ] ** AVL木**         - 実際には:             私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。 -            AVLツリーは、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に +            AVL木は、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に             赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより             一度構築され、再構成なしでロードされる、例えば言語             辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。 - [ ] [MIT AVL Trees / AVL Sort(ビデオ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVLツリー(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVLツリー実装(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [ ] [AVL木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [ ] [AVL木実装(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - [ ] **スプレッドツリー** + - [ ] **スプレッド木**         - 実際には: -            スプレイ・ツリーは、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、 +            スプレイ・木は、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、             データ圧縮、ロープ(長いテキスト文字列に使用される文字列の置換)、Windows NT(仮想メモリ、             ネットワークおよびファイルシステムコードなど) - [ ] [CS 61B:Splay Trees(video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -1713,31 +1721,31 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍             これは、リアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、これらを貴重なものにするだけでなく、             それは最悪の場合の保証を提供する他のデータ構造における貴重なビルディングブロックになります。             例えば、計算幾何学で使用される多くのデータ構造は赤黒の木に基づくことができ、 -            現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒のツリーを使用します。 Javaのバージョン8では、 +            現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒の木を使用します。 Javaのバージョン8では、             Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに -            ハッシュコードでは、赤黒のツリーが使用されます。 +            ハッシュコードでは、赤黒の木が使用されます。 - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(ビデオ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - アルゴリズム - 講義5(ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [バイナリサーチとレッドブラックツリーの紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red -black-trees /) + - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red -black-trees /) -- [ ] **2-3の検索ツリー** +- [ ] **2-3の検索木** - 実際には:             2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。 - - 2-3のツリーは非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 + - 2-3の木は非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 - [ ] [23木の直感と定義(ビデオ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [ ] [23-Treeのバイナリビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [2-3木(学生の暗唱)(ビデオ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] **2-3-4木(別名2-4木)**         - 実際には: -            すべての2-4ツリーには、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除 +            すべての2-4木には、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除             2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を             赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、             2〜4本の木は実用的ではありません**。 - - [ ] [CS 61B講義26:バランスの取れた検索ツリー(ビデオ)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B講義26:バランスの取れた検索木(ビデオ)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - [ ] [ボトムアップ234-Trees(ビデオ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [トップダウン234ツリー(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [ ] [トップダウン234木(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] **N-ary(K-ary、M-ary)木** - 注記:NまたはKは分岐因子(最大分岐)であり、 @@ -1748,16 +1756,16 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] **B-Tree** - 楽しい事実:それは謎ですが、Bはボーイング、バランスの取れた、またはバイエル(共同発明家)のために立つことができます。         - 実際には: -            Bツリーはデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて -            Bツリーはファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします +            B木はデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて +            B木はファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします             特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです             (またはおそらくシリンダーヘッドセクターへの)アドレスである。 - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Bツリー(ビデオ)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [Bツリーの定義と挿入(ビデオ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Bツリー削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B木(ビデオ)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [B木の定義と挿入(ビデオ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B木削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [MIT 6.851 - メモリ階層モデル(ビデオ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - キャッシュに気付かないBツリー、非常に興味深いデータ構造 + - キャッシュに気付かないB木、非常に興味深いデータ構造 - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) @@ -1765,7 +1773,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - 矩形または高次元のオブジェクトの点数を見つけるのに最適 - k最近接の隣人に適している - [ ] [Kd Trees(ビデオ)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-dツリーアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [ ] [kNN K-d木アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ###リストをスキップする - 「これは多少のカルトデータ構造です」 - Skiena @@ -1786,7 +1794,7 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### - - バイナリ検索ツリーとヒープの組み合わせ + - 二分探索木とヒープの組み合わせ - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) @@ -1837,13 +1845,13 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 ##追加科目の詳細     私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした -    それはちょうどあまりにも多くのためです。それは被験者にそれを過ごすのは簡単です。 +    それはちょうどあまりにも多くのためです。それは科目にそれを過ごすのは簡単です。     あなたは今世紀に雇われたかったですね。 - [ ] **連合検索** - [ ] [概要](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [ツリー](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [ ] [木](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - [ ] [ランキングによる連合](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - [ ] [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [ ] [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) @@ -1858,8 +1866,8 @@ Skienaの本(下記の書籍の節を参照)とインタビューの書籍 - [ ] [6.046:ダイナミックプログラミング(学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - [ ] **高度なグラフ処理**(ビデオ) - - [ ] [同期分散アルゴリズム:対称性を破る。ツリーにまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [非同期分散アルゴリズム:ツリーにまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + - [ ] [同期分散アルゴリズム:対称性を破る。木にまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [ ] [非同期分散アルゴリズム:木にまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(ビデオ): - [ ] [MIT 6.042J - 確率の紹介](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) From 0d4769c5e1cda4cf52842b9c206fb5c770d6dddc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Mon, 11 Dec 2017 22:13:19 +0200 Subject: [PATCH 035/857] Update README.md --- README.md | 303 +++++++++++++++++++++++++++--------------------------- 1 file changed, 150 insertions(+), 153 deletions(-) diff --git a/README.md b/README.md index fd1118d761..6acbb16dee 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,22 @@ -# Coding Interview University +# Kodlama Mülakat Üniversitesi -> I originally created this as a short to-do list of study topics for becoming a software engineer, -> but it grew to the large list you see today. After going through this study plan, [I got hired -> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> You probably won't have to study as much as I did. Anyway, everything you need is here. +> Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, +> ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından +> Yazılım Geliştirme Mühendisi olarak işe alındım.](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Muhtemelen yaptığım kadar çok çalışmanıza gerek kalmayacaktır. Her neyse, ihtiyaç duyabileceğiniz her şey burada. > -> The items listed here will prepare you well for in an interview at just about any software company, -> including the giants: Amazon, Facebook, Google or Microsoft. +> Her hangi bir yazılım firmasında bir mülakata gireceğinizde ihtiyaç duyabileceğiniz her konu başlığı burada listelenmiştir, +> Amazon, Facebook, Google ya da Microsoft dahil. > -> *Best of luck to you!* +> *İyi Şanslar!* -Translations: +Çeviriler: - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) -Translations in progress: +Çevirisi Devam Edenler: - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) @@ -36,162 +36,159 @@ Translations in progress: - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) -## What is it? +## Nedir? -This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. +Bir web geliştiricisinden (CS derecesi olmadan, alaylı), büyük bir firmada yazılım mühendisi olmak için çok aylı bir çalışma planıdır. ![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) -This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. +Bu liste, yeni yazılım mühendisleri için veya web ya da yazılım geliştiriciliği alanlarından yazılım mühendisliğine (bilgisayar bilimleri bilgisi gerekli) geçiş için hazırlanmıştır. +Eğer uzun yıllardır tecreübeniz varsa ve yazılım mühendisliği tecrübesi istiyorsanız, daha zor bir röportaj bekleyin. +Eğer uzun yıllardır yazılım/web geliştirme deneyiminiz varsa, Google, Amazon, Facebook ve Microsoft gibi büyük yazılım firmalarının yazılım mühendisliğini yazılım/web geliştirmekten farklı gördüğüne, ve bilgisayar bilimleri bilgisi istediğine dikkat edin. -If you have many years of software/web development experience, note that large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. - -If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). +Eğer güvenlik ya da operasyon mühendisi olmak istiyorsanız, opsiyonel listeden (network, güvenlik) daha fazla çalışın. --- -## Table of Contents - -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort +## İçindekiler + +- [Nedir?](#nedir) +- [Neden kullanılır?](#neden-kullanılır) +- [Nasıl kullanılır?](#nasıl-kullanılır) +- [Yeterince zeki olmadığınızı hissetmeyin](#yeterince-zeki-olmadığınızı-hissetmeyin) +- [Video Kaynakları Hakkında](#video-kaynakları-hakkında) +- [Mülakat Süreci & Genel Mülakat Hazırlığı](#interview-process--general-interview-prep) +- [Mülakat İçin Bir Dil Seçin](#pick-one-language-for-the-interview) +- [Kitap Listesi](#book-list) +- [Başlamadan Önce](#before-you-get-started) +- [Örtülü Olan Ne Görmüyotsun](#what-you-wont-see-covered) +- [Önkoşul Bilgisi](#prerequisite-knowledge) +- [Günlük Plan](#the-daily-plan) +- [Algoritma Karmaşıklığı / Big-O / Asimptotik Analizler](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Veri Yapıları](#data-structures) + - [Diziler](#arrays) + - [Bağlı Listeler](#linked-lists) + - [Yığın](#stack) + - [Kuyruk](#queue) + - [Hash tablosu](#hash-table) +- [Ekstra Bilgi](#more-knowledge) + - [İkili arama](#binary-search) + - [Bitsel operasyonlar](#bitwise-operations) +- [Ağaçlar](#trees) + - [Ağaçlar - Notlar & Arkaplan](#trees---notes--background) + - [İkili Arama Ağaçları: BST'ler](#binary-search-trees-bsts) + - [Yığın / Öncelik Kuyruğu / İkili Yığın](#heap--priority-queue--binary-heap) + - dengeli arama ağaçları (genel konseptler, detaylar hariç) + - dolaşımlar: preorder, inorder, postorder, BFS, DFS +- [Sıralama](#sorting) + - seçimli + - eklemeli + - yığın sıralama + - hızlı sıralama - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) +- [Graflar](#graphs) + - yönlü + - yönsüz + - bitişiklik matrisi + - bitişiklik listesi + - dolaşımlar: BFS, DFS +- [Daha Fazla Bilgi](#even-more-knowledge) + - [Rekürsif](#recursion) + - [Dinamik Programlama](#dynamic-programming) + - [Nesneye-Yönelik Programlama](#object-oriented-programming) + - [Tasarım Desenleri](#design-patterns) + - [Kombinasyonlar (n seçim k) & İhtimaller](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete ve Yaklaşım Algoritmaları](#np-np-complete-and-approximation-algorithms) + - [Önbellekler](#caches) + - [Süreçler ve Threadler](#processes-and-threads) + - [Kağıtlar](#papers) + - [Test Etme](#testing) + - [Planlama](#scheduling) + - [Sistem rutinlerini uygulamak](#implement-system-routines) + - [String arama & manipulasyon](#string-searching--manipulations) + - [Denemeler](#tries) + - [Kayan Noktalı Sayılar](#floating-point-numbers) - [Unicode](#unicode) - [Endianness](#endianness) -- [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) +- [Network Oluşturma](#networking) +- [Sistem Tasarımı, Ölçeklenebilirlik, Veri İşleme](#system-design-scalability-data-handling) (eğer 4+ yıldan fazla deneyiminiz varsa) +- [Final Kontrolü](#final-review) +- [Kodlama Soruları Uygulaması](#coding-question-practice) +- [Kodlama egzersizleri/yarışmalar](#coding-exerciseschallenges) +- [Mülakata yakın olduğunuzda](#once-youre-closer-to-the-interview) +- [Özgeçmişiniz](#your-resume) +- [Mülakat geldiğinde düşünmek](#be-thinking-of-for-when-the-interview-comes) +- [Mülakat yapan kişiye sorularınız olması](#have-questions-for-the-interviewer) +- [İşi Aldığınızda](#once-youve-got-the-job) + +---------------- Bu bölümün altındakiler opsiyoneldir ---------------- + +- [Ek kitaplar](#additional-books) +- [Ek öğrenim](#additional-learning) + - [Derleyiciler](#compilers) + - [Emacs ve vi(m)](#emacs-and-vim) + - [Unix komut satırı araçları](#unix-command-line-tools) + - [Bilgi teorisi](#information-theory-videos) + - [Parite & Hamming Kodu](#parity--hamming-code-videos) + - [Entropi](#entropy) + - [Kriptografi](#cryptography) + - [Sıkıştırma](#compression) + - [Bilgisayar Güvenliği](#computer-security) + - [Çöp toplayıcı](#garbage-collection) + - [Paralel Programlama](#parallel-programming) + - [Mesajlaşma, Serileştirme ve Kuyruklama Sistemleri](#messaging-serialization-and-queueing-systems) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Hızlı Fourier Dönüşümü](#fast-fourier-transform) + - [Bloom Filtresi](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [Konuma Duyarlı Hashleme](#locality-sensitive-hashing) + - [van Emde Boas Ağaçları](#van-emde-boas-trees) + - [Artırılmış Veri Yapıları](#augmented-data-structures) + - [Dengeli arama ağaçları](#balanced-search-trees) + - AVL ağaçları + - Splay ağaçları + - Kırmızı/siyah ağaçları + - 2-3 arama ağaçları + - 2-3-4 Ağaçları (aka 2-4 ağaçları) + - N-ary (K-ary, M-ary) ağaçları + - B-ağaçları + - [k-D Ağaçları](#k-d-trees) + - [Geçiş Listeleri](#skip-lists) + - [Network Akışları](#network-flows) + - [Ayrık Kümeler & Birlik Bulma](#disjoint-sets--union-find) + - [Hızlı İşleme için Matematik](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) + - [Lineer Programlama](#linear-programming-videos) + - [Geometri, Dışbükey](#geometry-convex-hull-videos) + - [Ayrık matematik](#discrete-math) + - [Makine Öğrenmesi](#machine-learning) +- [Bazı Konular Hakkında Ekstra Bilgi](#additional-detail-on-some-subjects) +- [Video Serileri](#video-series) +- [Bilgisayar Bilimleri Kursları](#computer-science-courses) --- -## Why use it? +## Neden Kullanılır? -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +Bu projeye başladığımda, Stack ya da heap farkını bilmiyordum, Big-O notasyonu hakkında bir şey bilmiyordum, ağaçlar hakkında bir şey +bilmiyordum, ya da bir graf nasıl dolaşılır bilmiyordum. Bir sıralama algoritması kodlamış olsaydım, iyi olmayacağını size +söyleyebilirdim. Kullandığım her veri yapısı dilin içinde hazır bulunmaktaydı, kaputun altında nasıl çalıştıklarını bilmiyordum. +Çalışmakta olduğum bir proses, "bellek yetersiz" uyarısı verene kadar herhangi bir bellek yönetimi yapmamıştım ve buna bir geçici çözüm +buldum. Hayatımda bir kaç sefer çok boyutlu dizileri kullandım ve binlerce birleştirici dizileri kullandım, ama hiç bir zaman sıfırdan +bir veri yapısı oluşturmadım. -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +Bu uzun bir plan. Aylar sürebilir. Eğer bunlara aşinaysanız, daha az zamanınızı alacaktır. -## How to use it +## Nasıl Kullanılır -Everything below is an outline, and you should tackle the items in order from top to bottom. +Aşağıdaki her şey bir ana hattır, ve yukarıdan aşağıya doğru öğeleri ele almalısınız. -I'm using Github's special markdown flavor, including tasks lists to check progress. +İlerlemeleri kontrol etmek için listelerde dahil olmak üzere, ben GitHub'ın özel markdown aracını kullanıyorum. -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +**Bu şekilde öğeleri seçmek için yeni bir dal oluşturun, braketler arasına sadece bir x koyun: [x]** - Fork a branch and follow the commands below + Bir dalı çatallayın ve aşağıdaki komutları takip edin `git checkout -b progress` @@ -199,7 +196,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git fetch --all` - Mark all boxes with X after you completed your changes + Değişikliklerinizi tamamladıktan sonra bütün kutuları X ile işaretleyin `git add . ` @@ -209,21 +206,21 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git push --force ` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[GitHub aromalı markdown hakkında daha fazlası](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Don't feel you aren't smart enough -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -- [Believe you can change](http://www.aaronsw.com/weblog/dweck) +## Yeterince zeki olmadığınızı hissetmeyin +- Başarılı yazılım mühendisleri akıllıdır, ancak çoğunluğu yeterince zeki olmadığı için güvensizlik yaşarlar. +- [Dahi programcı hakkında bir efsane](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Yalnız Gitmek Tehlikeli: Teknolojide Görünmez Canavarla Savaşmak](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [Değişebileceğine inan](http://www.aaronsw.com/weblog/dweck) -## About Video Resources +## Video Kaynakları Hakkında -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. +Bazı videolar Coursera, EdX ya da Lynda.com sınıflarına dahil olduğunuzda ulaşılabilmektedir. Bunlar MOOC'lar olarak adlandırılır. +Bazı kurslar aktif olmayabilirler, bir kaç ay beklemeniz gerekebilir, erişiminiz olmaz. Lynda.com kursları ücretsiz değildir. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. + Ücretsiz ve her zaman ulaşılabilir kaynaklar eklerseniz memnun olurum, YouTube videoları gibi çevrimiçi kurs videolarına eşlik edebilirsiniz. + Üniversite derslerini kullanmayı severim. ## Interview Process & General Interview Prep From ea3232cd5a21a0aa002c9b92d745a9e78bcdb9ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Mon, 11 Dec 2017 22:16:15 +0200 Subject: [PATCH 036/857] Rename README.md to README-tr.md Turkish language translation progress --- README.md => README-tr.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.md => README-tr.md (100%) diff --git a/README.md b/README-tr.md similarity index 100% rename from README.md rename to README-tr.md From 41fb7d057e174eff22bc2dd9fc87c8358fb903e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Mon, 11 Dec 2017 22:18:59 +0200 Subject: [PATCH 037/857] Update README-tr.md Language descriptions --- README-tr.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README-tr.md b/README-tr.md index 6acbb16dee..93100ead26 100644 --- a/README-tr.md +++ b/README-tr.md @@ -11,30 +11,30 @@ > *İyi Şanslar!* Çeviriler: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) +- [Çince](translations/README-cn.md) +- [Vietnamca](translations/README-vi.md) +- [İspanyolca](translations/README-es.md) +- [Brezilya Portekizcesi](translations/README-ptbr.md) Çevirisi Devam Edenler: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113) +- [Hintçe](https://github.com/jwasham/coding-interview-university/issues/81) +- [İbranice](https://github.com/jwasham/coding-interview-university/issues/82) +- [Endonezyaca](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arapça](https://github.com/jwasham/coding-interview-university/issues/98) +- [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) +- [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) +- [Rusça](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukraynaca](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korece](https://github.com/jwasham/coding-interview-university/issues/118) +- [Brazilya Portekizcesi](https://github.com/jwasham/coding-interview-university/issues/113) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Lehçe](https://github.com/jwasham/coding-interview-university/issues/122) +- [Urduca](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) +- [İtalyanca](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) +- [Japonca](https://github.com/jwasham/coding-interview-university/issues/257) ## Nedir? From 1b0aac2f086eb2950b322cd2e312715d4d5160a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Tue, 12 Dec 2017 19:49:28 +0200 Subject: [PATCH 038/857] Update README-tr.md Much more translate for Turkish language. --- README-tr.md | 234 +++++++++++++++++++++++++-------------------------- 1 file changed, 116 insertions(+), 118 deletions(-) diff --git a/README-tr.md b/README-tr.md index 93100ead26..05c84dc8b2 100644 --- a/README-tr.md +++ b/README-tr.md @@ -223,75 +223,75 @@ Bazı kurslar aktif olmayabilirler, bir kaç ay beklemeniz gerekebilir, erişimi Üniversite derslerini kullanmayı severim. -## Interview Process & General Interview Prep +## Mülakat Süreci & Genel Mülakat Hazırlığı -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [ABC: Daima Kodlayın](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] Cracking The Coding Interview Set 1: +- [ ] [Programlama Mülakatlarında Efektif Beyaz Tahta Kullanımı](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Teknolojik Yardımı Arındırma](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Kodlama Mülakatını Çatlatmak Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] How to Get a Job at the Big 4: +- [ ] Büyük 4'lü de bir iş nasıl alınır: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] Prep Course: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - - [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. +- [ ] Hazırlık Kursu: + - [ ] [Salınmış Yazılım Mühendisliği Mülakatı (ücretli kurs)](https://www.udemy.com/software-engineer-interview-unleashed): + - Google mülakatçısı tarafından kendinizi yazılım mühendisliği mülakatı için nasıl hazırlayacağınızı öğrenin. + - [ ] [Veri Yapıları, Algoritmalar, ve Mülakatlar için Python! (ücretli kurs)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Python merkezli mülakat hazırlık kursu, veri yapıları, algoritmalar, sahte mülakatlar ve daha fazlasını içerir. -## Pick One Language for the Interview +## Mülakat İçin Bir Dil Seçin -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +Mülakatın kodlama bölümü için rahat hissettiğiniz bir dili kullanabilirsiniz, ancak büyük şirketler için, aşağıdakiler sağlam seçeneklerdir: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Ayrıca bunları da kullanabilirsin, ancak önce okuyun. Bazı uyarılar olabilir: - JavaScript - Ruby -You need to be very comfortable in the language and be knowledgeable. +Bir dilde çok rahat ve bilgili olmanız gerekmektedir. -Read more about choices: +Seçenekler hakkında daha fazlasını okuyun: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -[See language resources here](programming-language-resources.md) +[Dil kaynaklarına buradan göz atın](programming-language-resources.md) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +Aşağıda C, C++ ve Python öğreniminin dahil olduğunu göreceksiniz, çünkü ben öğreniyorum. Alta bakarsanız bir kaç kitap dahil edilmiştir. -## Book List +## Kitap Listesi -This is a shorter list than what I used. This is abbreviated to save you time. +Kendi kullandığım kısa bir liste. Zamandan tasarruf etmenizi sağlayacaktır. -### Interview Prep +### Mülakat Hazırlığı - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C++ and Java - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) + - C++ ve Java dillerinde cevaplar + - Cracking the Coding Interview kitabı için iyi bir ısınma + - çok zor değil, çoğu problem bir mülakatta göreceğinizden daha kolay (benim okuduğum kadarıyla) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - Java dilinde cevaplar -If you have tons of extra time: +Eğer tonlarca ekstra vaktiniz varsa: - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] Elements of Programming Interviews (Java version) - - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [kitap](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -### Computer Architecture +### Bilgisayar Mimarisi -If short on time: +Zamanınız kısaysa: - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: + - Kitap 2004 yılında yayınlanmış, ve bazı şeyler geçerliliğini kaybetmiş, ama bilgisayarı anlamak için muhteşem bir kaynaktır. + - Yazar HLA'yı icat etmiş, bu nedenle HLA ile bahsedilen örneklere biraz kuşkuyla yaklaşın. Yaygın olarak kullanılmaz, ancak assembly'nin nasıl göründüğüne dair iyi içerikler barındırır. + - Bu bölümlerin okunması size güzel bir temel verecektir: - Chapter 2 - Numeric Representation - Chapter 3 - Binary Arithmetic and Bit Operations - Chapter 4 - Floating-Point Representation @@ -302,164 +302,162 @@ If short on time: - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization -If you have more time (I want this book): +Eğer daha fazla vaktiniz varsa (Bu kitabı istiyorum): - [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment + - Daha zengin, daha güncel (2011), ancak daha uzun süreli -### Language Specific +### Spesifik Dil -**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +**Mülakat için bir dil seçmeniz gerekir (alta bakın).** Dile göre önerilerim burada. Her dil için bir kaynağım yok. İlaveler hoş olur. -If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Eğer bunlardan birini okursan, kodlama problemlerini yapmaya başlamanız için gereken tüm veri yapılarına ve algoritma bilgisine sahip olmanız gerekir. +**Bu projedeki bütün video derslerini atlayabilirsiniz**, inceleme yapmak istemiyorsanız. -[Additional language-specific resources here.](programming-language-resources.md) +[Spesifik dillere özgü ek kaynaklar burada.](programming-language-resources.md) ### C++ -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Henüz bu ikisini okumadım, ancak Sedgewick tararından yüksek derecelendirilmiş ve yazılmıştır. O mükemmel biri. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +C++ için daha iyi bir tavsiyeniz varsa, beni bilgilendirin. Kapsamlı bir kaynak arıyorum. ### Java - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): + - kitap içeriğiyle birlikte videolar (ve Sedgewick!): - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) -OR: +YA DA: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. + - Goodrich, Tamassia, Goldwasser tarafından + - UC Berkeley'de bilgisayar bilimleri tanıtımı için isteğe bağlı metin olarak kullanılır + - aşağıda Python versiyonuyla ilgili kitap raporuma bak. Bu kitap aynı konuları kapsıyor. ### Python - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + - Goodrich, Tamassia, Goldwasser tarafından + - Bu kitabı seviyorum. Her şeyi ve daha fazlasını kapsıyor. + - Pythonic kod + - parlayan kitap raporum: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -### Optional Books +### Opsiyonel Kitaplar -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** +**Bazı insanlar bunları önerdi, ancak biraz fazla, uzun yıllar yazılım mühendisliği tecrübeniz yoksa ve daha zorlu bir mülakat bekliyorsanız:** - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - Bir gözden geçirme ve problem tanıma + - Algoritma kataloğu kısmı, bir röportajda bulacağınız zorlukların çok ötesinde bir şey. + - Bu kitap 2 bölüme sahip: + - veri yapıları ve algoritmaları üzerine birinci sınıf ders kitabı + - artılar: + - herhangi bir algoritma kitabı kadar iyi bir inceleme + - endüstri ve akademik alanlardaki sorunları çözme deneyimlerinden güzel hikayeler + - C dilinde kod örnekleri + - eksiler: + - CLRS kadar yoğun ya da geçilemez olabilir, ve bazı durumlarda, CLRS bazı konularda daha iyi bir alternatif olabilir + - bölüm 7, 8, 9'u takip etmek acı verici olabilir, çünkü bazı şeyler iyi açıklanmamış ya da benim sahip olduğumdan daha fazla beyin gerektiriyor olabilir + - beni yanlış anlamayın: Skiena'yı, öğretme stilini ve davranış biçimlerini severim, ancak Stony Brook materyali olmayabilirim. + - algoritma kataloğu: + - bu kitabı satın almak için gerçek neden budur. + - bu kısma geçmek üzereyim. Burası daha sonra güncellenecek. + - Kindle üzerinden kiralanabilir + - Cevaplar: + - [Çözümler](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Çözümler](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - aka CLR, sometimes CLRS, because Stein was late to the game + - **Önemli:** Bu kitabı okumak sadece sınırlı bir değere sahip. Bu kitap, algoritmalar ve veri yapılarının mükemmel bir incelemesidir, ancak size nasıl iyi kod yazılacağını öğretmez. İyi bir çözümü verimli bir şekilde kodlayabilmelisiniz. + - aka CLR, bazen CLRS, çünkü Stein oyuna geç katılmıştı - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. + - İlk birkaç bölüm programlama sorunlarına akıllıca çözümler sunar (bazı çok eski veri tiplerini kullanır) ama + bu sadece bir tanıtım. Code Complete'e benzeyen, ancak daha kısa, program tasarım ve mimarisi üzerine bir rehberdir. - ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - - Would rather spend time on coding problems from another book or online coding problems. - + - Hoş bir kitap, ancak birkaç sayfada sorunlarla uğraştıktan sonra Pascal ile hayal kırıklığına uğradım, do while döngüleri, 1 indexli diziler, ve belirsiz durum sonrası memnuniyet sonuçlarını içerir. + - Başka bir kitaptan veya çevrimiçi kodlama problemleriyle vaktimi harcamayı tercih ederim. -## Before you Get Started +## Başlamadan Önce -This list grew over many months, and yes, it kind of got out of hand. +Bu liste birkaç ayda büyüdü, ve evet, biraz elden çıktı. -Here are some mistakes I made so you'll have a better experience. +Yaptığım hatalar şunlardır; böylece daha iyi bir tecrübeye sahip olacaksınız. -### 1. You Won't Remember it All +### 1. Hepsini Hatırlamayacaksın -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +Saatlerce videolar izledim ve bol bol notlar aldım ancak aylar sonra hatırlamadığım çok şey olduu. 3 günümü notlar karıştırarak ve +flashcardlar yaparak inceleyebildim. -Read please so you won't make my mistakes: +Lütfen okuyun, benim hatalarımı yapmayın: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) -### 2. Use Flashcards +### 2. Flashcard Kullanın -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. +Problemi çözmek için, genel ve kod olmak üzere 2 tür flashcard ekleyebildiğim küçük bir flashcard sitesi hazırladım. +Her kart farklı bir formata sahip. -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +Nerede olursam olayım, telefonumdan ve tabletimden inceleyebilmek için bir mobil web sitesi hazırladım. -Make your own for free: +Kendinizinkini ücretsiz olarak yapın: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [Benim flashcard veritabanım (eski - 1200 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [Benim flashcard veritabanım (yeni - 1800 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. +Kartlarla ilgili biraz aşırıya kaçtım, benim kartlarım Assembly dilinden Python'a, makine öğrenmesinden istatistiğe kadar bir çok şeyi kapsar. Gerekli olandan çok daha fazlasına sahip. -**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. +**Flashcardlarla ilgili not:** İlk defa cevabı bildiğinizi fark ederseniz, bildiğiniz gibi işaretlemeyin. Aynı kartı görmeniz ve +gerçekten bilmeden önce birkaç kez doğru cevaplamanız gerekir. Tekrarlama bu bilgiyi beyninizde derinleştirecektir. -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. +Kullandığım flashcard siteme bir alternatif [Anki](http://ankisrs.net/), bana defalarca tavsiye edildi. Unutulmaması için bir tekrarlama sistemi kullanır. +Kullanıcı dostu, tüm platformlarda kullanılabilir ve bir bulut senkronizasyon sistemi vardır. iOS'da 25$, diğer platformlarda ücretsiz. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +Benim flashcard veritabanımın Anki formatı: https://ankiweb.net/shared/info/25173560 (teşekkürler, [@xiewenya](https://github.com/xiewenya)) -### 3. Review, review, review +### 3. İnceleme, inceleme, inceleme -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +ASCII, OSI stack, Big-O notasyonu, ve daha fazlası üzerinde bir dizi kopya kağıdı tutarım. Boş zamanlarım olduğunda bunlara çalışırım. -Take a break from programming problems for a half hour and go through your flashcards. +Yarım saat için programlama problemlerine ara verin ve flashcard'larınıza geçin. -### 4. Focus +### 4. Odaklanma -There are a lot of distractions that can take up valuable time. Focus and concentration are hard. +Değerli zamanınızı alabilecek bir çok dikkat dağıtıcı şey vardır. Odaklanma ve konsantrasyon zordur. -## What you won't see covered +## Neyi görmeyeceksiniz -These are prevalent technologies but not part of this study plan: +Bunlar yaygın teknolojilerdir ancak bu çalışma planının bir parçası değildir: - SQL - Javascript -- HTML, CSS, and other front-end technologies +- HTML, CSS, ve diğer front-end teknolojileri -## The Daily Plan +## Günlük Plan -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. +Bazı konular bir gün alır, ve bazıları birkaç gün sürer. Bazıları sadece öğrenilir, kullanılmaz. -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: +Her gün aşağıdaki listeden bir konu alıyorum, bu konuyla ilgili videolar izliyorum, ve implemente ediyorum: - C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +- C++ - yerleşik türleri kullanmadan +- C++ - yerleşik türleri kullanarak, bağlı liste için STL'in std::list gibi +- Python - yerleşik türleri kullanarak (Python'la ilgili pratiğe devam etmek için) +- doğru yaptığımdan emin olmak için testler yazarım, bazen sadece assert() deyimleri kullanırım +- Java ya da başka bir şey yapabilirsin, bu sadece benim yaptıklarım. -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). +Bunların hepsine ihtiyacın yok. Sadece [mülakat için bir dil](#pick-one-language-for-the-interview) ihtiyacın var. -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) +Neden bunların hepsinde kod var? +- Ben bıkana kadar, pratik, pratik, pratik, ve sorunsuzca yapılabilir(bazılarının bir çok köşe durumu var ve hatırlanması için defter tutma ayrıntıları var) - Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) - Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) From 3268c4d61c3ad6c3dc92dbae30a39209d5637594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Tue, 12 Dec 2017 20:51:11 +0200 Subject: [PATCH 039/857] More translation for Turkish language. --- README-tr.md | 132 +++++++++++++++++++++++++-------------------------- 1 file changed, 65 insertions(+), 67 deletions(-) diff --git a/README-tr.md b/README-tr.md index 05c84dc8b2..f239a7bed1 100644 --- a/README-tr.md +++ b/README-tr.md @@ -1,4 +1,4 @@ -# Kodlama Mülakat Üniversitesi +# Kodlama Mülakatı Üniversitesi > Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, > ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından @@ -458,35 +458,34 @@ Bunların hepsine ihtiyacın yok. Sadece [mülakat için bir dil](#pick-one-lang Neden bunların hepsinde kod var? - Ben bıkana kadar, pratik, pratik, pratik, ve sorunsuzca yapılabilir(bazılarının bir çok köşe durumu var ve hatırlanması için defter tutma ayrıntıları var) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +- Ham kısıtlamalar ile çalışın (Çöp toplayıcı yardımı olmadan belleği ayırma / boşaltma (Python hariç)) +- Yerleşik türlerden faydalanarak, yerleşik araçları gerçek dünya kullanımında tecrübe edindim. (kendi bağlı liste uygulamamı üründe kullanmayacağım.) -I may not have time to do all of these for every subject, but I'll try. +Her konu için bunları yapmaya vaktim olmayabilir, ama deneyeceğim. -You can see my code here: +Kodumu buradan görebilirsiniz: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -You don't need to memorize the guts of every algorithm. +Her algoritmanın cesaretlerini ezberlemenize gerek yok. -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdileri test edin. Sonra bilgisayar dışında test edin. -## Prerequisite Knowledge +## Önkoşul Bilgisi -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. +- [ ] **C Öğren** + - C her yerde. Kitaplarda, derslerde ve videolarda örnekler göreceksin, çalışırken *her yerde*. - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) + - Bu kısa bir kitap,C dili üzerinde büyük bir ipucu verir, ve biraz pratik yaparsanız hızlı bir şekilde yetkinleşebilirsiniz. C'yi anlarsanız programların ve hafızaların nasıl çalıştığını anlarsınız. + - [sorulara cevap verin](https://github.com/lekkas/c-algorithms) -- [ ] **How computers process a program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +- [ ] **Bilgisayarlar programları nasıl işlerler:** + - [ ] [CPU programı nasıl yürütür (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Makine Kodu Talimatları (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) -## Algorithmic complexity / Big-O / Asymptotic analysis -- nothing to implement +## Algoritma karmaşıklığı / Big-O / Asimptotik analiz +- uygulanacak bir şey değil - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -506,64 +505,63 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Cheat sheet](http://bigocheatsheet.com/) - If some of the lectures are too mathy, you can jump down to the bottom and - watch the discrete mathematics videos to get the background knowledge. - -## Data Structures - -- ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) - - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold + Bazı dersler çok matematik içeriyorsa, aşağıya atlayıp ayrık matematik videolarını izleyerek arkaplan bilgisi edilebilirsiniz. + +## Veri Yapıları + +- ### Diziler + - Otomatik olarak yeniden boyutlandırılan bir vektör uygulayın. + - [ ] Tanım: + - [Diziler (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Lineer ve Çok Boyutlu Diziler (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basit Diziler (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) + - [Çok Boyutlu (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) + - [Dinamik Diziler (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Pürüzlü Diziler (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Pürüzlü Diziler (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) + - [Dizileri yeniden boyutlandırma (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) + - [ ] Vektör uygulayın (otomatik yeniden boyutlandırmaya sahip değiştirilebilir dizi): + - [ ] Dizileri ve işaretçileri kullanarak kodlama pratiği yapın, ve indexleme kullanmak yerine işaretçi matematiği kullanarak bir indexe atlayın. + - [ ] ayrılmış belleğe sahip yeni ham veri dizisi + - kaputun altında int dizini kullanabilir, özelliklerini kullanamazsınız. + - 16 ile başlayın, başlangıç sayısı daha büyükse, 2'nin katlarını kullanın - 16, 32, 64, 128 + - [ ] size() - öğe sayısı + - [ ] capacity() - tutabileceği öğe sayısı - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] at(index) - verilen indekse ait öğeyi döndürür, eğer o sınırlarda indeks yoksa patlar. - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - -- ### Linked Lists - - [ ] Description: + - [ ] insert(index, item) - indekse öğe ekler, bu dizinin değerini ve arkasındaki öğeleri sağa kaydırır. + - [ ] prepend(item) - indeks 0'dan yukarıya eklemek için kullanılır + - [ ] pop() - en sondakini kaldırır, geri döndürür + - [ ] delete(index) - verilen indeksteki öğeyi siler, arkadaki öğeleri sola kaydırır. + - [ ] remove(item) - öğeyi arar ve onu tutan indeksi kaldırır (birden çok indekste olsa bile) + - [ ] find(item) - öğeyi arar ve öğeye sahip ilk indeksi döndürür, bulamazsa -1 döndürür + - [ ] resize(new_capacity) // özel fonksiyon + - kapasiteye erişince, boyutu iki katına çıkarın + - bir öğeyi çıkardığınızda, boyut 1/4 kapasiteye sahipse, yarısına yeniden boyutlandırın + - [ ] Zaman + - O(1) sona ekleme/silmede (daha fazla yer ayırmak için amortize edilir), index, ya da güncelleme + - O(n) başka yere ekleme/silmede + - [ ] Alan + - bellekte bitişiklik, performans artışına yardımcı olur + - gereken alan = (dizi kapasitesi, ki >= n) * öğe boyutu, 2n için, yine O(n) + +- ### Bağlı Listeler + - [ ] Tanım: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. - - [ ] Linked List vs Arrays: + - tüm video değil, Node yapısı ve bellek ayırma için olan bölümler. + - [ ] Bağlı Listeler vs Diziler: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [ ] [neden bağlı listelerden kaçınmalısınız (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Yakaladım: Pointer için pointer bilgisine ihtiyacınız var: + (bir pointer'ı bir fonksiyona yolladığınızda, bu pointer'ın işaret ettiği adresi değiştirebilir.) + Bu sayfa ptr ile ptr arasında bir kavrayış elde etmek içindir. Bu listeyi yukarıdan aşağıya geçiş tarzını tavsiye etmiyorum. Okunabilirlik ve sürdürülebilirlik, zekice olması nedeniyle acı çekici oluyor. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): + - [ ] uygula (Kuyruk pointer ile yaptım & onsuz yaptım): - [ ] size() - returns number of data elements in list - [ ] empty() - bool returns true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) From c0667c22681f88c2cc0989ef0fcd7421e2a9d630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Thu, 14 Dec 2017 12:27:16 +0200 Subject: [PATCH 040/857] Update README-tr.md --- README-tr.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README-tr.md b/README-tr.md index f239a7bed1..7279723bbf 100644 --- a/README-tr.md +++ b/README-tr.md @@ -562,32 +562,32 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil Bu sayfa ptr ile ptr arasında bir kavrayış elde etmek içindir. Bu listeyi yukarıdan aşağıya geçiş tarzını tavsiye etmiyorum. Okunabilirlik ve sürdürülebilirlik, zekice olması nedeniyle acı çekici oluyor. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] uygula (Kuyruk pointer ile yaptım & onsuz yaptım): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement - -- ### Stack + - [ ] size() - listedeki veri elementlerinin sayısını geri döndürür + - [ ] empty() - liste boşsa true döndürür + - [ ] value_at(index) - indexteki öğenin içeriğini döndürür (0'dan başlar) + - [ ] push_front(value) - listenin başına bir öğe ekler + - [ ] pop_front() - liste başındaki öğeyi kaldırıp return eder + - [ ] push_back(value) - listenin sonuna öğe ekler + - [ ] pop_back() - listenin sonundaki öğeyi kaldırır ve içeriğini return eder + - [ ] front() - ilk öğenin içeriğini verir + - [ ] back() - son öğenin içeriğini verir + - [ ] insert(index, value) - indexe yeni öğe ekler, geçerli öğenin indexi, yeni eklenen indexi gösterir + - [ ] erase(index) - verilen indexteki düğümü siler + - [ ] value_n_from_end(n) - listenin sonundan başlayarak n. pozisyondaki öğenin içeriğini verir + - [ ] reverse() - listeyi ters çevirir + - [ ] remove_value(value) - bu değerdeki ilk bulunan içeriği kaldırır + - [ ] Çift Bağlı Liste + - [Tanım (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - Uygulamaya gerek yok + +- ### Yığın - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] Uygulamayın. Diziyle gerçekleştirmek önemsiz. -- ### Queue +- ### Kuyruk - [ ] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Kuyruk (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) - [ ] Implement using linked-list, with tail pointer: From 5d18da9dd022772f3acbfb1a2a1e2a3133261ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Thu, 14 Dec 2017 20:24:10 +0200 Subject: [PATCH 041/857] more translation for Turkish release --- README-tr.md | 128 +++++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/README-tr.md b/README-tr.md index 7f9d1bec88..8dd906192b 100644 --- a/README-tr.md +++ b/README-tr.md @@ -590,77 +590,77 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] [Kuyruk (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) + - [ ] Bağlı listeyle birlikte kuyruk işaretçisi kullanarak uygulayın: + - enqueue(value) - kuyruktaki pozisyona değer ekler + - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır (ön) - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element + - [ ] Sabit boyutlu dizi kullanarak uygulayın: + - enqueue(value) - müsait saklama alanının sonuna öğe ekler + - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır - empty() - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) - -- ### Hash table - - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] Maliyet: + - bağlı liste kullanılarak yapılan kötü bir uygulamada enqueue ve dequeue işlemleri O(n) zaman alır + çünkü son öğenin devamına ihtiyacınız var, bu durum da her dizinin dolanmasına neden olur. + - enqueue: O(1) (amorti, bağlı liste ve dizi [sondalama]) + - dequeue: O(1) (bağlı liste ve dizi) + - empty: O(1) (bağlı liste ve dizi) + +- ### Hash tablosu + - [ ] Videolar: + - [ ] [Zincirleme ile Hashing (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Tablo Katlama, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Açık Adresleme, Kriptografik Hashleme (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [(İleri Seviye) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(İleri Seviye) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) - - [ ] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] Online Kurslar: + - [ ] [Hash Fonksiyonlarını Anlama (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [Hash Tablolarını Kullanma (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: + - [ ] [Veri Yapıları (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Telefon Rehberi Problemi (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] dağıtık hash tabloları: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - [ ] Doğrusal sondalama (problama) kullanarak dizi ile uygulayın: + - hash(k, m) - m has tablosunun büyüklüğü + - add(key, value) - eğer key varsa, değerini güncelle - exists(key) - get(key) - remove(key) -## More Knowledge +## Daha Fazla Bilgi -- ### Binary search +- ### İkili arama (Binary search) - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] Uygulama: + - binary search (sıralanmış tam sayı dizisine) + - binary search (rekürsif kullanarak) + +- ### Bitsel işlemler + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 2'nin üslerinden bir çoğunu bilmelisin (2^1 to 2^16 and 2^32) + - [ ] Bunlarla bitleri manipüle etmeyi iyi anlayın: &, |, ^, ~, >>, << + - [ ] [kelimeler](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] İyi başlangıç: + [Bit Manipülasyonu (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programlama Uygulaması 2-10: Bitsel Operatörler (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipülasyonu](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitsel Operasyon](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits + - [ ] 2 ve 1'e tümleyenler + - [Binary: Artılar & Eksiler (Neden 2'ye Tümleyen Kullanırız) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1'e Tümleyen](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2'ye tümleyen](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] set bitlerinin sayımı - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) @@ -671,33 +671,33 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] absolute value: - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) -## Trees +## Ağaçlar -- ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction +- ### Ağaçlar - Notlar & Arkaplan + - [ ] [Series: Çekirdek Ağaçlar (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Ağaçlar (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basit ağaç yapımı - traversal - - manipulation algorithms + - manipülasyon algoritmaları - BFS (breadth-first search) - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) + zaman karmaşıklığı: O(n) + alan karmaşıklığı: best: O(1), worst: O(n/2)=O(n) - DFS (depth-first search) - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) + zaman karmaşıklığı: O(n) + alan karmaşıklığı: + en iyi: O(log n) - ort. ağaç yüksekliği + en kötü: O(n) - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) +- ### İkili arama ağaçları: BSTs + - [ ] [İkili Arama Ağacı İncelemesi (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Serieler (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - starts with symbol table and goes through BST applications - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) From 2ce8eaf74cd5845054b7547ea0d25b7c11df7ebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Fri, 15 Dec 2017 11:00:40 +0200 Subject: [PATCH 042/857] more translation for Turkish lang. --- README-tr.md | 166 +++++++++++++++++++++++++-------------------------- 1 file changed, 83 insertions(+), 83 deletions(-) diff --git a/README-tr.md b/README-tr.md index 8dd906192b..1732dda35d 100644 --- a/README-tr.md +++ b/README-tr.md @@ -698,7 +698,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - ### İkili arama ağaçları: BSTs - [ ] [İkili Arama Ağacı İncelemesi (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Serieler (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications + - sembol tablosuyla başlar ve BST uygulamalarına geçer - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: @@ -712,23 +712,23 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max + - [ ] Uygulama: + - [ ] insert // değeri ağaca ekler + - [ ] get_node_count // barındırılan düğümlerin sayısını verir + - [ ] print_values // minimumdan maximuma doğru ağaçtaki değerleri yazdırır - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_in_tree // verilen değer ağaçta varsa true döndrür + - [ ] get_height // düğümlerin yüksekliğini döndürür (tek düğümlerin yüksekliği: 1) + - [ ] get_min // ağaçta bulunan minimum değeri verir + - [ ] get_max // ağaçta bulunan maximum değeri verir - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] get_successor // verilen değerden sonra ağaçtaki en yüksek değeri verir, bulunamazsa -1 verir -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) +- ### Heap / Öncelik Kuyruğu / Binary Heap + - ağaç olarak görselleştirilir, ancak depolama ortamında genellikle doğrusaldır (dizi, bağlı liste) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Giriş (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) @@ -741,34 +741,34 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: + - [ ] Max-heap uygulaması: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [ ] sift_up - eklemek için gerekli + - [ ] get_max - maximum öğeyi çıkarmadan return eder + - [ ] get_size() - barındırılan eleman sayısını verir + - [ ] is_empty() - heap eleman içermiyorsa true döndürür + - [ ] extract_max - maximum öğeyi çıkararak döndürür + - [ ] sift_down - extract_max için gerekli + - [ ] remove(i) - indexdeki öğeyi kaldırır + - [ ] heapify - bir dizi öğeden heap oluşturur, heap_sort gerekli + - [ ] heap_sort() - sıralanmamış bir dizi alır ve max-heap kullanarak sıralı diziye dönüştürür + - not: min-heap kullanmak işlemleri kurtarır, ancak gerekli alan 2 katına çıkacaktır (yerinde yapma). + +## Sıralama + +- [ ] Notlar: + - Sıralamaları uygula & en iyi/en kötü durumu bil, her birinin ortalama karmaşıklığı: + - bubble sort olmaz - çok kötü - O(n^2), n <= 16 hariç + - [ ] sıralama algoritmalarında stabilite ("Quicksort stabil mi?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [ ] Hangi algoritmalar bağlı listelerde kullanılabilir? Hangileri dizilerde? Hangileri hepsinde? + - Bağlı listeyi sıralamanızı tavsiye etmem, ancak merge sort bunu yapabilir. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. +- Heap sort için, yukarıdaki Heap veri yapısına bakın. Heap sort güzel, ama stabil değil. - [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) @@ -797,22 +797,22 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) -- [ ] Merge sort code: +- [ ] Merge sort kod: - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: +- [ ] Quick sort kod: - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. +- [ ] Uygulama: + - [ ] Mergesort: O(n log n) ortalama ve en kötü durum + - [ ] Quicksort O(n log n) ortalama durum + - Selection sort ve insertion sort her ikisi de O(n^2) ortalama ve en kötü durum + - Heapsort için, yukarıdaki Heap veri yapısına bakın. -- [ ] Not required, but I recommended them: +- [ ] Gerekli değil, fakat tavsiye ediyorum: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) @@ -826,24 +826,24 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil.. Örnek girdil - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +Özetlemek gerekirse, burada [15 sıralama algoritmasının](https://www.youtube.com/watch?v=kPRA0W1kECg) görsel temsili var. +Bu konuda daha fazla bilgiye ihtiyacınız varsa, "Sıralama" bölümüne bakın [Bazı Konularda Ek Bilgiler](#additional-detail-on-some-subjects) -## Graphs +## Graflar -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabilir, bu nedenle bu bölüm ağaçlar ve sıralama algoritmaları gibi uzundur. -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. +- Notlar: + - Grafı bellekte temsil etmek için 4 temel yol vardır: + - objeler ve işaretçiler + - bitişiklik matrisi + - bitişik liste + - bitişik map + - Her temsilciliği ve artılarını - eksilerini tanıyın. + - BFS ve DFS - hesaplama karmaşıklığını bilin, ödün vermelerini verin, gerçek kod uygulamasını bilin. + - Bir soru sorulduğunda önce graf tabanlı bir çözüm arayın, eğer yoksa devam edin. -- [ ] Skiena Lectures - great intro: +- [ ] Skiena Dersleri - güzel giriş: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) @@ -851,7 +851,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Graphs (review and more): +- [ ] Graflar (inceleme ve fazlası): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -866,41 +866,41 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- Full Coursera Course: +- Full Coursera Kursu: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books - -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: +- Bunları uygulayacağım: + - [ ] DFS ile bitişik liste (rekürsif) + - [ ] DFS ile bitişik liste (yığınla iteratif) + - [ ] DFS ile bitişik matris (rekürsif) + - [ ] DFS ile bitişik matris (yığınla iteratif) + - [ ] BFS ile bitişik liste + - [ ] BFS ile bitişik matris + - [ ] tek kaynak en kısa yol (Dijkstra) + - [ ] minimum yayılan ağaç + - DFS-tabanlı algoritmalar (yukarıdaki Aduni videolarına bakın): + - [ ] döngüye bak (topolojik sıralama için gerekli, başlamadan önce döngüyü konyrol edeceğiz) + - [ ] topolojik sıralama + - [ ] bir graftaki bağlı komponentleri saymak + - [ ] kuvvetli bağlı komponentleri listele + - [ ] iki parçalı graf için kontrol et + +Skienna'nın kitabında (aşağıdaki Kitaplar bölümüne bakın) ve mülakat kitaplarında daha fazla graf pratiği bulabilirsiniz. + +## Daha Fazla Bilgi + +- ### Recursif + - [ ] Stanford dersleri rekürsif & geri yineleme: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? + - onu kullanmak uygun olduğunda + - kuyruk yenilemesi daha iyi değil mi? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) -- ### Dynamic Programming +- ### Dinamik Programlama - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: From 25799abfafaafc0d935341689a57e533ed668619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20Balga?= Date: Sun, 17 Dec 2017 14:13:19 +0300 Subject: [PATCH 043/857] Update README-tr.md --- README-tr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-tr.md b/README-tr.md index 1732dda35d..33f7e998ea 100644 --- a/README-tr.md +++ b/README-tr.md @@ -901,9 +901,9 @@ Skienna'nın kitabında (aşağıdaki Kitaplar bölümüne bakın) ve mülakat k - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### Dinamik Programlama - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: + - Bu konu oldukça zor olabilir, her DP çözülebilir problemin bir rekürsif ilişkisi olarak tanımlanması gerektiği için bununla baş etmek zor olabilir. + - Size tavsiyem ilgili model hakkında sağlam bir anlayış elde edene kadar, DP sorunlarının pek çok örneğini incelemenizi öneririm. + - [ ] Videolar: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) From 41efccb3392aa746a1383d5f0b5fe6bf3b43b9ae Mon Sep 17 00:00:00 2001 From: Evgeniy Ilyushin Date: Wed, 10 Jan 2018 07:56:18 +0300 Subject: [PATCH 044/857] GC, par prog --- translations/README-ru.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f56603d60d..6b6c6a4bcc 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1629,16 +1629,15 @@ You're never really done. - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- ### Garbage collection - - [ ] [Garbage collection (Java); Augmenting data str (video)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### Parallel Programming +- ### Сборка мусора (Garbage collection) + - [ ] [Компиляторы (видео)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) + - [ ] [Сборка мусора в Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ ] [Глубокое погружение в Java: Сборка мусора - это здорово!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [ ] [Глубокое погружение в Python: Сборка мусора в CPython (видео)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Параллельное программирование - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [ ] [Эффективное использование Python для высокопроизводительных параллельных вычислений (видео)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [ ] [Thrift](https://thrift.apache.org/) From 964b27f023e2f0a68c4ba60501952af548b16084 Mon Sep 17 00:00:00 2001 From: Evgeniy Ilyushin Date: Wed, 10 Jan 2018 08:43:46 +0300 Subject: [PATCH 045/857] Trees, BST --- translations/README-ru.md | 98 +++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 6b6c6a4bcc..ac19eb41be 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -739,59 +739,59 @@ Google не возьмёт тебя на работу. - [ ] абсолютные значения: - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms - - BFS (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) +## Деревья + +- ### Деревья - Заметки & Основные понятия + - [ ] [Основы деревьев (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Деревья (видео)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - базовые конструкции деревьев + - обход + - алгоритмы манипуляции + - BFS (breadth-first search - поиск в ширину) + - [MIT (видео)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - порядок уровня (BFS, использование очереди) + сложность по времени выполнения: O(n) + сложность по памяти: лучшая: O(1), худшая: O(n/2)=O(n) + - DFS (depth-first search - поиск в глубину) + - [MIT (видео)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - заметки: + сложность по времени выполнения: O(n) + сложность по памяти: + лучшая: O(log n) - средняя высота дерева + худшая: O(n) + - in-order (DFS: левый, вершина, правый) + - post-order (DFS: левый, правый, вершина) + - pre-order (DFS: вершина, левый, правый) + +- ### Бинарное дерево поиска(Binary search trees): BSTs + - [ ] [Обзор бинарного дерева поиска (видео)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Лекции (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - начинается с таблицы символов и заканчивая BST приложениями + - [ ] [Введение (видео)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (видео)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max + - [ ] [Бинарное дерево поиска - реализация на C/C++ (видео)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST реализация - аллокация памяти в стеке и куче (видео)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Поиск минимального и максимального элемента в BST (видео)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Нахождение высоты BST (видео)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Обход BST - breadth-first и depth-first стратегии (видео)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Бинарное дерево: обход по уровням (видео)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Обход бинарного дерева: Pre-order, In-order, Post-order (видео)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Проверка - бинарное дерево BST или нет (видео)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Удаление узов в BST (видео)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [In-order аналог в BST (видео)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Реализация: + - [ ] insert // вставка значения в дерево + - [ ] get_node_count // получение количества хранящихся значений + - [ ] print_values // вывод значений, начиная с min к max - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_in_tree // возвращает если переданное значение есть в дереве + - [ ] get_height // возвращает высоту дерева в количестве узлов (высота одного узла 1) + - [ ] get_min // возвращает минимальное значение хранящиеся в узлах дерева + - [ ] get_max // возвращает максимальное значение хранящиеся в узлах дерева - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] get_successor // возвращает следующее максимальное значение в дереве после переданного, -1 если none - ### Heap / Priority Queue / Binary Heap - visualized as a tree, but is usually linear in storage (array, linked list) From 4c265461bb557ccd81b375fd4488ecd6c7d4ccb1 Mon Sep 17 00:00:00 2001 From: Evgeniy Ilyushin Date: Wed, 10 Jan 2018 09:05:19 +0300 Subject: [PATCH 046/857] Heap --- translations/README-ru.md | 54 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index ac19eb41be..2f8e3e8774 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -793,34 +793,34 @@ Google не возьмёт тебя на работу. - [ ] delete_value - [ ] get_successor // возвращает следующее максимальное значение в дереве после переданного, -1 если none -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: +- ### Куча / Приоритетная очередь / Бинарная куча + - визуализируется как дерево, но обычно храниться в линейных структурах данных (массив, связанные список) + - [ ] [Куча](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Введение (видео)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Наивная реализация (видео)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Бинарные деревья (видео)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Замечания к высоте дерева (видео)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Базовые операции (видео)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Полные двоичные деревья (видео)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Псевдокоде (видео)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Пирамидальная сортировка - начальные шаги (видео)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Пирамидальная сортировка (видео)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Построение кучи (видео)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Кучи и пирамидальная сортировка (видео)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Лекция 24: Приоритетные очереди (видео)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Построение кучи за линейное время (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Реализация max-heap: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] sift_up - необходима для вставки + - [ ] get_max - возвращает максимальный элемент, не удаляя его + - [ ] get_size() - возвращает количество хранящихся элементов + - [ ] is_empty() - возвращает true если куча пустая + - [ ] extract_max - возвращает максимальный элемент, удаляя его + - [ ] sift_down - необходима для extract_max + - [ ] remove(i) - удаляет элемент по индексу x + - [ ] heapify - создает кучу из элементов массива, необходима для heap_sort + - [ ] heap_sort() - берет не отсортированный массив и делает его отсортированным, не используя дополнительной памяти, кроме занимаемой самим массивом используя max heap + - важно: можно использовать min heap, но тогда понадобиться доболнительная память. ## Sorting From 95114a3a20fd619b7bf6dbbaa070841b3861dd28 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Wed, 10 Jan 2018 12:43:57 -0800 Subject: [PATCH 047/857] Final review, coding questions practice initial --- translations/README-ru.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f56603d60d..3feb598e0b 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1290,15 +1290,15 @@ If you need more detail on this subject, see "Sorting" section in [Additional De --- -## Final Review +## Финальный обзор - This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + В этом разделе вы найдете короткие видео, которые вы можете посмотреть достаточно быстро чтобы пересмотреть наиболее важные моменты. This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. + Полезно освежать свои знания чаще. It's nice if you want a refresher often. - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (18 видео): + - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) @@ -1328,19 +1328,19 @@ If you need more detail on this subject, see "Sorting" section in [Additional De --- -## Coding Question Practice +## Практика: задачи по программированию -Now that you know all the computer science topics above, it's time to practice answering coding problems. +Теперь, когда вы узнали все вышерассмотренные темы по компютерным наукам, настало время попрактиковаться в решении задач по программированию. -**Coding question practice is not about memorizing answers to programming problems.** +**Решение задач по программированию - это не запоминание решений.** -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for 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: From e3270659e7dc94fba9b2b2781b74cca7accb206f Mon Sep 17 00:00:00 2001 From: Evgeniy Ilyushin Date: Thu, 11 Jan 2018 11:09:25 +0300 Subject: [PATCH 048/857] Sorting --- translations/README-ru.md | 142 +++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 2f8e3e8774..517afa4c0f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -822,79 +822,79 @@ Google не возьмёт тебя на работу. - [ ] heap_sort() - берет не отсортированный массив и делает его отсортированным, не используя дополнительной памяти, кроме занимаемой самим массивом используя max heap - важно: можно использовать min heap, но тогда понадобиться доболнительная память. -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. - -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) +## Сортировка + +- [ ] Заметки: + - Реализуй сортировки и помни про лучшую/худую, среднюю сложность для каждой: + - не пузырьковая сортировка - она медленная - O(n^2), заисключением n <= 16 + - [ ] устоичивость в алгоритмах сортировки ("Быстрая сортировка устойчива?") + - [Устоичивость алгоритма сортировки](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Устоичивость в алгоритмах сортировки](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Устоичивость в алгоритмах сортировки](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Алгоритмы сортировки - Устоичивость](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Какие алгоритмы можно применять для связанного списка? Для массива? А какие для обоих структур данных? + - Я не рекомендовал бы сортировать связанный список, но если нужно то сортировка слиянием подходит для этого. + - [Сортировка слиянием для связанного списка](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Для пирамидальной сортировки, см. структуру данных "Куча" выше. Пирамидальная сортировка эффективна, но не устойчива. + +- [ ] [Седжвик (Sedgewick) - Сортировка слиянием (5 видео)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [1. Сортировка слиянием](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) + - [ ] [2. Сортировка слиянием наизнанку](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) + - [ ] [3. Сложность сортировки](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [4. Компараторы](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [5. Устойчивость](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + +- [ ] [Седжвик (Sedgewick) - Быстрая сортировка (4 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [1. Быстрая сортировка](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [2. Выбор](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [3. Дублирование ключей](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [4. Системные сортировки](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. - -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [ ] [CS 61B Лекция 29: Сортировка I (видео)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) + - [ ] [CS 61B Лекция 30: Сортировка II (видео)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) + - [ ] [CS 61B Лекция 32: Сортировка III (видео)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Лекция 33: Сортировка V (видео)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + +- [ ] [Пузырькова сортировка (видео)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Анализ пузырьковой сортировки (видео)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Сортировка вставками, Сортировка слиянием (видео)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Сортировка вставками (видео)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Сортировка слиянием (видео)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Быстрая сортировка (видео)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Сортировка выбором (видео)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Код сортировки слиянием: + - [ ] [Использование выходного массива (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Использование выходного массива (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [На одном массиве (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Код быстрой сортировки: + - [ ] [Реализация (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Реализация (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Реализация (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Реализация: + - [ ] Сортировка слиянием: O(n log n) средний и худший случаи + - [ ] Быстрая сортировка O(n log n) средний случай + - Сортировка выбором и сортировка вставками обе имеют среднюю и худшую сложность O(n^2) + - Для пирамидальной сортировки, смотри структуру данных "Куча" выше. + +- [ ] Не обязательно, но я рекомендую: + - [ ] [Седжвик (Sedgewick) - Поразрядная сортировка (6 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [1. Строки в Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) + - [ ] [2. Ключевые индексные расчеты](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) + - [ ] [3. Наименьший значащий разряд первой строки поразрядной сортировки](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) + - [ ] [4. Наибольший значащий разряд первой строки поразрядной сортировки](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [5. 3 способа поразрядной сортировки](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [6. Суффиксные массивы](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) + - [ ] [Поразрядная сортировка](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Поразрядная сортировка (видео)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Поразрядная сортировка, Сортировка подсчётом (линейные временные ограничения) (видео)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Рандомизация: Перемножение матриц, Быстрая сортировка, Алгоритм Фрейвальда (видео)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Сортировка за линейное время (видео)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Если вам необходимо больше информации, смотрите секцию "Сортировка" в [Дополнительные детали о некоторых разделах](#additional-detail-on-some-subjects) ## Графы Графы могут быть использованы для представления многих задач в области CS, поэтому раздел включает в себя такие темы как деревья и сортировку. From 0c2e55877d996cb8595632af1a1e8eb7d8e71ce6 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Thu, 11 Jan 2018 15:37:31 -0800 Subject: [PATCH 049/857] Update README-ru.md Work in progress... --- translations/README-ru.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 3feb598e0b..e4233ad152 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1290,7 +1290,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De --- -## Финальный обзор +## Заключительный обзор В этом разделе вы найдете короткие видео, которые вы можете посмотреть достаточно быстро чтобы пересмотреть наиболее важные моменты. This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. Полезно освежать свои знания чаще. It's nice if you want a refresher often. @@ -1342,13 +1342,13 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - умение оценивать сложность вашего решения по расходу времени и памяти - тестирование решений -There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming +Вот пример отличного введения в методичное, общительное решение задач на интервю. Вы так же найдете это в книгах по интервью для программистов, но мне кажется это изумительным: 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/) [My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, pick up a +У вас нет доски дома? Логично. Я поехавший и у меня есть большая доска дома. Но вместо доски можно использователь No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. @@ -1392,20 +1392,20 @@ Challenge sites: Maybe: - [Mock interviewers from big companies](http://www.gainlo.co/) -## Once you're closer to the interview +## Когда вы уже ближе к интервью Once you're closer to the interview - [ ] Cracking The Coding Interview Set 2 (videos): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) -## Your Resume +## Ваше резюме - [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed -## Be thinking of for when the interview comes +## Подумайте об этом когда подходит время интервью Be thinking of for when the interview comes Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. Have a story, not just data, about something you accomplished. @@ -1423,7 +1423,7 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -## Have questions for the interviewer +## Вопросы для интервьювера Have questions for the interviewer Some of mine (I already may know answer to but want their opinion or team perspective): @@ -1437,13 +1437,13 @@ Have a story, not just data, about something you accomplished. - What do you like about it? - What is the work life like? -## Once You've Got The Job +## Когда вы получили работу Once You've Got The Job -Congratulations! +Поздравляю! -- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +- [10 вещей которые я хотел бы знал в мой первый день в Google10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) -Keep learning. +Продолжайте учиться Keep learning. You're never really done. @@ -1452,6 +1452,9 @@ You're never really done. ***************************************************************************************************** ***************************************************************************************************** + Все что находится ниже - опционально. Это мои рекоммендации а не от Google. + Обучаюсь этому вы узнайте больше о компьютерных науках, и будуте лучше готовы для любой вакансии программиста. + Вы станете более всесторонне-развитым разработчиком. Everything below this point is optional. These are my recommendations, not Google's. By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. From 78edc7cfb5edb38d8245592e56daba016b904577 Mon Sep 17 00:00:00 2001 From: alamart Date: Tue, 13 Feb 2018 01:57:25 +0100 Subject: [PATCH 050/857] French Translation Why & How to use it --- translations/README-fr.md | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 720e7752f2..fb2785a557 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -147,34 +147,23 @@ Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, sui --- -## Why use it? +## Pourquoi l'utiliser? -I'm following this plan to prepare for my Google interview. I've been building the web, building -services, and launching startups since 1997. I have an economics degree, not a CS degree. I've -been very successful in my career, but I want to work at Google. I want to progress into larger systems -and get a real understanding of computer systems, algorithmic efficiency, data structure performance, -low-level languages, and how it all works. And if you don't know any of it, Google won't hire you. +Je suis ce plan pour préparer mon entretien chez Google. J'ai construit le web, construit des services, et lancé des startups depuis 1997. J'ai un diplôme en économie, non pas d'informatique. J'ai eu beaucoup de succès dans ma carrière , mais je veux travailler chez Google. Je veux progresser sur de larges systèmes, et avec une réelle compréhension des systèmes informatiques, de l'efficacité algorithmique, de la performance des structures de données, de langages bas-niveau, et de comment ça marche. Et si vous ne connaissez rien de tout cela, Google ne vous engagera pas. -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +Quand j'ai commencé ce projet, je ne savais pas distinguer une pile d'un tas, ne connaissais rien sur le Grand O, rien sur les arbres, ou comment traverser un graphe. Si je devais coder un algorithme, je peux vous dire que ça n'aurait pas été très bon. Chaque structure de données que j'ai utilisée était construite dans le langage, et je ne savais pas du tout comment elles fonctionnaient sous le capot. Je n'avais jamais eu à gérer de mémoire sauf si un processus que j'exécutais donnais une erreur "Out of memory", et je devais alors trouver une parade. J'ai utilisé quelques tableaux multidimensionnels dans ma vie et des milliers de tableaux associatifs, mais je n'ai jamais créé de structures de données de zéro. -But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me -months. If you are familiar with a lot of this already it will take you a lot less time. +Mais après avoir suivi ce plan d'études, je suis confiant que je serai embauché. C'est un long plan. cela me prendra des mois. Si vous êtes déjà familier avec beaucoup de points, cela vous prendra beaucoup moins de temps. -## How to use it +## Comment s'en servir? -Everything below is an outline, and you should tackle the items in order from top to bottom. +Tout ce qui suit est très important et vous devriez attaquer ces points dans l'ordre de haut en bas. -I'm using Github's special markdown flavor, including tasks lists to check progress. +J'utilise la typologie Markdown de GitHub, incluant les listes de tâches pour suivre les progrès. -- [x] Create a new branch so you can check items like this, just put an x in the brackets: [x] +- [x] Créez une nouvelle branche afin de vérifier les éléments comme ceci, mettez juste un "x" entre crochets : [x] - - Fork a branch and follow the commands below + Effectuez un fork d'une branche et suivez les commandes suivantes `git checkout -b progress` @@ -192,7 +181,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git push --force ` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[Plus sur Markdown à la sauce Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ## Get in a Googley Mood From 41545e6d9f303a4567e21b6f19a89c10c8a16365 Mon Sep 17 00:00:00 2001 From: Julia Date: Mon, 26 Feb 2018 23:47:02 +0000 Subject: [PATCH 051/857] Information Theory --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 517afa4c0f..95dcd44188 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -110,7 +110,7 @@ - [Порядок следования байт](#endianness) - [Emacs и vi(m)](#emacs-and-vim) - [Командная строка Unix](#unix-command-line-tools) - - [Теория информации](#information-theory) + - [Теория информации](#Теория-информации) - [Четность & Код Хемминга](#parity--hamming-code) - [Энтропия](#entropy) - [Криптография](#cryptography) @@ -1560,13 +1560,13 @@ You're never really done. - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Теория информации - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: + - [ ] Подробнее о Марковских Процессах: - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - А также смотрите курс-сериал MIT 6.050J Information and Entropy в самом низу. - ### Parity & Hamming Code (videos) - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) From 310c982e69e9dab9abf55d13edfd43dce56a5e09 Mon Sep 17 00:00:00 2001 From: Julia Date: Mon, 26 Feb 2018 23:50:01 +0000 Subject: [PATCH 052/857] Parity & Hamming Code --- translations/README-ru.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 95dcd44188..e8ef6020b6 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -111,7 +111,7 @@ - [Emacs и vi(m)](#emacs-and-vim) - [Командная строка Unix](#unix-command-line-tools) - [Теория информации](#Теория-информации) - - [Четность & Код Хемминга](#parity--hamming-code) + - [Чётность & Код Хемминга](#Чётность-и-Код-Хемминга) - [Энтропия](#entropy) - [Криптография](#cryptography) - [Сжатие](#compression) @@ -1568,13 +1568,13 @@ You're never really done. - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - А также смотрите курс-сериал MIT 6.050J Information and Entropy в самом низу. -- ### Parity & Hamming Code (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) +- ### Чётность и Код Хемминга + - [ ] [Вступление](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [ ] [Чётность](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - [ ] Код Хемминга: + - [Обнаружение ошибок](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Исправление ошибок](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [ ] [Проверка ошибок](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - also see videos below From 1e7184ca9b04532d813906bc114a8cdfb68d17da Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 00:04:45 +0000 Subject: [PATCH 053/857] Entropy --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index e8ef6020b6..ba22469881 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -112,7 +112,7 @@ - [Командная строка Unix](#unix-command-line-tools) - [Теория информации](#Теория-информации) - [Чётность & Код Хемминга](#Чётность-и-Код-Хемминга) - - [Энтропия](#entropy) + - [Энтропия](#Энтропия) - [Криптография](#cryptography) - [Сжатие](#compression) - [Сети](#networking) (if you have networking experience or want to be a systems engineer, expect questions) @@ -1576,9 +1576,9 @@ You're never really done. - [Исправление ошибок](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [Проверка ошибок](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### Entropy - - also see videos below - - make sure to watch information theory videos first +- ### Энтропия + - Не забудьте сначала посмотреть видео теории информации + - Затем посмотрите следующее видео - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography From e3ca59461f0e4be381f2dd8f15bab61fc1ad1970 Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 00:09:00 +0000 Subject: [PATCH 054/857] Cryptography --- translations/README-ru.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index ba22469881..675ffb7fd4 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -113,7 +113,7 @@ - [Теория информации](#Теория-информации) - [Чётность & Код Хемминга](#Чётность-и-Код-Хемминга) - [Энтропия](#Энтропия) - - [Криптография](#cryptography) + - [Криптография](#Криптография) - [Сжатие](#compression) - [Сети](#networking) (if you have networking experience or want to be a systems engineer, expect questions) - [Компьютерная безопасность](#computer-security) @@ -1581,12 +1581,12 @@ You're never really done. - Затем посмотрите следующее видео - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography - - also see videos below - - make sure to watch information theory videos first +- ### Криптография + - Не забудьте сначала посмотреть видео теории информации + - Затем посмотрите следующее видео - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Криптография: Хеширование](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [ ] [Криптография: Шифрование](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - make sure to watch information theory videos first From f39074cb383e7aa1bcc65600027e298679348bd1 Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 00:23:07 +0000 Subject: [PATCH 055/857] Compression --- translations/README-ru.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 675ffb7fd4..72f3279c02 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -114,7 +114,7 @@ - [Чётность & Код Хемминга](#Чётность-и-Код-Хемминга) - [Энтропия](#Энтропия) - [Криптография](#Криптография) - - [Сжатие](#compression) + - [Сжатие](#Сжатие) - [Сети](#networking) (if you have networking experience or want to be a systems engineer, expect questions) - [Компьютерная безопасность](#computer-security) - [Сборщики мусора](#garbage-collection) @@ -1588,17 +1588,17 @@ You're never really done. - [ ] [Криптография: Хеширование](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [ ] [Криптография: Шифрование](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression - - make sure to watch information theory videos first - - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) +- ### Сжатие + - Не забудьте сначала посмотреть видео теории информации + - [ ] Computerphile (видео на ютубе): + - [ ] [Сжатие](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [ ] [Энтропия в сжатие](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [ ] [Инвертированный деревья (Кодовые деревья Хаффмана)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [ ] [Экстра - Кодовые деревья Хаффмана](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [ ] [Элегантное сжатие текста (LZ 77 Метод)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [ ] [Сжатие текста и Теория Вероятностей](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [ ] [Compressor Head плейлист](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [ ] [Разработчики Google вживую: GZIP не достаточно!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Networking - **if you have networking experience or want to be a systems engineer, expect questions** From 790819c525b3da865be160cbcf2934a85057f773 Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 01:02:49 +0000 Subject: [PATCH 056/857] Fixed typos, punctuation errors, explanations --- translations/README-ru.md | 44 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 72f3279c02..8369bdb5da 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1,17 +1,17 @@ # Google Interview University -Оригинальная версия: [Английский](../README.md) +Оригинальная версия: [Английский](../README.md) ## Для кого это? -Это мой учебный план рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) +Это мой учебный план, рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) и планирующих работать инженерами-программистами (software engineer) в компании Google. ![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) За основу учебного плана я взял список вопросов **Google's coaching notes** и значительно расширил его. Тут вы найдёте -много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка, их могут задавать на -интервью, так же они могут быть полезны в решении повседневных задач. Некоторые пункты я взял из поста Стива Йеги (Steve Yegge) +много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка: их могут задавать на +интервью, a также они могут быть полезны в решении повседневных задач. Некоторые пункты я взял из поста Стива Йеги (Steve Yegge) "[Получить работу в Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)", а некоторые слово в слово соответствуют вопросам, разбираемых Google в их постах о подготовке. @@ -24,8 +24,8 @@ Если вы обладаете многолетним опытом разработки ПО, помните, что Google разделяет понятия инженер-программист и разработчик ПО/веб-разработчик. Первое требует знаний в области CS. -Если вы хотите быть инженерами обеспечивающими надежность ПО или системными инженерами, то уделить внимание вопросом из -опционального списка (разделы сеть, безопасность). +Если вы хотите быть инженерами обеспечивающими надежность ПО или системными инженерами, то уделите внимание вопросам из +опционального списка (разделы Сеть, Безопасность). --- @@ -156,7 +156,7 @@ ## Чем это полезно? Я следую этому плану, готовясь к собеседованию в Google. Я разрабатываю веб-приложения, сервисы и запускаю стартапы с -1997 года. У меня есть степень по экономике, но нет по CS. До сих пор у меня очень успешная карьера, но я хочу работать +1997 года. У меня есть степень по экономике, но нет по CS. На данные момент у меня очень успешная карьера, но я хочу работать в Google. Я хочу работать с большими системами и понять принципы их работы, изучить эффективность алгоритмов и различные структуры данных, узнать, как работают низкоуровневые языки программирования. Если ты не знаешь что-то из перечисленного, Google не возьмёт тебя на работу. @@ -173,11 +173,11 @@ Google не возьмёт тебя на работу. ## Как пользоваться -Ниже описан способ использования, вы должны выпонить пункты в описаном порядке. +Ниже описан способ использования, вы должны выполнить пункты в описанном порядке. -Я использую разметку Github, включая список задач для оценки прогресса. +Я использую разметку Github, включающую список задач для оценки прогресса. -- [x] Создай новую ветку и тогда вы сможете оставлять отметки у элементов списка, просто добавляя x внутрь скобок: [x] +- [x] Создай новую ветку и тогда ты сможешь оставлять отметки у элементов списка, просто добавляя x внутрь скобок: [x] Скопируй репозиторий и выполни команды перечисленные ниже @@ -215,7 +215,7 @@ Google не возьмёт тебя на работу. Моя история: [Почему я готовился в течении 8 месяцев для собеседования в Google](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) -Я еще на пути к цели. Двигаемся вперед: +Я ещё на пути к цели. Двигаемся вперёд: - **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/) - Twitter: [@googleyasheck](https://twitter.com/googleyasheck) @@ -226,7 +226,7 @@ Google не возьмёт тебя на работу. ![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) ## Не переживайте о том, что вы не достаточно умны -- Инженеры в Google умные, но многие из них переживают что недостаточно, хотя там уже работают. +- Успешные инженеры умные, но многие из них переживают, что недостаточно умны. - [Миф о гениальных программистах](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Это опасно, идти в одиночку: Сражаться с невидимыми монстрами в технологиях](https://www.youtube.com/watch?v=1i8ylq4j_EY) @@ -301,12 +301,12 @@ Google не возьмёт тебя на работу. - Java - Python -Так же подойдут: +Также подойдут: - JavaScript - Ruby -Для вас должно быть комфортно писать программы на выбранном языке и вы должны его хорошо знать. +Вы должны хорошо знать выбранный язык и уметь комфортно писать на нём программы. Подробнее о выборе: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ @@ -319,12 +319,12 @@ Google не возьмёт тебя на работу. ## Список книг -Это краткий список, того чем я пользовался. Он сокращен, для того что-бы сэкономить ваше время. +Это краткий список того, чем я пользовался. Он сокращен для того, чтобы сэкономить ваше время. ### Подготовка к собеседованию - [ ] [Собеседование по программированию в подробнастях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - ответы на C++ и Java + - ответы на C++ и Java - рекомендации Google по обучению кандидатов - это отличная разминка перед подробным разбором собеседования по программированию - не так уж и сложно, некоторые задачи проще чем вам кажутся на собеседовании (из того что я прочитал) @@ -338,7 +338,7 @@ Google не возьмёт тебя на работу. - [ ] [Элементы собеседования по программированию](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - весь код написан на C++, полезна если вы планируете использовать C++ на собеседовании - - хорошая книга, описывающая решения общих задач. + - хорошая книга, описывающая решения общих задач ### Архитектура компьютера @@ -405,7 +405,7 @@ Google не возьмёт тебя на работу. ### Опциональные книги -**Некоторые рекомендую эти книги, но я думаю это перебор, если только вы не инженер-программист с большим опытом работы и не ожидаете более сложного собеседования. +**Некоторые рекомендуют эти книги, но я думаю это перебор, если только вы не инженер-программист с большим опытом работы и не ожидаете более сложного собеседования. - [ ] [Руководство по разработке алгоритмов](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - Как обзор и описание проблем @@ -461,7 +461,7 @@ Google не возьмёт тебя на работу. ### 1. Вы не сможете сразу запомнить все Я смотрел часами видео делая заметки, но спустя несколько месяцев многое из этого я не помнил. После чего потратил -3 дня разбираясь в своих заметках и делая карточки-напоминания(flashcards), для того что бы потом можно было повторить пройденный материал. +3 дня разбираясь в своих заметках и делая карточки-напоминания (flashcards) для того, чтобы потом можно было повторить пройденный материал. Прочитайте пожалуйста эту статью, что бы не совершать моих ошибок: @@ -469,7 +469,7 @@ Google не возьмёт тебя на работу. ### 2. Используйте карточки-напоминания -Для решения этой проблемы я сделал не большой сайт, на котором можно добавлять карточки двух типов: общие и с кодом. +Для решения этой проблемы я сделал небольшой сайт, на котором можно добавлять карточки двух типов: общие и с кодом. Каждая карта имеет разный формат. Я сделал мобильную версию сайта и могу читать карточки на мобильном телефоне или планшете. @@ -484,7 +484,7 @@ Google не возьмёт тебя на работу. запомнить материал. В качестве альтернативы вы можете использовать сайт [Anki](http://ankisrs.net/), который мне рекомендовали много раз. Он использует систему повторений для того что бы помочь вам запомнить. -Это ресурс user-friendly, доступен на всех платформах и имеет возможность синхронизации с облаком. На платформе iOS стоит 25$ на других бесплатный. +Это ресурс user-friendly, доступен на всех платформах и имеет возможность синхронизации с облаком. На платформе iOS стоит 25$, на других бесплатный. Моя база данных в формате Anki: https://ankiweb.net/shared/info/25173560 (спасибо [@xiewenya](https://github.com/xiewenya)) @@ -543,7 +543,7 @@ Google не возьмёт тебя на работу. - [ ] **Изучайте C** - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будите учиться. - [ ] [Язык программирования С, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Это не большая книга, но после ее прочтения вы получите необходимые знания по С и если будите практиковать, + - Это небольшая книга, но после ее прочтения вы получите необходимые знания по С и если будите практиковать, то достаточно быстро его освоите. Понимание С поможет вам понять как программы и память работают. - [ответы на вопросы](https://github.com/lekkas/c-algorithms) From 11a4d32f7a8d66d69328f63f098571fc05e322de Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 13:40:54 +0000 Subject: [PATCH 057/857] Networking --- translations/README-ru.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 8369bdb5da..994f01807e 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -115,7 +115,7 @@ - [Энтропия](#Энтропия) - [Криптография](#Криптография) - [Сжатие](#Сжатие) - - [Сети](#networking) (if you have networking experience or want to be a systems engineer, expect questions) + - [Сети](#Сети-и-сетевые-протоколы) - [Компьютерная безопасность](#computer-security) - [Сборщики мусора](#garbage-collection) - [Параллельное программирование](#parallel-programming) @@ -1600,19 +1600,19 @@ You're never really done. - [ ] [Compressor Head плейлист](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [ ] [Разработчики Google вживую: GZIP не достаточно!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Networking - - **if you have networking experience or want to be a systems engineer, expect questions** - - otherwise, this is just good to know +- ### Сети и сетевые протоколы + - **Если у вас уже есть опыт с сетями или вы хотить стать системным инженером, то ждите вопросов на эти темы** + - В противном случае, это все равно полезно знать - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [UDP and TCP: Сравнение транспортных протоколов](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [Объяснение TCP/IP and модели OSI](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Передача пакетов в интернете. Урок про сети и TCP/IP](https://www.youtube.com/watch?v=nomyRJehhnM) - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [Плейлис на ютубе про сети (21 видео)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Подсети без мифов - Часть 5 CIDR](https://www.youtube.com/watch?v=t5xYI0jzOf4) - ### Computer Security - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) From c113e5476887f366aac7d8f2e653f4fdfe548f14 Mon Sep 17 00:00:00 2001 From: Julia Date: Tue, 27 Feb 2018 13:54:49 +0000 Subject: [PATCH 058/857] Computer Security --- translations/README-ru.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 994f01807e..69d92d291a 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -116,8 +116,8 @@ - [Криптография](#Криптография) - [Сжатие](#Сжатие) - [Сети](#Сети-и-сетевые-протоколы) - - [Компьютерная безопасность](#computer-security) - - [Сборщики мусора](#garbage-collection) + - [Компьютерная безопасность](#Компьютерная-безопасность) + - [Сборка мусора](#Сборка-мусора-(Garbage-collection)) - [Параллельное программирование](#parallel-programming) - [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems) - [Быстрое преобразование Фурье](#fast-fourier-transform) @@ -1592,7 +1592,7 @@ You're never really done. - Не забудьте сначала посмотреть видео теории информации - [ ] Computerphile (видео на ютубе): - [ ] [Сжатие](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Энтропия в сжатие](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [ ] [Энтропия в сжатии](https://www.youtube.com/watch?v=M5c_RFKVkko) - [ ] [Инвертированный деревья (Кодовые деревья Хаффмана)](https://www.youtube.com/watch?v=umTbivyJoiI) - [ ] [Экстра - Кодовые деревья Хаффмана](https://www.youtube.com/watch?v=DV8efuB3h2g) - [ ] [Элегантное сжатие текста (LZ 77 Метод)](https://www.youtube.com/watch?v=goOa3DGezUA) @@ -1614,20 +1614,20 @@ You're never really done. - [ ] [Плейлис на ютубе про сети (21 видео)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - [ ] [Подсети без мифов - Часть 5 CIDR](https://www.youtube.com/watch?v=t5xYI0jzOf4) -- ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- ### Компьютерная безопасность + - [MIT (23 видео)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Вступление, Моделирование угроз](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Аттаки для перехвата контроля ](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [ ] [Переполнение буфера: использование и защита](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [ ] [Разделение привилегий](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Возможности](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Машинный код в песочнице](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [ ] [Модель веб-безопасности](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Защита веб-приложений](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Символическое выполнение программ](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Безопасность сети](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Сетевые протоколы](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Атака по сторонним каналам](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Сборка мусора (Garbage collection) - [ ] [Компиляторы (видео)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) From 2ed0a5b8eb8dfce4185af5c32a469a4028e06522 Mon Sep 17 00:00:00 2001 From: Armand Fardeau Date: Tue, 27 Feb 2018 21:11:16 +0100 Subject: [PATCH 059/857] Translate 'don't feel stupid' #Chunk 4 --- translations/README-fr.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 720e7752f2..98d039758b 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1,6 +1,6 @@ # Google Interview University -Translations: +Traductions: - [中文版本](README-cn.md) - [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/google-interview-university/issues/80) - मानक हिन्दी (in progress) [Issue #81](https://github.com/jwasham/google-interview-university/issues/81) @@ -32,7 +32,7 @@ Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, sui - [Se mettre dans l'humeur Googley](#get-in-a-googley-mood) - [J'ai décroché le Job?](#did-i-get-the-job) - [Follow Along with Me](#follow-along-with-me) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [Ne vous sentez pas stupide](#ne-vous-sentez-pas-stupide) - [A propos de Google](#about-google) - [A propos des ressources vidéo](#about-video-resources) - [Déroulement de l'entretien & préparations générales à l'entretien](#interview-process--general-interview-prep) @@ -220,10 +220,10 @@ I'm on the journey, too. Follow along: ![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) -## Don't feel you aren't smart enough -- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +## Ne vous sentez pas stupide +- Les ingénieurs de Google sont intelligents, mais beaucoup ont comme insécurité qu'ils ne sont pas suffisamment intelligents, même s'ils travaillent pour Google. +- [Le mythe du programmeur génie](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [C'est dangereux de rester seul: Combattre les monstres invisibles dans la Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) ## About Google From 001365ea89449685436c4c3a29dfc5ab2fa55f9b Mon Sep 17 00:00:00 2001 From: Armand Fardeau Date: Tue, 27 Feb 2018 21:25:48 +0100 Subject: [PATCH 060/857] Translate 'About Google' #Chunk 4 --- translations/README-fr.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 98d039758b..c9c2a1e612 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -225,22 +225,22 @@ I'm on the journey, too. Follow along: - [Le mythe du programmeur génie](https://www.youtube.com/watch?v=0SARbwvhupQ) - [C'est dangereux de rester seul: Combattre les monstres invisibles dans la Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## About Google - -- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) -- [ ] How Search Works: - - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - - [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) - - [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) -- [ ] Series: - - [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) - - [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) - - [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) - - [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) -- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) -- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) +## À propos de Google + +- [ ] Pour les étudiants - [Carrières Google: Guide de développement technique](https://www.google.com/about/careers/students/guide-to-technical-development.html) +- [ ] Comment marche la recherche: + - [ ] [L'évolution de la recherche (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) + - [ ] [Comment la recherche fonctionne - l'histoire](https://www.google.com/insidesearch/howsearchworks/thestory/) + - [ ] [Comment la recherche fonctionne](https://www.google.com/insidesearch/howsearchworks/) + - [ ] [Comment la recherche fonctionne - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) + - [ ] [Comment Google améliore son algorithme de recherche (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) +- [ ] Séries: + - [ ] [Comment la recherche Google Search fonctionne sur mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) + - [ ] [L'étude secrète de Google pour découvrir nos besoins](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) + - [ ] [La recherche Google Search sera votre prochain cerveau](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) + - [ ] [L'esprit profond de Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) +- [ ] [Livre: Comment Google fonctionne](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) +- [ ] [Annonce faite par Google - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) ## About Video Resources From 7ac3c9b4f877c0203d8b1ce910e2d17c265ea25d Mon Sep 17 00:00:00 2001 From: Armand Fardeau Date: Tue, 27 Feb 2018 21:29:53 +0100 Subject: [PATCH 061/857] Translate 'About Video Resources' #Chunk 4 --- translations/README-fr.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index c9c2a1e612..596a073c7f 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -242,13 +242,13 @@ I'm on the journey, too. Follow along: - [ ] [Livre: Comment Google fonctionne](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) - [ ] [Annonce faite par Google - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) -## About Video Resources +## À propos des ressources vidéos -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. +Certaines vidéos sont disponibles uniquement en s'inscrivant à une classe Coursera, EdX ou Lynda.com. Ce sont des MOOC. +Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mois, donc vous n'y avez pas accès. Les cours sur Lynda.com ne sont pas gratuits. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. + J'apprécierais votre aide pour ajouter des sources publiques gratuites et toujours disponibles, telles que des vidéos YouTube pour accompagner les vidéos de cours en ligne. + J'aime utiliser les cours universitaires. ## Interview Process & General Interview Prep From f78e00b366aa6fa01c0748e47d45ca7537527592 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Thu, 1 Mar 2018 18:58:58 -0800 Subject: [PATCH 062/857] Update README-ru.md --- translations/README-ru.md | 40 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index e4233ad152..619f6cc687 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1405,7 +1405,7 @@ Maybe: - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed -## Подумайте об этом когда подходит время интервью Be thinking of for when the interview comes +## Подумайте об этом когда подходит время интервью Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. Have a story, not just data, about something you accomplished. @@ -1423,42 +1423,38 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -## Вопросы для интервьювера Have questions for the interviewer +## Приготовьте вопросы для интервьювера - Some of mine (I already may know answer to but want their opinion or team perspective): + Вот, некоторые из моих (возможно, я уже знаю ответ, но хочу я услышать мнение интервьювера или точку зрения команды): -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? +- Сколько человек в команде? How large is your team? +- Как выглядит ваш цикл разработки? Работаете ли вы по agile, спринтам или водопад? +- Насколько часто бывают переработки и дедлайны? Или сроки достаточно гибкие? +- Как в вашей команде принимаются решения? +- Сколько встреч вы проводите в неделю? +- Располагает ли ваше рабочее окружение к концентрации? +- Над чем вы работаете? +- Что вам в этом нравится? +- Как в целом протекает работа? -## Когда вы получили работу Once You've Got The Job +## Когда вас приняли на работу Поздравляю! -- [10 вещей которые я хотел бы знал в мой первый день в Google10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +- [10 вещей которые я хотел бы знать в мой первый рабочий день в Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) -Продолжайте учиться Keep learning. +Не прекращайте учиться. -You're never really done. +На самом деле это не конец. --- ***************************************************************************************************** ***************************************************************************************************** - Все что находится ниже - опционально. Это мои рекоммендации а не от Google. - Обучаюсь этому вы узнайте больше о компьютерных науках, и будуте лучше готовы для любой вакансии программиста. + Все что находится ниже этого места - опционально. Это мои рекоммендации, а не от Google. + Изучая все это вы узнаете больше о компьютерных науках, и будуте лучше готовы для любой вакансии программиста. Вы станете более всесторонне-развитым разработчиком. - Everything below this point is optional. These are my recommendations, not Google's. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. - ***************************************************************************************************** ***************************************************************************************************** From 5b4d7a2c10b2bb3e209634910e8da8bd1c3038d2 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Thu, 1 Mar 2018 19:13:05 -0800 Subject: [PATCH 063/857] Update README-ru.md --- translations/README-ru.md | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 619f6cc687..ea56e18082 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -89,8 +89,8 @@ - [Реализация системных вызовов](#implement-system-routines) - [Поиск в строке & манипуляции](#string-searching--manipulations) - [Проектирование систем, Масштабируемость, Обработка данных](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Финальный обзор](#final-review) -- [Практические вопросы по программированию](#coding-question-practice) +- [Заключительный обзор](#final-review) +- [Практика: задачи по программированию](#coding-question-practice) - [Упражнения по программированию](#coding-exerciseschallenges) - [Перед собеседованием](#once-youre-closer-to-the-interview) - [Ваше резюме](#your-resume) @@ -1370,15 +1370,15 @@ Supplemental: See [Book List above](#book-list) -## Coding exercises/challenges +## Упражнения по программированию -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +Как только вы наполнили свою голову знаниями, самое время применить их на практике. +Выполняйте упражнения по программированию каждый день, чем больше тем лучше. -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) +- [ ] [Как найти решение](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -Challenge sites: +Сайты с упражнениями: - [LeetCode](https://leetcode.com/) - [TopCoder](https://www.topcoder.com/) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) @@ -1389,7 +1389,7 @@ Challenge sites: - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) -Maybe: +Возможно: - [Mock interviewers from big companies](http://www.gainlo.co/) ## Когда вы уже ближе к интервью Once you're closer to the interview @@ -1401,27 +1401,27 @@ Maybe: ## Ваше резюме -- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- [10 советов для подготовки (немного) менее ужасного резюме](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) +- Загляните в раздел по подготовке резюме в книге Cracking The Coding Interview и в конце книги Programming Interviews Exposed ## Подумайте об этом когда подходит время интервью -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. +Подумайте как отвечать на приблихительно 20 вопросов, подготовьте 2-3 ответа на каждый вопрос Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Расскажите историю, а не просто сухие данные а чем-то чего вы добились Have a story, not just data, about something you accomplished. -- Why do you want this job? -- What's a tough problem you've solved? +- Почему вы хотите получить эту работу Why do you want this job? +- Какая самая сложная проблема которую вы решили What's a tough problem you've solved? - Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing Google product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? +- Лучгие/худшие решения с которыми вы сталкивались Best/worst designs seen? +- Идеи как улучшить существующий продукт от Google Ideas for improving an existing Google product. +- В чем вы лучше, как часть команды или как иднивидуальный разработчик How do you work best, as an individual and as part of a team? +- Какие из ваших навыков или что из опыта будет наиболее ценным для данной позиции Which of your skills or experiences would be assets in the role and why? +- Что вам больше всего понравилось в работе над проектом Х/в компании Х What did you most enjoy at [job x / project y]? +- Какие самые сложые What was the biggest challenge you faced at [job x / project y]? +- Как самый сложный баг вам приходилось исправлять What was the hardest bug you faced at [job x / project y]? +- Чему вы научились What did you learn at [job x / project y]? +- Чтобы вы могли сделать лучше работая What would you have done better at [job x / project y]? ## Приготовьте вопросы для интервьювера From 75a780745b4a6661b34258e0413981ab5e3e52da Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Fri, 2 Mar 2018 18:08:34 -0800 Subject: [PATCH 064/857] Update README-ru.md --- translations/README-ru.md | 96 +++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 50 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index ea56e18082..0129f725ca 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1292,30 +1292,30 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Заключительный обзор - В этом разделе вы найдете короткие видео, которые вы можете посмотреть достаточно быстро чтобы пересмотреть наиболее важные моменты. This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. - Полезно освежать свои знания чаще. It's nice if you want a refresher often. + В этом разделе вы найдете короткие видео, которые можно посмотреть достаточно быстро чтобы повторить наиболее важные моменты. + Полезно освежать свои знания чаще. -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Серия 2-3 минутных короткие видео по темам (23 видео) + - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Серия коротких 2-5 минутных видео - Michael Sambol (18 видео): - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) +- [ ] [Видео от Сэджвика - Алгоритмы I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) + - [ ] [02. Анализ Алгоритмов](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) + - [ ] [03. Стэки и Очереди](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) + - [ ] [04. Элементарные сортировки](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) + - [ ] [07. Приоритетные очереди](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) + - [ ] [08. Элементарные таблицы символов](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) + - [ ] [09. Сбалансированные деревья поиска](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) + - [ ] [10. Геометрические применениния BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) + - [ ] [11. Хэш таблицы](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) +- [ ] [Видео от Сэджвика - Алгоритмы II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) + - [ ] [01. Ненаправленные графы](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) + - [ ] [02. Направленные графы](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) + - [ ] [04. Кратчайшие пути](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) @@ -1338,28 +1338,25 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - выявление проблем, и умение определять какие структуры данных и алгоритмы походят для их решения - сбор требований для задачи - проговаривание хода решения задачи, так же как вы будете это делать на интервью -- написание кода на доске или на бумаге, не на компьютере +- написание кода на доске или на бумаге, но не на компьютере - умение оценивать сложность вашего решения по расходу времени и памяти - тестирование решений -Вот пример отличного введения в методичное, общительное решение задач на интервю. Вы так же найдете это в книгах по интервью для программистов, но мне кажется это изумительным: 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/) +Вот пример отличного введения в методичное, коммуникативное решение задач на интервью. Вы так же найдете это в книгах по интервью для программистов, но это подход мне кажется выдающимся: +[Схема создания алгоритма](http://www.hiredintech.com/algorithm-design/) [My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) -У вас нет доски дома? Логично. Я поехавший и у меня есть большая доска дома. Но вместо доски можно использователь No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. +У вас нет доски дома? Не удивительно. Я не много неормальный и у меня есть большая доска дома. Но вместо доски можно использователь и планшет для рисования из магазина художественных товаров, и практиковаться сидя на диване. Это моя "диванная доска". На фото я положил ручку чтобы иметь представления о размерах. Если вы будете пользоваться ручкой, постоянно будет возникать желание что-то стереть, решение захламляется достаточно быстро. -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![моя диванная доска](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) -Supplemental: +Дополнительно: -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) +- [Математика для Топ-кодеров](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) +- [Динамическое программирование - От новичка до продвинутого](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [Материалы для интервью от MIT](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Упражнения по улучшению навыков для определенного языка](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** @@ -1368,7 +1365,7 @@ Supplemental: - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - answers in Java -See [Book List above](#book-list) +См. [Список книг ниже](#book-list) ## Упражнения по программированию @@ -1390,9 +1387,9 @@ See [Book List above](#book-list) - [InterviewBit](https://www.interviewbit.com/invite/icjf) Возможно: -- [Mock interviewers from big companies](http://www.gainlo.co/) +- [Тестовые интервьюверы из больших компаний](http://www.gainlo.co/) -## Когда вы уже ближе к интервью Once you're closer to the interview +## Когда вы уже ближе к интервью - [ ] Cracking The Coding Interview Set 2 (videos): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) @@ -1407,27 +1404,27 @@ See [Book List above](#book-list) ## Подумайте об этом когда подходит время интервью -Подумайте как отвечать на приблихительно 20 вопросов, подготовьте 2-3 ответа на каждый вопрос Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Расскажите историю, а не просто сухие данные а чем-то чего вы добились Have a story, not just data, about something you accomplished. - -- Почему вы хотите получить эту работу Why do you want this job? -- Какая самая сложная проблема которую вы решили What's a tough problem you've solved? -- Biggest challenges faced? -- Лучгие/худшие решения с которыми вы сталкивались Best/worst designs seen? -- Идеи как улучшить существующий продукт от Google Ideas for improving an existing Google product. -- В чем вы лучше, как часть команды или как иднивидуальный разработчик How do you work best, as an individual and as part of a team? -- Какие из ваших навыков или что из опыта будет наиболее ценным для данной позиции Which of your skills or experiences would be assets in the role and why? -- Что вам больше всего понравилось в работе над проектом Х/в компании Х What did you most enjoy at [job x / project y]? -- Какие самые сложые What was the biggest challenge you faced at [job x / project y]? -- Как самый сложный баг вам приходилось исправлять What was the hardest bug you faced at [job x / project y]? -- Чему вы научились What did you learn at [job x / project y]? -- Чтобы вы могли сделать лучше работая What would you have done better at [job x / project y]? +Подумайте как отвечать приблизительно на 20 распостраненных вопросов которые задают на интервью, подготовьте 2-3 ответа на каждый из них. +Расскажите историю, а не просто сухие данные о том, чего вы добились. + +- Почему вы хотите получить эту работу? +- Какая самая сложная проблема которую вы решили? +- Самые большие задачи с которыми вам приходилось сталкиваться? +- Лучшие/худшие дизайн решения с которыми вы сталкивались? +- Идеи, как улучшить какой-нибудь существующий продукт от Google. +- Вы более продуктивны как часть команды или как иднивидуальный разработчик? +- Какие из ваших навыков или что из опыта будет наиболее ценным для данной позиции? +- Что вам больше всего понравилось в работе над [проектом Х/в компании Х]? +- Какие самые сложные задачи вы решали в [компании X/проекте Х]? +- С каким самым сложным багом вам приходилось сталкиваться в [компании X/проекте Х]? +- Чему вы научились в [компании X/проекте Х]? +- Что бы вы могли сделать лучше работая в [компании X/проекте Х]? ## Приготовьте вопросы для интервьювера Вот, некоторые из моих (возможно, я уже знаю ответ, но хочу я услышать мнение интервьювера или точку зрения команды): -- Сколько человек в команде? How large is your team? +- Сколько человек в команде? - Как выглядит ваш цикл разработки? Работаете ли вы по agile, спринтам или водопад? - Насколько часто бывают переработки и дедлайны? Или сроки достаточно гибкие? - Как в вашей команде принимаются решения? @@ -2020,4 +2017,3 @@ Sit back and enjoy. "Netflix and skill" :P - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) - From a9e282b79f788da93777659f58104fff064c5f97 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Sat, 3 Mar 2018 23:48:30 -0800 Subject: [PATCH 065/857] Update README-ru.md --- translations/README-ru.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0129f725ca..475f10a71d 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1358,12 +1358,12 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [Материалы для интервью от MIT](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Упражнения по улучшению навыков для определенного языка](http://exercism.io/languages) -**Read and Do Programming Problems (in this order):** +**Прочитайте и выполните упражнения (именно в этом порядке):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java + - решения на C, C++ и Java - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - решения на Java См. [Список книг ниже](#book-list) @@ -1405,13 +1405,13 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Подумайте об этом когда подходит время интервью Подумайте как отвечать приблизительно на 20 распостраненных вопросов которые задают на интервью, подготовьте 2-3 ответа на каждый из них. -Расскажите историю, а не просто сухие данные о том, чего вы добились. +Расскажите историю, а не просто сухой пересказ о том над чем вы работали. - Почему вы хотите получить эту работу? -- Какая самая сложная проблема которую вы решили? -- Самые большие задачи с которыми вам приходилось сталкиваться? +- Какая самая большая проблема которую вам приходилось решать? +- Самые сложные задачи с которыми вам приходилось сталкиваться? - Лучшие/худшие дизайн решения с которыми вы сталкивались? -- Идеи, как улучшить какой-нибудь существующий продукт от Google. +- Идеи как улучшить какой-нибудь существующий продукт от Google. - Вы более продуктивны как часть команды или как иднивидуальный разработчик? - Какие из ваших навыков или что из опыта будет наиболее ценным для данной позиции? - Что вам больше всего понравилось в работе над [проектом Х/в компании Х]? From 0efbdff3b2ecb93573eeda0ec8cc7d0273db5940 Mon Sep 17 00:00:00 2001 From: Julia Date: Thu, 8 Mar 2018 12:54:54 +0000 Subject: [PATCH 066/857] Typos, fixed hyperlinks --- translations/README-ru.md | 55 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 69d92d291a..6336acd9e3 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -37,33 +37,33 @@ - [Получи гугловское настроение](#Получи-гугловское-настроение) - [Получил ли я работу?](#Получил-ли-я-работу) - [Двигайся вместе со мной](#Двигайся-вместе-со-мной) -- [Не переживайте о том, что вы не достаточно умны](#Не-переживай-о-том-что-ты-не-достаточно-умный) +- [Не переживайте о том, что вы недостаточно умны](#Не-переживайте-о-том,-что-вы-недостаточно-умны) - [О Google](#О-google) - [О видео ресурсах](#О-видео-ресурсах) - [Процесс собеседования & Основное в подготовке к интервью](#Процесс-собеседования-Основное-в-подготовке-к-интервью) - [Выберите один язык для собеседования](#Выберите-один-язык-для-собеседования) - [Список книг](#Список-книг) - [Перед тем как вы начнете](#Перед-тем-как-вы-начнете) -- [Что еще не охвачено](#what-you-wont-see-covered) -- [Необходимые знания](#prerequisite-knowledge) -- [План на день](#the-daily-plan) -- [Сложность алгоритмов / Big-O / Асимптотический анализ](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Структуры данных](#data-structures) - - [Массив](#arrays) - - [Связанный список](#linked-lists) - - [Стек](#stack) - - [Очередь](#queue) - - [Хэш-таблица](#hash-table) -- [Дополнительно](#more-knowledge) - - [Двоичный поиск](#binary-search) - - [Битовые операции](#bitwise-operations) -- [Деревья](#trees) - - [Деревья](#trees---notes--background) - - [Двоичное дерево поиска: BSTs](#binary-search-trees-bsts) - - [Куча / Очередь с приоритетом / Двоичная куча](#heap--priority-queue--binary-heap) +- [Что еще не охвачено](#То,-что-не-охватывает-этот-учебный-план) +- [Необходимые знания](#Необходимые-знания) +- [План на день](#План-на-день) +- [Сложность алгоритмов / Big-O / Асимптотический анализ](#Сложность-алгоритмов,-Big-O,-Асимптотический-анализ) +- [Структуры данных](#Структуры-данных) + - [Массивы](#Массивы) + - [Связные списки](#Связные-списки-(Linked-Lists)) + - [Стек](#Стек) + - [Очередь](#Очередь) + - [Хеш-таблицы](#Хеш-таблица) +- [Дополнительно](#Дополнительно) + - [Двоичный поиск](#Бинарный-поиск) + - [Битовые операции](#Побитовые-операции) +- [Деревья](#Деревья) + - [Деревья](#Деревья,-Заметки-и-Основные-понятия) + - [Двоичное дерево поиска: BSTs](#Бинарное-дерево-поиска-(BST:-Binary-search-trees)) + - [Куча / Очередь с приоритетом / Двоичная куча](#Куча,-Приоритетная-очередь,-Бинарная-куча) - Сбалансированные деревья поиска (основная идея, без деталей) - Обходы: прямой, симметричный, обратный, BFS, DFS -- [Сортировка](#sorting) +- [Сортировка](#Сортировка) - выбором - вставками - пирамидальная @@ -225,7 +225,7 @@ Google не возьмёт тебя на работу. ![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) -## Не переживайте о том, что вы не достаточно умны +## Не переживайте о том, что вы недостаточно умны - Успешные инженеры умные, но многие из них переживают, что недостаточно умны. - [Миф о гениальных программистах](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Это опасно, идти в одиночку: Сражаться с невидимыми монстрами в технологиях](https://www.youtube.com/watch?v=1i8ylq4j_EY) @@ -551,8 +551,7 @@ Google не возьмёт тебя на работу. - [ ] [Как CPU выполняет программы (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - [ ] [Коды машинных инструкций(video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) -## Сложность алгоритмов / Big-O / Асимптотический анализ -- ничего не реализовывать +## Сложность алгоритмов, Big-O, Асимптотический анализ - [ ] [Harvard CS50 - Асимптотическая нотация (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [Big O нотация (основное, короткое руководство) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O нотация (и Omega и Theta) - лучшее математическое объяснение (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -702,7 +701,7 @@ Google не возьмёт тебя на работу. - get(key) - remove(key) -## Больше знаний +## Дополнительно - ### Бинарный поиск - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) @@ -741,7 +740,7 @@ Google не возьмёт тебя на работу. ## Деревья -- ### Деревья - Заметки & Основные понятия +- ### Деревья, Заметки и Основные понятия - [ ] [Основы деревьев (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Деревья (видео)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - базовые конструкции деревьев @@ -763,7 +762,7 @@ Google не возьмёт тебя на работу. - post-order (DFS: левый, правый, вершина) - pre-order (DFS: вершина, левый, правый) -- ### Бинарное дерево поиска(Binary search trees): BSTs +- ### Бинарное дерево поиска (BST: Binary search trees) - [ ] [Обзор бинарного дерева поиска (видео)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Лекции (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - начинается с таблицы символов и заканчивая BST приложениями @@ -793,8 +792,8 @@ Google не возьмёт тебя на работу. - [ ] delete_value - [ ] get_successor // возвращает следующее максимальное значение в дереве после переданного, -1 если none -- ### Куча / Приоритетная очередь / Бинарная куча - - визуализируется как дерево, но обычно храниться в линейных структурах данных (массив, связанные список) +- ### Куча, Приоритетная очередь, Бинарная куча + - визуализируется как дерево, но обычно хранится в линейных структурах данных (массив, связанные список) - [ ] [Куча](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Введение (видео)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Наивная реализация (видео)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) @@ -802,7 +801,7 @@ Google не возьмёт тебя на работу. - [ ] [Замечания к высоте дерева (видео)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [Базовые операции (видео)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - [ ] [Полные двоичные деревья (видео)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Псевдокоде (видео)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Псевдокод (видео)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - [ ] [Пирамидальная сортировка - начальные шаги (видео)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - [ ] [Пирамидальная сортировка (видео)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - [ ] [Построение кучи (видео)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) From e52ba2361b706b1f04b81ff0ed05a8cac16edd05 Mon Sep 17 00:00:00 2001 From: Julia Date: Fri, 9 Mar 2018 15:53:52 +0000 Subject: [PATCH 067/857] TESTING, API calls, SCHEDULING, BINARY SEARCH, partially PAPERS --- translations/README-ru.md | 121 +++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 61 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 6336acd9e3..751231863e 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -83,10 +83,10 @@ - [NP, NP-полные and Аппроксимирующие алгоритмы](#np-np-complete-and-approximation-algorithms) - [Кэш](#caches) - [Процессы и нити](#processes-and-threads) - - [Статьи](#papers) - - [Тестирование](#testing) - - [Планирование](#scheduling) - - [Реализация системных вызовов](#implement-system-routines) + - [Статьи](#Статьи) + - [Тестирование](#Тестирование) + - [Планирование](#Планирование) + - [Реализация системных вызовов](#Реализация-системных-вызовов) - [Поиск в строке & манипуляции](#string-searching--manipulations) - [Проектирование систем, Масштабируемость, Обработка данных](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Финальный обзор](#final-review) @@ -118,7 +118,7 @@ - [Сети](#Сети-и-сетевые-протоколы) - [Компьютерная безопасность](#Компьютерная-безопасность) - [Сборка мусора](#Сборка-мусора-(Garbage-collection)) - - [Параллельное программирование](#parallel-programming) + - [Параллельное программирование](#Параллельное-программирование) - [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems) - [Быстрое преобразование Фурье](#fast-fourier-transform) - [Фильтр Блума](#bloom-filter) @@ -704,9 +704,9 @@ Google не возьмёт тебя на работу. ## Дополнительно - ### Бинарный поиск - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [Бинарный поиск (видео на ютубе)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Бинарный поиск (видео на khanacademy)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [Длинная статья с деталями](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - [ ] Реализация: - бинарный поиск (на отсортированном числовом массиве) - бинарный поиск с использованием рекурсии @@ -824,7 +824,7 @@ Google не возьмёт тебя на работу. ## Сортировка - [ ] Заметки: - - Реализуй сортировки и помни про лучшую/худую, среднюю сложность для каждой: + - Напиши код для разный сортировкок и помни про лучшую/худую, среднюю сложность для каждой: - не пузырьковая сортировка - она медленная - O(n^2), заисключением n <= 16 - [ ] устоичивость в алгоритмах сортировки ("Быстрая сортировка устойчива?") - [Устоичивость алгоритма сортировки](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) @@ -879,7 +879,7 @@ Google не возьмёт тебя на работу. - Сортировка выбором и сортировка вставками обе имеют среднюю и худшую сложность O(n^2) - Для пирамидальной сортировки, смотри структуру данных "Куча" выше. -- [ ] Не обязательно, но я рекомендую: +- [ ] Необязательно, но я рекомендую: - [ ] [Седжвик (Sedgewick) - Поразрядная сортировка (6 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [1. Строки в Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - [ ] [2. Ключевые индексные расчеты](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) @@ -905,7 +905,7 @@ Google не возьмёт тебя на работу. - список смежности - Ознакомьтесь с каждым представлением, его преимуществами и недостатками - BFS и DFS - узнайте их вычислительную сложность, соотношение преимуществ и недостатков, способы реализации в коде - - Когда вы получили задачу, в первую очередь попробуйте построить свое решение с использованием графов, а затем двигайтесь дальше, если такого решения нет. + - Когда вы получили задачу, сначала попробуйте решить её с использованием графов, а затем двигайтесь дальше, если такого решения нет. - [ ] Лекции профессора Стивена Скина - хорошее введение: - [ ] [CSE373 2012 - Лекция 11 - Структуры данных для представления графов (видео)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) @@ -956,7 +956,7 @@ Google не возьмёт тебя на работу. - [ ] список сильно связных компонентов - [ ] проверку графа на двудольность -Вы найдете больше практических задач на графах в книге Стивена Скина (см раздел книги ниже) и в книгах о прохождении интервью. +Вы найдете больше практических задач на графах в книге Стивена Скина (см. раздел книги ниже) и в книгах о прохождении интервью. ## Еще больше знаний @@ -1095,58 +1095,57 @@ Google не возьмёт тебя на работу. - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Papers - - These are Google papers and well-known papers. - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- ### Статьи + - Здесь вы найдете статьи от Google, а также дургие известные статьи. + - У вас вряд ли будет время прочитать их все с начала до конца. Я рекоммендую выбирать статьи и главы в них - тратье время грамотно на то, что хотите изучить глубже. + - [Любите классические статьи?](https://www.cs.cmu.edu/~crary/819-f09/) + - [ ] [1978: Коммуникация последовательных процессов](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [разработка на языке Go](https://godoc.org/github.com/thomas11/csp) + - [ ] [2003: Файловая система Google](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - в 2012 заменена на Colossus + - [ ] [2004: MapReduce: Упрощенная обработка данных на крупных кластерах](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - в основном заменена Cloud Dataflow + - [ ] [2007: Что каждый программист должен знать о памяти (очень длинная статья, и автор говорит пропускать некоторые разделы)](https://www.akkadia.org/drepper/cpumemory.pdf) - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) + - [ ] 2012: AddressSanitizer: Быстрая проверка адресов: + - [статья](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [видео](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [ ] 2013: Spanner: Глобальная дистрибутивная база данных Google: + - [статья](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [видео](https://www.usenix.org/node/170855) + - [ ] [2014: Машинное обучение: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2015: Continuous Pipelines в Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos - -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - can you implement them? + - [ ] [2015: Как разработчики ищут код: на примере](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2016: Borg, Omega, и Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + +- ### Тестирование + - Нужно пройти: + - модульное тестирование + - Mock-объекты (от англ. «объект-пародия», «объект-имитация») + - интеграционное тестирование + - внедрение зависимости + - [ ] [Гибкая методология разработки с James Bach (видео)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Открытая лекция, данная James Bach на тему тестирования (видео)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - разработка через тестирование (это не то, что мы имели в виду) (видео)](https://vimeo.com/83960706) + - [слайды](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] [Новая эра разработки через тестирование](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) + - [ ] [Мертва ли разработка через тестирование? (видео)](https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ ] [Видео-курс (152 видео) - нужны не все (видео)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [ ] [Вэб-разработка через тестирование на Питоне](http://www.obeythetestinggoat.com/pages/book.html#toc) + - [ ] Внедрение зависимости: + - [ ] [видео](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Принципы тестирования](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [Как писать тесты](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Планирование + - как работает планирование (scheduling) в операционной системе + - можно найти информацию в видео про Операционные системы + +- ### Реализация системных вызовов + - пойми, что находится под обложкой библиотек и программных интерфейсов (API), которые ты используешь + - можешь ли ты написать код для них? - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) From 1b018910eebf235f66f3bc0073fdd29cca05d702 Mon Sep 17 00:00:00 2001 From: Mikhail Usov Date: Sat, 10 Mar 2018 23:14:00 -0800 Subject: [PATCH 068/857] Update README-ru.md --- translations/README-ru.md | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 475f10a71d..3073c361e8 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -94,9 +94,9 @@ - [Упражнения по программированию](#coding-exerciseschallenges) - [Перед собеседованием](#once-youre-closer-to-the-interview) - [Ваше резюме](#your-resume) -- [О чем нужно думать на собеседовании](#be-thinking-of-for-when-the-interview-comes) -- [Вопросы к собеседующим](#have-questions-for-the-interviewer) -- [После того как вы получили работу](#once-youve-got-the-job) +- [Подумайте об этом когда подходит время собеседования](#be-thinking-of-for-when-the-interview-comes) +- [Приготовьте вопросы для интервьювера](#have-questions-for-the-interviewer) +- [Когда вас приняли на работу](#once-youve-got-the-job) ---------------- Все что ниже - опционально ---------------- @@ -1319,11 +1319,11 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) + - [ ] [08. Поиск подстроки](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [09. Регулярные выражения](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) + - [ ] [10. Сжатие данных](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) + - [ ] [12. Линейное программирование](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1337,17 +1337,17 @@ If you need more detail on this subject, see "Sorting" section in [Additional De Для чего вам нужно практиковаться в решении задач по программированию: - выявление проблем, и умение определять какие структуры данных и алгоритмы походят для их решения - сбор требований для задачи -- проговаривание хода решения задачи, так же как вы будете это делать на интервью +- проговаривание хода решения задачи, так же как вы будете это делать на собеседовании - написание кода на доске или на бумаге, но не на компьютере - умение оценивать сложность вашего решения по расходу времени и памяти - тестирование решений -Вот пример отличного введения в методичное, коммуникативное решение задач на интервью. Вы так же найдете это в книгах по интервью для программистов, но это подход мне кажется выдающимся: -[Схема создания алгоритма](http://www.hiredintech.com/algorithm-design/) +Вот пример отличного введения в методичное, коммуникативное решение задач на собеседовании. Вы так же найдете это в книгах по интервью для программистов, но это подход мне кажется однм из лучших: +[Схема разработки алгоритма](http://www.hiredintech.com/algorithm-design/) [My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) -У вас нет доски дома? Не удивительно. Я не много неормальный и у меня есть большая доска дома. Но вместо доски можно использователь и планшет для рисования из магазина художественных товаров, и практиковаться сидя на диване. Это моя "диванная доска". На фото я положил ручку чтобы иметь представления о размерах. Если вы будете пользоваться ручкой, постоянно будет возникать желание что-то стереть, решение захламляется достаточно быстро. +У вас нет доски дома? Не удивительно. Я немного неормальный и у меня есть большая доска дома. Но вместо доски можно использователь и планшет для рисования из магазина художественных товаров, и практиковаться сидя на диване. Это моя "диванная доска". На фото я положил ручку чтобы иметь вы имели представление о масштабе. Если вы будете пользоваться ручкой, постоянно будет возникать желание что-то исправить и решение захламляется достаточно быстро. ![моя диванная доска](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) @@ -1369,11 +1369,11 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Упражнения по программированию -Как только вы наполнили свою голову знаниями, самое время применить их на практике. +Как только вы заполнили свою голову знаниями, самое время применить их на практике. Выполняйте упражнения по программированию каждый день, чем больше тем лучше. - [ ] [Как найти решение](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [ ] [Как разбирать задачи из Topcoder](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) Сайты с упражнениями: - [LeetCode](https://leetcode.com/) @@ -1389,29 +1389,28 @@ If you need more detail on this subject, see "Sorting" section in [Additional De Возможно: - [Тестовые интервьюверы из больших компаний](http://www.gainlo.co/) -## Когда вы уже ближе к интервью +## Перед собеседованием -- [ ] Cracking The Coding Interview Set 2 (videos): +- [ ] Cracking The Coding Interview набор 2 (видео): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) + - [Спросите у меня что угодно: Gayle Laakmann McDowell (автор Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) ## Ваше резюме - [10 советов для подготовки (немного) менее ужасного резюме](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - Загляните в раздел по подготовке резюме в книге Cracking The Coding Interview и в конце книги Programming Interviews Exposed +## Подумайте об этом когда подходит время собеседования -## Подумайте об этом когда подходит время интервью - -Подумайте как отвечать приблизительно на 20 распостраненных вопросов которые задают на интервью, подготовьте 2-3 ответа на каждый из них. +Подумайте как отвечать приблизительно на 20 распостраненных вопросов которые задают на собеседовании, подготовьте 2-3 ответа на каждый из них. Расскажите историю, а не просто сухой пересказ о том над чем вы работали. - Почему вы хотите получить эту работу? - Какая самая большая проблема которую вам приходилось решать? - Самые сложные задачи с которыми вам приходилось сталкиваться? - Лучшие/худшие дизайн решения с которыми вы сталкивались? -- Идеи как улучшить какой-нибудь существующий продукт от Google. +- Идеи как улучшить какой-нибудь существующий продукт. - Вы более продуктивны как часть команды или как иднивидуальный разработчик? - Какие из ваших навыков или что из опыта будет наиболее ценным для данной позиции? - Что вам больше всего понравилось в работе над [проектом Х/в компании Х]? From a8016d5535b7143288a9b49387622fb470a98327 Mon Sep 17 00:00:00 2001 From: = <=> Date: Tue, 13 Mar 2018 10:41:20 +0000 Subject: [PATCH 069/857] Message serialisation --- translations/README-ru.md | 52 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 751231863e..f260be5e57 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -119,9 +119,9 @@ - [Компьютерная безопасность](#Компьютерная-безопасность) - [Сборка мусора](#Сборка-мусора-(Garbage-collection)) - [Параллельное программирование](#Параллельное-программирование) - - [Сообщения, сериализация и системы очередей](#messaging-serialization-and-queueing-systems) - - [Быстрое преобразование Фурье](#fast-fourier-transform) - - [Фильтр Блума](#bloom-filter) + - [Сообщения, сериализация и системы очередей](#Сообщения,-сериализация-и-системы-очередей) + - [Быстрое преобразование Фурье](#Быстрое-преобразование-Фурье) + - [Фильтр Блума](#Фильтр Блума) - [HyperLogLog](#hyperloglog) - [Локально-чувствительное хеширование](#locality-sensitive-hashing) - [Дерево ван Эмде Боаса](#van-emde-boas-trees) @@ -824,15 +824,15 @@ Google не возьмёт тебя на работу. ## Сортировка - [ ] Заметки: - - Напиши код для разный сортировкок и помни про лучшую/худую, среднюю сложность для каждой: + - Напиши код для разных сортировкок и помни про лучшую/худую, среднюю сложность для каждой: - не пузырьковая сортировка - она медленная - O(n^2), заисключением n <= 16 - - [ ] устоичивость в алгоритмах сортировки ("Быстрая сортировка устойчива?") + - [ ] устойчивость в алгоритмах сортировки ("Быстрая сортировка устойчива?") - [Устоичивость алгоритма сортировки](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Устоичивость в алгоритмах сортировки](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Устоичивость в алгоритмах сортировки](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Алгоритмы сортировки - Устоичивость](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - [ ] Какие алгоритмы можно применять для связанного списка? Для массива? А какие для обоих структур данных? - - Я не рекомендовал бы сортировать связанный список, но если нужно то сортировка слиянием подходит для этого. + - Я не рекомендовал бы сортировать связанный список, но если нужно, то сортировка слиянием подходит для этого. - [Сортировка слиянием для связанного списка](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - Для пирамидальной сортировки, см. структуру данных "Куча" выше. Пирамидальная сортировка эффективна, но не устойчива. @@ -1032,8 +1032,7 @@ Google не возьмёт тебя на работу. - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: @@ -1637,36 +1636,35 @@ You're never really done. - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - [ ] [Эффективное использование Python для высокопроизводительных параллельных вычислений (видео)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### Messaging, Serialization, and Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) +- ### Сообщения, сериализация и системы очередей + - [ ] [Apache Thrift - язык описания интерфейсов](https://thrift.apache.org/) + - [Урок по Thrift](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [Уроки](https://developers.google.com/protocol-buffers/docs/tutorials) - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [gRPC для Java разработчиков (видео)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [ ] [Redis — сетевое журналируемое хранилище данных](http://redis.io/) + - [Урок](http://try.redis.io/) - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ ] [RabbitMQ - платформа для обмены сообщениями](https://www.rabbitmq.com/) + - [Урок](https://www.rabbitmq.com/getstarted.html) + - [ ] [Celery - распределенная очередь заданий](http://www.celeryproject.org/) + - [Первые шаги с Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ ] [ZeroMQ - библиотека для передачи сообщений](http://zeromq.org/) + - [Вступление к ZeroMQ](http://zeromq.org/intro:read-the-manual) - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ ] [Apache Kafka — распределённый программный брокер сообщений](http://kafka.apache.org/documentation.html#introduction) + - [ ] [MessagePack - компьютерный формат обмена данными](http://msgpack.org/index.html) + - [ ] [Apache Avro](https://avro.apache.org/) -- ### Fast Fourier Transform +- ### Быстрое преобразование Фурье - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) -- ### Bloom Filter +- ### Фильтр Блума - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) From d10935ca720edee12785d1f8ea74e7d519bfcb3f Mon Sep 17 00:00:00 2001 From: = <=> Date: Tue, 13 Mar 2018 10:50:08 +0000 Subject: [PATCH 070/857] Bloom filter, fourier transform --- translations/README-ru.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f260be5e57..b4eafcc0ed 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1658,21 +1658,21 @@ You're never really done. - [ ] [Apache Avro](https://avro.apache.org/) - ### Быстрое преобразование Фурье - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [ ] [Интерактивное руководство по преобразованию Фурье](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [ ] [Что такое преобразованию Фурье? Для чего оно нужно?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [ ] [Что такое преобразованию Фурье? (видео)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ ] [Разделяй и властвуй: Быстрое преобразование Фурье (видео)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ ] [Объяснение Быстрого преобразования Фурье](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Фильтр Блума - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - Если у вас есть Фильтр Блума с m битами и к хеширующими функциями, то вставка и тестирование на членство имеют сложность O(k) + - [Фильтры Блума](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Фильтры Блума | Добыча огромных наборов данных | Стэндфордский Университет](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Урок](http://billmill.org/bloomfilter-tutorial/) + - [Как написать приложение фильтра Bloom](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [Как посчитать миллиард различных объектов, когда у вас есть только 1.5KB памяти](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - used to determine the similarity of documents From abeb06cd55c575246e193d4a91696a6210ad98d3 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Thu, 11 Oct 2018 09:26:37 +0400 Subject: [PATCH 071/857] translation --- translations/README-ru.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 996550f4ae..2b04a938bc 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1703,19 +1703,15 @@ Google не возьмёт тебя на работу. - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Balanced search trees - - Know least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) +- ### Сбалансированные деревья поиска + - Знать как минимум один тип сбалансированного дерева поиска (и как его осуществить): + - "Среди сбалансированных деревьев поиска AVL и 2/3 деревья теперь в прошлом, и красно-черные деревья все больше набирают популярность. Довольно интересный саморегулирующийся тип это расширяющееся дерево, который использует для перемещения любого ключа к вершине" - Стивен Сол Лекена + - Из всех них я предпочел написать расширяющееся дерево. Из того, что я читал, писать реализации сбалансированного дерева поиска на интервью не понадобится. Но я хотел преодолеть еще одну задачу в програмировании, и будем честны, расширяющиеся деревья превосходны. И я прочитал довольно много про красно-черные деревья. + - расширяющееся дерево: вставка, поиска, и удаление + Если вы решите реализовать красно-черное дерево напишите: + - функции поиска и вставки, пропустите удаление + - Я хочу изучить побольше про B-деревья, т.к. они применимы при работе с очень большими данными + - [ ] [Сбалансированный поиск дерева](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - [ ] **AVL trees** - In practice: From 22884b94d7e161d324ae050639cad902bc2b7c65 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Thu, 11 Oct 2018 09:29:42 +0400 Subject: [PATCH 072/857] Fixes --- translations/README-ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 2b04a938bc..4708dcd94f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1705,8 +1705,8 @@ Google не возьмёт тебя на работу. - ### Сбалансированные деревья поиска - Знать как минимум один тип сбалансированного дерева поиска (и как его осуществить): - - "Среди сбалансированных деревьев поиска AVL и 2/3 деревья теперь в прошлом, и красно-черные деревья все больше набирают популярность. Довольно интересный саморегулирующийся тип это расширяющееся дерево, который использует для перемещения любого ключа к вершине" - Стивен Сол Лекена - - Из всех них я предпочел написать расширяющееся дерево. Из того, что я читал, писать реализации сбалансированного дерева поиска на интервью не понадобится. Но я хотел преодолеть еще одну задачу в програмировании, и будем честны, расширяющиеся деревья превосходны. И я прочитал довольно много про красно-черные деревья. + - "Среди сбалансированных деревьев поиска AVL и 2/3 деревья теперь в прошлом, а красно-черные деревья все больше набирают популярность. Довольно интересный саморегулирующийся тип это расширяющееся дерево, который использует вращения для перемещения любого ключа к вершине" - Стивен Сол Лекена + - Из всех них я предпочел написать расширяющееся дерево. Из того, что я читал, писать реализации сбалансированного дерева поиска во время интервью не понадобится. Но я хотел преодолеть еще одну задачу в програмировании, и будем честны, расширяющиеся деревья превосходны. Еще я прочитал довольно много про красно-черные деревья. - расширяющееся дерево: вставка, поиска, и удаление Если вы решите реализовать красно-черное дерево напишите: - функции поиска и вставки, пропустите удаление From bff56d5c0ff71924adeaa66bc969b12e93d26aa8 Mon Sep 17 00:00:00 2001 From: Eugene Ilyushin Date: Thu, 11 Oct 2018 11:47:30 +0300 Subject: [PATCH 073/857] Additional Books --- translations/README-ru.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 996550f4ae..bd2bbf22cc 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1456,18 +1456,18 @@ Google не возьмёт тебя на работу. --- -## Additional Books - -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - an oldie but a goodie -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book +## Дополнительная литература + +- [ ] [Среда программирования Unix](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) + - проверенно временем +- [ ] [Командная строка Linux: введение](https://www.amazon.com/dp/1593273894/) + - современный вариант +- [ ] [Протокол TCP/IP с иллюстрациями(серия книг)](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [ ] [Погружение в шаблоны проектирования](https://www.amazon.com/gp/product/0596007124/) + - введение в шаблоны проектирования +- [ ] [Шаблоны проектирования: переиспользование компонент в ООП](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - аля книга "Банды четырех", или GOF + - каноническая книга про шаблоны проектирования - [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) From 2851221fc4af103f755cfb61050c2b9072a3b0b1 Mon Sep 17 00:00:00 2001 From: piyushver <30694467+piyushver@users.noreply.github.com> Date: Tue, 30 Oct 2018 20:01:25 +0530 Subject: [PATCH 074/857] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e517987bbb..461664e576 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ > as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > You probably won't have to study as much as I did. Anyway, everything you need is here. > -> The items listed here will prepare you well for an interview at just about any software company, +> The items listed bellow will prepare you well for an interview at just about any software company, > including the giants: Amazon, Facebook, Google or Microsoft. > > *Best of luck to you!* From 5d79de569fbdbdd6c3e2fb425085ba497142596e Mon Sep 17 00:00:00 2001 From: Joona Yoon Date: Mon, 27 May 2019 00:01:23 +0900 Subject: [PATCH 075/857] Fix wrong typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39bdc67fdf..cc35377fcc 100644 --- a/README.md +++ b/README.md @@ -830,7 +830,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] is_empty() - returns true if heap contains no elements - [ ] extract_max - returns the max item, removing it - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x + - [ ] remove(x) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). From ed0d2a47ab646c646e0d654610a4823f252b84ea Mon Sep 17 00:00:00 2001 From: Nikita S Date: Thu, 10 Oct 2019 12:15:43 +0300 Subject: [PATCH 076/857] Translated Emacs, vim, Unix tools part, small fixes happy hacktoberfest! --- translations/README-ru.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 12e4f1d3b6..efb2d23de6 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1502,7 +1502,7 @@ Google не возьмёт тебя на работу. - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) -- ### Floating Point Numbers +- ### Числа с плавающей точкой - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) @@ -1510,36 +1510,36 @@ Google не возьмёт тебя на работу. - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) -- ### Endianness +- ### Порядок байт (Endianness) - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. + - Очень техническая беседа для разработчиков ядер. Не переживайте, если что-то выше вашего понимания. + - Первой половины достаточно. -- ### Emacs and vi(m) - - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor +- ### Emacs и vi(m) + - предложено Yegge, из старого поста по найму в Amazon: Familiarize yourself with a unix-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Редактирование с vim 01 - Установка, настройка и Режимы (видео на англ.)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: + - Набор из 4 видео: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - [Использование Vi вместо Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - [Основы Emacs Руководство (видео на англ.)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - набор из 3 (видео на англю): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [Режим Зла: Или, Как Я Перестал Беспокоиться И Полюбил Emacs (видео на англ.)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Написание программ на языке C в Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(возможно) Погружение в Org режим: Управляя структурой (видео на англ.)](https://www.youtube.com/watch?v=nsGYet02bEk) -- ### Unix command line tools - - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. +- ### Инструменты командной строки Unix + - предложено Yegge, из старого поста по найму в Amazon. Я создал список ниже с хорошими утилитами. - [ ] bash - [ ] cat - [ ] grep From 18a0d39e58ce3979e45362dd236d4d8c9f941620 Mon Sep 17 00:00:00 2001 From: Nikita S Date: Fri, 11 Oct 2019 23:33:18 +0300 Subject: [PATCH 077/857] grammar fixes, bit of translate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Опечатки, орфография и чуть перевода от начала до деревьев happy hacktoberfest --- translations/README-ru.md | 54 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index efb2d23de6..f6cf63ff71 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -156,7 +156,7 @@ ## Чем это полезно? Я следую этому плану, готовясь к собеседованию в Google. Я разрабатываю веб-приложения, сервисы и запускаю стартапы с -1997 года. У меня есть степень по экономике, но нет по CS. На данные момент у меня очень успешная карьера, но я хочу работать +1997 года. У меня есть степень по экономике, но нет по CS. На данный момент у меня очень успешная карьера, но я хочу работать в Google. Я хочу работать с большими системами и понять принципы их работы, изучить эффективность алгоритмов и различные структуры данных, узнать, как работают низкоуровневые языки программирования. Если ты не знаешь что-то из перечисленного, Google не возьмёт тебя на работу. @@ -254,7 +254,7 @@ Google не возьмёт тебя на работу. прежде чем получите к ним доступ. Курсы на Lynda.com платные. Я был бы вам благодарен за помощь в добавлении бесплатных, всегда доступных публичных ресурсов, таких - как видео с YouTube сопровождающих онлайн курсы. Мне нравяться использовать университетские лекции. + как видео с YouTube сопровождающих онлайн курсы. Мне нравится использовать университетские лекции. ## Процесс собеседования & Основное в подготовке к интервью @@ -275,11 +275,11 @@ Google не возьмёт тебя на работу. - [ ] Подготовительные курсы: - [ ] [Собеседование инженера-программиста (платный курс)](https://www.udemy.com/software-engineer-interview-unleashed): - - Как самостоятельно подготовиться r собеседованию на позицию инженера-программиста от бывшего сотрудника Google + - Как самостоятельно подготовиться к собеседованию на позицию инженера-программиста от бывшего сотрудника Google - [ ] Дополнительно (это не рекомендация Google, а моя собственная): - [ ] [ABC: Программируй всегда](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [4 шага в Google без образованияв CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) + - [ ] [4 шага к Google без образования в CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [Кодирование на доске](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Что думает Google о найме, управлении и культуре](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - [ ] [Эффективное кодирование на доске в процессе собеседования](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) @@ -315,7 +315,7 @@ Google не возьмёт тебя на работу. [Ресурсы по языкам программирования вы можете найти тут](../programming-language-resources.md) -Вы найдете кое-что по С, С++ и Python ниже, потому-что я еще в процессе обучения. +Вы найдете кое-что по С, С++ и Python ниже, потому что я еще в процессе обучения. ## Список книг @@ -323,7 +323,7 @@ Google не возьмёт тебя на работу. ### Подготовка к собеседованию -- [ ] [Собеседование по программированию в подробнастях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Собеседование по программированию в подробностях: Секреты получения твоей следующей работы, 2-е издание](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - ответы на C++ и Java - рекомендации Google по обучению кандидатов - это отличная разминка перед подробным разбором собеседования по программированию @@ -346,11 +346,11 @@ Google не возьмёт тебя на работу. - [ ] [Писать отличный код: Том 1: Понимание компьютера](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - Книга была опубликована в 2004 и отчасти она устарела, но благодаря ей вы быстро поймете как устроены компьютеры. - - Автор придумал HLA, поэтому скептически отнеситесь к примерам и упоминаниям HLA. Широко не используется, но содержит ряд примеров, демострирующих assembler. + - Автор придумал HLA, поэтому скептически отнеситесь к примерам и упоминаниям HLA. Широко не используется, но содержит ряд примеров, демонстрирующих assembler. - Чтение следующих глав не займет много времени и даст хорошую основу: - Глава 2 - Представление в числовой форме - Глава 3 - Двоичная арифметика и битовые операции - - Глава 4 - Представление числа с плавующей запятой + - Глава 4 - Представление числа с плавающей точкой - Глава 5 - Представление символа - Глава 6 - Организация памяти и доступа - Глава 7 - Составные типы данных и объекты в памяти @@ -358,7 +358,7 @@ Google не возьмёт тебя на работу. - Глава 10 - Набор инструкций - Глава 11 - Архитектура и организация памяти -Если вы рапологаете свободным временем (я хочу купить эту книгу): +Если вы располагаете свободным временем (я хочу купить эту книгу): - [ ] [Архитектура компьютера, 5-е издание: Количественный подход](https://www.amazon.com/dp/012383872X/) @@ -378,7 +378,7 @@ Google не возьмёт тебя на работу. - [ ] [Алгоритмы на C++, Части 1-4: Основы, Структуры данных, Сортировка, Поиск](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Алгоритмы на C++ Часть 5: Алгоритмы графов](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -Если вы можете порекоммендовать литературу по C++, которая лучше, сообщите мне об этом. Я ищу лучшие книги. +Если вы можете порекомендовать литературу по C++, которая лучше, сообщите мне об этом. Я ищу лучшие книги. ### Java @@ -417,12 +417,12 @@ Google не возьмёт тебя на работу. - автор описывает реальный опыт решения задач как академических, так и промышленных - примеры кода написаны на C - недостатки: - - местами изложение может быть не очевидным и не понятным как в CLRS (Cormen, Leiserson, Rivest, Stein), некоторые темы лучше описаны в CLRS + - местами изложение может быть неочевидным и непонятным как в CLRS (Cormen, Leiserson, Rivest, Stein), некоторые темы лучше описаны в CLRS - главы 7, 8, 9 сложно понять, некоторые вещи плохо разъяснены или требуют больших знаний чем есть у меня - - не поймите меня не правильно: Мне нравиться Skiena, ее стиль и манера изложения, но я не могу стать физически Stony Brook. + - не поймите меня неправильно: Мне нравится Skiena, его стиль и манера изложения, но я не могу стать физически Stony Brook. - каталог алгоритмов: - это реальная причина, почему следует купить эту книгу. - - о том как дойти до этой части. Обновлю, когда изучу этот раздел. + - о том, как дойти до этой части. Обновлю, когда изучу этот раздел. - Цитата Йеги: "Больше чем какая-либо другая книга, эта помогла мне понять насколько банальны задачи на графы - они должны быть в инструментарии каждого программиста. Книга так же включает в себя разбор базовых структур данных и алгоритмов сортировки, что является приятным бонусом. Но важнейшей частью стала вторая часть книги, которая написана как энциклопедия, описывающая большое @@ -465,7 +465,7 @@ Google не возьмёт тебя на работу. Прочитайте пожалуйста эту статью, что бы не совершать моих ошибок: -[Как сохранить знания в CS](https://googleyasheck.com/retaining-computer-science-knowledge/) +[Как сохранить знания в CS](https://startupnextdoor.com/retaining-computer-science-knowledge/) ### 2. Используйте карточки-напоминания @@ -477,7 +477,7 @@ Google не возьмёт тебя на работу. Сделай свой собственный бесплатно: - [Репозиторий сайта Flashcards](https://github.com/jwasham/computer-science-flash-cards) -- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте ввиду, я зделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. +- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте в виду, я сделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. **Заметка о карточках:** в первый раз вы сразу вспомните ответ, но не помечайте эту карточку как изученную. Нужно просмотреть много раз карточку и ответить правильно прежде чем вы действительно ее запомните. Повторение позволяет мозгу надолго @@ -541,10 +541,10 @@ Google не возьмёт тебя на работу. ## Необходимые знания - [ ] **Изучайте C** - - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будите учиться. + - С используется везде. Вы встретите примеры в книгах, лекциях, видео, везде, пока вы будете учиться. - [ ] [Язык программирования С, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Это небольшая книга, но после ее прочтения вы получите необходимые знания по С и если будите практиковать, - то достаточно быстро его освоите. Понимание С поможет вам понять как программы и память работают. + - Это небольшая книга, но после ее прочтения вы получите необходимые знания по С и если будете практиковать, + то достаточно быстро его освоите. Понимание С поможет вам понять как работают программы и память. - [ответы на вопросы](https://github.com/lekkas/c-algorithms) - [ ] **Как компьютеры выполняют программу:** @@ -599,9 +599,9 @@ Google не возьмёт тебя на работу. - [ ] insert(index, item) - вставка элемента по индексу, сдвигает значение по индексу и следующие за ним элементы вправо - [ ] prepend(item) - может вставить элемент выше индекса 0 - [ ] pop() - удалить последний элемент, вернуть значение - - [ ] delete(index) - удаляет элемент по индексу, сдвигает все следующие за ним элементы в лево + - [ ] delete(index) - удаляет элемент по индексу, сдвигает все следующие за ним элементы влево - [ ] remove(item) - ищет элементы по значению и удаляет их, даже если их несколько - - [ ] find(item) - ищет элемент по значению и возвращает индекс первого найденного элемента, возвращает -1 если ничего не найденно + - [ ] find(item) - ищет элемент по значению и возвращает индекс первого найденного элемента, возвращает -1 если ничего не найдено - [ ] resize(new_capacity) // private function - когда массив полностью заполнен, увеличивает его размер вдвое - при добавлении элемента, если размер массива 1/4 от общего размера, увеличиваем на половину @@ -622,10 +622,10 @@ Google не возьмёт тебя на работу. - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Ага, попался: тебе нужны знания указетелей на указатели: + - [ ] Ага, попался: тебе нужны знания указателей на указатели: (для тех случаев, когда ты передаешь указатель функции, которая может менять адрес, куда указывает указатель) Это страница просто для того, чтобы понять указатели на указатели. Читабельность и обслуживаемость страдает - из-за искусность. + из-за искусности. - [Указатели на указатели](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] воплотить в жизнь (я сделал это с помощью указателя на хвост и без): - [ ] size() - возвращает количество элементов в листе @@ -661,13 +661,13 @@ Google не возьмёт тебя на работу. - enqueue(value) - добавляет элемент в конец очереди - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент(front) - empty() - - [ ] Реализация с приминением массива фиксированного размера: + - [ ] Реализация с применением массива фиксированного размера: - enqueue(value) - добавляет элемент в конец очереди - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент - empty() - full() - [ ] Затраты: - - плохая реализация с приминением связанного списка когда элемент добавляется в начало очереди и удаляется с конца очереди за O(n), + - плохая реализация с применением связанного списка когда элемент добавляется в начало очереди и удаляется с конца очереди за O(n), операция dequeue в таком случае будет требовать каждый раз обхода всего списка - enqueue: O(1) (amortized, связанный список и массив [probing]) - dequeue: O(1) (связанный список и массив) @@ -694,7 +694,7 @@ Google не возьмёт тебя на работу. - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [ ] реализация с помощью массива и приминением linear probing + - [ ] реализация с помощью массива и применением linear probing - hash(k, m) - m размер хеш-таблицы - add(key, value) - если ключ уже существует обновляем значение - exists(key) @@ -712,8 +712,8 @@ Google не возьмёт тебя на работу. - бинарный поиск с использованием рекурсии - ### Побитовые операции - - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Даст отличное понимание манипуляции битами с помощью: &, |, ^, ~, >>, << + - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - ты должен знать сколько степеней двойки от (2^1 до 2^16 и 2^32) + - [ ] Даст отличное понимание манипуляций битами с помощью: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Хорошее введение: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) From 4a62da67b64217d146abed02d0c67cb2db895c05 Mon Sep 17 00:00:00 2001 From: Oxana Kostikova Date: Tue, 29 Oct 2019 00:25:47 +0300 Subject: [PATCH 078/857] Add translation of system design section --- translations/README-ru.md | 244 +++++++++++++++++++------------------- 1 file changed, 121 insertions(+), 123 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..abe3b8f098 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1,4 +1,4 @@ -# Google Interview University +https://twitter.com/home# Google Interview University Оригинальная версия: [Английский](../README.md) @@ -1160,130 +1160,128 @@ Google не возьмёт тебя на работу. --- -## System Design, Scalability, Data Handling -- **You can expect system design questions if you have 4+ years of experience.** -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations from Yegge: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) +## Проектирование систем, Масштабируемость, Обработка данных +- **Вы можете ожидать вопросов по проектированию систем если у вас 4+ лет опыта.** +- Масштабируемость и Проектирование систем это очень большие темы с большим количеством разделов и ресурсов, так как нужно многое учитывать при создании расширяемой программной/аппаратной системы. На освоение этого может уйти немало времени. +- Заметки от Стива Йеги: + - масштабируемость + - Извленечние отдельных значений из больших наборов данных + - Преобразование одних наборы данных в другие + - Обработка неприлично больших объёмов данных + - проектирование систем + - наборы функций + - интерфейсы + - иерархии классов + - проектирование системы удовлетворяющей определённым ограничениям + - простота и надёжность + - компромиссы + - анализ производительности и оптимизации +- [ ] **НАЧНИТЕ С ЭТОГО**: [Проектирование систем от HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [Как я готовлюсь отвечать на вопросы по проектированию систем на технических интервью?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 вещей которые вам нужно узнать прежде чем проходить собеседование по проектированию систем](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Проектирование алгоритмов](http://www.hiredintech.com/algorithm-design/) +- [ ] [Нормализация баз данных - 1NF, 2NF, 3NF and 4NF (видео)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Собеседование по проектированию систем](https://github.com/checkcheckzz/system-design-interview) - Здесь собрано много ресурсов. Просмотрите статьи и примеры. Некоторые из них выложены ниже. +- [ ] [Как пройти собеседование по проектированию систем](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Числа которые следует знать всем](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [Сколько времени занимает переключение контекста?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Транзакции через центры обработки данных (видео)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Простое английское введение в теорему CAP](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Алгоритм Паксос: + - [короткое видео](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [более длинное видео со сценарием использования и мульти-паксосом](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [статья](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [Последовательное хэширование](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Шаблоны](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Масштабируемость: + - [ ] [Большой обзор (видео)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Серия коротких статей: + - [Клоны](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) + - [ ] [Объяснение ошибок распределённых вычислений](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Прагматичные методы программирования](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [дополнительно: обработка графиков Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Джефф Дин - создание программных систем в Google и извлечённые уроки (видео)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Введение в проектирование расширяемых систем](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Масштабирование мобильных игр для глобальной аудитории с использованием App Engine и Cloud Datastore (видео)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Как Google разрабатывает планетарное масштабирование для инфраструктуры планетарного масштаба (видео)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Важность алгоритмов](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [Разбиение на части](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Расширение в Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Расширение в Facebook (2012), "Разработка для миллиарда пользователей" (видео)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Проектирование для "долгой игры" - Основной принцип Астрид Аткинсон (видео)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 лет уроков масштабирования с YouTube за 30 минут](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [видео](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [Как PayPal расширили для миллиардов транзакций в день используя всего лишь 8 виртуальных машин](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [Как удалять дубликаты из больших наборов данных](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [Взгляд на масштабируемость и инженерную культуру Etsy с Джоном Кови (видео)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Что привело Amazon к созданию собственной микросервисной архитектуры](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [Сжимать или не сжимать - такой вопрос стоял перед Uber](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, вставай в очередь](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [Когда следует использовать приблизительную обработку запросов?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Переход Google с единого центра обработки данных на отказоустойчивый, на собственную многосетевую архитектуру]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] [Архитектура Egnyte: уроки, извлеченные при построении и масштабировании многопетабайтной распределенной системы](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [Программирование на основе машинного обучения: новое программирование для нового мира](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [Технология оптимизации изображений, которая обслуживает миллионы запросов в день](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Архитектура Patreon коротко](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: как одна из самых больших систем рекомендаций решает кого вы увидите следующим?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Современное проектирование кэша](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Прямая трансляция видео в масштабе Facebook](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [Руководство для начинающих по масштабированию до 11 миллионов пользователей на Amazon AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [Как использование Docker влияет на время задержки?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [Представляет ли AMP Counter угрозу существованию Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) + - [ ] [360-градусный обзор всего стека Netflix](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Время задержки везде и это стоит вам продаж - как с ним бороться](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Бессерверность (очень длинная, нужна только суть)](http://martinfowler.com/articles/serverless.html) + - [ ] [Из чего состоит Instagram: Сотни экземпляров, десятки технологий](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Архитектура Cinchcast - 1500 часов аудио каждый день](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Архитектура прямого видео вещания Justin.Tv](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Социальная игровая архитектура Playfish - 50 миллионов пользователей в месяц и более](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [Архитектура TripAdvisor - 40 миллионов посетителей, 200 миллионов динамических представлений страниц, 30TB данных](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [Архитектура PlentyOfFish](http://highscalability.com/plentyoffish-architecture) + - [ ] [Архитектура Salesforce - Как они обрабатывают 1.3 миллиарда транзакций в день](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [Архитектура ESPN в процессе расширения - работа со скоростью 100,000 Duh Nuh Nuhs в секунду](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] См. Ниже раздел «Системы обмена сообщениями, сериализации и управления очередями» для получения информации о некоторых технологиях, которые могут "склеивать" сервисы. - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the Video Series section. -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions - - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a function to return the top k requests during past time interval]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - [O'Reilly MySQL CE 2011: Джереми Койл, "Большие и маленькие данные в @Twitter" (видео)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines в процессе расширения](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - Чтобы узнать ещё больше, посмотрите серию видео "Mining Massive Datasets" в разделе "Серии видео". +- [ ] Практика в проектировании систем: несколько идей чтобы проработать их с небольшим количеством информации о том, как это было сделано в действительности: + - обзор: [Проектирование систем с HiredInTech](http://www.hiredintech.com/system-design/) + - [шпаргалка](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - процесс работы: + 1. Поймите проблему и контекст: + - определите сценарии использования с помощью интервьера + - предложите дополнительные функции + - уберите детали, которые интервьюер посчитает выходящими за рамки + - предположите что нужна очень высокая доступность, добавьте соответствующий сценарий использования + 2. Подумайте об ограничениях: + - спросите сколько предполагается запросов в месяц + - спросите сколько предполагается запросов в секунду (вам могут просто сказать или предложить посчитать самостоятельно) + - ожидаемое соотношение чтений и записей + - держите в голове правило 80/20 когда оцениваете + - как много данных записывается в секунду + - общее количество памяти, необходимое через 5 лет + - как много запросов на чтение происходит в секунду + 3. Проектирование абстракций: + - слои (сервисный, данные, кэширование) + - инфраструктура: балансировка нагрузки, обмен сообщениями + - грубая оценка одного из ключевых алгоритмов которые управляют сервисом + - примите во внимание "бутылочные горлышки" и определите как от них избавиться + - Упражнения: + - [Спроектируйте CDN network: старая статья](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Спроектируйте систему генерации уникальных ID](https://blog.twitter.com/2010/announcing-snowflake) + - [Спроектируйте карточную мультиплеерную онлайн-игру](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Спроектируйте базу данных ключ-значение](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Спроектируйте функцию возвращающую последние k запросов за прошедший период времени]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) + - [Спроектируйте систему передачи изображений](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Спроектируйте систему рекомендаций](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Спроектируйте систему укорачивания URL: скопировано из верхней части](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Спроектируйте кэш-систему](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) --- From 69f31bd7e28f714c4db10bd2de3b82644fbfa882 Mon Sep 17 00:00:00 2001 From: Oxana Kostikova Date: Tue, 29 Oct 2019 00:29:05 +0300 Subject: [PATCH 079/857] Delete an unintentionally added link --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index abe3b8f098..fc444df4c9 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1,4 +1,4 @@ -https://twitter.com/home# Google Interview University +# Google Interview University Оригинальная версия: [Английский](../README.md) From 4a04315df44430673c53679c98884ad8034dd509 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Tue, 29 Oct 2019 22:34:29 +0400 Subject: [PATCH 080/857] translate 234 trees --- translations/README-ru.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..97f87e7dd1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1755,14 +1755,12 @@ Google не возьмёт тебя на работу. - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - На практике: + На каждое 2-4 дерево, существуют соответствующие красно-чёрные деревья с элементами данных в таком же порядке. Операции вставки и удаления на 2-4 деревьях эквивалентны изменению цвета и ротациям в красно-чёрных деревьях. + Таким образом, 2-4 деревья являются важным инструментом в понимании логики красно-чёрных деревьев, именно поэтому много вводных учебников по алгоритмам начинают с 2-4 деревьев прямо перед красно-черными, несмотря на то, что **2-4 деревья редко используются на практике**. + - [ ] [CS 61B Лекция 26: Сбалансированные деревья поиска (видео)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [234-Деревья Снизу Вверх (видео)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [234-Деревья Сверху Вниз (видео)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) From e86e096ce2396b83ea202cbba44994e67cb6ed76 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Tue, 29 Oct 2019 22:40:37 +0400 Subject: [PATCH 081/857] translate n-ary trees --- translations/README-ru.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..eb41149839 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1764,11 +1764,11 @@ Google не возьмёт тебя на работу. - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - [ ] **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + - [ ] **N-ичные (K-ичные, M-ичные) деревья** + - заметка: N или K это фактор ветвления (максимальное количество веток у каждого корня) + - бинарные деревья являются 2-ичными деревьями, где фактор ветвления = 2 + - 2-3 деревья 3-ичные + - [ ] [K-ичные деревья (en)](https://en.wikipedia.org/wiki/K-ary_tree) - [ ] **B-Trees** - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) From d0d1a6fa1e16ae43327380493fc1bbe2f7bde591 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Tue, 29 Oct 2019 22:58:22 +0400 Subject: [PATCH 082/857] translated b trees --- translations/README-ru.md | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..72c13222b8 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1770,21 +1770,18 @@ Google не возьмёт тебя на работу. - 2-3 trees are 3-ary - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - [ ] **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - + - [ ] **B-Деревья** + - забавно, но факт: это загадка, ведь B здесь может значить Boeing, сБалансированный, или Байер (фамилия ко-создателя) + - На практике: + B-Деревья очень широко используются в базах данных. Большинство современных файловых систем используют B-деревья (или вариации, B+ и B* деревья). + В дополнение к использованию в базах данных, B-дерево также применяют в файловых системах для быстрого рандомного доступа к произвольному блоку в конкретном файле. Основная проблема это превратить адрес i файлового блока в адрес дискового блока или, например, в CHS (цилиндр-голова-сектор). + - [ ] [B-Деревья (en)](https://en.wikipedia.org/wiki/B-tree) + - [ ] [Введение в B-Деревья (видео)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [B-Деревья Определение и Вставка (видео)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B-Деревья Удаление (видео)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [MIT 6.851 - Модели Иерархии Памяти (видео)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - включает кэш-агностические B-Деревья, крайне интересные структуры данных + - первые 37 минут очень технические, можно пропустить (B это размер блока, размер кэша) - ### k-D Trees - great for finding number of points in a rectangle or higher dimension object From 6f60da42d4a39d89a463f2acd602d30cbb2c9b0d Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Tue, 29 Oct 2019 23:24:03 +0400 Subject: [PATCH 083/857] translated kd trees --- translations/README-ru.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..eb37bb404b 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1786,11 +1786,11 @@ Google не возьмёт тебя на работу. - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) -- ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) +- ### k-D Деревья + - прекрасны для нахождения всех точек в прямоугольнике или более многомерном объекте + - хорошо подходят для k-ближайших соседей + - [ ] [Kd Деревья (видео)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [ ] [kNN Алгоритм K-d дерева (видео)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena From aeed865ed80f75d2f21c5e84a7281dc8f39e2446 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Tue, 29 Oct 2019 23:29:58 +0400 Subject: [PATCH 084/857] translated skip lists --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index f6cf63ff71..9f1b1ebcab 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1792,10 +1792,10 @@ Google не возьмёт тебя на работу. - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) -- ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) +- ### Список с пропусками + - "А это что-то из разряда культа в мире структур данных" - Стивен Скиена + - [ ] [Рандомизация: Список с пропусками (видео)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Для анимаций и чуть побольше деталей](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) From 9b943b42a7f75010ef55843241c21086cb8cb8bd Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Wed, 30 Oct 2019 21:32:51 +0400 Subject: [PATCH 085/857] network flows translated --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..9de25c37ae 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1790,10 +1790,10 @@ Google не возьмёт тебя на работу. - [ ] [Рандомизация: Список с пропусками (видео)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Для анимаций и чуть побольше деталей](https://en.wikipedia.org/wiki/Skip_list) -- ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) +- ### Транспортные сети + - [ ] [Алгоритм Форд — Фалкерсона за 5 минут (видео)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Алгоритм Форд — Фалкерсона (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Транспортные сети (видео)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) From 74402f2630c67cc9171e0e820d9e6f8b3300375e Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Wed, 30 Oct 2019 21:37:07 +0400 Subject: [PATCH 086/857] translated disjoint sets --- translations/README-ru.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..a7c4d41978 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1795,9 +1795,9 @@ Google не возьмёт тебя на работу. - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) +- ### Непересекающиеся Множества и Система Непересекающихся Множеств + - [ ] [UCB 61B - Непересекающиеся Множества; Сортировка и выборка (видео)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) + - [ ] [Алгоритмы Седжвика - Система непересекающихся множеств (6 видео)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) From 10778a6e56fcd193cb7025bf99aa33d3529d2c3b Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Wed, 30 Oct 2019 21:40:07 +0400 Subject: [PATCH 087/857] translated fast math --- translations/README-ru.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..36b0256c68 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1799,9 +1799,9 @@ Google не возьмёт тебя на работу. - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) -- ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) +- ### Математика для Быстрой Обработки + - [ ] [Арифметика целых чисел, Умножение Карацубы (видео)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Китайская теорема об остатках (используется в криптографии) (видео)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap From 5808a3f8051cf3c30918ca2600de58f96586d555 Mon Sep 17 00:00:00 2001 From: Javid Askerov Date: Wed, 30 Oct 2019 21:43:50 +0400 Subject: [PATCH 088/857] translated heap --- translations/README-ru.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..f40e0e0785 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1803,11 +1803,11 @@ Google не возьмёт тебя на работу. - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- ### Treap - - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) +- ### Декартово дерево + - Комбинация бинарного поискового дерева и структуры данных "куча" + - [ ] [Декартово дерево](https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BA%D0%B0%D1%80%D1%82%D0%BE%D0%B2%D0%BE_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE) + - [ ] [Структуры данных: Декартово Дерево на пальцах (видео)](https://www.youtube.com/watch?v=6podLUYinH8) + - [ ] [Применения в множествах](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Linear Programming (videos) - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) From 801d7688e890577eaa02611662988eb74cc33369 Mon Sep 17 00:00:00 2001 From: Yuriy Kiselyov Date: Thu, 31 Oct 2019 16:20:15 +0300 Subject: [PATCH 089/857] Locality-Sensitive Hashing translate --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..4d64d5dc68 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1667,10 +1667,10 @@ Google не возьмёт тебя на работу. - ### HyperLogLog - [Как посчитать миллиард различных объектов, когда у вас есть только 1.5KB памяти](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) -- ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) +- ### Хэширование с учетом локальных особенностей + - используется для определения сходства документов + - противоположность MD5 или SHA, которые используются для определения, являются ли 2 документа / строки одинаковыми. + - [Simhashing (надеюсь) стало проще](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) From 582dc313d9b2c412547b5aadb957c0935197d32e Mon Sep 17 00:00:00 2001 From: Yuriy Kiselyov Date: Thu, 31 Oct 2019 16:32:39 +0300 Subject: [PATCH 090/857] "van Emde Boas Trees" translation --- translations/README-ru.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..93be5399d1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1672,9 +1672,9 @@ Google не возьмёт тебя на работу. - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) -- ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) +- ### Деревья ван Эмде Боаса + - [ ] [Разделяй и властвуй: Деревья ван Эмде Боаса (видео)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [ ] [Конспект лекций МТИ(Массачусетский технологический институт)](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) - ### Augmented Data Structures - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) From 670796240be16cc963783cdb4b59f027be1e76d8 Mon Sep 17 00:00:00 2001 From: Yuriy Kiselyov Date: Thu, 31 Oct 2019 16:36:30 +0300 Subject: [PATCH 091/857] Augmenting Data Structures translation --- translations/README-ru.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..97f72cb4f1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1676,8 +1676,8 @@ Google не возьмёт тебя на работу. - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [ ] [MIT Lecture Notes](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) -- ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) +- ### Расширенные структуры данных + - [ ] [CS 61B Лекция 39: Расширение структур данных](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits From 9439647484a8a2effde712b16775c0da6566f1e6 Mon Sep 17 00:00:00 2001 From: Yuriy Kiselyov Date: Thu, 31 Oct 2019 16:42:37 +0300 Subject: [PATCH 092/857] Geometry, Convex hull translation --- translations/README-ru.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 0864fa9697..9157c182e4 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1815,10 +1815,10 @@ Google не возьмёт тебя на работу. - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) +- ### Геометрия, Выпуклая оболочка (видео) + - [ ] [Graph Alg. IV: Введение в геометрические алгоритмы - Лекция 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ ] [Геометрические алгоритмы: Грэм и Джарвис - Лекция 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Разделяй и властвуй: Выпуклая оболочка, Медианный поиск](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - see videos below From d567b8500850433ec8e29f213e6a882665a9d942 Mon Sep 17 00:00:00 2001 From: Eugene Ilyushin Date: Tue, 19 Nov 2019 17:02:32 +0300 Subject: [PATCH 093/857] Additional Learning, Compilers --- translations/README-ru.md | 265 +++++++++++++++++++------------------- 1 file changed, 132 insertions(+), 133 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 96e5a160c6..b643245456 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1021,78 +1021,78 @@ Google не возьмёт тебя на работу. - Я знаю, что классической книгой для изучения паттернов является "Приемы объектно-ориентированного проектирования. Паттерны проектирования" (Джон Влиссидес, Ральф Джонсон, Ричард Хелм, Эрих Гамма), но "Паттерны проектирования" отлично подходят для тех, кто только начал изучать ООП. - [ ] [Удобный справочник: 101 шаблон проектирования и советы для разработчиков](https://sourcemaking.com/design-patterns-and-tips) -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) +- ### Комбинаторика (n выбрать k) & Вероятность + - [ ] [Math Математические навыки: Как найти факториал, перестановки и комбинации (видео)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Вероятность (видео)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: Больше про вероятность и цепи Маркова (видео)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - Макет курса: + - [ ] [Базовые основы теории вероятностей](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Только видео - 41 (простые и короткие): + - [ ] [Объяснение вероятности (видео)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-полные и аппрпоксимирующие алгоритмы + - Наиболее популярные NP-полные задачи, таких как задача коммивояжора и задача о рюкзаке, и то как их нужно идетифицировать на собеседованиях. + - Что означает NP-полная задача. + - [ ] [Вычислительная сложность (видео)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [Жадные алгоритмы. II & Введение в NP полноту (видео)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP полнота II & Понижение (видео)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP полнота III (видео)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP полнота IV (видео)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [ ] [CSE373 2012 - Лекция 23 - Введение в NP-полноту (видео)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Лекция 24 - NP-полнота доказательства (видео)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 25 - NP-полнота сложности (видео)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Сложность: P, NP, NP-полная, понижение (видео)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Сложность: Аппроксимирующие алгоритмы (видео)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Сложность: Алгортимы с фиксированными параметрами (видео)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig обсуждает близкое к оптимальному решение задачи коммивояжера: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. - -- ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock + - Страницы 1048 - 1140 в CLRS если у тебя она есть. + +- ### Кэш + - [ ] LRU кэш: + - [ ] [Волшебство LRU кэша (100 дней Google Dev) (видео)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Реализация LRU (видео)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU кэш (C++) (видео)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU кэш: + - [ ] [MIT 6.004 L15: Иерархия памяти (видео)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Вопросы кэширования (видео)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Процессы и треды + - [ ] Компьтерные науки 162 - Операционные системы (25 видео): + - видео 1-11 про процес сы и треды + - [Операционные системы и системное программирование (видео)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [В чем разница между процессами и тредами?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Покрытие: + - Процессы, треды, конкурентность + - разница между процессами и тредами + - процессы + - треды + - блокировки + - мьютексы + - семафоры + - мониторы + - как они работают + - взаимная блокировка - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - CPU активность, прерывания, преключение контекста + - Современные конкурирующие конструкции и многоядерные процессоры + - Ресурсы процесса (память: код, статическое хранилище, стек, куча, и файловые дискрипторы, i/o) + - Ресурсы треда (указанные выше (минус стек) с другими тредами одного процесса, но каждый имеет собственный pc, счетчик стека, регистры, и стек) + - Форк действительно копируется при записи (только для чтения), пока новый процесс не запишет в память, а затем сделает полную копию. + - Переключение контекста + - Как переключение контекста инициируется операционной системой и соответствующим оборудованием + - [ ] [треды в C++ (серии - 10 видео)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] конкуренция в Python (видео): + - [ ] [Короткие видео о тредах](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python треды](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Понимание Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [ссылка](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Параллельный Python с нуля: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Основная мысль David Beazley - Интересные темы (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Мьютексы в Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### Статьи - Здесь вы найдете статьи от Google, а также дургие известные статьи. @@ -1146,18 +1146,17 @@ Google не возьмёт тебя на работу. - пойми, что находится под обложкой библиотек и программных интерфейсов (API), которые ты используешь - можешь ли ты написать код для них? -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) +- ### Строковый поиск & манипуляции + - [ ] [Sedgewick - Суффиксные массивы (видео)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] [Sedgewick - Поиск подстроки (видео)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [1. Введение в поиск подстроки](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [2. Поиск подстроки грубой силой](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] [3. Кнут-Моррис Пратт](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [4. Бойер-Мур](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [Шаблон поиска в тексте (текст)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - + Если вам нужно больше подробностей по этому вопросу, см. Раздел «Соответствие строк» в [Дополнительная информация по некоторым предметам](#additional-detail-on-some-subjects) --- ## Проектирование систем, Масштабируемость, Обработка данных @@ -1340,7 +1339,7 @@ Google не возьмёт тебя на работу. Вот пример отличного введения в методичное, коммуникативное решение задач на собеседовании. Вы так же найдете это в книгах по интервью для программистов, но это подход мне кажется однм из лучших: [Схема разработки алгоритма](http://www.hiredintech.com/algorithm-design/) -[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) +[Мой процесс подготовки к собеседованию по программированию (Книга) Упражнения](https://googleyasheck.com/my-process-for-coding-interview-exercises/) У вас нет доски дома? Не удивительно. Я немного неормальный и у меня есть большая доска дома. Но вместо доски можно использователь и планшет для рисования из магазина художественных товаров, и практиковаться сидя на диване. Это моя "диванная доска". На фото я положил ручку чтобы иметь вы имели представление о масштабе. Если вы будете пользоваться ручкой, постоянно будет возникать желание что-то исправить и решение захламляется достаточно быстро. @@ -1463,55 +1462,55 @@ Google не возьмёт тебя на работу. - [ ] [Шаблоны проектирования: переиспользование компонент в ООП](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - аля книга "Банды четырех", или GOF - каноническая книга про шаблоны проектирования -- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) +- [ ] [Инженерия надежности сайта](https://landing.google.com/sre/book.html) + - [Инженерия надежности сайта: Как Google запускает продакшен системы](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) -## Additional Learning +## Дополнительная литература -- ### Dynamic Programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) +- ### Динамическое программирование + - Этот вопрос может быть довольно сложным, поскольку каждая разрешимая DP задача должна быть определена как рекурсивное отношение, и придумать его может быть сложно. + - Я предлагаю рассмотреть много примеров проблем с DP, пока у вас не будет четкого понимания паттерна. + - [ ] Видео: + - the Skiena видео может быть не удобно смотреть, так как он иногда использует доску, которая слишком мала + - [ ] [Skiena: CSE373 2012 - Лекция 19 - Введение в динамическое программирование (видео)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Лекция 20 - Изменить расстояние (видео)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Лекция 21 - Примеры динамического программирования (видео)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Лекция 22 - Приложения динамического программирования (видео)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Динамическое программирование 0 (начиная с 59:18) (видео)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Динамическое программирование I - Лекция 11 (видео)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Динамическое программирование II - Лекция 12 (видео)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Список проблем диннамического программирования: + [Динамическое программирование (видео)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Йельские лекции: + - [ ] [Динамическое программирование](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Compilers - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [ ] [Проблема вторичной структуры РНК (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [Алгоритм динамического программирования (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Иллюстрация алгоритма динамического программирования (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Время исполнения алгоритма динамического программирования (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP и рекурсивная имплементация (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Глобальное парное выравнивание последовательностей (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Локальное попарное выравнивание последовательностей (видео)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Компиляторы + - [ ] [Как работает компилятор за ~1 минуту (видео)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - Компиляторы (видео)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [C++ (видео)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [ ] [Понимание оптимизаций компилятора (C++) (видео)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Числа с плавающей точкой - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] 8-bit: [Представление чисел с плавающей точкой - 1 (video - есть ошибка в рассчетах - смотри описание видео)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit двоичный файл с плавающей точкой (видео)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + - [ ] [Абсолютный минимум, который должен знать каждый разработчик про Unicode]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [Что каждый программист абсолютно, положительно должен знать о кодировании и наборах символов для работы с текстом](http://kunststube.net/encoding/) - ### Порядок байт (Endianness) - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [ ] [Big Endian Vs Little Endian (видео)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (видео)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - Очень техническая беседа для разработчиков ядер. Не переживайте, если что-то выше вашего понимания. - Первой половины достаточно. @@ -1679,23 +1678,23 @@ Google не возьмёт тебя на работу. - ### Расширенные структуры данных - [ ] [CS 61B Лекция 39: Расширение структур данных](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) +- ### Префиксные деревья + - Обратите внимание, что есть разные виды префиксных деревьев. Некоторые имеют префиксы, некоторые нет, а некоторые используют строку вместо битов +         для отслеживания пути. + - Я читаю код, но не буду реализовывать. + - [ ] [Sedgewick - Префиксные деревья (3 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [1. R путь префиксных деревьев](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [2. Троичный поиск в префиксных деревьях](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [3. Символьные операции](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] [Примечания о структурах данных и методах программирования](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Короткие видео курса: + - [ ] [Введение в префиксные деревья (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Производительность префиксных деревьев (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Реализация префиксных деревьев (видео)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [Префиксное дерево: забытая структура данных](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - использование префиксных деревьев](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [Stanford лекция (использование в реальной жизни) (видео)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, сложные структуры данных, строки (может быть неясным до половине)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Сбалансированные деревья поиска - Знать как минимум один тип сбалансированного дерева поиска (и как его осуществить): From 175856a3eb717e5a1bedf3ff3e01e7f3afe9a208 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 28 Mar 2020 18:03:58 -0700 Subject: [PATCH 094/857] Adds Nick White LeetCode video playlist. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 50fa3eef29..ba6d3f3303 100644 --- a/README.md +++ b/README.md @@ -1294,6 +1294,10 @@ Take coding challenges every day, as many as you can. Coding Interview Question Videos: - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [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-) + - These are my new favorite. You can watch several in a short time. + - Good explanations of solution and the code. Challenge sites: - [LeetCode](https://leetcode.com/) From 219cf60866f7140255b9974d86be16582be91799 Mon Sep 17 00:00:00 2001 From: flyotlin Date: Sun, 29 Mar 2020 21:33:03 +0800 Subject: [PATCH 095/857] 0329 first commit --- translations/README-tw.md | 705 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 705 insertions(+) create mode 100644 translations/README-tw.md diff --git a/translations/README-tw.md b/translations/README-tw.md new file mode 100644 index 0000000000..8f22942a39 --- /dev/null +++ b/translations/README-tw.md @@ -0,0 +1,705 @@ +# Coding Interview University + +> 原先我為了成為一個軟體工程師而建立這份簡單的讀書主題清單(To-do list), +> 但這份To-do list隨著時間而膨脹成這個樣子。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> 你或許不需要像我讀一樣多。但是,每個讓你成為一位稱職工程師所需要的知識都在這裡了。 +> +> 我每天讀8~12小時的書,這樣持續了好幾個月。這是我的故事:[為什麼我為了Google面試而讀了8個月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> 在這份To-do list內的主題會讓你擁有足夠的知識去面對幾乎每家軟體公司的專業面試, +> 這些公司包含了科技巨獸,例如Amazon、Facebook、Google,或者是Microsoft。 +> +> *祝你好運!* + +
+翻譯: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) + +
+ +
+正在翻譯的項目: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) + +
+ +## What is it? + +這是我為了從一個網頁開發者(自學,並且沒有任何與資工、電腦科學有關的學位),成為一個大公司軟體工程師,持續好幾個月的讀書計畫。 + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +這是為了那些**新手軟體工程師**,或者是那些想要轉換跑道,從軟體/網頁開發者轉為軟體工程師(需要資工、電腦科學的知識)的人。 + +請注意就算你有多年的軟體/網頁開發經驗,那些著名的大型軟體公司,像是Google、Amazon、Facebook,或是Microsoft事實上把軟體/網頁開發(Software/Web Development)與軟體工程(Software Engineering)視為不同,而後者需要的是電腦科學/資訊工程的知識。 + +如果你想成為一個可靠的工程師或者是Operation Engineer,閱讀並且學習更多這份清單中的The Optional List(裡面包含網路與資訊安全的知識)。 + +--- + +## 目錄 + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [不要覺得自己不夠聰明](#dont-feel-you-arent-smart-enough(不要覺得自己不夠聰明)) +- [關於影片資源](#about-video-resources(關於影片資源)) +- [面試過程&面試準備](#interview-process--general-interview-prep(面試過程&面試準備)) +- [面試時專精一種程式語言](#面試時專精一種程式語言(Pick-One-Language-for-the-Interview)) +- [書單](#書單(book-list)) +- [在你開始之前](#在你開始之前) +- [這份清單沒有包含的內容](#這份清單沒有包含的內容) +- [先備知識](#先備知識) +- [每日計畫](#每日計畫) +- [演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis)](#演算法複雜度(Algorithmic-complexity)--Big-O--漸進分析(Asymptotic-analysis)) +- [資料結構](#資料結構) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [排序](#排序) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +當我開始這項計畫的時候,我不知道Stack與Heap的差別,不知道時間複雜度(Big-O),不知道樹狀結構(Tree),也不知道如何遍歷一個圖(Graph)。過去如果我需要寫一個排序演算法(Sorting Algorithm),那個code一定是個災難。我過去都用程式語言中內建的資料結構(Data Structure),對於資料結構裡面的實作方法跟原理我完全沒有任何的概念。除非我的程式碰到了"out of memory"的錯誤我才會去找解決方法,否則我從不特別去花費心思管理程式中的記憶體配置。雖然我有用過多維陣列(Multidimensional Arrays)跟關聯陣列(Associative Arrays),但我從來沒有自己時做過資料結構。 + +這是個遠大的計畫,或許要花上你數個月的時間。如果你對其中大部分的東西已經很熟悉的話,那麼執行這項計畫所花費的時間將減少許多。 + +## How to use it + +下面每項是大綱,你需要從上到下的去理解這些大綱。 + +我用了Github-flavored markdown語法,其中包含了可以確定完成進度的任務清單。 + + +**建立一個新的Branch以使用Github-flavored markdown的勾選功能。只要在[]中打x,像是: [x]** + + + Fork一個branch,並且跟隨以下的指令 + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + 在你完成了一些目標後,在框框中打x + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/master` + +`git push --force` + +[更多有關Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## Don't feel you aren't smart enough(不要覺得自己不夠聰明) + +- 大多數成功的軟體工程師都非常聰明,但他們都有一種覺得自己不夠聰明的不安全感。 +- [The myth of the Genius Programmer(天才Programmer的迷思)](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech(不要單打獨鬥:面對科技中的隱形怪物)](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## About Video Resources(關於影片資源) + +有些影片要註冊Coursera或者Edx的課程後才能觀看,也就是所謂的MOOCs。有時候某些課程需要等待好幾個月才能註冊,這期間你無法觀看這些課程的影片。 + + 我非常喜歡那些大學的線上課程。感謝你們幫忙加入一些免費、可隨時觀看的公開資源,像是那些線上課程的YouTube影片。 + +## Interview Process & General Interview Prep(面試過程&面試準備) + +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] 如何錄取Big Tech(Google, Amazon, Facebook, Apple): + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] Coding面試解密: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Facebook Coding面試解密: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] 準備課程: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - 從前Google面試官身上學習如何充實自己,讓自己能夠應付軟體工程師的面試。 + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Python面試準備課程,其中包含了資料結構、演算法、模擬面試等等。 + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Python免費資料結構及演算法課程。 + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 超過100種實際的資料結構及演算法練習。名師指導讓你準備好面試以及工作的實際情況。 + +## 面試時專精一種程式語言(Pick One Language for the Interview) + +在面試的coding階段,你可以選擇任何一個你擅長的程式語言。但多數大公司僅有以下選擇: + +- C++ +- Java +- Python + +你也可以選擇以下的程式語言,但可能會有某些限制: + +- JavaScript +- Ruby + +我之前寫過一篇關於在面試時選擇程式語言的文章:[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +你需要非常熟練這個程式語言,並且對他非常了解。 + +閱讀更多有關程式語言的選擇: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[程式語言相關資源](programming-language-resources.md) + +因為我正在學習C、C++以及Python,所以下面會出現一些有關於這些程式語言的資源。 + +## 書單(Book List) + +為了節省你的時間,以下是已經縮減過的書單。 + +### 面試準備(Interview Prep) + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - 附有解答 in C++ and Java + - 內含很棒的coding面試解密 + - 不會很困難,大多問題都比面試中的還簡單(從我讀過的) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - 附有解答 in Java + +### 如果你有額外的時間(If you have tons of extra time): + +選擇以下其中一個: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] 程式面試精華 (Java版) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### 程式語言精進 + +***面試時你需要選擇一種程式語言(詳如上述)*** + +以下是一些我對程式語言的建議。這邊沒有所有種類程式語言的資源,所以歡迎補充。 + +如果你讀過以下其中一本,你應該已經具備了所有解決coding問題所需要的資料結構與演算法的知識。除非你想要複習,否則**你可以跳過這個計畫中所有的教學影片**。 + +[額外程式語言精進資源](programming-language-resources.md) + +### C++ + +我沒讀過這兩本書,但他們頗受好評。作者是Sedgewick,他超讚的! + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +如果你有更好的C++書籍,請告訴我。我正在蒐集全面性的資源。 + +## Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 在Coursera平台上有影片、書籍內容、(以及Sedgewick!) + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +或者: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - 作者:Goodrich、Tamassia、Goldwasser + - 被作為UC Berkeley資工系入門課程的補充教材 + - 看看下面我對這本書的Python版的書評。兩本書都包含了相同的主題。 + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - 作者:Goodrich、Tamassia、Goldwasser + - 我超愛這本書。他包含了所有東西。 + - 很Python的Code! + - 我的書評: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +## 在你開始之前 + +這份清單隨著時間越來越大。當然,這也同時代表我越來越難以掌握他的整體內容。 + +以下是一些清單內的錯誤,希望能讓你避免這些錯誤,並且有更好的學習體驗。 + +### 1. 你沒辦法記住所有事情 + +我看了數小時的影片,同時也寫下了大量的筆記。但過了幾個月後,大部分的東西都消失的無影無蹤。我花了三天重新看過我的筆記,並做了小字卡幫助我複習他們。 + +請閱讀以下的文章以免重蹈覆轍: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +有人推薦給我的課程(但我還沒看過:( ): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) + +### 2. 使用小字卡 + +為了解決剛剛提到的遺忘問題,我自己寫了一個小字卡網站。網站上可以新增兩種小字卡,一般的以及程式碼。 +每一種類的小字卡都有不同的格式。 + +這個小字卡網站在製作時便是以行動裝置優先的方式設計的,好處是無論我在何處,我都可以在我的手機與平板上複習。 + +製作屬於自己的免費小字卡: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +我的小字卡資料庫中包含了組合語言、Python的小知識、機器學習以及統計。這些內容已經超出了原本他的預設。 + +**關於小字卡**:當你第一次知道答案後,別馬上把那張小字卡標記為已知。反覆複習這張小字卡,直到每次都能答對後才是真正學會了這個問題。反覆的動作會讓這個知識深深地烙印在你的腦海內。 + +這裡有個替代我小字卡的網站[Anki](http://ankisrs.net/),很多人向我推薦過他。這個網站用同一個字卡重複出現的方式讓你牢牢地記住他。 +這個網站非常容易使用,支援多平台,並且有雲端同步功能。在iOS平台上收費25美金,其他平台免費。 + +這是我用Anki這個網站裡的格式所儲存的小字卡資料庫: https://ankiweb.net/shared/info/25173560 (感謝 [@xiewenya](https://github.com/xiewenya)) + +### 3. 學習資料結構與演算法的同時,也要做一些Coding面試中常出現的問題 + +把你學過的東西應用在解題上面,否則你很快就會忘了他們。這是一個過來人的經驗談。一旦你自認學會了一個主題,像是Linked List之類的,打開任何一本Coding面試問題書籍,做一些裡面有關Linked List的問題。接著繼續讀後面的主題。然後,再回頭反覆做有關Linked List、遞迴或者其他任何東西(原文為Recursion,非Recursive)的題目。但切記一定在讀這些資料結構、演算法的同時,也要實際去寫一些有關這些東西的題目。公司錄取你是為了能有即戰力能夠上戰場,而非一個紙上談兵的人。這邊我覺得還不錯的書籍和網站。更多: [Coding Question Practice](#coding-question-practice) + +### 4. 複習,複習,再複習 + +我自己寫了一些有關於ASCII Code、網路OSI模型、Big-O(時間複雜度)等等的小抄。我有空的時候就會把他們拿出來看一看複習一下。 + +打Code累了的話就休息半個小時,並且複習你的小字卡。 + +### 5. 專注 + +能夠干擾你,浪費你寶貴時間的東西很多。因此,專注集中精神實在很難。放點純音樂能幫上一些忙。 + +## 這份清單沒有包含的內容 + +以下為普遍但沒有包含在這份清單內的技術: + +- SQL +- Javascript +- HTML、CSS,以及其他前後端的技術 + +## 每日計畫 + +每個主題所花費的時間都不盡相同,有些只要一天,有些需要花上數天。有些主題只有單純的知識而無包含實作。 + +每天我選擇下面其中一個主題,看跟該主題相關的影片,再用下面的程式語言實作: +- C - 用使用了struct *或者其他東西當作參數的struct以及函數 +- C++ - 不要使用內建的東西 +- C++ - 用C++內建的東西,像是STL的Linked List,std::list。 +- Python - 使用內建的東西(為了練習Python) +- 寫一些測試來驗證自己寫的東西是正確的,像是用assert()等簡單的方法。 +- 你也可以用Java來練習,上面只是我自己的方法。 + +你不需要學會所有的程式語言,你只需要專精在某個程式語言 [one language for the interview](#pick-one-language-for-the-interview). + +為什麼要這樣寫Code? +- 練習,練習,再練習,直到我對他產生厭惡感,並且能輕鬆無誤地寫出那些Code。(有些東西需要特別記住,像是在邊界的時候會出現問題(edge cases),或者一些小細節) +- 全部自己來(像是手動分配/釋放記憶體,不要依賴語言中的garbage collection的功能(除了Python或者Java)) +- 利用語言中內建的東西及工具,之後在實際工作的時候才能得心應手(畢竟我不想在工作時手刻一個Linked List)。 + +我沒有時間做每個主題中的每個東西,但我會盡力而為。 + +下面是我自己寫的程式碼: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + + 你不需要記住每個演算法裡面的內容。 + + 試試看把程式碼寫在白板或者紙上而不是電腦上。接著用一些測資來測試他。最後才用電腦來驗證。 + + ## 先備知識 + +- [ ] **學習C++** + - C語言無所不在。在你學習的過程中,幾乎任何一本書、課程,或者影片中你都能看到他的身影。 + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - 這本書還滿輕薄的,但他能讓你有初步對於C語言的認識。看著這本書並且練習,你能更快地掌握C語言。理解C語言能讓你更了解程式的運作以及內部記憶體配置。 + - [answers to questions](https://github.com/lekkas/c-algorithms) +- [ ] **一個程式在電腦中是如何運作的:** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +## 演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis) + +- 沒有任何東西能實作 +- 這個主題有許多影片,看到你真正了解他為止。你可以隨時回來複習他。 +- 如果這些課程太過數學的話,你可以去看看最下面離散數學的影片,他能讓你更了解這些數學背後的來源以及原理。 +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [影片](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [投影片](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +## 資料結構 +- ### 陣列 + - 實作一個可以自動調整大小的陣列(動態陣列vector) + - [ ] (動態)陣列背後原理: + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [ ] 實作動態陣列(可變、可動態調整大小的陣列) + - [ ] 練習在程式中用陣列以及指標,透過計算指標而存取該內容,而不是直接用索引。 + - [ ] 直接動態生成一個新的陣列 + - 可以生成一個int型別的陣列,但不要使用語言提供的功能 + - 從16,或者更大的數開始寫,像是2的次方 - 16、32、64、128。 + - [ ] size() - 陣列中元素個數 + - [ ] capacity() - 陣列能存的最大元素個數 + - [ ] is_empty() + - [ ] at(index) - 傳回該索引值的元素,附有邊界檢查(boundary check) + - [ ] push(item) + - [ ] insert(index, item) - 把元素插入該索引值,把原本在該索引值的元素往右邊移動。 + - [ ] prepend(item) - 可以把元素插入索引值為0的地方。 + - [ ] pop() - 移除陣列中最後一個元素,並回傳該元素的值。 + - [ ] delete(index) - 刪除在該索引值的元素,並且把右邊剩下元素全部往左移。 + - [ ] remove(item) - 從陣列中尋找該數值,並且移除他(就算陣列中數個地方都有這個數值)。 + - [ ] find(item) - 從陣列中尋找該數值,並且傳回最前面找到該數值的索引值,如果沒有則傳回-1。 + - [ ] resize(nex_capacity) // private function + - 當陣列已經用盡了所有容量後,把陣列的容量*2。 + - 如果移除掉一個元素後,陣列實際大小是最大容量的1/4,則把陣列容量減半。 + - [ ] 時間複雜度 + - O(1) 在陣列末端插入/刪除元素 + - O(n) 在任何地方插入/刪除元素 + - [ ] 空間複雜度 + - 在記憶體中的存放位置是連續的,這種儲存方式有助於存取的性能。 + - 所需空間 = (陣列容量,>=n) * 元素所需大小,但就算結果為2n,實際上仍算成O(n) + +- ### Linked Lists + - [ ] Linked Lists背後原理: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - 沒有完整的code,裡面只包含了用struct實作節點的方式以及其記憶體配置。 + - [ ] Linked List vs 陣列: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] 小心!: 你需要一些關於指標的指標(Pointer to pointer)的知識: + (當你回傳一個指標到函式,這個動作可能會改變指標所指向的地址) + 這個頁面僅提供基本對於指標的指標的認識。我不推薦這個遍歷linked list的方式,因為他用的方式太過神奇,所以可讀性以及維護性並不好。 + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] 實作Linked list (我做了有末端指標(tail pointer)的版本以及無末端指標的版本): + - [ ] size() - 回傳linked list裡面的元素個數 + - [ ] empty() - 回傳型態:bool,如果linked list為空,回傳true + - [ ] value_at(index) - 回傳索引值為index的元素的數值,第一個元素索引值為0,以此類推 + - [ ] push_front(value) - 從linked list的起始點加入新的元素 + - [ ] pop_front() - 移除第一個元素,並且回傳該元素的數值 + - [ ] push_back(value) - 在linked list末端加入新元素 + - [ ] pop_back() - 移除最後一個元素,並且回傳該元素的數值 + - [ ] front() - 回傳第一個元素的數值 + - [ ] back() - 回傳最後一個元素的數值 + - [ ] insert(index, value) - 把新元素插入到該索引值,而新元素指向原本在該索引值的元素。 + - [ ] erase(index) - 刪除該索引值的元素(節點) + - [ ] value_n_from_end(n) - 回傳從末端開始計算的第n個元素的數值 + - [ ] reverse() - 反轉該linked list + - [ ] remove_value(value) - 刪除第一個為該數值的元素(意即7 2 2 1,要刪除2的話,只刪除index:1的那個2) + - [ ] 雙向linked List + - [背後原理(影片)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - 不需實作 + +- ### Stack(堆疊) + - [ ] [Stacks(影片)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] 無須實作,可以用陣列實作,但這樣太過簡單了。 + +- ### Queue(佇列) + - [ ] [使用Queues(先進先出)First-In First-Out(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue(影片)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] 使用linked list實作,包含末端指標(tail pointer): + - enqueue(value) - 在queue末端加入元素 + - dequeue() - 刪除當時queue中最早進入的元素(意即queue中第一個元素),並且回傳該元素的值。 + - empty() + - full() + - [ ] 複雜度: + - + - enqueue: O(1) (平均情況,無論對於用linked list或陣列實作的方法) + - dequeue: O(1) (linked list與陣列) + - empty: O(1) (linked list與陣列) + +- ### 雜湊表(Hash table) + - [ ] 影片: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] 線上開放式課程: + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] 分散式雜湊表(distributed hash table): + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] 實作雜湊表(用陣列以及線性探測(linear probing)) + - hash(k, m) - m:雜湊表的大小 + - add(key, value) - 如果key已經存在,則更新該key的value + - exists(key) + - get(key) + - remove(key) + +## 更多 + +- ### 二分搜尋法(Binary Search) + - [ ] [二分搜尋法(影片)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [二分搜尋法(影片)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [細節](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] 實作: + - 二分搜尋法 (對已經排列好的數列) + - 用遞迴(recursion)的方法實作二分搜尋法 + +- ### 位元運算(Bitwise operations) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] 一補數與二補數 + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] 絕對值: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## 樹狀結構(Tree) + +- ### Trees - 重點與背景知識 + - [ ] [Series: Core Trees (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (影片)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS(廣度優先搜尋)重點: + - 每一層的順序(BFS,用queue) + - 時間複雜度: O(n) + - 空間複雜度: 最佳: O(1), 最糟: O(n/2)=O(n) + - DFS(深度優先搜尋)重點: + - 時間複雜度: O(n) + - 空間複雜度: + 最佳: O(log n) - 平均. 樹的高度 + 最糟: O(n) + - 中序 (DFS: 左子樹、根、右子樹) + - 後序 (DFS: 左子樹、右子樹、根) + - 前序 (DFS: 根、左子樹、右子樹) + +- ### (二元搜尋樹)Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] 實作: + - [ ] insert // 把數值插入到二元搜尋樹當中 + - [ ] get_node_count // get count of values stored + - [ ] print_values // 把二元搜尋樹中的數值從小到大輸出 + - [ ] delete_tree + - [ ] is_in_tree // 如果給定的數值位於二元搜尋樹當中則回傳true + - [ ] get_height // 回傳該節點內的高度(單一節點的樹高度為1) + - [ ] get_min // 回傳二元搜尋樹當中的最小值 + - [ ] get_max // 回傳二元搜尋樹當中的最大值 + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // 回傳二元搜尋樹當中大小在給定數值後一位的數值,如果沒有則回傳-1 + +- ### Heap / Priority Queue / Binary Heap + - 一般將此資料結構以樹的方式視覺化,但實際上是以線性的方式儲存(陣列、linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] 實作max heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap + - 重點: using a min heap instead would save operations, but double the space needed (cannot do in-place). + +## 排序 \ No newline at end of file From 36ce4ffa4afe86aae9990a300a7e4154e1347a46 Mon Sep 17 00:00:00 2001 From: Anthony Morris Date: Mon, 30 Mar 2020 07:43:49 -0700 Subject: [PATCH 096/857] Update hash table course link The [Coursera data structures course](https://www.coursera.org/learn/data-structures) covers hash tables in week 4, not week 3. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba6d3f3303..f560ccf988 100644 --- a/README.md +++ b/README.md @@ -604,7 +604,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] distributed hash tables: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) From 8df6438c623f38f38b42a7ae8b3bffeab9a5c513 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 4 Apr 2020 11:48:04 -0700 Subject: [PATCH 097/857] Adds FisherCoder links. --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f560ccf988..ba43599973 100644 --- a/README.md +++ b/README.md @@ -1298,18 +1298,24 @@ Coding Interview Question Videos: - [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - These are my new favorite. You can watch several in a short time. - Good explanations of solution and the code. +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: - [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerEarth](https://www.hackerearth.com/) + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) +- [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) From f67b2e470311c9dedb7e7b75916df4732b481feb Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 4 Apr 2020 11:48:55 -0700 Subject: [PATCH 098/857] Simple text updates. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba43599973..cea06f0636 100644 --- a/README.md +++ b/README.md @@ -1296,8 +1296,8 @@ Coding Interview Question Videos: - [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-) - - These are my new favorite. You can watch several in a short time. - Good explanations of solution and the code. + - You can watch several in a short time. - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: From 9cb94e93fc6243043026ebdc9e166b2ceef4ee28 Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 8 Apr 2020 21:57:41 +0200 Subject: [PATCH 099/857] delete readme-pl deleted --- translations/README-pl.md | 1977 ------------------------------------- 1 file changed, 1977 deletions(-) delete mode 100644 translations/README-pl.md diff --git a/translations/README-pl.md b/translations/README-pl.md deleted file mode 100644 index a657f1eb1d..0000000000 --- a/translations/README-pl.md +++ /dev/null @@ -1,1977 +0,0 @@ -# Coding Interview University - Uniwersytet przygotowujący do rozmowy kwalifikacyjnej w Google - -Oryginał (angielski): https://github.com/jwasham/coding-interview-university - ->**Pierwotnie, to była mała lista rzeczy do nauki, ale urosła ona do dużych rozmiarów, jak to można dzisiaj zobaczyć. -Praca w Google była główną motywacją, stąd nazwa. [Nie dostałem się do Google'a](https://googleyasheck.com/i-didnt-get-hired-heres-why/), -ale nazwa pozostanie taka sama, bo zmiana mogła by zmylić wielu z was. Zagadnienia zawarte tutaj, przygotują was do pracy w każdej firmie, -wliczając w to gigantów: Amazon, Microsoft, Google i Facebook.** -> ->*Powodzenia!* - -Tłumaczenia: -- [中文版本](translations/README-cn.md) -- Niekompletne tłumaczenia: - - [Español](https://github.com/jwasham/coding-interview-university/issues/80) - - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - - [Vietnamese](https://github.com/jwasham/coding-interview-university/issues/92) - - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - - [French](https://github.com/jwasham/coding-interview-university/issues/89) - - [Russian](https://github.com/jwasham/coding-interview-university/issues/87) - - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - - [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113) - - [Korean](https://github.com/jwasham/coding-interview-university/issues/118) - - [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - -## Co to jest? -Jest to mój wielomiesięczny program nauczania mający na celu awans z poziomu web developera (samouka, bez studiów informatycznych) -do poziomu inżyniera oprogramowania w Google. - -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -Znajdziesz tutaj wiele rzeczy związanych z Google, ale starałem się uogólnić tę listę, aby była przydatna dla każdego. - -Ta długa lista została napisana na podstawie porad i wskazówek Google'a, więc znajdziesz tu rzeczy, które musisz wiedzieć. -Są tutaj też dodatkowe rzeczy, które dodałem na końcu, mogące pojawić się na rozmowie kwalifikacyjnej lub okazać się pomocne -w rozwiązywaniu problemów. Wiele pozycji jest z "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" od Steva Yegge i czasem są też przepisane słowo w słowo z notek Google'a. - -Wybrałem to co musisz wiedzieć spośród rzeczy zalecanych przez Yegge'a. Poprawiłem także listę wymagań podanych przez niego -na podstawie informacji, które otrzymałem od swojego kontaktu w Google. Projekt jest napisany z myślą o **początkujących inżynierach oprogramowania** -lub tych, którzy przerzucają się z oprogramowania/web-devu na inżynierę oprogramowania, gdzie informatyka (computer science) jest potrzebna. Jeżeli masz wiele lat doświadczenia, spodziewaj się trudniejszej rozmowy kwalifikacyjnej. -[Przeczytaj więcej tutaj (EN)](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). - -Weź pod uwagę fakt, iz Google traktuje oprogramowanie/web-dev inaczej niż inżynierę oprogramowania -i wymagają szczegołowej wiedzy z zarkesu informatyki. - -Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemów, ucz się -więcej z dodatkowej listy (sieć, bezpieczeństwo). - ---- - -## Table of Contents - -- [Co to jest?](#co-to-jest) -- [Dlaczego?](#dlaczego) -- [Jak używać?](#jak-używać) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory) - - [Parity & Hamming Code](#parity--hamming-code) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Tries](#tries) - - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming) - - [Geometry, Convex hull](#geometry-convex-hull) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) - - [Go](#go) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) - ---- - -## Dlaczego? - -Kiedy zaczynałem ten projekt, nie odróżniałem stacka od heapu, nie wiedziałem o żadnej notacji "duże O", nic o drzewkach, -ani jak przeszukiwać graf. Gdybym miał napisać algorym sortujący, mówię Ci, byłby zły. Każda struktura danych, którą używałem -była wpudowana w język, kompletnie nie wiedziałem jak działają. Nigdy nie musiałem zarządzać pamięcią, dopóki proces nie wyrzucił -błędu o "braku pamięci". Używałem kilku wielowymiarowych tablic i tysięcy tablic asocjacyjnych w swoim życiu, ale nigdy -nie stworzyłem struktury od podstaw. - -To długi plan. Może zająć Ci nawet kilka miesięcy. Jeśli jednak jesteś zaznajomiony z tymi rzeczami, zajmie Ci to o wiele mniej czasu. - -## Jak używać? - -Wszystko co znajdziesz poniżej jest planem, powinieneś zaznaczać wpisy od góry do dołu. - -Używam specjalniej, GitHubowej odmiany markdowna. - -**Stwórz nową gałąź (branch), abyś mógł zaznaczać element stawiając x w nawiasie, tj. [x]** - - Zforkuj galąź i wpisz poniższe polecenia - -`git checkout -b progress` - -`git remote add jwasham https://github.com/jwasham/coding-interview-university` - -`git fetch --all` - - Zaznacz wszystkie pola X-em kiedy skończysz. - -`git add . ` - -`git commit -m "Marked x" ` - -`git rebase jwasham/master ` - -`git push --force ` - -[Więcej o markdownie na GitHubie](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -## Don't feel you aren't smart enough -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) - -## About Video Resources - -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. - - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. - - -## Interview Process & General Interview Prep - -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] How to Get a Job at the Big 4: - - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - -- [ ] Prep Course: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - -## Pick One Language for the Interview - -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: - -- C++ -- Java -- Python - -You could also use these, but read around first. There may be caveats: - -- JavaScript -- Ruby - -You need to be very comfortable in the language and be knowledgeable. - -Read more about choices: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ - -[See language resources here](programming-language-resources.md) - -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. - -## Book List - -This is a shorter list than what I used. This is abbreviated to save you time. - -### Interview Prep - -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C++ and Java - - recommended in Google candidate coaching - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - -If you have tons of extra time: - -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - all code is in C++, very good if you're looking to use C++ in your interview - - a good book on problem solving in general. - -### Computer Architecture - -If short on time: - -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -If you have more time (I want this book): - -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment - -### Language Specific - -**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. - -If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. - -[Additional language-specific resources here.](programming-language-resources.md) - -### C++ - -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. - -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. - -### Java - -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) - -OR: - -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. - -### Python - -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - - -### Optional Books - -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** - -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace - (and important) graph problems are – they should be part of every working programmer's toolkit. The book also - covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half - of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve - them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a - great way to learn how to identify hundreds of problem types." - - Can rent it on kindle - - Half.com is a great resource for textbooks at good prices. - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." - - Half.com is a great resource for textbooks at good prices. - - aka CLR, sometimes CLRS, because Stein was late to the game - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. - -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - - Would rather spend time on coding problems from another book or online coding problems. - - -## Before you Get Started - -This list grew over many months, and yes, it kind of got out of hand. - -Here are some mistakes I made so you'll have a better experience. - -### 1. You Won't Remember it All - -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. - -Read please so you won't make my mistakes: - -[Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/) - -### 2. Use Flashcards - -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. - -I made a mobile-first website so I could review on my phone and tablet, wherever I am. - -Make your own for free: - -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): - -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. - -**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. 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. - -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) - -### 3. Review, review, review - -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. - -Take a break from programming problems for a half hour and go through your flashcards. - -### 4. Focus - -There are a lot of distractions that can take up valuable time. Focus and concentration are hard. - -## What you won't see covered - -This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent -technologies but were not mentioned in those notes: - -- SQL -- Javascript -- HTML, CSS, and other front-end technologies - -## The Daily Plan - -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. - -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. - -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). - -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) - -I may not have time to do all of these for every subject, but I'll try. - -You can see my code here: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) - -You don't need to memorize the guts of every algorithm. - -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. - -## Prerequisite Knowledge - -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) - -- [ ] **How computers process a program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - -## Algorithmic complexity / Big-O / Asymptotic analysis -- nothing to implement -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) - - - If some of the lectures are too mathy, you can jump down to the bottom and - watch the discrete mathematics videos to get the background knowledge. - -## Data Structures - -- ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold - - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds - - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - -- ### Linked Lists - - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. - - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement - -- ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] Will not implement. Implementing with array is trivial. - -- ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) - - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element - - empty() - - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) - -- ### Hash table - - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value - - exists(key) - - get(key) - - remove(key) - -## More Knowledge - -- ### Binary search - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: - - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) - -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms - - BFS (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max - - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: - - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. - -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. - -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes from Yegge: - - There are three basic ways to represent a graph in memory: - - objects and pointers - - matrix - - adjacency list - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- Yegge: If you get a chance, try to study up on fancier algorithms: - - [ ] Dijkstra's algorithm - see above - 6.006 - - [ ] A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books - -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - -- ### Dynamic Programming - - **NOTE:** DP is a valuable technique, but it is not mentioned on any of the prep material Google provides. But you could get a problem where DP provides an optimal solution. So I'm including it. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. - -- ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### Papers - - These are Google papers and well-known papers. - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos - -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - can you implement them? - -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - ---- - -## System Design, Scalability, Data Handling -- **You can expect system design questions if you have 4+ years of experience.** -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations from Yegge: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the Video Series section. -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions - - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - ---- - -## Final Review - - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. - -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) - ---- - -## Coding Question Practice - -Now that you know all the computer science topics above, it's time to practice answering coding problems. - -**Coding question practice is not about memorizing answers to programming problems.** - -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for 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/) - -[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) - -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. - -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) - -Supplemental: - -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) - -**Read and Do Programming Problems (in this order):** - -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - -See [Book List above](#book-list) - -## Coding exercises/challenges - -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. - -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) - -Coding Interview Question Videos: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - -Challenge sites: -- [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) - -Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - -## Once you're closer to the interview - -- [ ] Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) - -## Your Resume - -- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - - -## Be thinking of for when the interview comes - -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. - -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? - -## Have questions for the interviewer - - Some of mine (I already may know answer to but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? - -## Once You've Got The Job - -Congratulations! - -Keep learning. - -You're never really done. - ---- - - ***************************************************************************************************** - ***************************************************************************************************** - - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. - - ***************************************************************************************************** - ***************************************************************************************************** - ---- - -## Additional Books - -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - an oldie but a goodie -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) - -## Additional Learning - -- ### Compilers - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - -- ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. - -- ### Emacs and vi(m) - - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor - - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - -- ### Unix command line tools - - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### Information theory (videos) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. - -- ### Parity & Hamming Code (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### Entropy - - also see videos below - - make sure to watch information theory videos first - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - -- ### Cryptography - - also see videos below - - make sure to watch information theory videos first - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- ### Compression - - make sure to watch information theory videos first - - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### Networking - - **if you have networking experience or want to be a systems engineer, expect questions** - - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) - -- ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### Garbage collection - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### Parallel Programming - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - -- ### Messaging, Serialization, and Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) - -- ### Fast Fourier Transform - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - -- ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - -- ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - -- ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) - -- ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### Balanced search trees - - Know least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - [ ] **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - [ ] **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - [ ] **Red/black trees** - - these are a translation of a 2-3 tree (see below) - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - - [ ] **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - [ ] **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - [ ] **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - - [ ] **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - - -- ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - -- ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - -- ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - -- ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - -- ### Treap - - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - -- ### Linear Programming (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - -- ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - -- ### Discrete math - - see videos below - -- ### Machine Learning - - [ ] Why ML? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ - -- ### Go - - [ ] Videos: - - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] Books: - - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) - - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) - --- - -## Additional Detail on Some Subjects - - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? - -- [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -- [ ] **String Matching** - - [ ] Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP): - - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer–Moore string search algorithm - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped - -- [ ] **Sorting** - - - [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) - -## Video Series - -Sit back and enjoy. "Netflix and skill" :P - -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) - -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) - -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) - -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - -- [ ] CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) - -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) - -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) - -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) - -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) - -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) - -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) - -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) - -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) - -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) - -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) - -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) - -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) - -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) - -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) - -## Computer Science Courses - -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) From ace19f711f18ec2f00b7aa325ebc1076bdd3bb15 Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 8 Apr 2020 21:58:47 +0200 Subject: [PATCH 100/857] create readme-pl initial --- translations/README-pl.md | 1978 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1978 insertions(+) create mode 100644 translations/README-pl.md diff --git a/translations/README-pl.md b/translations/README-pl.md new file mode 100644 index 0000000000..cea06f0636 --- /dev/null +++ b/translations/README-pl.md @@ -0,0 +1,1978 @@ +# Coding Interview University + +> I originally created this as a short to-do list of study topics for becoming a software engineer, +> but it grew to the large list you see today. After going through this study plan, [I got hired +> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> You probably won't have to study as much as I did. Anyway, everything you need is here. +> +> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> The items listed here will prepare you well for a technical interview at just about any software company, +> including the giants: Amazon, Facebook, Google, and Microsoft. +> +> *Best of luck to you!* + +
+Translations: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) + +
+ +
+Translations in progress: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) + +
+ +## What is it? + +This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +This is meant for **new software engineers** or those switching from +software/web development to software engineering (where computer science knowledge is required). If you have +many years of experience and are claiming many years of software engineering experience, expect a harder interview. + +If you have many years of software/web development experience, note that large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. + +If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). + +--- + +## Table of Contents + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [The Daily Plan](#the-daily-plan) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. +Every data structure I've ever used was built into the language, and I didn't know how they worked +under the hood at all. I've never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and +thousands of associative arrays, but I've never created data structures from scratch. + +It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. + +## How to use it + +Everything below is an outline, and you should tackle the items in order from top to bottom. + +I'm using Github's special markdown flavor, including tasks lists to check progress. + +**Create a new branch so you can check items like this, just put an x in the brackets: [x]** + + + Fork a branch and follow the commands below + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + Mark all boxes with X after you completed your changes + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/master` + +`git push --force` + +[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + + +## Don't feel you aren't smart enough + +- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## About Video Resources + +Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. + + I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. + I like using university lectures. + + +## Interview Process & General Interview Prep + +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Prep Course: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + +## Pick One Language for the Interview + +You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: + +- C++ +- Java +- Python + +You could also use these, but read around first. There may be caveats: + +- JavaScript +- Ruby + +Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +You need to be very comfortable in the language and be knowledgeable. + +Read more about choices: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[See language resources here](programming-language-resources.md) + +You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. + +## Book List + +This is a shorter list than what I used. This is abbreviated to save you time. + +### Interview Prep + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - answers in C++ and Java + - this is a good warm-up for Cracking the Coding Interview + - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +### If you have tons of extra time: + +Choose one: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### Language Specific + +**You need to choose a language for the interview (see above).** + +Here are my recommendations by language. I don't have resources for all languages. I welcome additions. + +If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. +**You can skip all the video lectures in this project**, unless you'd like a review. + +[Additional language-specific resources here.](programming-language-resources.md) + +### C++ + +I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. + +### Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - videos with book content (and Sedgewick!) on coursera: + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +OR: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - by Goodrich, Tamassia, Goldwasser + - used as optional text for CS intro course at UC Berkeley + - see my book report on the Python version below. This book covers the same topics. + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +## Before you Get Started + +This list grew over many months, and yes, it kind of got out of hand. + +Here are some mistakes I made so you'll have a better experience. + +### 1. You Won't Remember it All + +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards so I could review. + +Read please so you won't make my mistakes: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) + +### 2. Use Flashcards + +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. + +I made a mobile-first website so I could review on my phone and tablet, wherever I am. + +Make your own for free: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. + +**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. 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. + +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) + +### 3. 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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding +linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, +or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, +but how you apply the knowledge. There are several books and sites I recommend. +See here for more: [Coding Question Practice](#coding-question-practice) + +### 4. Review, review, review + +I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. + +Take a break from programming problems for a half hour and go through your flashcards. + +### 5. Focus + +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 +- Javascript +- HTML, CSS, and other front-end technologies + +## The Daily Plan + +Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. + +Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: +- C - using structs and functions that take a struct * and something else as args. +- C++ - without using built-in types +- C++ - using built-in types, like STL's std::list for a linked list +- Python - using built-in types (to keep practicing Python) +- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements +- You may do Java or something else, this is just my thing. + +You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). + +Why code in all of these? +- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) +- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) +- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) + +I may not have time to do all of these for every subject, but I'll try. + +You can see my code here: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +You don't need to memorize the guts of every algorithm. + +Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. + +## Prerequisite Knowledge + +- [ ] **Learn C** + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - [answers to questions](https://github.com/lekkas/c-algorithms) + +- [ ] **How computers process a program:** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +## Algorithmic complexity / Big-O / Asymptotic analysis + +- Nothing to implement +- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. +- If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +## Data Structures + +- ### Arrays + - Implement an automatically resizing vector. + - [ ] Description: + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation. + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] Will not implement. Implementing with array is trivial. + +- ### Queue + - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap + - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable. + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above. + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none. + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - when it is appropriate to use it + - how is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - difference between processes and threads + - processes + - threads + - locks + - mutexes + - semaphores + - monitors + - how they work + - deadlock + - livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - in an OS, how it works + - can be gleaned from Operating System videos + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path. + - I read through code, but will not implement. + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this. +- Considerations: + - scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - system design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - define the use cases, with interviewer's help + - suggest additional features + - remove items that interviewer deems out of scope + - assume high availability is required, add as a use case + 2. Think about constraints: + - ask how many requests per month + - ask how many requests per second (they may volunteer it or make you do the math) + - estimate reads vs. writes percentage + - keep 80/20 rule in mind when estimating + - how much data written per second + - total storage required over 5 years + - how much data read per second + 3. Abstract design: + - layers (service, data, caching) + - infrastructure: load balancing, messaging + - rough overview of any key algorithm that drives the service + - consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- problem recognition, and where the right data structures and algorithms fit in +- gathering requirements for the problem +- talking your way through the problem like you will in the interview +- coding on a whiteboard or paper, not a computer +- coming up with time and space complexity for 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/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code. + - You can watch several in a short time. +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. + + +## Once you're closer to the interview + +- Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## Your Resume + +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed + + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product. +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - an oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - a modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - a gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - aka the "Gang Of Four" book, or GOF + - the canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - aka CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture. + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - more about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below. + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - also see videos below + - make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - also see videos below + - make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - used to determine the similarity of documents + - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. + - splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets. + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc. + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - these are a translation of a 2-3 tree (see below) + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used. + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address. + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - great for finding number of points in a rectangle or higher dimension object + - a good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - see videos below + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. "Netflix and skill" :P + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From 798f2af3852d09b0d58e96271f4962e1d9b825ca Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 8 Apr 2020 23:54:26 +0200 Subject: [PATCH 101/857] update readme-pl updated until cpp --- translations/README-pl.md | 161 ++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 83 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index cea06f0636..22f086a21b 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1,29 +1,29 @@ -# Coding Interview University +# Przygotowanie do rozmowy kwalifikacyjnej w Google - Coding Interview University -> I originally created this as a short to-do list of study topics for becoming a software engineer, -> but it grew to the large list you see today. After going through this study plan, [I got hired -> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> You probably won't have to study as much as I did. Anyway, everything you need is here. +> Pierwotnie stworzyłem ten projekt, jako krótką listę tematów do nauki, które warto poznać aby zostać Software Engineer, +> ale powiększył się do dużej listy, którą widzisz dzisiaj. Po przejściu przez ten plan studiów [zostałem zatrudniony +> jako Software Development Engineer w Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Prawdopodobnie nie będziesz musiał uczyć się tak dużo jak ja. W każdym razie wszystko, czego potrzebujesz, jest tutaj. > -> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> Przez kilka miesięcy uczyłem się około 8-12 godzin dziennie. Oto moja historia: [Dlaczego uczyłem się w pełnym wymiarze godzin przez 8 miesięcy na rozmowę w Google](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> The items listed here will prepare you well for a technical interview at just about any software company, -> including the giants: Amazon, Facebook, Google, and Microsoft. +> Pozycje wymienione tutaj dobrze przygotują cię na wywiad techniczny w prawie każdej firmie zajmującej się wytwarzaniem oprogramowania, włączając w to takich gigantów jak: Amazon, Facebook, Google, and Microsoft. > -> *Best of luck to you!* +> *Powodzenia!*
-Translations: +Tłumaczenia: - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) +- [Polish](https://github.com/mbiesiad/coding-interview-university/blob/master/translations/README-pl.md)
-Translations in progress: +Tłumaczenia w trakcie: - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) @@ -35,7 +35,6 @@ - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) @@ -45,33 +44,30 @@
-## What is it? +## Co to jest? -This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. +To jest mój wielomiesięczny plan nauki od przejścia od programisty (samouka, bez dyplomu CS - informatyki) do inżyniera oprogramowania dla dużej firmy. ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. +Jest to przeznaczone dla **początkujących software engineers** lub tych przełączających się z software/web development na software engineering (gdzie wiedza z informatyki jest wymagana). Jeśli masz wieloletnie doświadczenie i stwierdziłeś, że masz wieloletnie doświadczenie w inżynierii oprogramowania, oczekuj trudniejszej rozmowy. -If you have many years of software/web development experience, note that large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. +Jeśli masz wieloletnie doświadczenie w tworzeniu oprogramowania/stron internetowych, pamiętaj, że duże firmy programistyczne, takie jak Google, Amazon, Facebook i Microsoft postrzegają inżynierię oprogramowania jako inną niż tworzenie oprogramowania / stron internetowych i wymagają wiedzy informatycznej. -If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). +Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemów, zapoznaj się z listą dodatkową (sieć, bezpieczeństwo). --- -## Table of Contents +## Spis treści -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) +- [Co to jest?](#what-is-it) +- [Dlaczego z tego korzystać?](#why-use-it) - [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) +- [Nie czuj, że nie jesteś wystarczająco mądry](#dont-feel-you-arent-smart-enough) +- [Informacje o materiałach wideo](#about-video-resources) +- [Proces rozmowy i ogólne przygotowanie do rekrutacji](#interview-process--general-interview-prep) +- [Wybierz jeden język do rozmowy kwalifikacyjnej](#pick-one-language-for-the-interview) +- [Lista książek](#book-list) - [Before you Get Started](#before-you-get-started) - [What you Won't See Covered](#what-you-wont-see-covered) - [Prerequisite Knowledge](#prerequisite-knowledge) @@ -131,9 +127,9 @@ If you want to be a reliability engineer or operations engineer, study more from - [Have questions for the interviewer](#have-questions-for-the-interviewer) - [Once You've Got The Job](#once-youve-got-the-job) ----------------- Everything below this point is optional ---------------- +---------------- Wszystko poniżej tego punktu jest nadprogramowe ---------------- -## Additional Resources +## Dodatkowe materiały - [Additional Books](#additional-books) - [Additional Learning](#additional-learning) @@ -181,24 +177,21 @@ If you want to be a reliability engineer or operations engineer, study more from --- -## Why use it? +## Dlaczego z tego korzystać? -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +Kiedy rozpocząłem ten projekt, nie rozpoznawałem stosu (stack) od sterty (heap), nie znałem notacji dużego O (złożoności obliczeniowej algorytmów, asymptotycznego tempa wzrostu), nie wiedziałem nic o drzewach ani tego, jak przejść przez graf. Gdybym musiał kodować algorytm sortowania, mogę powiedzieć, że nie byłby zbyt dobry. +Wszystkie struktury danych, z którymi miałem kiedykolwiek do czynienia, były wbudowane w język i nie wiedziałem w ogóle, jak działają pod maską. Nigdy nie musiałem zarządzać pamięcią, chyba że uruchamiany przeze mnie proces wyrzuciłby błąd "out of +memory", a potem musiałbym znaleźć obejście. W swoim życiu użyłem kilku wielowymiarowych tablic i tysiące tablic asocjacyjnych, ale nigdy nie tworzyłem struktur danych od zera. -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +To długi plan. Może on zająć miesiące. Jeśli jednak znasz już co nieco z tego, zajmie ci to znacznie mniej czasu. -## How to use it +## Jak tego używać -Everything below is an outline, and you should tackle the items in order from top to bottom. +Wszystko poniżej jest konspektem i powinieneś zajmować się tymi punktami w kolejności od góry do dołu. -I'm using Github's special markdown flavor, including tasks lists to check progress. +Używam specjalnej odmiany Markdown GitHub, w tym list zadań do sprawdzania postępów. -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +**Utwórz nową gałąź (brancha), aby móc sprawdzać te pozycje, po prostu wstawiając x w nawiasach: [x]** Fork a branch and follow the commands below @@ -219,25 +212,25 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git push --force` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[Więcej na temat Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Don't feel you aren't smart enough +## Nie uważaj, że nie jesteś wystarczająco mądry -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- Odnoszący sukcesy inżynierowie oprogramowania są mądrzy, ale wielu nie ma pewności siebie odnośnie tego, że nie są wystarczająco mądrzy. - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## About Video Resources +## Informacje o materiałach wideo -Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. +Niektóre filmy są dostępne tylko po zapisaniu się na kurs Coursera lub EdX. Są to tak zwane MOOC. +Czasami zajęcia nie są w sesji, więc musisz poczekać kilka miesięcy, więc wtedy nie masz dostępu. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. + Będę wdzięczny za pomoc w dodawaniu bezpłatnych i zawsze dostępnych źródeł publicznych, takich jak filmy z YouTube, które towarzyszą filmom z kursów online. + Lubię korzystać z wykładów uniwersyteckich. -## Interview Process & General Interview Prep +## Proces rozmowy i ogólne przygotowanie do rekrutacji - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) @@ -253,55 +246,55 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) - [ ] Prep Course: - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - Dowiedz się, jak przygotować się na rozmowę kwalifikacyjną na inżyniera oprogramowania od byłego rekrutera Google. - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - Kurs przygotowujący do rekrutacji skoncentrowanej na Pythonie, który obejmuje struktury danych, algorytmy, próbne zadania i wiele innych. - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. + - Darmowy kurs struktur i algorytmów skoncentrowanych na języku Python. - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - Przećwicz praktyczne ćwiczenia z ponad 100 struktur danych i ćwiczeń algorytmicznych oraz wskazówek od dedykowanego mentora, aby pomóc Ci przygotować się na rozmowy kwalifikacyjne i scenariusze w miejscu pracy. -## Pick One Language for the Interview +## Wybierz jeden język do rozmowy kwalifikacyjnej -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +Możesz użyć języka, w którym czujesz się komfortowo, aby wykonać część wywiadu dotyczącą programowania, ale w przypadku dużych firm są to solidne propozycje: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Możesz ich również użyć, ale najpierw przeczytaj co nieco. Mogą istnieć zastrzeżenia: - JavaScript - Ruby -Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +Oto artykuł, który napisałem o wyborze języka do rozmowy kwalifikacyjnej: [Wybierz jeden język do wywiadu kodującego](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) -You need to be very comfortable in the language and be knowledgeable. +Musisz czuć się bardzo wygodnie w języku i posiadać z niego wiedzę. -Read more about choices: +Przeczytaj więcej na temat wyborów tutaj: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -[See language resources here](programming-language-resources.md) +[Zobacz materiały językowe tutaj](programming-language-resources.md) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +Poniżej zobaczysz trochę uczenia się C, C ++ i Python, ponieważ uczę się. W grę wchodzi kilka książek, patrz na dole. -## Book List +## Lista książek -This is a shorter list than what I used. This is abbreviated to save you time. +To jest krótsza lista niż ta, której użyłem. Jest to skrócone, aby zaoszczędzić czas. -### Interview Prep +### Przygotowanie do rozmowy rekrutacyjnej - [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - answers in C++ and Java - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) + - odpowiedzi w C++ oraz Java + - to dobra rozgrzewka przed Cracking the Coding Interview + - nie jest zbyt trudne, większość problemów może być łatwiejsza niż to, co zobaczysz podczas rekrutacji (z tego, co przeczytałem) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - odpowiedzi w Java -### If you have tons of extra time: +### Jeśli masz mnóstwo dodatkowego czasu: -Choose one: +Wybierz jeden: - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) @@ -309,14 +302,14 @@ Choose one: - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -### Language Specific +### Konkretny język -**You need to choose a language for the interview (see above).** +**Musisz wybrać język do rozmowy kwalifikacyjnej (patrz powyżej).** -Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +Oto moje rekomendacje według języka. Nie mam materiałów dla wszystkich języków. Miło widziane dodatki. -If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Jeśli zapoznasz się z jednym z nich, powinieneś mieć całą wiedzę na temat struktur danych i algorytmów, których potrzebujesz, aby zacząć robić problemy z kodowaniem. +**Możesz pominąć wszystkie wykłady wideo w tym projekcie**, chyba że chcesz recenzję. [Additional language-specific resources here.](programming-language-resources.md) @@ -1857,7 +1850,7 @@ You're never really done. - nice explanation of tries - can be skipped -- **Sorting** +- **Sortowania** - Stanford lectures on sorting: - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) @@ -1871,9 +1864,9 @@ You're never really done. - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## Serie wideo -Sit back and enjoy. "Netflix and skill" :P +Usiądź i spędź miło czas. "Netflix and skill" :P - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1935,12 +1928,12 @@ Sit back and enjoy. "Netflix and skill" :P - [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## Kursy Computer Science - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) -## Papers +## Literatura - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) @@ -1973,6 +1966,8 @@ Sit back and enjoy. "Netflix and skill" :P - [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) -## LICENSE +## LICENCJA [CC-BY-SA-4.0](./LICENSE.txt) + +Polska wersja od: @[mbiesiad](https://github.com/mbiesiad) From cbc876c888b3d5e920931cc4109b9d7e9dc48778 Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 08:06:51 +0200 Subject: [PATCH 102/857] update readme-pl updated until p4 --- translations/README-pl.md | 81 +++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index 22f086a21b..d137a43520 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -311,89 +311,86 @@ Oto moje rekomendacje według języka. Nie mam materiałów dla wszystkich języ Jeśli zapoznasz się z jednym z nich, powinieneś mieć całą wiedzę na temat struktur danych i algorytmów, których potrzebujesz, aby zacząć robić problemy z kodowaniem. **Możesz pominąć wszystkie wykłady wideo w tym projekcie**, chyba że chcesz recenzję. -[Additional language-specific resources here.](programming-language-resources.md) +[Dodatkowe materiały specyficzne dla języka tutaj.](programming-language-resources.md) ### C++ -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Nie przeczytałem tych dwóch, ale są wysoko ocenione i napisane przez Sedgewicka. On jest wspaniały. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +Jeśli masz lepszą rekomendację dla C++, daj mi znać. W poszukiwaniu wyczerpującego materiału. ### Java - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!) on coursera: - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + - filmy z zawartością książek (i Sedgewick!) na coursera: + - [Algorytmy I](https://www.coursera.org/learn/algorithms-part1) + - [Algorytmy II](https://www.coursera.org/learn/algorithms-part2) -OR: +LUB: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. + - od Goodrich, Tamassia, Goldwasser + - używany jako opcjonalny tekst dla kursu wprowadzającego dla informatyki na UC Berkeley + - zobacz moją recenzję książki na temat wersji Python poniżej. Ta książka obejmuje te same tematy. ### Python - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + - od Goodrich, Tamassia, Goldwasser + - Uwielbiam tę książkę. Obejmowała wszystko i więcej. + - kod Pythona + - moja entuzjastyczna recenzja: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -## Before you Get Started +## Zanim zaczniesz -This list grew over many months, and yes, it kind of got out of hand. +Ta lista rosła przez wiele miesięcy i tak, wymknęła się spod kontroli. -Here are some mistakes I made so you'll have a better experience. +Oto kilka błędów, które popełniłem, rzuć okiem - dzięki temu będziesz mieć lepsze odczucia. -### 1. You Won't Remember it All +### 1. Nie zapamiętasz tego wszystkiego -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +Oglądałem godziny filmów i robiłem obszerne notatki, a miesiące później wiele nie pamiętałem. Spędziłem 3 dni +na moje notatki i tworzenie fiszek, abym mógł je przejrzeć. -Read please so you won't make my mistakes: +Przeczytaj proszę, żebyś nie popełnił moich błędów: -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). +[Utrzymanie wiedzy informatycznej](https://startupnextdoor.com/retaining-computer-science-knowledge/). -A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) +Kurs zalecany mi (jeszcze go nie zacząłem): [Naucz się, jak się uczyć](https://www.coursera.org/learn/learning-how-to-learn) -### 2. Use Flashcards +### 2. Użyj Flashcards -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. +Aby rozwiązać problem, stworzyłem małą stronę z fiszkami (flashcards), w której mogłem dodać fiszki 2 typów: ogólne i kod. +Każda karta ma inne formatowanie. -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +Stworzyłem witrynę mobilną, aby móc przeglądać na moim telefonie i tablecie, gdziekolwiek jestem. -Make your own for free: +Stwórz własną za darmo: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) - [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): - [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. +Pamiętaj, że poszedłem ostro i mam karty obejmujące wszystko, od języka asemblera i ciekawostek Python po uczenie maszynowe i statystyki. To o wiele za dużo na to, w stosunku do tego co jest wymagane. -**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. +**Uwaga odnośnie fiszek:** Gdy rozpoznasz odpowiedź po raz pierwszy, nie oznaczaj jej jako znanej. Musisz zobaczyć +tę samą kartę i odpowiedzieć kilka razy poprawnie, zanim się nauczysz porzadnie. Powtarzanie pogłębi tę wiedzę. -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. +Alternatywą dla korzystania z mojej strony z kartami jest [Anki](http://ankisrs.net/), która była mi polecana wiele razy. Używa systemu powtarzania, aby pomóc Ci zapamiętać. +Jest przyjazna dla użytkownika, dostępna na wszystkich platformach i ma system synchronizacji w chmurze. Kosztuje $25 na iOS ale jest darmowa na innych platformach. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +Moja baza danych fiszekw formacie Anki: https://ankiweb.net/shared/info/25173560 (dzięki [@xiewenya](https://github.com/xiewenya)) -### 3. Start doing coding interview questions while you're learning data structures and algorithms, +### 3. Zacznij robić pytania programistyczne do rozmowy kwalifikacyjnej, ucząc się struktur danych i algorytmów -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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding -linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, -or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, -but how you apply the knowledge. There are several books and sites I recommend. -See here for more: [Coding Question Practice](#coding-question-practice) +Musisz zastosować zdobytą wiedzę do rozwiązywania problemów, inaczej zapomnisz. Popełniłem ten błąd. Gdy nauczysz się tematu, +aby czuć się z tym komfortowo, np. listy powiązane - otwórz jedną z książek o rekrutacji IT i zrób kilka pytań dotyczących list powiązanych (linked lists). Następnie przejdź do następnego tematu do nauki. Potem wróć i zrób kolejne zadanie z listą powiązaną, problem z rekurencją lub cokolwiek innego. Ale rób zadania podczas nauki. Nie jesteś zatrudniony do wiedzy, +ale do tego jak zastosować wiedzę. Polecam kilka książek i stron. +Zobacz tutaj, aby uzyskać więcej informacji: [Praktyczne pytania programistyczne](#coding-question-practice) ### 4. Review, review, review From 1d01137b2aea6d04725b1c216a7a7d3954eb553b Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 09:23:50 +0200 Subject: [PATCH 103/857] update readme updated finished pl_ver --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cea06f0636..111f24c254 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) +- [Polish](https://github.com/mbiesiad/coding-interview-university/blob/master/translations/README-pl.md) @@ -35,7 +36,6 @@ - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) From b6ab9f93c10e516f6db57c3b2e5925a15fdf4cae Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 10:42:57 +0200 Subject: [PATCH 104/857] update readme-pl updated --- translations/README-pl.md | 225 +++++++++++++++++++------------------- 1 file changed, 112 insertions(+), 113 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index d137a43520..954a7719ec 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -215,7 +215,7 @@ Używam specjalnej odmiany Markdown GitHub, w tym list zadań do sprawdzania pos [Więcej na temat Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Nie uważaj, że nie jesteś wystarczająco mądry +## Nie uważaj, że jesteś niewystarczająco mądry - Odnoszący sukcesy inżynierowie oprogramowania są mądrzy, ale wielu nie ma pewności siebie odnośnie tego, że nie są wystarczająco mądrzy. - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) @@ -392,99 +392,98 @@ aby czuć się z tym komfortowo, np. listy powiązane - otwórz jedną z książ ale do tego jak zastosować wiedzę. Polecam kilka książek i stron. Zobacz tutaj, aby uzyskać więcej informacji: [Praktyczne pytania programistyczne](#coding-question-practice) -### 4. Review, review, review +### 4. Przeglądaj, przeglądaj, przeglądaj -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +Trzymam zestaw ściąg na ASCII, stos OSI, notacje Big-O i inne. Przeglądam je, kiedy mam trochę wolnego czasu. -Take a break from programming problems for a half hour and go through your flashcards. +Zrób sobie przerwę od problemów programistycznych na pół godziny i przejrzyj swoje fiszki. -### 5. Focus +### 5. Skupienie -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. +Istnieje wiele czynników, które mogą zająć cenny czas. Skupienie i koncentracja są trudne. Włącz muzykę bez słów, a będziesz w stanie całkiem dobrze się skupić. -## What you won't see covered +## Czego tutaj nie zobaczysz -These are prevalent technologies but not part of this study plan: +Są to dominujące technologie, ale nie są częścią tego planu nauki: - SQL - Javascript -- HTML, CSS, and other front-end technologies +- HTML, CSS, oraz inne technologie frontend -## The Daily Plan +## Plan dzienny -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. +Niektóre przedmioty zajmą jeden dzień, a inne kilka dni. Niektórzy dopiero się uczą nie mając nic do zaimplementowania. -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +Każdego dnia biorę jeden temat z poniższej listy, oglądam filmy na ten temat i piszę implementację w: +- C - używając struktur i funkcji, które mają * i coś jeszcze jako args. +- C++ - bez używania wbudowanych typów +- C++ - używając wbudowanych typów, takich jak z STL np. std::list dla linked list +- Python - używając wbudowanych typów (aby ćwiczyć Python) +- i piszę testy, aby upewnić się, że robię to dobrze, czasem używając prostych instrukcji assert() +- Możesz tak robić z Java lub czymś innym, to po prostu moje podejście. -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). +Nie potrzebujesz tych wszystkich. Do rozmowy potrzebny jest tylko [jeden język](#pick-one-language-for-the-interview). -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +Po co kodować w tych wszystkich? +- Ćwiczenia, ćwiczenia, ćwiczenia, dopóki nie mam tego dość, i mogę to zrobić bez problemu (niektórzy mają wiele skrajnych przypadków i szczegółów księżek do zapamiętania) +- Praca w ramach surowych ograniczeń (przydzielanie / zwalnianie pamięci bez pomocy odśmiecania (z wyjątkiem Pythona lub Java)) +- Korzystam z wbudowanych typów, więc mam doświadczenie w korzystaniu z wbudowanych narzędzi do użytku w świecie rzeczywistym (nie zamierzam pisać własnej implementacji list powiązanych na produkcji) -I may not have time to do all of these for every subject, but I'll try. +Może nie mam czasu na zrobienie wszystkich tych rzeczy dla każdego przedmiotu, ale próbuję. -You can see my code here: +Możesz zobaczyć moje kody tutaj: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -You don't need to memorize the guts of every algorithm. +Nie musisz zapamiętywać wnętrzności każdego algorytmu. -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi przykładowymi danymi wejściowymi. Następnie przetestuj na komputerze. -## Prerequisite Knowledge +## Wymagana wiedza -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. +- [ ] **Nauka C** + - C jest wszędzie. Przykłady znajdziesz w książkach, wykładach, filmach, *wszędzie* podczas nauki. - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) - -- [ ] **How computers process a program:** - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - -## Algorithmic complexity / Big-O / Asymptotic analysis - -- Nothing to implement -- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. -- If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) + - Jest to krótka książka, ale zapewni doskonałą znajomość języka C i jeśli trochę go przećwiczysz + szybko osiągniesz biegłość. Zrozumienie C pomaga zrozumieć, jak działają programy i pamięć. + - [odpowiedzi na pytania](https://github.com/lekkas/c-algorithms) + +- [ ] **Jak komputery przetwarzają program:** + - [ ] [Jak procesor wykonuje program (wideo)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [Jak komputery liczą - ALU (wideo)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Rejestry i pamięć RAM (wideo)](https://youtu.be/fpnE6UAfbtU) + - [ ] [Central Processing Unit (CPU) - procesor (wideo)](https://youtu.be/FZGugFqdr60) + - [ ] [Instrukcje i programy (wideo)](https://youtu.be/zltgXvg6r3k) + +## Złożoność algorytmiczna / Big-O / Analiza asymptotyczna + +- Nic do implementacji +- Tutaj jest wiele filmów. Po prostu oglądaj wystarczająco długo, aż zrozumiesz. Zawsze możesz wrócić i przejrzeć ponownie. +- Jeśli niektóre wykłady są zbyt matematyczne, możesz zeskoczyć na dół i obejrzeć filmy z matematyki dyskretnej, aby uzyskać podstawową wiedzę. +- [ ] [Harvard CS50 - Notacja asymptotyczna (wideo)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (ogólny szybki samouczek) (wideo)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (oraz Omega i Theta) - najlepsze wyjaśnienia matematyczne (wideo)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) + - [wideo](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [prezentacja](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) -- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] [Orders of Growth (wideo)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (wideo)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (wideo)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (wideo)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (wideo)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (wideo)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - [ ] TopCoder (includes recurrence relations and master theorem): - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [Ściągawka](http://bigocheatsheet.com/) -## Data Structures +## Struktury danych - ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: + - Zaimplementuj wektor automatycznie zmieniający rozmiar. + - [ ] Opis: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) @@ -493,11 +492,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [ ] Implement a vector (mutable array with automatic resizing): + - [ ] Zaimplementuj vector (mutable array z automatycznym zmienianiem rozmiaru): - [ ] 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 - - 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 + - potraf zaalokować int array pod maską, bez używania gotowych funkcji + - zacznij z 16, lub jeśli liczba początkowa jest większa, użyj potęgi 2 - 16, 32, 64, 128 - [ ] size() - number of items - [ ] capacity() - number of items it can hold - [ ] is_empty() @@ -510,16 +509,16 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half + - po osiągnięciu pojemności zmień rozmiar, aby podwoić rozmiar + - podczas usuwania elementu, jeśli rozmiar wynosi 1/4 pojemności, przeskaluj do połowy - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(1) to add/remove na koniec (amortized for allocations for more space), index, or update - O(n) to insert/remove elsewhere - [ ] Space - contiguous in memory, so proximity helps performance - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) -- ### Linked Lists +- ### Listy łączone - [ ] Description: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) @@ -549,16 +548,16 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List + - [ ] Lista podwójnie łączona - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - No need to implement -- ### Stack +- ### Stos - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. -- ### Queue +- ### Kolejka - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) @@ -607,7 +606,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - get(key) - remove(key) -## More Knowledge +## Więcej wiedzy - ### Binary search - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) @@ -617,7 +616,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search (on sorted array of integers) - binary search using recursion -- ### Bitwise operations +- ### Operacje bitowe - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) @@ -642,9 +641,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) -## Trees +## Drzewa -- ### Trees - Notes & Background +- ### Drzewa - uwagi & zarys - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction @@ -694,7 +693,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] delete_value - [ ] get_successor // returns next-highest value in tree after given value, -1 if none -- ### Heap / Priority Queue / Binary Heap +- ### Sterta / kolejka priorytetowa / sterta binarna - visualized as a tree, but is usually linear in storage (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) @@ -723,9 +722,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). -## Sorting +## Sortowanie -- [ ] Notes: +- [ ] Uwagi: - Implement sorts & know best case/worst case, average complexity of each: - no bubble sort - it's terrible - O(n^2), except when n <= 16 - [ ] stability in sorting algorithms ("Is Quicksort stable?") @@ -798,11 +797,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -## Graphs +## Grafy Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. -- Notes: +- Uwagi: - There are 4 basic ways to represent a graph in memory: - objects and pointers - adjacency matrix @@ -812,11 +811,11 @@ Graphs can be used to represent many problems in computer science, so this secti - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none. -- [ ] MIT(videos): +- [ ] MIT (filmy): - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -- [ ] Skiena Lectures - great intro: +- [ ] Wykłady Skiena - świetne wprowadzenie: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) @@ -860,7 +859,7 @@ Graphs can be used to represent many problems in computer science, so this secti ## Even More Knowledge -- ### Recursion +- ### Rekursja - [ ] Stanford lectures on recursion & backtracking: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) @@ -1016,7 +1015,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [prezentacja](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) @@ -1108,7 +1107,7 @@ Graphs can be used to represent many problems in computer science, so this secti - simplicity and robustness - tradeoffs - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] **ZACZNIJ TUTAJ**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) @@ -1273,7 +1272,7 @@ Supplemental: See [Book List above](#book-list) -## Coding exercises/challenges +## Zadania/wyzwania programistyczne Once you've learned your brains out, put those brains to work. Take coding challenges every day, as many as you can. @@ -1318,13 +1317,13 @@ Mock Interviews: - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. -## Once you're closer to the interview +## Gdy już jesteś bliżej rozmowy rekrutacyjnej - Cracking The Coding Interview Set 2 (videos): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) -## Your Resume +## Twoje CV - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed @@ -1347,7 +1346,7 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -## Have questions for the interviewer +## Pytania dla rekrutera Some of mine (I already may know answer to but want their opinion or team perspective): @@ -1384,7 +1383,7 @@ You're never really done. --- -## Additional Books +## Dodatkowe książki These are here so you can dive into a topic you find interesting. @@ -1444,18 +1443,18 @@ You're never really done. - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but that is just an intro. This a guidebook on program design and architecture. -## Additional Learning +## Dodatkowe materiały - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. + Dodałem je, aby pomóc Ci zostać wszechstronnym inżynierem oprogramowania i mieć świadomość + technologii i algorytiki, dzięki czemu będziesz mieć większy zestaw narzędzi. -- ### Compilers +- ### Kompilatory - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) -- ### Emacs and vi(m) +- ### Emacs oraz vi(m) - Familiarize yourself with a unix-based code editor - vi(m): - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) @@ -1476,7 +1475,7 @@ You're never really done. - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) -- ### Unix command line tools +- ### Narzędzia wiersza poleceń systemu Unix - I filled in the list below from good tools. - bash - cat @@ -1490,7 +1489,7 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Teoria informacji (filmy) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - more about Markov processes: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) @@ -1506,19 +1505,19 @@ You're never really done. - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### Entropy +- ### Entropia - also see videos below - make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography +- ### Kryptografia - also see videos below - make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression +- ### Kompresja - make sure to watch information theory videos first - Computerphile (videos): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) @@ -1530,7 +1529,7 @@ You're never really done. - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Computer Security +- ### Bezpieczeństwo komputerowe - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) @@ -1545,7 +1544,7 @@ You're never really done. - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- ### Garbage collection +- ### Garbage collection - Odśmiecanie pamięci - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) @@ -1581,14 +1580,14 @@ You're never really done. - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) -- ### Fast Fourier Transform +- ### Szybka transformata Fouriera - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) -- ### Bloom Filter +- ### Filtr Blooma - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) @@ -1743,11 +1742,11 @@ You're never really done. - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math - - see videos below +- ### Matematyka dyskretna + - zobacz wideo poniżej -- ### Machine Learning - - Why ML? +- ### Machine Learning - Uczenie maszynowe + - Czemu ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) @@ -1775,7 +1774,7 @@ You're never really done. --- -## Additional Detail on Some Subjects +## Dodatkowe szczegóły na niektóre tematy I added these to reinforce some ideas already presented above, but didn't want to include them above because it's just too much. It's easy to overdo it on a subject. @@ -1805,7 +1804,7 @@ You're never really done. - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- **More Dynamic Programming** (videos) +- **Bardziej dynamiczne programowanie** (wideos) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -1814,11 +1813,11 @@ You're never really done. - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Zaawansowane przetwarzanie wykresów** (wideos) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Prawdopodobieństwo** (matma, i idź po mału, co jest dobre dla takich rzeczy) (wideos): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) From afa6a0ba82a4fa34cc30298f078c439d82266b9d Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 12:38:23 +0200 Subject: [PATCH 105/857] update readme-pl updated --- translations/README-pl.md | 695 +++++++++++++++++++------------------- 1 file changed, 347 insertions(+), 348 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index 954a7719ec..0edeeacbb4 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -442,7 +442,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr ## Wymagana wiedza -- [ ] **Nauka C** +- [ ] **Nauka języka C** - C jest wszędzie. Przykłady znajdziesz w książkach, wykładach, filmach, *wszędzie* podczas nauki. - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - Jest to krótka książka, ale zapewni doskonałą znajomość języka C i jeśli trochę go przećwiczysz @@ -511,23 +511,23 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] resize(new_capacity) // private function - po osiągnięciu pojemności zmień rozmiar, aby podwoić rozmiar - podczas usuwania elementu, jeśli rozmiar wynosi 1/4 pojemności, przeskaluj do połowy - - [ ] Time + - [ ] Czas (złożoność czasowa) - O(1) to add/remove na koniec (amortized for allocations for more space), index, or update - O(n) to insert/remove elsewhere - - [ ] Space + - [ ] Miejsce (złożoność pamięciowa) - contiguous in memory, so proximity helps performance - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - ### Listy łączone - - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] Opis: + - [ ] [Singly Linked Lists (wideo)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (wideo)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (wideo)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [Core Linked Lists Vs Arrays (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) @@ -549,19 +549,19 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Lista podwójnie łączona - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement + - [Opis (wideo)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - Bez potrzeby implementacji - ### Stos - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] [Stacks (wideo)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Kolejka - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Using Queues First-In First-Out(wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (wideo)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] [Priority Queues (wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -580,23 +580,23 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Hash table - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [Hashing with Chaining (wideo)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (wideo)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Cryptographic Hashing (wideo)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (wideo)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (wideo)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (wideo)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Understanding Hash Functions (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Language Support Hash Tables (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (wideo)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (wideo)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Instant Uploads And Storage Optimization In Dropbox (wideo)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - [ ] implement with array using linear probing @@ -609,8 +609,8 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr ## Więcej wiedzy - ### Binary search - - [ ] [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 (wideo)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Binary Search (wideo)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - [ ] Implement: - binary search (on sorted array of integers) @@ -618,7 +618,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Operacje bitowe - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] Dobrze zrozum manipulowanie bitami korzystając z: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) @@ -644,12 +644,12 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr ## Drzewa - ### Drzewa - uwagi & zarys - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [Series: Core Trees (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal - manipulation algorithms - - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (wideo)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - level order (BFS, using queue) - time complexity: O(n) @@ -663,12 +663,12 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) +- ### Binary search trees: BSTs - drzewa binarne + - [ ] [Binary Search Tree Review (wideo)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [Wprowadzenie (wideo)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (wideo)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) @@ -794,52 +794,52 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +Podsumowując, oto wizualna reprezentacja [15 algorytmów sortowania](https://www.youtube.com/watch?v=kPRA0W1kECg). +Jeśli potrzebujesz więcej informacji na ten temat, zobacz sekcję "Sortowanie" w [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) ## Grafy Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - Uwagi: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map + - Są 4 podstawowe sposoby reprezentacji grafu w pamięci: + - objects and pointers (obiekty i wskaźniki) + - adjacency matrix (macierz sąsiedztwa) + - adjacency list (lista sąsiedztwa) + - adjacency map (mapa sąsiedztwa) - Familiarize yourself with each representation and its pros & cons - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none. -- [ ] MIT (filmy): +- [ ] MIT (wideo): - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - [ ] Wykłady Skiena - świetne wprowadzenie: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (wideo)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (wideo)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (wideo)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (wideo)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (wideo)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (wideo)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] Graphs (review and more): - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [6.006 Single-Source Shortest Paths Problem (wideo)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (wideo)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (wideo)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (wideo)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (wideo)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (wideo)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (wideo)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (wideo)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (wideo)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (wideo)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (wideo)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (wideo)](https://www.youtube.com/watch?v=RpgcYiky7uw) - Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + - [ ] [Algorithms on Graphs (wideo)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - I'll implement: - [ ] DFS with adjacency list (recursive) @@ -857,7 +857,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph -## Even More Knowledge +## Więcej wiedzy - ### Rekursja - [ ] Stanford lectures on recursion & backtracking: @@ -896,30 +896,30 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Object-Oriented Programming +- ### Object-Oriented Programming - programowanie obiektowe - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) -- ### Design patterns +- ### Wzorce projektowe - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy + - [ ] Naucz się tych wzorców: + - [ ] strategy (strategia) - [ ] singleton - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento + - [ ] prototype (prototyp) + - [ ] decorator (dekorator) + - [ ] visitor (odwiedzający) + - [ ] factory, abstract factory (fabryka, fabryka abstrakcyjna) + - [ ] facade (fasada) + - [ ] observer (obserwator) + - [ ] proxy (pełnomocnik) + - [ ] delegate (delegat) + - [ ] command (polecenie) + - [ ] state (stan) + - [ ] memento (pamiątka) - [ ] iterator - - [ ] composite - - [ ] flyweight + - [ ] composite (kompozyt) + - [ ] flyweight (pyłek) - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) @@ -970,27 +970,27 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processes and Threads +- ### Procesy i wątki - [ ] Computer Science 162 - Operating Systems (25 videos): - for processes and threads see videos 1-11 - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock + - Pokrywa: + - Procesy, wątki, problemy z współbieżnością + - różnica między procesami a wątkami + - procesy + - wątki + - locks (zamki) + - mutexes (muteksy) + - semaphores (semafory) + - monitors (monitory) + - jak działają + - deadlock (zakleszczenie) + - livelock (specjalny przypadek zagłodzenia) - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Paging, segmentation and virtual memory (wideo)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (wideo)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. @@ -1006,18 +1006,18 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) +- ### Testowanie + - Aby pokryć: + - jak działają testy jednostkowe (unit tests) + - czym są mock objects (mockowanie) + - co to testy integracyjne + - czym jest dependency injection (wstrzykiwanie zależności) + - [ ] [Agile Software Testing with James Bach (wideo)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (wideo)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (wideo)](https://vimeo.com/83960706) - [prezentacja](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [wideo](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) @@ -1026,34 +1026,35 @@ Graphs can be used to represent many problems in computer science, so this secti - can be gleaned from Operating System videos - ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [Sedgewick - Suffix Arrays (wideo)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (wideo)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [Search pattern in text (wideo)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. +> Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)](https://pl.wikipedia.org/wiki/Drzewo_trie) + - Uwaga: istnieją różne rodzaje drzew tries. Niektóre mają prefixy, niektóre nie, a niektóre używają stringów zamiast bitów + do śledzenia ścieżki. + - Czytam kod, ale go nie implementuję. - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [Introduction To Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Stanford Lecture (real world use case) (wideo)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (wideo)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) @@ -1067,46 +1068,46 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. + - Bardzo techniczna rozmowa dla programistów jądra. Nie martw się, jeśli większość jest zbyt ciężka. + - Pierwsza połowa wystarczy. -- ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - otherwise, this is just good to know +- ### Sieci komputerowe + - **jeśli masz doświadczenie w pracy w sieci etc, oczekuj podobnych pytań** + - tak czy inaczej, dobrze to znać - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [UDP oraz TCP: Porównanie protokołów warstwy transportowej (wideo)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (wideo)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (wideo)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (wideo)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL oraz HTTPS (wideo)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (wideo)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (wideo)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Serie wideo (21 wideo) (wideo)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) - -## System Design, Scalability, Data Handling - -**You can expect system design questions if you have 4+ years of experience.** - -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization + - [ ] [Java - Sockets - Wprowadzenie (wideo)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (wideo)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## Projektowanie systemu, skalowalność, przetwarzanie danych + +**Jeśli masz ponad 4-letnie doświadczenie, możesz spodziewać się pytań dotyczących projektowania systemu.** + +- Skalowalność i projektowanie systemu to bardzo duże tematy z wieloma innymi tematami i materiałami, + przy projektowaniu systemu oprogramowania/sprzętu, który można skalować, należy wziąć pod uwagę wiele kwestii. + Spodziewaj się, że poświęcisz temu sporo czasu. +- Przemyślenia: + - skalowalność + - Wyodrębnij duże zestawy danych do pojedynczych wartości + - Przekształć jeden zestaw danych w inny + - Obsługa nieprzyzwoicie dużych ilości danych + - projektowanie systemu + - zestawy funkcji + - interfejsy + - hierarchie klas + - projektowanie systemu z pewnymi ograniczeniami + - prostota i solidność + - kompromisy + - analiza wydajności i optymalizacja - [ ] **ZACZNIJ TUTAJ**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) @@ -1204,7 +1205,7 @@ Graphs can be used to represent many problems in computer science, so this secti - infrastructure: load balancing, messaging - rough overview of any key algorithm that drives the service - consider bottlenecks and determine solutions - - Exercises: + - Ćwiczenia: - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) @@ -1216,66 +1217,64 @@ Graphs can be used to represent many problems in computer science, so this secti --- -## Final Review +## Końcowa rozmowa rekrutacyjna - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + W tej sekcji znajdują się krótsze filmy, które można dość szybko obejrzeć, aby przejrzeć większość ważnych pojęć. + Fajnie, jeśli często chcesz sobie odświeżać. -- [ ] Series of 2-3 minutes short subject videos (23 videos) +- [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (18 wideo): + - [Wideo](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorytmy II](https://www.coursera.org/learn/algorithms-part2) --- -## Coding Question Practice +## Praktyka kodowania -Now that you know all the computer science topics above, it's time to practice answering coding problems. +Teraz, gdy znasz już wszystkie powyższe tematy informatyki, nadszedł czas, aby poćwiczyć odpowiadanie na problemy z kodowaniem. -**Coding question practice is not about memorizing answers to programming problems.** +**Praktyka kodowania nie polega na zapamiętywaniu odpowiedzi, ale rozwiązywaniu problemów.** -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for your solutions -- testing your solutions +Dlaczego musisz ćwiczyć rozwiązywanie problemów programistycznych: +- rozpoznawanie problemów i ustalenie gdzie pasują odpowiednie struktury danych i algorytmy +- zbieranie wymagań dla problemu +- omawianie problemu tak, jak podczas rozmowy rekrutacyjnej +- kodowanie na tablicy lub papierze, a nie na komputerze +- wymyślanie złożoności czasowej i pamięciowej dla swoich rozwiązań +- testowanie twoich rozwiązań -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: +Tam jest świetny wstęp do metodycznego, komunikatywnego rozwiązywania problemu podczas rozmowy. Znajdziesz to również w książkach z rozmów rekrutacyjnych programistycznych, ale to znalazłem i uznałem za wybitne: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. I use a pencil -and eraser. +Brak tablicy w domu? To ma sens. Jestem dziwakiem i mam dużą tablicę. Zamiast tablicy, podnieś +duża podkładka do rysowania ze sklepu ze sztuką. Możesz usiąść na kanapie i ćwiczyć. To moja "sofa whiteboard". +Do zdjęcia dodałem pióro na skali. Jeśli używasz pióra, możesz wymazać. Szybko się psuje. Używam ołówka i gumki. ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -Supplemental: +Uzupełniające: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) -**Read and Do Programming Problems (in this order):** +**Przeczytaj i wykonaj zadania z programowania (w tej kolejności):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - answers in C, C++ and Java - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - odpowiedzi w Java -See [Book List above](#book-list) +Zobacz [Lista książek powyżej](#book-list) ## Zadania/wyzwania programistyczne -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +Gdy już się nauczysz, pozwól popracować swojemu mózgowi. +Podejmuj wyzwania programistyczne każdego dnia, tak dużo, jak to możliwe. - [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/) @@ -1325,58 +1324,58 @@ Mock Interviews: ## Twoje CV -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- Zobacz elementy przygotowujące do CV w Cracking The Coding Interview i wróć do Programming Interviews Exposed -## Be thinking of for when the interview comes +## Zastanów się, kiedy rozmowa kwalifikacyjna będzie nadchodzić -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. +Pomyśl o około 20 pytaniach, które otrzymasz, wraz z wierszami poniższych pozycji. Po 2-3 odpowiedzi dla każdego. +Dobrze mieć historię, a nie tylko dane, opowiedz o czymś co osiągnąłeś. -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? +- Czemu chcesz tę pracę? +- Jaki jest najcięższy problem, który rozwiązałeś? +- Największe wyzwanie z jakim się spotkałeś? +- Najlepsze/najgorsze projekty jaki widziałeś? +- Pomysły na ulepszenie istniejącego produktu. +- Jak pracujesz najlepiej, indywidualnie, czy jako część zespołu? +- Które z twoich umiejętności lub doświadczeń byłyby atutem w tej roli i dlaczego? +- Co najbardziej ci się podobało w [pracy x / projekcie y]? +- Jakie było największe wyzwanie, przed którym stanąłeś w [pracy x / projekcie y]? +- Jaki był najtrudniejszy bug, z jakim się spotkałeś w [pracy x / projekcie y]? +- Czego się nauczyłeś w [pracy x / projekcie y]? +- Co zrobiłbyś lepiej w [pracy x / projekcie y]? ## Pytania dla rekrutera - Some of mine (I already may know answer to but want their opinion or team perspective): + Niektóre z nich są moje (mogę już znać odpowiedź, ale chcę znać ich opinię lub perspektywę zespołu): -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is work/life balance? +- Jak duży jest twój zespół? +- Jak wygląda twój cykl deweloperski? Czy pracujecie waterfall/sprints/agile? +- Czy pośpiech związany z deadline'ami jest częsty? Czy jest elastyczność? +- Jak podejmowane są decyzje w twoim zespole? +- Ile spotkań masz na tydzień? +- Czy uważasz, że twoje środowisko pracy pomaga ci się skoncentrować? +- Nad czym pracujesz? +- Co w tym lubisz? +- Jak wygląda życie zawodowe? +- Jak wygląda równowaga między pracą, a życiem prywatnym? -## Once You've Got The Job +## Gdy już zdobędziesz pracę -Congratulations! +Gratulacje! -Keep learning. +Ucz się. -You're never really done. +Tak na prawdę nigdy nie skończyłeś. --- ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. + Wszystko poniżej tego punktu jest opcjonalne. + Ucząc się ich, zyskasz większą ekspozycję na więcej koncepcji informatyki i będziesz lepiej przygotowany do + dowolnych zadań inżynierii oprogramowania. Będziesz o wiele bardziej wszechstronnym inżynierem oprogramowania. ***************************************************************************************************** ***************************************************************************************************** @@ -1385,18 +1384,18 @@ You're never really done. ## Dodatkowe książki - These are here so you can dive into a topic you find interesting. + Są tutaj, abyś mógł zagłębić się w interesujący ciebie temat. - [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - an oldie but a goodie + - staruszek ale dobry - [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option + - współczesna wersja - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns + - łagodne wprowadzenie do wzorców projektowych - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book + - znane też jako książka "Banda czworga" lub GOF + - kanoniczna książka wzorców projektowych - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - As a review and problem recognition @@ -1415,25 +1414,25 @@ You're never really done. - this is the real reason you buy this book. - about to get to this part. Will update here once I've made my way through it. - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - Odpowiedzi: + - [Rozwiązania](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Rozwiązania](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization -- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - Rozdział 2 - Numeric Representation + - Rozdział 3 - Binary Arithmetic and Bit Operations + - Rozdział 4 - Floating-Point Representation + - Rozdział 5 - Character Representation + - Rozdział 6 - Memory Organization and Access + - Rozdział 7 - Composite Data Types and Memory Objects + - Rozdział 9 - CPU Architecture + - Rozdział 10 - Instruction Set Architecture + - Rozdział 11 - Memory Architecture and Organization +- [Wprowadzenie do algorytmów](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Ważne:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - aka CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) @@ -1449,31 +1448,31 @@ You're never really done. technologii i algorytiki, dzięki czemu będziesz mieć większy zestaw narzędzi. - ### Kompilatory - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [How a Compiler Works in ~1 minute (wideo)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (wideo)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (wideo)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (wideo)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs oraz vi(m) - Familiarize yourself with a unix-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With vim 01 - Installation, Setup, and The Modes (wideo)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - zestaw 4 wideo: + - [Edytor vi/vim - Lekcja 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [Edytor vi/vim - Lekcja 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [Edytor vi/vim - Lekcja 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [Edytor vi/vim - Lekcja 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Używanie Vi zamiast Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - [Basics Emacs Tutorial (wideo)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - zestaw 3-ch (wideo): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (wideo)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [(maybe) Org Mode In Depth: Managing Structure (wideo)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Narzędzia wiersza poleceń systemu Unix - I filled in the list below from good tools. @@ -1547,11 +1546,11 @@ You're never really done. - ### Garbage collection - Odśmiecanie pamięci - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (wideo)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (wideo)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) @@ -1562,7 +1561,7 @@ You're never really done. - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SQS (kolejka)](https://aws.amazon.com/sqs/) - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [RabbitMQ](https://www.rabbitmq.com/) - [Get Started](https://www.rabbitmq.com/getstarted.html) @@ -1577,19 +1576,19 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A* Pathfinding Tutorial (wideo)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (wideo)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Szybka transformata Fouriera - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [What is the Fourier Transform? (wideo)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (wideo)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Filtr Blooma - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters (wideo)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1603,7 +1602,7 @@ You're never really done. - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [Divide & Conquer: van Emde Boas Trees (wideo)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [MIT Lecture Notes](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) - ### Augmented Data Structures @@ -1630,9 +1629,9 @@ You're never really done. balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [MIT AVL Trees / AVL Sort (wideo)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (wideo)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - **Splay trees** @@ -1640,7 +1639,7 @@ You're never really done. Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, networking and file system code) etc. - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - [CS 61B: Splay Trees (wideo)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) @@ -1655,8 +1654,8 @@ You're never really done. the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used. - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (wideo)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (wideo)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) @@ -1664,9 +1663,9 @@ You're never really done. - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23-Tree Intuition and Definition (wideo)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [2-3 Trees (student recitation) (wideo)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: @@ -1674,9 +1673,9 @@ You're never really done. operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lecture 26: Balanced Search Trees (wideo)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (wideo)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (wideo)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) @@ -1704,34 +1703,34 @@ You're never really done. - ### k-D Trees - great for finding number of points in a rectangle or higher dimension object - a good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [Kd Trees (wideo)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (wideo)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Randomization: Skip Lists (wideo)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (wideo)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (wideo)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (wideo)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (wideo)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 wideo)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (wideo)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (wideo)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- ### Treap +- ### Sterta - Combination of a binary search tree and a heap - - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Sterta](https://en.wikipedia.org/wiki/Treap) + - [Struktury danych: wytłumaczenie sterty (wideo)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Programowanie liniowe (wideo) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) @@ -1789,7 +1788,7 @@ You're never really done. - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [Interface Segregation Principle in 5 minutes (wideo)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) @@ -1804,7 +1803,7 @@ You're never really done. - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- **Bardziej dynamiczne programowanie** (wideos) +- **Bardziej dynamiczne programowanie** (wideo) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -1840,7 +1839,7 @@ You're never really done. - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (wideo)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - nice explanation of tries @@ -1849,16 +1848,16 @@ You're never really done. - **Sortowania** - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - [Lecture 15 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [Algorithms - Sorting - Lecture 2 (wideo)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (wideo)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [lecture begins at 26:46 (wideo)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (wideo)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (wideo)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (wideo)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## Serie wideo @@ -1866,100 +1865,100 @@ Usiądź i spędź miło czas. "Netflix and skill" :P - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 wideo)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 wideo)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) -- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [Discrete Mathematics by Shai Simonson (19 wideo)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [Discrete Mathematics Part 1 by Sarada Herke (5 wideo)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Analysis of Algorithms (25 filmy) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 wideo)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 wideo)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 wideo)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 wideo)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 filmy)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [MIT 6.004: Computation Structures (49 wideo)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39 wideo)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 wideo)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 wideo)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 wideo)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 wideo)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 wideo)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 wideo)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 wideo)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 wideo)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 wideo)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 wideo)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 wideo)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67 wideo)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Kursy Computer Science -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Katalog internetowych kursów informatyki](https://github.com/open-source-society/computer-science) +- [Katalog kursów informatyki (wiele z wykładami online)](https://github.com/prakhar1989/awesome-courses) ## Literatura -- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [Lubisz tradycyjne prace naukowe?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) -- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 -- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? -- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) + - [zaimplementowane w Go](https://godoc.org/github.com/thomas11/csp) +- [2003: System plików Google](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - zastąpiony przez Colossus w 2012 r +- [2004: MapReduce: Uproszczone przetwarzanie danych w dużych klastrach]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - w większości zastąpiony przez Cloud Dataflow? +- [2006: Bigtable: Rozproszony system przechowywania danych strukturalnych](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [Spojrzenie od wewnątrz na Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - [2007: Dynamo: Wysoce dostępny magazyn Amazon o kluczowej wartości](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - The Dynamo paper kicked off the NoSQL revolution -- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2007: Co każdy programista powinien wiedzieć o pamięci (bardzo długie, ale autor zachęca do pomijania niektórych sekcji)](https://www.akkadia.org/drepper/cpumemory.pdf) - [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - paper not available - 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [praca (pdf)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [film](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) -- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) -- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) -- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + - [praca (pdf)](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [film](https://www.usenix.org/node/170855) +- [2014: Machine Learning: Wysokooprocentowana karta kredytowa długu technicznego](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines w Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Wysoka dostępność na masową skalę: budowanie infrastruktury danych Google dla reklam](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Wielkoskalowe uczenie maszynowe w heterogenicznych systemach rozproszonych](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: Jak programiści szukają kodu: studium przypadku](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega oraz Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) ## LICENCJA From 822d1ebc3c010b95d622459584ca5ca939ff9688 Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 13:31:01 +0200 Subject: [PATCH 106/857] update readme-pl updated --- translations/README-pl.md | 228 +++++++++++++++++++------------------- 1 file changed, 114 insertions(+), 114 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index 0edeeacbb4..feb5b31cb3 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -60,47 +60,47 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó ## Spis treści -- [Co to jest?](#what-is-it) -- [Dlaczego z tego korzystać?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Nie czuj, że nie jesteś wystarczająco mądry](#dont-feel-you-arent-smart-enough) -- [Informacje o materiałach wideo](#about-video-resources) -- [Proces rozmowy i ogólne przygotowanie do rekrutacji](#interview-process--general-interview-prep) -- [Wybierz jeden język do rozmowy kwalifikacyjnej](#pick-one-language-for-the-interview) -- [Lista książek](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) +- [Co to jest?](#co-to-jest) +- [Dlaczego z tego korzystać?](#dlaczego-z-tego-korzystać) +- [Jak tego używać](#jak-tego-używać) +- [Nie uważaj, że jesteś niewystarczająco mądry](#nie-uważaj-że-jesteś-niewystarczająco-mądry) +- [Informacje o materiałach wideo](#informacje-o-materiałach-wideo) +- [Proces rozmowy i ogólne przygotowanie do rekrutacji](#proces-rozmowy-i-ogólne-przygotowanie-do-rekrutacji) +- [Wybierz jeden język do rozmowy kwalifikacyjnej](#wybierz-jeden-język-do-rozmowy-kwalifikacyjnej) +- [Lista książek](#lista-książek) +- [Zanim zaczniesz](#zanim-zaczniesz) +- [Czego tutaj nie zobaczysz](#czego-tutaj-nie-zobaczysz) +- [Wymagana wiedza](#wymagana-wiedza) +- [Plan dzienny](#plan-dzienny) +- [Złożoność algorytmiczna / Big-O / Analiza asymptotyczna](#złożoność-algorytmiczna--big-o--analiza-asymptotyczna) +- [Struktury danych](#struktury-danych) - [Arrays](#arrays) - [Linked Lists](#linked-lists) - [Stack](#stack) - [Queue](#queue) - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) +- [Więcej wiedzy](#więcej-wiedzy) - [Binary search](#binary-search) - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) +- [Drzewa](#drzewa) - [Trees - Notes & Background](#trees---notes--background) - [Binary search trees: BSTs](#binary-search-trees-bsts) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - balanced search trees (general concept, not details) - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) +- [Sortowanie](#sortowanie) - selection - insertion - heapsort - quicksort - merge sort -- [Graphs](#graphs) +- [Grafy](#grafy) - directed - undirected - adjacency matrix - adjacency list - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) +- [Znów więcej wiedzy](#znów-więcej-wiedzy) - [Recursion](#recursion) - [Dynamic Programming](#dynamic-programming) - [Object-Oriented Programming](#object-oriented-programming) @@ -117,15 +117,15 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [Unicode](#unicode) - [Endianness](#endianness) - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) +- [Projektowanie systemu, skalowalność, przetwarzanie danych](#projektowanie-systemu-skalowalność-przetwarzanie-danych) (jeśli masz 4+ lat doświadczenia) +- [Końcowa rozmowa rekrutacyjna](#końcowa-rozmowa-rekrutacyjna) +- [Praktyka kodowania](#praktyka-kodowania) +- [Zadania/wyzwania programistyczne](#zadania-wyzwania-programistyczne) +- [Gdy już jesteś bliżej rozmowy rekrutacyjnej](#gdy-już-jesteś-bliżej-rozmowy-rekrutacyjnej) +- [Twoje CV](#twoje-cv) +- [Zastanów się, kiedy rozmowa kwalifikacyjna będzie nadchodzić](#zastanów-się-kiedy-rozmowa-kwalifikacyjna-będzie-nadchodzić) +- [Pytania dla rekrutera](#pytania-dla-rekrutera) +- [Gdy już zdobędziesz pracę](#gdy-już-zdobędziesz-pracę) ---------------- Wszystko poniżej tego punktu jest nadprogramowe ---------------- @@ -133,21 +133,21 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [Additional Books](#additional-books) - [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) + - [Kompilatory](#kompilatory) + - [Emacs oraz vi(m)](#emacs-oraz-vim) + - [Narzędzia wiersza poleceń systemu Unix](#narzędzia-wiersza-poleceń-systemu-unix) + - [Teoria informacji](#teoria-informacji-filmy) - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) + - [Entropia](#entropia) + - [Kryptografia](#kryptografia) + - [Kompresja](#kompresja) + - [Bezpieczeństwo komputerowe](#bezpieczeństwo-komputerowe) + - [Garbage collection - Odśmiecanie pamięci](#garbage-collection--odśmiecanie-pamięci) - [Parallel Programming](#parallel-programming) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Szybka transformata Fouriera](#szybka-transformata-fouriera) + - [Filtr Blooma](#filtr-blooma) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [van Emde Boas Trees](#van-emde-boas-trees) @@ -165,15 +165,15 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [Network Flows](#network-flows) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) + - [Sterta](#sterta) + - [Programowanie liniowe](#programowanie-liniowe) - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) + - [Matematyka dyskretna](#matematyka-dyskretna) + - [Machine Learning - Uczenie maszynowe](#machine-learning--uczenie-maszynowe) +- [Dodatkowe szczegóły na niektóre tematy](#dodatkowe-szczegóły-na-niektóre-tematy) +- [Serie wideo](#serie-wideo) +- [Kursy Computer Science](#kursy-computer-science) +- [Literatura](#literatura) --- @@ -523,7 +523,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Singly Linked Lists (wideo)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (wideo)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (wideo)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - [ ] [C Code (wideo)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: - [Core Linked Lists Vs Arrays (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) @@ -745,25 +745,25 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) +- [ ] [Sedgewick - Quicksort (4 wideo)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + - [ ] [CS 61B Wykład 29: Sortowanie I (wideo)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Wykład 30: Sortowanie II (wideo)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Wykład 32: Sortowanie III (wideo)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Wykład 33: Sortowanie V (wideo)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Sortowanie bąbelkowe (wideo)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analiza sortowania bąbelkowego (wideo)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Sortowanie przez wstawianie, Sortowanie przez scalanie (wideo)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Sortowanie przez wstawianie (wideo)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Sortowanie przez scalanie (wideo)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Sortowanie szybkie Quicksort (wideo)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Sortowanie przez wybieranie (wideo)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - [ ] Merge sort code: - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) @@ -799,7 +799,7 @@ Jeśli potrzebujesz więcej informacji na ten temat, zobacz sekcję "Sortowanie" ## Grafy -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, więc ta sekcja jest długa, podobnie jak drzewa i sortowanie. - Uwagi: - Są 4 podstawowe sposoby reprezentacji grafu w pamięci: @@ -823,7 +823,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (wideo)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (wideo)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Graphs (review and more): +- [ ] Grafy (review and more): - [ ] [6.006 Single-Source Shortest Paths Problem (wideo)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (wideo)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -838,7 +838,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Greedy Algorithms: Minimum Spanning Tree (wideo)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (wideo)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- Full Coursera Course: +- Pełny kurs Coursera: - [ ] [Algorithms on Graphs (wideo)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - I'll implement: @@ -857,7 +857,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph -## Więcej wiedzy +## Znów więcej wiedzy - ### Rekursja - [ ] Stanford lectures on recursion & backtracking: @@ -870,38 +870,38 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) -- ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. +- ### Programowanie dynamiczne + - Prawdopodobnie nie będziesz mieć programowania dynamicznego podczas swojej rekrutacji, ale warto umieć rozpoznawać problem, jako kandydata na ten właśnie rodzaj. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (wideo)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (wideo)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (wideo)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (wideo)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (wideo)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + [Dynamic Programming (wideo)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] Yale Lecture notes: - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] [The RNA secondary structure problem (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (wideo)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Object-Oriented Programming - programowanie obiektowe - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] [Optional: UML 2.0 Series (wideo)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: [SOLID Principles (wideo)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - ### Wzorce projektowe - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [Quick UML review (wideo)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Naucz się tych wzorców: - [ ] strategy (strategia) - [ ] singleton @@ -920,60 +920,60 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] iterator - [ ] composite (kompozyt) - [ ] flyweight (pyłek) - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Rozdział 6 (Część 1) - Patterns (wideo)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Rozdział 6 (Część 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (wideo)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Rozdział 6 (Część 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (wideo)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 wideo)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) +- ### Kombinatoryka (n choose k) & probabilistyka + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (wideo)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (wideo)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (wideo)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - Course layout: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [Probability Explained (wideo)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Complete and Approximation Algorithms - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] [Computational Complexity (wideo)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [NP Completeness II & Reductions (wideo)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (wideo)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (wideo)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (wideo)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (wideo)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (wideo)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (wideo)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (wideo)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (wideo)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. - ### Caches - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (wideo)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] [LeetCode - 146 LRU Cache (C++) (wideo)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] [MIT 6.004 L15: The Memory Hierarchy (wideo)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (wideo)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### Procesy i wątki - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [ ] Computer Science 162 - Operating Systems (25 wideo): + - dla procesów i wątków zobacz wideo 1-11 + - [Operating Systems and System Programming (wideo)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Pokrywa: - Procesy, wątki, problemy z współbieżnością @@ -990,21 +990,21 @@ Graphs can be used to represent many problems in computer science, so this secti - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - [Paging, segmentation and virtual memory (wideo)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (wideo)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Przerwania (wideo)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): + - [ ] [threads in C++ (series - 10 wideo)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] współbieżność w Python (wideo): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - [reference](http://www.dabeaz.com/GIL) - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ ] [Muteks w Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### Testowanie - Aby pokryć: @@ -1127,7 +1127,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: +- [ ] Skalowalność: - You don't need all of these. Just pick a few that interest you. - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: From f7c0570e64f39ab3aa287899a8bdbf3857b33a4d Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 13:48:54 +0200 Subject: [PATCH 107/857] update readme-pl updated --- translations/README-pl.md | 82 ++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 40 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index feb5b31cb3..2acdea624b 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -75,41 +75,41 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [Złożoność algorytmiczna / Big-O / Analiza asymptotyczna](#złożoność-algorytmiczna--big-o--analiza-asymptotyczna) - [Struktury danych](#struktury-danych) - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) + - [Listy łączone](#listy-łączone) + - [Stos](#stos) + - [Kolejka](#kolejka) - [Hash table](#hash-table) - [Więcej wiedzy](#więcej-wiedzy) - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) + - [Operacje bitowe](#operacje-bitowe) - [Drzewa](#drzewa) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - [Drzewa - uwagi & zarys](#trees---uwagi--zarys) + - [Binary search trees: BSTs - drzewa binarne](#binary-search-trees-bsts--drzewa-binarne) + - [Sterta / kolejka priorytetowa / sterta binarna](#sterta--kolejka-priorytetowa--sterta-binarna) - balanced search trees (general concept, not details) - traversals: preorder, inorder, postorder, BFS, DFS - [Sortowanie](#sortowanie) - - selection - - insertion - - heapsort - - quicksort - - merge sort + - selection (sortowanie przez wybieranie) + - insertion (sortowanie przez wstawianie) + - heapsort (sortowanie przez kopcowanie) + - quicksort (sortowanie szybkie) + - merge sort (sortowanie przez scalanie) - [Grafy](#grafy) - - directed - - undirected - - adjacency matrix - - adjacency list + - skierowany + - nieskierowany + - macierz sąsiedztwa + - lista sąsiedztwa - traversals: BFS, DFS - [Znów więcej wiedzy](#znów-więcej-wiedzy) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [Rekursja](#rekursja) + - [Programowanie dynamiczne](#programowanie-dynamiczne) + - [Object-Oriented Programming - programowanie obiektowe](#object-oriented-programming--programowanie-obiektowe) + - [wzorce-projektowe](#wzorce-projektowe) + - [Kombinatoryka (n choose k) & probabilistyka](#kombinatoryka-n-choose-k--probabilistyka) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) + - [Procesy i wątki](#procesy-i-wątki) + - [Testowanie](#testowanie) - [Scheduling](#scheduling) - [String searching & manipulations](#string-searching--manipulations) - [Tries](#tries) @@ -1038,23 +1038,25 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - ### Tries -> Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)](https://pl.wikipedia.org/wiki/Drzewo_trie) - - Uwaga: istnieją różne rodzaje drzew tries. Niektóre mają prefixy, niektóre nie, a niektóre używają stringów zamiast bitów - do śledzenia ścieżki. - - Czytam kod, ale go nie implementuję. - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (wideo)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (wideo)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)](https://pl.wikipedia.org/wiki/Drzewo_trie) + + - Uwaga: istnieją różne rodzaje drzew tries. Niektóre mają prefixy, niektóre nie, a niektóre używają stringów zamiast bitów + do śledzenia ścieżki. + - Czytam kod, ale go nie implementuję. + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (wideo)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (wideo)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) From 69e83ac561a5c79b099106b45b3f33a9c2e290ee Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 14:30:41 +0200 Subject: [PATCH 108/857] update readme-pl updated --- translations/README-pl.md | 218 +++++++++++++++++++------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index 2acdea624b..687f09e258 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -78,7 +78,7 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [Listy łączone](#listy-łączone) - [Stos](#stos) - [Kolejka](#kolejka) - - [Hash table](#hash-table) + - [Hash table - tablica mieszająca](#hash-table--tablica-mieszająca) - [Więcej wiedzy](#więcej-wiedzy) - [Binary search](#binary-search) - [Operacje bitowe](#operacje-bitowe) @@ -131,8 +131,8 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó ## Dodatkowe materiały -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) +- [Dodatkowe książki](#dodatkowe-książki) +- [Dodatkowe materiały](#dodatkowe-materiały) - [Kompilatory](#kompilatory) - [Emacs oraz vi(m)](#emacs-oraz-vim) - [Narzędzia wiersza poleceń systemu Unix](#narzędzia-wiersza-poleceń-systemu-unix) @@ -153,9 +153,9 @@ Jeśli chcesz być inżynierem ds. niezawodności i bezpieczeństwa lub systemó - [van Emde Boas Trees](#van-emde-boas-trees) - [Augmented Data Structures](#augmented-data-structures) - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees + - drzewa AVL + - drzewa Splay + - drzewa czerwono-czarne - 2-3 search trees - 2-3-4 Trees (aka 2-4 trees) - N-ary (K-ary, M-ary) trees @@ -390,7 +390,7 @@ Moja baza danych fiszekw formacie Anki: https://ankiweb.net/shared/info/25173560 Musisz zastosować zdobytą wiedzę do rozwiązywania problemów, inaczej zapomnisz. Popełniłem ten błąd. Gdy nauczysz się tematu, aby czuć się z tym komfortowo, np. listy powiązane - otwórz jedną z książek o rekrutacji IT i zrób kilka pytań dotyczących list powiązanych (linked lists). Następnie przejdź do następnego tematu do nauki. Potem wróć i zrób kolejne zadanie z listą powiązaną, problem z rekurencją lub cokolwiek innego. Ale rób zadania podczas nauki. Nie jesteś zatrudniony do wiedzy, ale do tego jak zastosować wiedzę. Polecam kilka książek i stron. -Zobacz tutaj, aby uzyskać więcej informacji: [Praktyczne pytania programistyczne](#coding-question-practice) +Zobacz tutaj, aby uzyskać więcej informacji: [Praktyczne pytania programistyczne](#praktyczne-pytania-programistyczne) ### 4. Przeglądaj, przeglądaj, przeglądaj @@ -484,14 +484,14 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Arrays - Zaimplementuj wektor automatycznie zmieniający rozmiar. - [ ] Opis: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [Arrays (wideo)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (wideo)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basic Arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (wideo)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (wideo)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Zaimplementuj vector (mutable array z automatycznym zmienianiem rozmiaru): - [ ] 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 @@ -578,16 +578,16 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - dequeue: O(1) (linked list and array) - empty: O(1) (linked list and array) -- ### Hash table - - [ ] Videos: +- ### Hash table - tablica mieszająca + - [ ] Materiały wideo: - [ ] [Hashing with Chaining (wideo)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - [ ] [Table Doubling, Karp-Rabin (wideo)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing, Cryptographic Hashing (wideo)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (wideo)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (wideo)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (wideo)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [(Zaawansowane) Randomization: Universal & Perfect Hashing (wideo)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Zaawansowane) Perfect hashing (wideo)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] Online Courses: + - [ ] Kursy online: - [ ] [Understanding Hash Functions (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - [ ] [Using Hash Tables (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) @@ -646,19 +646,19 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Drzewa - uwagi & zarys - [ ] [Series: Core Trees (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal + - podstawy budowy drzewa + - traversal (ścieżki) - manipulation algorithms - [ ] [BFS(breadth-first search) and DFS(depth-first search) (wideo)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - level order (BFS, using queue) - - time complexity: O(n) - - space complexity: best: O(1), worst: O(n/2)=O(n) + - złożoność czasowa: O(n) + - złożoność pamięciowa: best: O(1), worst: O(n/2)=O(n) - DFS notes: - - time complexity: O(n) - - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) + - złożoność czasowa: O(n) + - złożoność pamięciowa: + najlepsza: O(log n) - avg. height of tree + najgorsza: O(n) - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) @@ -670,16 +670,16 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Wprowadzenie (wideo)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (wideo)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary search tree - Implementation in C/C++ (wideo)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (wideo)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (wideo)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (wideo)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (wideo)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (wideo)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (wideo)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (wideo)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (wideo)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (wideo)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implement: - [ ] insert // insert value into tree - [ ] get_node_count // get count of values stored @@ -694,20 +694,20 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - ### Sterta / kolejka priorytetowa / sterta binarna - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - przedstawiane jako drzewo, ale zwykle liniowo w pamięci (array, linked list) + - [ ] [Sterta](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Wprowadzenie (wideo)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (wideo)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (wideo)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (wideo)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (wideo)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (wideo)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (wideo)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (wideo)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (wideo)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (wideo)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] Implement a max-heap: - [ ] insert @@ -736,9 +736,9 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. +- dla heapsort, zobacz Struktury danych - sterta, powyżej. Heapsort jest świetny, ale niestabilny. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) +- [ ] [Sedgewick - Mergesort (5 wideo)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) @@ -781,7 +781,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - For heapsort, see Heap data structure above. - [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [Sedgewick - Radix Sorts (6 wideo)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) @@ -789,10 +789,10 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [Radix Sort (wideo)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (wideo)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (wideo)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (wideo)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) Podsumowując, oto wizualna reprezentacja [15 algorytmów sortowania](https://www.youtube.com/watch?v=kPRA0W1kECg). Jeśli potrzebujesz więcej informacji na ten temat, zobacz sekcję "Sortowanie" w [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) @@ -861,14 +861,14 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - ### Rekursja - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - [ ] [Wykład 8 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Wykład 9 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Wykład 10 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Wykład 11 | Programming Abstractions (wideo)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - when it is appropriate to use it - how is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + - [ ] [Tail Recursion (wideo)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### Programowanie dynamiczne - Prawdopodobnie nie będziesz mieć programowania dynamicznego podczas swojej rekrutacji, ale warto umieć rozpoznawać problem, jako kandydata na ten właśnie rodzaj. @@ -876,13 +876,13 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (wideo)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (wideo)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Skiena: CSE373 2012 - Wykład 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Wykład 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Wykład 21 - Dynamic Programming Examples (wideo)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Wykład 22 - Applications of Dynamic Programming (wideo)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (wideo)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (wideo)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (wideo)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] [Simonson: Dynamic Programming I - Wykład 11 (wideo)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Wykład 12 (wideo)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] List of individual DP problems (each is short): [Dynamic Programming (wideo)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] Yale Lecture notes: @@ -946,14 +946,14 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - Know what NP-complete means. - [ ] [Computational Complexity (wideo)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [Greedy Algs. II & Intro to NP Completeness (wideo)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - [ ] [NP Completeness II & Reductions (wideo)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness III (wideo)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (wideo)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (wideo)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (wideo)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (wideo)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Wykład 23 - Introduction to NP-Completeness (wideo)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Wykład 24 - NP-Completeness Proofs (wideo)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Wykład 25 - NP-Completeness Challenge (wideo)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [Complexity: P, NP, NP-completeness, Reductions (wideo)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (wideo)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (wideo)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) @@ -964,7 +964,7 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - ### Caches - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (wideo)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [Implementing LRU (wideo)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache (C++) (wideo)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU cache: - [ ] [MIT 6.004 L15: The Memory Hierarchy (wideo)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) @@ -1019,7 +1019,7 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - [ ] Dependency injection: - [ ] [wideo](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ ] [Jak pisać testy](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - in an OS, how it works @@ -1131,7 +1131,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Skalowalność: - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] [Great overview (wideo)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) @@ -1189,9 +1189,9 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features + 1. Zrozumienie problemu i zakresu: + - zdefiniowanie przypadków użycia, z pomocą rekrutera + - sugestia dodatkowych funkcji - remove items that interviewer deems out of scope - assume high availability is required, add as a use case 2. Think about constraints: @@ -1400,22 +1400,22 @@ Tak na prawdę nigdy nie skończyłeś. - kanoniczna książka wzorców projektowych - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: + - Jako przegląd i rozpoznanie problemu + - Część katalogu algorytmów znacznie wykracza poza zakres trudności, jakie napotkasz podczas rekrutacji. + - Ta książka składa się z 2 części: - class textbook on data structures and algorithms - - pros: + - plusy: - is a good review as any algorithms textbook would be - nice stories from his experiences solving problems in industry and academia - code examples in C - - cons: + - minusy: - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - algorithm catalog: - this is the real reason you buy this book. - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle + - Można pożyczyć na kindle - Odpowiedzi: - [Rozwiązania](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Rozwiązania](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) @@ -1498,37 +1498,37 @@ Tak na prawdę nigdy nie skończyłeś. - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below. -- ### Parity & Hamming Code (videos) - - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) +- ### Parity & Hamming Code (wideo) + - [Wprowadzenie](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Kontrola parzystości](https://www.youtube.com/watch?v=DdMcAUlxh1M) - Hamming Code: - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropia - - also see videos below - - make sure to watch information theory videos first + - zobacz też materiały wideo poniżej + - upewnij się że widziałeś wcześniej wideo z teorii informacji - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Kryptografia - - also see videos below - - make sure to watch information theory videos first + - zobacz też materiały wideo poniżej + - upewnij się że widziałeś wcześniej wideo z teorii informacji - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Kompresja - - make sure to watch information theory videos first - - Computerphile (videos): - - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - upewnij się że widziałeś wcześniej wideo z teorii informacji + - Computerphile (wideo): + - [Kompresja](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropia w kompresji](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Drzewa Huffman)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Drzewa Huffman](https://www.youtube.com/watch?v=DV8efuB3h2g) - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - [(opcjonalnie) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Bezpieczeństwo komputerowe - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) @@ -1556,21 +1556,21 @@ Tak na prawdę nigdy nie skończyłeś. - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Samouczek](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [Samouczki](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 for Java Developers (wideo)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) + - [Samouczek](http://try.redis.io/) - [Amazon SQS (kolejka)](https://aws.amazon.com/sqs/) - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Rozpocznij](https://www.rabbitmq.com/getstarted.html) - [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [Pierwsze kroki z Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [Wstęp - przeczytaj podręcznik](http://zeromq.org/intro:read-the-manual) - [ActiveMQ](http://activemq.apache.org/) - [Kafka](http://kafka.apache.org/documentation.html#introduction) - [MessagePack](http://msgpack.org/index.html) @@ -1607,10 +1607,10 @@ Tak na prawdę nigdy nie skończyłeś. - [Divide & Conquer: van Emde Boas Trees (wideo)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [MIT Lecture Notes](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) -- ### Augmented Data Structures + - ### Rozszerzone struktury danych - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) -- ### Balanced search trees +- ### Zrównoważone drzewa wyszukiwania - Know at least one type of balanced binary tree (and know how it's implemented): - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations From f781e9328469ee2c80142386327601bea36335eb Mon Sep 17 00:00:00 2001 From: flyotlin Date: Thu, 9 Apr 2020 23:55:02 +0800 Subject: [PATCH 109/857] 2020/04/09 commit --- translations/README-tw.md | 2618 +++++++++++++++++++++++--------- tw_translation_progress_log.md | 59 + 2 files changed, 1972 insertions(+), 705 deletions(-) mode change 100644 => 100755 translations/README-tw.md create mode 100644 tw_translation_progress_log.md diff --git a/translations/README-tw.md b/translations/README-tw.md old mode 100644 new mode 100755 index 8f22942a39..2e2da774ef --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1,705 +1,1913 @@ -# Coding Interview University - -> 原先我為了成為一個軟體工程師而建立這份簡單的讀書主題清單(To-do list), -> 但這份To-do list隨著時間而膨脹成這個樣子。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> 你或許不需要像我讀一樣多。但是,每個讓你成為一位稱職工程師所需要的知識都在這裡了。 -> -> 我每天讀8~12小時的書,這樣持續了好幾個月。這是我的故事:[為什麼我為了Google面試而讀了8個月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) -> -> 在這份To-do list內的主題會讓你擁有足夠的知識去面對幾乎每家軟體公司的專業面試, -> 這些公司包含了科技巨獸,例如Amazon、Facebook、Google,或者是Microsoft。 -> -> *祝你好運!* - -
-翻譯: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) - -
- -
-正在翻譯的項目: - -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) - -
- -## What is it? - -這是我為了從一個網頁開發者(自學,並且沒有任何與資工、電腦科學有關的學位),成為一個大公司軟體工程師,持續好幾個月的讀書計畫。 - -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -這是為了那些**新手軟體工程師**,或者是那些想要轉換跑道,從軟體/網頁開發者轉為軟體工程師(需要資工、電腦科學的知識)的人。 - -請注意就算你有多年的軟體/網頁開發經驗,那些著名的大型軟體公司,像是Google、Amazon、Facebook,或是Microsoft事實上把軟體/網頁開發(Software/Web Development)與軟體工程(Software Engineering)視為不同,而後者需要的是電腦科學/資訊工程的知識。 - -如果你想成為一個可靠的工程師或者是Operation Engineer,閱讀並且學習更多這份清單中的The Optional List(裡面包含網路與資訊安全的知識)。 - ---- - -## 目錄 - -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [不要覺得自己不夠聰明](#dont-feel-you-arent-smart-enough(不要覺得自己不夠聰明)) -- [關於影片資源](#about-video-resources(關於影片資源)) -- [面試過程&面試準備](#interview-process--general-interview-prep(面試過程&面試準備)) -- [面試時專精一種程式語言](#面試時專精一種程式語言(Pick-One-Language-for-the-Interview)) -- [書單](#書單(book-list)) -- [在你開始之前](#在你開始之前) -- [這份清單沒有包含的內容](#這份清單沒有包含的內容) -- [先備知識](#先備知識) -- [每日計畫](#每日計畫) -- [演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis)](#演算法複雜度(Algorithmic-complexity)--Big-O--漸進分析(Asymptotic-analysis)) -- [資料結構](#資料結構) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [排序](#排序) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -## Additional Resources - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) - ---- - -## Why use it? - -當我開始這項計畫的時候,我不知道Stack與Heap的差別,不知道時間複雜度(Big-O),不知道樹狀結構(Tree),也不知道如何遍歷一個圖(Graph)。過去如果我需要寫一個排序演算法(Sorting Algorithm),那個code一定是個災難。我過去都用程式語言中內建的資料結構(Data Structure),對於資料結構裡面的實作方法跟原理我完全沒有任何的概念。除非我的程式碰到了"out of memory"的錯誤我才會去找解決方法,否則我從不特別去花費心思管理程式中的記憶體配置。雖然我有用過多維陣列(Multidimensional Arrays)跟關聯陣列(Associative Arrays),但我從來沒有自己時做過資料結構。 - -這是個遠大的計畫,或許要花上你數個月的時間。如果你對其中大部分的東西已經很熟悉的話,那麼執行這項計畫所花費的時間將減少許多。 - -## How to use it - -下面每項是大綱,你需要從上到下的去理解這些大綱。 - -我用了Github-flavored markdown語法,其中包含了可以確定完成進度的任務清單。 - - -**建立一個新的Branch以使用Github-flavored markdown的勾選功能。只要在[]中打x,像是: [x]** - - - Fork一個branch,並且跟隨以下的指令 - -`git checkout -b progress` - -`git remote add jwasham https://github.com/jwasham/coding-interview-university` - -`git fetch --all` - - 在你完成了一些目標後,在框框中打x - -`git add .` - -`git commit -m "Marked x"` - -`git rebase jwasham/master` - -`git push --force` - -[更多有關Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -## Don't feel you aren't smart enough(不要覺得自己不夠聰明) - -- 大多數成功的軟體工程師都非常聰明,但他們都有一種覺得自己不夠聰明的不安全感。 -- [The myth of the Genius Programmer(天才Programmer的迷思)](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech(不要單打獨鬥:面對科技中的隱形怪物)](https://www.youtube.com/watch?v=1i8ylq4j_EY) - -## About Video Resources(關於影片資源) - -有些影片要註冊Coursera或者Edx的課程後才能觀看,也就是所謂的MOOCs。有時候某些課程需要等待好幾個月才能註冊,這期間你無法觀看這些課程的影片。 - - 我非常喜歡那些大學的線上課程。感謝你們幫忙加入一些免費、可隨時觀看的公開資源,像是那些線上課程的YouTube影片。 - -## Interview Process & General Interview Prep(面試過程&面試準備) - -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] 如何錄取Big Tech(Google, Amazon, Facebook, Apple): - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] Coding面試解密: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Facebook Coding面試解密: - - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] 準備課程: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - 從前Google面試官身上學習如何充實自己,讓自己能夠應付軟體工程師的面試。 - - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - Python面試準備課程,其中包含了資料結構、演算法、模擬面試等等。 - - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - Python免費資料結構及演算法課程。 - - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - 超過100種實際的資料結構及演算法練習。名師指導讓你準備好面試以及工作的實際情況。 - -## 面試時專精一種程式語言(Pick One Language for the Interview) - -在面試的coding階段,你可以選擇任何一個你擅長的程式語言。但多數大公司僅有以下選擇: - -- C++ -- Java -- Python - -你也可以選擇以下的程式語言,但可能會有某些限制: - -- JavaScript -- Ruby - -我之前寫過一篇關於在面試時選擇程式語言的文章:[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) - -你需要非常熟練這個程式語言,並且對他非常了解。 - -閱讀更多有關程式語言的選擇: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ - -[程式語言相關資源](programming-language-resources.md) - -因為我正在學習C、C++以及Python,所以下面會出現一些有關於這些程式語言的資源。 - -## 書單(Book List) - -為了節省你的時間,以下是已經縮減過的書單。 - -### 面試準備(Interview Prep) - -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - 附有解答 in C++ and Java - - 內含很棒的coding面試解密 - - 不會很困難,大多問題都比面試中的還簡單(從我讀過的) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - 附有解答 in Java - -### 如果你有額外的時間(If you have tons of extra time): - -選擇以下其中一個: - -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [ ] 程式面試精華 (Java版) - - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) - -### 程式語言精進 - -***面試時你需要選擇一種程式語言(詳如上述)*** - -以下是一些我對程式語言的建議。這邊沒有所有種類程式語言的資源,所以歡迎補充。 - -如果你讀過以下其中一本,你應該已經具備了所有解決coding問題所需要的資料結構與演算法的知識。除非你想要複習,否則**你可以跳過這個計畫中所有的教學影片**。 - -[額外程式語言精進資源](programming-language-resources.md) - -### C++ - -我沒讀過這兩本書,但他們頗受好評。作者是Sedgewick,他超讚的! - -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -如果你有更好的C++書籍,請告訴我。我正在蒐集全面性的資源。 - -## Java - -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - 在Coursera平台上有影片、書籍內容、(以及Sedgewick!) - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) - -或者: - -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - 作者:Goodrich、Tamassia、Goldwasser - - 被作為UC Berkeley資工系入門課程的補充教材 - - 看看下面我對這本書的Python版的書評。兩本書都包含了相同的主題。 - -### Python - -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - 作者:Goodrich、Tamassia、Goldwasser - - 我超愛這本書。他包含了所有東西。 - - 很Python的Code! - - 我的書評: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - - -## 在你開始之前 - -這份清單隨著時間越來越大。當然,這也同時代表我越來越難以掌握他的整體內容。 - -以下是一些清單內的錯誤,希望能讓你避免這些錯誤,並且有更好的學習體驗。 - -### 1. 你沒辦法記住所有事情 - -我看了數小時的影片,同時也寫下了大量的筆記。但過了幾個月後,大部分的東西都消失的無影無蹤。我花了三天重新看過我的筆記,並做了小字卡幫助我複習他們。 - -請閱讀以下的文章以免重蹈覆轍: - -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). - -有人推薦給我的課程(但我還沒看過:( ): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) - -### 2. 使用小字卡 - -為了解決剛剛提到的遺忘問題,我自己寫了一個小字卡網站。網站上可以新增兩種小字卡,一般的以及程式碼。 -每一種類的小字卡都有不同的格式。 - -這個小字卡網站在製作時便是以行動裝置優先的方式設計的,好處是無論我在何處,我都可以在我的手機與平板上複習。 - -製作屬於自己的免費小字卡: - -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): - -我的小字卡資料庫中包含了組合語言、Python的小知識、機器學習以及統計。這些內容已經超出了原本他的預設。 - -**關於小字卡**:當你第一次知道答案後,別馬上把那張小字卡標記為已知。反覆複習這張小字卡,直到每次都能答對後才是真正學會了這個問題。反覆的動作會讓這個知識深深地烙印在你的腦海內。 - -這裡有個替代我小字卡的網站[Anki](http://ankisrs.net/),很多人向我推薦過他。這個網站用同一個字卡重複出現的方式讓你牢牢地記住他。 -這個網站非常容易使用,支援多平台,並且有雲端同步功能。在iOS平台上收費25美金,其他平台免費。 - -這是我用Anki這個網站裡的格式所儲存的小字卡資料庫: https://ankiweb.net/shared/info/25173560 (感謝 [@xiewenya](https://github.com/xiewenya)) - -### 3. 學習資料結構與演算法的同時,也要做一些Coding面試中常出現的問題 - -把你學過的東西應用在解題上面,否則你很快就會忘了他們。這是一個過來人的經驗談。一旦你自認學會了一個主題,像是Linked List之類的,打開任何一本Coding面試問題書籍,做一些裡面有關Linked List的問題。接著繼續讀後面的主題。然後,再回頭反覆做有關Linked List、遞迴或者其他任何東西(原文為Recursion,非Recursive)的題目。但切記一定在讀這些資料結構、演算法的同時,也要實際去寫一些有關這些東西的題目。公司錄取你是為了能有即戰力能夠上戰場,而非一個紙上談兵的人。這邊我覺得還不錯的書籍和網站。更多: [Coding Question Practice](#coding-question-practice) - -### 4. 複習,複習,再複習 - -我自己寫了一些有關於ASCII Code、網路OSI模型、Big-O(時間複雜度)等等的小抄。我有空的時候就會把他們拿出來看一看複習一下。 - -打Code累了的話就休息半個小時,並且複習你的小字卡。 - -### 5. 專注 - -能夠干擾你,浪費你寶貴時間的東西很多。因此,專注集中精神實在很難。放點純音樂能幫上一些忙。 - -## 這份清單沒有包含的內容 - -以下為普遍但沒有包含在這份清單內的技術: - -- SQL -- Javascript -- HTML、CSS,以及其他前後端的技術 - -## 每日計畫 - -每個主題所花費的時間都不盡相同,有些只要一天,有些需要花上數天。有些主題只有單純的知識而無包含實作。 - -每天我選擇下面其中一個主題,看跟該主題相關的影片,再用下面的程式語言實作: -- C - 用使用了struct *或者其他東西當作參數的struct以及函數 -- C++ - 不要使用內建的東西 -- C++ - 用C++內建的東西,像是STL的Linked List,std::list。 -- Python - 使用內建的東西(為了練習Python) -- 寫一些測試來驗證自己寫的東西是正確的,像是用assert()等簡單的方法。 -- 你也可以用Java來練習,上面只是我自己的方法。 - -你不需要學會所有的程式語言,你只需要專精在某個程式語言 [one language for the interview](#pick-one-language-for-the-interview). - -為什麼要這樣寫Code? -- 練習,練習,再練習,直到我對他產生厭惡感,並且能輕鬆無誤地寫出那些Code。(有些東西需要特別記住,像是在邊界的時候會出現問題(edge cases),或者一些小細節) -- 全部自己來(像是手動分配/釋放記憶體,不要依賴語言中的garbage collection的功能(除了Python或者Java)) -- 利用語言中內建的東西及工具,之後在實際工作的時候才能得心應手(畢竟我不想在工作時手刻一個Linked List)。 - -我沒有時間做每個主題中的每個東西,但我會盡力而為。 - -下面是我自己寫的程式碼: - - [C](https://github.com/jwasham/practice-c) - - [C++](https://github.com/jwasham/practice-cpp) - - [Python](https://github.com/jwasham/practice-python) - - 你不需要記住每個演算法裡面的內容。 - - 試試看把程式碼寫在白板或者紙上而不是電腦上。接著用一些測資來測試他。最後才用電腦來驗證。 - - ## 先備知識 - -- [ ] **學習C++** - - C語言無所不在。在你學習的過程中,幾乎任何一本書、課程,或者影片中你都能看到他的身影。 - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - 這本書還滿輕薄的,但他能讓你有初步對於C語言的認識。看著這本書並且練習,你能更快地掌握C語言。理解C語言能讓你更了解程式的運作以及內部記憶體配置。 - - [answers to questions](https://github.com/lekkas/c-algorithms) -- [ ] **一個程式在電腦中是如何運作的:** - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - -## 演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis) - -- 沒有任何東西能實作 -- 這個主題有許多影片,看到你真正了解他為止。你可以隨時回來複習他。 -- 如果這些課程太過數學的話,你可以去看看最下面離散數學的影片,他能讓你更了解這些數學背後的來源以及原理。 -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [影片](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [投影片](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) -- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) - -## 資料結構 -- ### 陣列 - - 實作一個可以自動調整大小的陣列(動態陣列vector) - - [ ] (動態)陣列背後原理: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [ ] 實作動態陣列(可變、可動態調整大小的陣列) - - [ ] 練習在程式中用陣列以及指標,透過計算指標而存取該內容,而不是直接用索引。 - - [ ] 直接動態生成一個新的陣列 - - 可以生成一個int型別的陣列,但不要使用語言提供的功能 - - 從16,或者更大的數開始寫,像是2的次方 - 16、32、64、128。 - - [ ] size() - 陣列中元素個數 - - [ ] capacity() - 陣列能存的最大元素個數 - - [ ] is_empty() - - [ ] at(index) - 傳回該索引值的元素,附有邊界檢查(boundary check) - - [ ] push(item) - - [ ] insert(index, item) - 把元素插入該索引值,把原本在該索引值的元素往右邊移動。 - - [ ] prepend(item) - 可以把元素插入索引值為0的地方。 - - [ ] pop() - 移除陣列中最後一個元素,並回傳該元素的值。 - - [ ] delete(index) - 刪除在該索引值的元素,並且把右邊剩下元素全部往左移。 - - [ ] remove(item) - 從陣列中尋找該數值,並且移除他(就算陣列中數個地方都有這個數值)。 - - [ ] find(item) - 從陣列中尋找該數值,並且傳回最前面找到該數值的索引值,如果沒有則傳回-1。 - - [ ] resize(nex_capacity) // private function - - 當陣列已經用盡了所有容量後,把陣列的容量*2。 - - 如果移除掉一個元素後,陣列實際大小是最大容量的1/4,則把陣列容量減半。 - - [ ] 時間複雜度 - - O(1) 在陣列末端插入/刪除元素 - - O(n) 在任何地方插入/刪除元素 - - [ ] 空間複雜度 - - 在記憶體中的存放位置是連續的,這種儲存方式有助於存取的性能。 - - 所需空間 = (陣列容量,>=n) * 元素所需大小,但就算結果為2n,實際上仍算成O(n) - -- ### Linked Lists - - [ ] Linked Lists背後原理: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - 沒有完整的code,裡面只包含了用struct實作節點的方式以及其記憶體配置。 - - [ ] Linked List vs 陣列: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] 小心!: 你需要一些關於指標的指標(Pointer to pointer)的知識: - (當你回傳一個指標到函式,這個動作可能會改變指標所指向的地址) - 這個頁面僅提供基本對於指標的指標的認識。我不推薦這個遍歷linked list的方式,因為他用的方式太過神奇,所以可讀性以及維護性並不好。 - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] 實作Linked list (我做了有末端指標(tail pointer)的版本以及無末端指標的版本): - - [ ] size() - 回傳linked list裡面的元素個數 - - [ ] empty() - 回傳型態:bool,如果linked list為空,回傳true - - [ ] value_at(index) - 回傳索引值為index的元素的數值,第一個元素索引值為0,以此類推 - - [ ] push_front(value) - 從linked list的起始點加入新的元素 - - [ ] pop_front() - 移除第一個元素,並且回傳該元素的數值 - - [ ] push_back(value) - 在linked list末端加入新元素 - - [ ] pop_back() - 移除最後一個元素,並且回傳該元素的數值 - - [ ] front() - 回傳第一個元素的數值 - - [ ] back() - 回傳最後一個元素的數值 - - [ ] insert(index, value) - 把新元素插入到該索引值,而新元素指向原本在該索引值的元素。 - - [ ] erase(index) - 刪除該索引值的元素(節點) - - [ ] value_n_from_end(n) - 回傳從末端開始計算的第n個元素的數值 - - [ ] reverse() - 反轉該linked list - - [ ] remove_value(value) - 刪除第一個為該數值的元素(意即7 2 2 1,要刪除2的話,只刪除index:1的那個2) - - [ ] 雙向linked List - - [背後原理(影片)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - 不需實作 - -- ### Stack(堆疊) - - [ ] [Stacks(影片)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] 無須實作,可以用陣列實作,但這樣太過簡單了。 - -- ### Queue(佇列) - - [ ] [使用Queues(先進先出)First-In First-Out(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue(影片)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - - [ ] 使用linked list實作,包含末端指標(tail pointer): - - enqueue(value) - 在queue末端加入元素 - - dequeue() - 刪除當時queue中最早進入的元素(意即queue中第一個元素),並且回傳該元素的值。 - - empty() - - full() - - [ ] 複雜度: - - - - enqueue: O(1) (平均情況,無論對於用linked list或陣列實作的方法) - - dequeue: O(1) (linked list與陣列) - - empty: O(1) (linked list與陣列) - -- ### 雜湊表(Hash table) - - [ ] 影片: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] 線上開放式課程: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] 分散式雜湊表(distributed hash table): - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] 實作雜湊表(用陣列以及線性探測(linear probing)) - - hash(k, m) - m:雜湊表的大小 - - add(key, value) - 如果key已經存在,則更新該key的value - - exists(key) - - get(key) - - remove(key) - -## 更多 - -- ### 二分搜尋法(Binary Search) - - [ ] [二分搜尋法(影片)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [二分搜尋法(影片)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [ ] [細節](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] 實作: - - 二分搜尋法 (對已經排列好的數列) - - 用遞迴(recursion)的方法實作二分搜尋法 - -- ### 位元運算(Bitwise operations) - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] 一補數與二補數 - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] swap values: - - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] 絕對值: - - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) - -## 樹狀結構(Tree) - -- ### Trees - 重點與背景知識 - - [ ] [Series: Core Trees (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms - - [ ] [BFS(breadth-first search) and DFS(depth-first search) (影片)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS(廣度優先搜尋)重點: - - 每一層的順序(BFS,用queue) - - 時間複雜度: O(n) - - 空間複雜度: 最佳: O(1), 最糟: O(n/2)=O(n) - - DFS(深度優先搜尋)重點: - - 時間複雜度: O(n) - - 空間複雜度: - 最佳: O(log n) - 平均. 樹的高度 - 最糟: O(n) - - 中序 (DFS: 左子樹、根、右子樹) - - 後序 (DFS: 左子樹、右子樹、根) - - 前序 (DFS: 根、左子樹、右子樹) - -- ### (二元搜尋樹)Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] 實作: - - [ ] insert // 把數值插入到二元搜尋樹當中 - - [ ] get_node_count // get count of values stored - - [ ] print_values // 把二元搜尋樹中的數值從小到大輸出 - - [ ] delete_tree - - [ ] is_in_tree // 如果給定的數值位於二元搜尋樹當中則回傳true - - [ ] get_height // 回傳該節點內的高度(單一節點的樹高度為1) - - [ ] get_min // 回傳二元搜尋樹當中的最小值 - - [ ] get_max // 回傳二元搜尋樹當中的最大值 - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // 回傳二元搜尋樹當中大小在給定數值後一位的數值,如果沒有則回傳-1 - -- ### Heap / Priority Queue / Binary Heap - - 一般將此資料結構以樹的方式視覺化,但實際上是以線性的方式儲存(陣列、linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] 實作max heap: - - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - 重點: using a min heap instead would save operations, but double the space needed (cannot do in-place). - -## 排序 \ No newline at end of file +# Coding Interview University + +> 原先我為了成為一個軟體工程師而建立這份簡單的讀書主題清單(To-do list), +> 但這份To-do list隨著時間而膨脹成這個樣子。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> 你或許不需要像我讀一樣多。但是,每個讓你成為一位稱職工程師所需要的知識都在這裡了。 +> +> 我每天讀8~12小時的書,這樣持續了好幾個月。這是我的故事:[為什麼我為了Google面試而讀了8個月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> 在這份To-do list內的主題會讓你擁有足夠的知識去面對幾乎每家軟體公司的專業面試, +> 這些公司包含了科技巨獸,例如Amazon、Facebook、Google,或者是Microsoft。 +> +> *祝你好運!* + +
+翻譯: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) + +
+ +
+正在翻譯的項目: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) + +
+ +## What is it? + +這是我為了從一個網頁開發者(自學,並且沒有任何與資工、電腦科學有關的學位),成為一個大公司軟體工程師,持續好幾個月的讀書計畫。 + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +這是為了那些**新手軟體工程師**,或者是那些想要轉換跑道,從軟體/網頁開發者轉為軟體工程師(需要資工、電腦科學的知識)的人。 + +請注意就算你有多年的軟體/網頁開發經驗,那些著名的大型軟體公司,像是Google、Amazon、Facebook,或是Microsoft事實上把軟體/網頁開發(Software/Web Development)與軟體工程(Software Engineering)視為不同,而後者需要的是電腦科學/資訊工程的知識。 + +如果你想成為一個可靠的工程師或者是Operation Engineer,閱讀並且學習更多這份清單中的The Optional List(裡面包含網路與資訊安全的知識)。 + +--- + +## 目錄 + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [不要覺得自己不夠聰明](#dont-feel-you-arent-smart-enough(不要覺得自己不夠聰明)) +- [關於影片資源](#about-video-resources(關於影片資源)) +- [面試過程&面試準備](#interview-process--general-interview-prep(面試過程&面試準備)) +- [面試時專精一種程式語言](#面試時專精一種程式語言(Pick-One-Language-for-the-Interview)) +- [書單](#書單(book-list)) +- [在你開始之前](#在你開始之前) +- [這份清單沒有包含的內容](#這份清單沒有包含的內容) +- [先備知識](#先備知識) +- [每日計畫](#每日計畫) +- [演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis)](#演算法複雜度(Algorithmic-complexity)--Big-O--漸進分析(Asymptotic-analysis)) +- [資料結構](#資料結構) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [排序](#排序) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +當我開始這項計畫的時候,我不知道Stack與Heap的差別,不知道時間複雜度(Big-O),不知道樹狀結構(Tree),也不知道如何遍歷一個圖(Graph)。過去如果我需要寫一個排序演算法(Sorting Algorithm),那個code一定是個災難。我過去都用程式語言中內建的資料結構(Data Structure),對於資料結構裡面的實作方法跟原理我完全沒有任何的概念。除非我的程式碰到了"out of memory"的錯誤我才會去找解決方法,否則我從不特別去花費心思管理程式中的記憶體配置。雖然我有用過多維陣列(Multidimensional Arrays)跟關聯陣列(Associative Arrays),但我從來沒有自己時做過資料結構。 + +這是個遠大的計畫,或許要花上你數個月的時間。如果你對其中大部分的東西已經很熟悉的話,那麼執行這項計畫所花費的時間將減少許多。 + +## How to use it + +下面每項是大綱,你需要從上到下的去理解這些大綱。 + +我用了Github-flavored markdown語法,其中包含了可以確定完成進度的任務清單。 + + +**建立一個新的Branch以使用Github-flavored markdown的勾選功能。只要在[]中打x,像是: [x]** + + + Fork一個branch,並且跟隨以下的指令 + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + 在你完成了一些目標後,在框框中打x + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/master` + +`git push --force` + +[更多有關Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## Don't feel you aren't smart enough(不要覺得自己不夠聰明) + +- 大多數成功的軟體工程師都非常聰明,但他們都有一種覺得自己不夠聰明的不安全感。 +- [The myth of the Genius Programmer(天才Programmer的迷思)](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech(不要單打獨鬥:面對科技中的隱形怪物)](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## About Video Resources(關於影片資源) + +有些影片要註冊Coursera或者Edx的課程後才能觀看,也就是所謂的MOOCs。有時候某些課程需要等待好幾個月才能註冊,這期間你無法觀看這些課程的影片。 + + 我非常喜歡那些大學的線上課程。感謝你們幫忙加入一些免費、可隨時觀看的公開資源,像是那些線上課程的YouTube影片。 + +## Interview Process & General Interview Prep(面試過程&面試準備) + +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] 如何錄取Big Tech(Google, Amazon, Facebook, Apple): + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] Coding面試解密: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Facebook Coding面試解密: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] 準備課程: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - 從前Google面試官身上學習如何充實自己,讓自己能夠應付軟體工程師的面試。 + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Python面試準備課程,其中包含了資料結構、演算法、模擬面試等等。 + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Python免費資料結構及演算法課程。 + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 超過100種實際的資料結構及演算法練習。名師指導讓你準備好面試以及工作的實際情況。 + +## 面試時專精一種程式語言(Pick One Language for the Interview) + +在面試的coding階段,你可以選擇任何一個你擅長的程式語言。但多數大公司僅有以下選擇: + +- C++ +- Java +- Python + +你也可以選擇以下的程式語言,但可能會有某些限制: + +- JavaScript +- Ruby + +我之前寫過一篇關於在面試時選擇程式語言的文章:[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +你需要非常熟練這個程式語言,並且對他非常了解。 + +閱讀更多有關程式語言的選擇: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[程式語言相關資源](programming-language-resources.md) + +因為我正在學習C、C++以及Python,所以下面會出現一些有關於這些程式語言的資源。 + +## 書單(Book List) + +為了節省你的時間,以下是已經縮減過的書單。 + +### 面試準備(Interview Prep) + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - 附有解答 in C++ and Java + - 內含很棒的coding面試解密 + - 不會很困難,大多問題都比面試中的還簡單(從我讀過的) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - 附有解答 in Java + +### 如果你有額外的時間(If you have tons of extra time): + +選擇以下其中一個: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] 程式面試精華 (Java版) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### 程式語言精進 + +***面試時你需要選擇一種程式語言(詳如上述)*** + +以下是一些我對程式語言的建議。這邊沒有所有種類程式語言的資源,所以歡迎補充。 + +如果你讀過以下其中一本,你應該已經具備了所有解決coding問題所需要的資料結構與演算法的知識。除非你想要複習,否則**你可以跳過這個計畫中所有的教學影片**。 + +[額外程式語言精進資源](programming-language-resources.md) + +### C++ + +我沒讀過這兩本書,但他們頗受好評。作者是Sedgewick,他超讚的! + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +如果你有更好的C++書籍,請告訴我。我正在蒐集全面性的資源。 + +## Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 在Coursera平台上有影片、書籍內容、(以及Sedgewick!) + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +或者: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - 作者:Goodrich、Tamassia、Goldwasser + - 被作為UC Berkeley資工系入門課程的補充教材 + - 看看下面我對這本書的Python版的書評。兩本書都包含了相同的主題。 + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - 作者:Goodrich、Tamassia、Goldwasser + - 我超愛這本書。他包含了所有東西。 + - 很Python的Code! + - 我的書評: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +## 在你開始之前 + +這份清單隨著時間越來越大。當然,這也同時代表我越來越難以掌握他的整體內容。 + +以下是一些清單內的錯誤,希望能讓你避免這些錯誤,並且有更好的學習體驗。 + +### 1. 你沒辦法記住所有事情 + +我看了數小時的影片,同時也寫下了大量的筆記。但過了幾個月後,大部分的東西都消失的無影無蹤。我花了三天重新看過我的筆記,並做了小字卡幫助我複習他們。 + +請閱讀以下的文章以免重蹈覆轍: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +有人推薦給我的課程(但我還沒看過:( ): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) + +### 2. 使用小字卡 + +為了解決剛剛提到的遺忘問題,我自己寫了一個小字卡網站。網站上可以新增兩種小字卡,一般的以及程式碼。 +每一種類的小字卡都有不同的格式。 + +這個小字卡網站在製作時便是以行動裝置優先的方式設計的,好處是無論我在何處,我都可以在我的手機與平板上複習。 + +製作屬於自己的免費小字卡: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +我的小字卡資料庫中包含了組合語言、Python的小知識、機器學習以及統計。這些內容已經超出了原本他的預設。 + +**關於小字卡**:當你第一次知道答案後,別馬上把那張小字卡標記為已知。反覆複習這張小字卡,直到每次都能答對後才是真正學會了這個問題。反覆的動作會讓這個知識深深地烙印在你的腦海內。 + +這裡有個替代我小字卡的網站[Anki](http://ankisrs.net/),很多人向我推薦過他。這個網站用同一個字卡重複出現的方式讓你牢牢地記住他。 +這個網站非常容易使用,支援多平台,並且有雲端同步功能。在iOS平台上收費25美金,其他平台免費。 + +這是我用Anki這個網站裡的格式所儲存的小字卡資料庫: https://ankiweb.net/shared/info/25173560 (感謝 [@xiewenya](https://github.com/xiewenya)) + +### 3. 學習資料結構與演算法的同時,也要做一些Coding面試中常出現的問題 + +把你學過的東西應用在解題上面,否則你很快就會忘了他們。這是一個過來人的經驗談。一旦你自認學會了一個主題,像是Linked List之類的,打開任何一本Coding面試問題書籍,做一些裡面有關Linked List的問題。接著繼續讀後面的主題。然後,再回頭反覆做有關Linked List、遞迴或者其他任何東西(原文為Recursion,非Recursive)的題目。但切記一定在讀這些資料結構、演算法的同時,也要實際去寫一些有關這些東西的題目。公司錄取你是為了能有即戰力能夠上戰場,而非一個紙上談兵的人。這邊我覺得還不錯的書籍和網站。更多: [Coding Question Practice](#coding-question-practice) + +### 4. 複習,複習,再複習 + +我自己寫了一些有關於ASCII Code、網路OSI模型、Big-O(時間複雜度)等等的小抄。我有空的時候就會把他們拿出來看一看複習一下。 + +打Code累了的話就休息半個小時,並且複習你的小字卡。 + +### 5. 專注 + +能夠干擾你,浪費你寶貴時間的東西很多。因此,專注集中精神實在很難。放點純音樂能幫上一些忙。 + +## 這份清單沒有包含的內容 + +以下為普遍但沒有包含在這份清單內的技術: + +- SQL +- Javascript +- HTML、CSS,以及其他前後端的技術 + +## 每日計畫 + +每個主題所花費的時間都不盡相同,有些只要一天,有些需要花上數天。有些主題只有單純的知識而無包含實作。 + +每天我選擇下面其中一個主題,看跟該主題相關的影片,再用下面的程式語言實作: +- C - 用使用了struct *或者其他東西當作參數的struct以及函數 +- C++ - 不要使用內建的東西 +- C++ - 用C++內建的東西,像是STL的Linked List,std::list。 +- Python - 使用內建的東西(為了練習Python) +- 寫一些測試來驗證自己寫的東西是正確的,像是用assert()等簡單的方法。 +- 你也可以用Java來練習,上面只是我自己的方法。 + +你不需要學會所有的程式語言,你只需要專精在某個程式語言 [one language for the interview](#pick-one-language-for-the-interview). + +為什麼要這樣寫Code? +- 練習,練習,再練習,直到我對他產生厭惡感,並且能輕鬆無誤地寫出那些Code。(有些東西需要特別記住,像是在邊界的時候會出現問題(edge cases),或者一些小細節) +- 全部自己來(像是手動分配/釋放記憶體,不要依賴語言中的garbage collection的功能(除了Python或者Java)) +- 利用語言中內建的東西及工具,之後在實際工作的時候才能得心應手(畢竟我不想在工作時手刻一個Linked List)。 + +我沒有時間做每個主題中的每個東西,但我會盡力而為。 + +下面是我自己寫的程式碼: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + + 你不需要記住每個演算法裡面的內容。 + + 試試看把程式碼寫在白板或者紙上而不是電腦上。接著用一些測資來測試他。最後才用電腦來驗證。 + + ## 先備知識 + +- [ ] **學習C++** + - C語言無所不在。在你學習的過程中,幾乎任何一本書、課程,或者影片中你都能看到他的身影。 + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - 這本書還滿輕薄的,但他能讓你有初步對於C語言的認識。看著這本書並且練習,你能更快地掌握C語言。理解C語言能讓你更了解程式的運作以及內部記憶體配置。 + - [answers to questions](https://github.com/lekkas/c-algorithms) +- [ ] **一個程式在電腦中是如何運作的:** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +## 演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis) + +- 沒有任何東西能實作 +- 這個主題有許多影片,看到你真正了解他為止。你可以隨時回來複習他。 +- 如果這些課程太過數學的話,你可以去看看最下面離散數學的影片,他能讓你更了解這些數學背後的來源以及原理。 +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [影片](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [投影片](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +## 資料結構 +- ### 陣列 + - 實作一個可以自動調整大小的陣列(動態陣列vector) + - [ ] (動態)陣列背後原理: + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [ ] 實作動態陣列(可變、可動態調整大小的陣列) + - [ ] 練習在程式中用陣列以及指標,透過計算指標而存取該內容,而不是直接用索引。 + - [ ] 直接動態生成一個新的陣列 + - 可以生成一個int型別的陣列,但不要使用語言提供的功能 + - 從16,或者更大的數開始寫,像是2的次方 - 16、32、64、128。 + - [ ] size() - 陣列中元素個數 + - [ ] capacity() - 陣列能存的最大元素個數 + - [ ] is_empty() + - [ ] at(index) - 傳回該索引值的元素,附有邊界檢查(boundary check) + - [ ] push(item) + - [ ] insert(index, item) - 把元素插入該索引值,把原本在該索引值的元素往右邊移動。 + - [ ] prepend(item) - 可以把元素插入索引值為0的地方。 + - [ ] pop() - 移除陣列中最後一個元素,並回傳該元素的值。 + - [ ] delete(index) - 刪除在該索引值的元素,並且把右邊剩下元素全部往左移。 + - [ ] remove(item) - 從陣列中尋找該數值,並且移除他(就算陣列中數個地方都有這個數值)。 + - [ ] find(item) - 從陣列中尋找該數值,並且傳回最前面找到該數值的索引值,如果沒有則傳回-1。 + - [ ] resize(nex_capacity) // private function + - 當陣列已經用盡了所有容量後,把陣列的容量*2。 + - 如果移除掉一個元素後,陣列實際大小是最大容量的1/4,則把陣列容量減半。 + - [ ] 時間複雜度 + - O(1) 在陣列末端插入/刪除元素 + - O(n) 在任何地方插入/刪除元素 + - [ ] 空間複雜度 + - 在記憶體中的存放位置是連續的,這種儲存方式有助於存取的性能。 + - 所需空間 = (陣列容量,>=n) * 元素所需大小,但就算結果為2n,實際上仍算成O(n) + +- ### Linked Lists + - [ ] Linked Lists背後原理: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - 沒有完整的code,裡面只包含了用struct實作節點的方式以及其記憶體配置。 + - [ ] Linked List vs 陣列: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] 小心!: 你需要一些關於指標的指標(Pointer to pointer)的知識: + (當你回傳一個指標到函式,這個動作可能會改變指標所指向的地址) + 這個頁面僅提供基本對於指標的指標的認識。我不推薦這個遍歷linked list的方式,因為他用的方式太過神奇,所以可讀性以及維護性並不好。 + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] 實作Linked list (我做了有末端指標(tail pointer)的版本以及無末端指標的版本): + - [ ] size() - 回傳linked list裡面的元素個數 + - [ ] empty() - 回傳型態:bool,如果linked list為空,回傳true + - [ ] value_at(index) - 回傳索引值為index的元素的數值,第一個元素索引值為0,以此類推 + - [ ] push_front(value) - 從linked list的起始點加入新的元素 + - [ ] pop_front() - 移除第一個元素,並且回傳該元素的數值 + - [ ] push_back(value) - 在linked list末端加入新元素 + - [ ] pop_back() - 移除最後一個元素,並且回傳該元素的數值 + - [ ] front() - 回傳第一個元素的數值 + - [ ] back() - 回傳最後一個元素的數值 + - [ ] insert(index, value) - 把新元素插入到該索引值,而新元素指向原本在該索引值的元素。 + - [ ] erase(index) - 刪除該索引值的元素(節點) + - [ ] value_n_from_end(n) - 回傳從末端開始計算的第n個元素的數值 + - [ ] reverse() - 反轉該linked list + - [ ] remove_value(value) - 刪除第一個為該數值的元素(意即7 2 2 1,要刪除2的話,只刪除index:1的那個2) + - [ ] 雙向linked List + - [背後原理(影片)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - 不需實作 + +- ### Stack(堆疊) + - [ ] [Stacks(影片)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] 無須實作,可以用陣列實作,但這樣太過簡單了。 + +- ### Queue(佇列) + - [ ] [使用Queues(先進先出)First-In First-Out(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue(影片)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] 使用linked list實作,包含末端指標(tail pointer): + - enqueue(value) - 在queue末端加入元素 + - dequeue() - 刪除當時queue中最早進入的元素(意即queue中第一個元素),並且回傳該元素的值。 + - empty() + - full() + - [ ] 複雜度: + - + - enqueue: O(1) (平均情況,無論對於用linked list或陣列實作的方法) + - dequeue: O(1) (linked list與陣列) + - empty: O(1) (linked list與陣列) + +- ### 雜湊表(Hash table) + - [ ] 影片: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] 線上開放式課程: + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] 分散式雜湊表(distributed hash table): + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] 實作雜湊表(用陣列以及線性探測(linear probing)) + - hash(k, m) - m:雜湊表的大小 + - add(key, value) - 如果key已經存在,則更新該key的value + - exists(key) + - get(key) + - remove(key) + +## 更多 + +- ### 二分搜尋法(Binary Search) + - [ ] [二分搜尋法(影片)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [二分搜尋法(影片)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [細節](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] 實作: + - 二分搜尋法 (對已經排列好的數列) + - 用遞迴(recursion)的方法實作二分搜尋法 + +- ### 位元運算(Bitwise operations) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] 一補數與二補數 + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] 絕對值: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## 樹狀結構(Tree) + +- ### Trees - 重點與背景知識 + - [ ] [Series: Core Trees (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (影片)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS(廣度優先搜尋)重點: + - 每一層的順序(BFS,用queue) + - 時間複雜度: O(n) + - 空間複雜度: 最佳: O(1), 最糟: O(n/2)=O(n) + - DFS(深度優先搜尋)重點: + - 時間複雜度: O(n) + - 空間複雜度: + 最佳: O(log n) - 平均. 樹的高度 + 最糟: O(n) + - 中序 (DFS: 左子樹、根、右子樹) + - 後序 (DFS: 左子樹、右子樹、根) + - 前序 (DFS: 根、左子樹、右子樹) + +- ### (二元搜尋樹)Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] 實作: + - [ ] insert // 把數值插入到二元搜尋樹當中 + - [ ] get_node_count // get count of values stored + - [ ] print_values // 把二元搜尋樹中的數值從小到大輸出 + - [ ] delete_tree + - [ ] is_in_tree // 如果給定的數值位於二元搜尋樹當中則回傳true + - [ ] get_height // 回傳該節點內的高度(單一節點的樹高度為1) + - [ ] get_min // 回傳二元搜尋樹當中的最小值 + - [ ] get_max // 回傳二元搜尋樹當中的最大值 + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // 回傳二元搜尋樹當中大小在給定數值後一位的數值,如果沒有則回傳-1 + +- ### Heap / Priority Queue / Binary Heap + - 一般將此資料結構以樹的方式視覺化,但實際上是以線性的方式儲存(陣列、linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] 實作max heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap + - 重點: using a min heap instead would save operations, but double the space needed (cannot do in-place). + +## 排序 + +- [ ] 重點: + - 實作排序,並且了解該排序法在最佳/最糟/平均情況下的複雜度為何: + - 不要用泡沫排序法(bubble sort),那個太糟了 - O(n^2),除非n<=16 + - [ ] 排序演算法的穩定性("快速排序法穩定嗎?") + - [排序演算法的穩定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [穩定性與排序演算法](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [穩定性與排序演算](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [排序演算法-穩定性](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] 哪個演算法可以用在linked list上?那些可以用在陣列上?或者兩個都可以? + - 我不推薦對一個linked list進行排序,但合併排序是可行的. + - [對linked list進行合併排序](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- 有關於堆積排序,可以看看上面有關於堆積的介紹。堆積排序很棒,但不太穩定。 + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] 合併排序程式碼: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] 快速排序程式碼: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] 實作: + - [ ] 合併排序: 平均與最糟都是O(n log n) + - [ ] 快速排序: 平均O(n log n) + - 選擇排序與插入排序平均與最糟的時間複雜度都是O(n^2)。 + - 有關堆積排序,請見上方關於堆積的介紹。 + +- [ ] 非必要,但我建議看一看: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +這裡有[15種排序演算法](https://www.youtube.com/watch?v=kPRA0W1kECg)的影片,如果你想對排序演算法有更多的了解,看看[Additional Detail on Some Subjects](#additional-detail-on-some-subjects)裡的「排序」這個部分 + +## 圖 + +圖在電腦科學中可以用來表示、處理很多問題,所以這個部分就像樹以及排序一樣篇幅很長。 + +- 重點: + - 有4種基本表示圖的方式: + - 物件與指標(objects and pointers) + - adjacency matrix + - adjacency list + - adjacency map + - 請務必了解每種圖的表示法與每種表示法的優點及缺點。 + - 廣度優先搜尋(BFS)與深度優先搜尋(DFS) - 知道他們的時間複雜度,他們的優缺點,以及如何實作他們。 + - 如果出現一個問題,請優先想想看有沒有辦法用圖的方式解決,如果沒辦法再想想其他方法。 + +- [ ] MIT(影片): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - 很棒的入門介紹: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] 圖(複習以及進階知識): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- 完整Coursera課程: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- 我將實作: + - [ ] 深度優先搜尋搭配adjacency list(遞迴recursive) + - [ ] 深度優先搜尋搭配adjacency list(疊代+stack) + - [ ] 深度優先搜尋搭配adjacency matrix (遞迴recursive) + - [ ] 深度優先搜尋搭配adjacency matrix(疊代+stack) + - [ ] 廣度優先搜尋搭配adjacency list + - [ ] 廣度優先搜尋搭配adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (看看上面Aduni的影片): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## 更多知識 + +- ### 遞迴Recursion + - [ ] Stanford課程-遞迴recursion與回溯法backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - 什麼時候適合用這些 + - tail recursion沒有比較好? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### 動態規劃 + - 在你的面試中或許沒有任何動態規劃的問題,但能夠知道一個題目可以使用動態規劃來解決是很重要的。 + - 動態規劃很難,因為動態規劃的題目通常都要有遞迴關係。要想到他的解法有時需要天外飛來一筆的想法。 + - 我建議你可以多看一些動態規劃的題目,這可以讓你對這類型的問題以及他的長相有更多的理解。 + - [ ] 影片: + - Skiena的影片有點難跟上,他有時候用白板,寫的字又很小。 + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (每一部都很短): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale課程筆記: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### 物件導向程式設計 + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] 重要!物件導向程式設計原則: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### 設計模式 +- [ ] [Quick UML review(影片)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] 學學這些設計模式: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + +- ### 組合數&機率 + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course大崗: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - 只有影片 - 41 (每個都很簡單而且很短): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP、NP-Complete以及近似演算法 + - 了解一些著名的NP-Complete問題,像是旅行推銷員問題(traveling salesman problem)和背包問題(knapsack problem),並要能夠在面試官問類似這些經典範例的問題時辨認出他們。 + - 了解NP-complete的方法。 + - [ ] [計算複雜性理論(影片))](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [貪心演算法II & NP Completeness導論(影片)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions(影片)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III(影片)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV(影片)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - NP-Completeness導論(影片)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness證明(影片)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness牛刀小試(影片)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [複雜性: P、NP、NP-completeness、Reductions(影片)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [複雜性: 近似演算法(影片)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [複雜性: Fixed-Parameter Algorithms(影片)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig在影片中提到旅行推銷員問題的近似最佳解: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - 在演算法導論(Introduction to Algorithms)第1048~1140頁 + +- ### 快取(cache) + - [ ] LRU cache: + - [ ] [奇妙LRU Cache (100 Days of Google Dev)(影片)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [實作LRU(影片)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++)(影片)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: 記憶體階層(影片)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: 快取深入探討(影片)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### 程序與執行緒(Processes&Threads) +- [ ] Computer Science 162 - 作業系統 (25 videos): + - 程序與執行緒在第1~11部影片中 + - [作業系統以及系統程式設計(影片)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [程序與執行緒有什麼差別?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - 涵蓋: + - 探討程序、執行緒與並行性 + - 程序與執行緒的差別 + - 程序 + - 執行緒 + - locks + - mutexes + - semaphores + - monitors + - 他們如何運作? + - deadlock + - livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory(影片)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts(影片)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - 涵蓋: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### 排程Scheduling + - 作業系統中排程如何運作? + - 可以從作業系統的課程影片中學習 + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays(影片)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search(影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text(影片)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path. + - I read through code, but will not implement. + - [ ] [Sedgewick - Tries(3部影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case)(影片)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)(影片)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary(影片)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian(影片)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out(影片)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### 網路 + - **以下為如果你有網路相關經驗,或是想成為一個可靠的工程師需要知道的知識** + - 知道這些有益無害,多多益善! + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols(影片)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained!(影片)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.(影片)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP(影片)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS(影片)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS(影片)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0(影片)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos)(影片)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation(影片)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction(影片)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming(影片)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## 系統設計、可擴充性、資料處理 + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this. +- Considerations: + - scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - system design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF(影片)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters(影片)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile(影片)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm(影片)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview(影片)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [影片](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [影片系列]](#video-series) section. +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - define the use cases, with interviewer's help + - suggest additional features + - remove items that interviewer deems out of scope + - assume high availability is required, add as a use case + 2. Think about constraints: + - ask how many requests per month + - ask how many requests per second (they may volunteer it or make you do the math) + - estimate reads vs. writes percentage + - keep 80/20 rule in mind when estimating + - how much data written per second + - total storage required over 5 years + - how much data read per second + 3. Abstract design: + - layers (service, data, caching) + - infrastructure: load balancing, messaging + - rough overview of any key algorithm that drives the service + - consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## 總複習 + + 這部分我放了一些簡短的影片,觀看這些影片可以快速的複習一些重要的觀念。 + 如果你想時常複習,那真是太棒了! + +- [ ] 2-3分鐘快速複習影片系列(23個影片) + - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (18個影片) + - [影片](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## 解題練習 + +現在你已經知道上面所有有關電腦科學的主題了,該是時候做些解題的練習了。 + +**解題練習不能死記題目的解法** + +為什麼你需要練習解題: +- 快速識別問題,以及如何應用正確的資料結構及演算法。 +- 蒐集問題的需求 +- 模擬面試時用你的方法闡述問題 +- 試著不要在電腦上寫程式,而是 在白板上或紙上 +- 想出該問題的時間與空間複雜度 +- 測試你的解法 + +這裡有個很棒的入門教學,內容是如何在面試中有條不紊,並且有互動溝通地解決問題。這種能力可以從面試書籍中獲得,但我覺得這個也超讚的:[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) + +家裡沒有白板嗎?這很合理。但我是個奇怪的人,家裡有個大白板。沒有白板的話,可以去美術社買個大的繪圖板。你可以坐在沙發上練習。這是我的「沙發白板」。我在照片中放了一枝筆當作比例尺。如果你用筆的話,你將會希望你可以擦拭他,因為他很快就會變髒了。通常我都用鉛筆與橡皮擦。 + +![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +補充: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**閱讀並解題(按照以下順序):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - 附有C、C++、Java的解答 +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - 附有Java的解答 + +看看[上方的書單](#書單(book-list)) + +## 解題練習/挑戰 + +Once you've learned your brains out, put those brains to work. +試試每天解一些題目,越多越好! + +- [如何找到解法](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/) + +Coding面試題目影片: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - 對於解法的練習非常有幫助 +- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - 這些是我最近很喜歡的影片,你可以在短時間內看完他們 + - 對於解法以及程式碼有很棒的解釋 + +解題網站: +- [LeetCode](https://leetcode.com/) +- [TopCoder](https://www.topcoder.com/) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Codewars](http://www.codewars.com) +- [HackerEarth](https://www.hackerearth.com/) +- [HackerRank](https://www.hackerrank.com/) +- [Codility](https://codility.com/programmers/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +解題repository: +- [Python互動式coding面試解題](https://github.com/donnemartin/interactive-coding-challenges) + +更多面試: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - 點對點面試練習 +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - 同樣能藉由跳過跟多家科技公司的面試,幫助你快速步上軌道, + +## 面試前夕 + +- Coding面試解密-第二集(影片): + - [Coding面試解密](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Coding面試解密 - 全端講者系列](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## 你的履歷 + +- 看看Coding面試解密中的履歷準備。 + +## 想想面試時可能的狀況 + + 一些我預想的問題(我或許已經知道答案,但想知道他們的意見或是團隊的觀點): + +- 你的團隊規模多大? +- 你的開發週期大概是怎樣?敏捷agile、瀑布式waterfall、sprint? +- 截止日前趕工是常態嗎?或是這之中有彈性? +- 在你的團隊中是怎麼做決定的? +- 每週你們開幾次會? +- 你覺得你的工作環境能幫助你專注嗎? +- 你目前在做哪個專案? +- 你喜歡這個專案的哪個部份? +- 工作生活如何? +- 工作與生活如何取得平衡? + +## 一旦你得到工作 + +恭喜!!! + +繼續學習 + +活到老,學到老。 + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + 下面的東西都是額外的。 + 讀這些東西,可以更了解電腦科學的概念, + 並且能讓自己對任何軟體工程的工作做更好的準備。 + 如此一來,你將會成為一個更全面的軟體工程師。 + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## 選修書籍 + + 你可以從以下的書單挑選你有興趣的主題來研讀 + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - an oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - a modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - a gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - aka the "Gang Of Four" book, or GOF + - the canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - aka CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture. + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - more about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below. + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - also see videos below + - make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - also see videos below + - make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - used to determine the similarity of documents + - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. + - splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets. + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc. + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - these are a translation of a 2-3 tree (see below) + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used. + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address. + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - great for finding number of points in a rectangle or higher dimension object + - a good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - 觀看下方影片 + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. "Netflix and skill" :P + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## 電腦科學課程 + +- [電腦科學線上課程目錄]](https://github.com/open-source-society/computer-science) +- [電腦科學課程目錄 (大多都有線上課程))](https://github.com/prakhar1989/awesome-courses) + +## 論文 + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file diff --git a/tw_translation_progress_log.md b/tw_translation_progress_log.md new file mode 100644 index 0000000000..82d286bf70 --- /dev/null +++ b/tw_translation_progress_log.md @@ -0,0 +1,59 @@ +# TIP (2020.04.09) +以下是這個翻譯計畫中還尚未完成的部份, +想參與這個計畫的人可以先挑選幾個部份翻譯並告知我,我會在這份log中標示那個部份已經有人負責,以避免衝突。完成翻譯後再聯絡我! +# participants +# translation log + +| 日期 | 事件 | 其他 | +|---|---|---| +| 2020/04/09 |建立tw_translation_progress_log.md | | + +# To be done... +## 雜湊表 +## Heap/Priority Queue/Binary Heap +## 更多知識: + 程序與執行緒(Processes&Threads) + Testing + String searching & manipulations + Tries + Floating Point Numbers + Unicode + Endianness +## 系統設計、可擴充性、資料處理 + +## 選修書籍 + +## Additional Learning + Compilers + Emacs and vi(m) + 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 + k-D Trees + Skip lists + Network Flows + Disjoint Sets & Union Find + Math for Fast Processing + Treap + Linear Programming (videos) + Geometry, Convex hull (videos) + Machine Learning +## Additional Detail on Some Subjects +## Video Series +## 論文 + From 0de7e5e291dad69535b750ef1d5a76944c510b77 Mon Sep 17 00:00:00 2001 From: Michal Date: Thu, 9 Apr 2020 18:01:51 +0200 Subject: [PATCH 110/857] update readme small internal link fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 111f24c254..9bb001c12b 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) -- [Polish](https://github.com/mbiesiad/coding-interview-university/blob/master/translations/README-pl.md) +- [Polish](translations/README-pl.md) From 6e55e199783fc7da50b95657a877c4d0523a84b2 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 22 Apr 2020 08:53:29 -0700 Subject: [PATCH 111/857] Fixes typo in file name. --- README.md | 2 +- ...s-cheat-cheet.pdf => bits-cheat-sheet.pdf} | Bin translations/README-ar.md | 2 +- translations/README-bn.md | Bin 285802 -> 285802 bytes translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-th.md | 2 +- translations/README-uk.md | 2 +- translations/README-vi.md | 2 +- 17 files changed, 15 insertions(+), 15 deletions(-) rename extras/cheat sheets/{bits-cheat-cheet.pdf => bits-cheat-sheet.pdf} (100%) diff --git a/README.md b/README.md index 9bb001c12b..da4bfa7912 100644 --- a/README.md +++ b/README.md @@ -628,7 +628,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/extras/cheat sheets/bits-cheat-cheet.pdf b/extras/cheat sheets/bits-cheat-sheet.pdf similarity index 100% rename from extras/cheat sheets/bits-cheat-cheet.pdf rename to extras/cheat sheets/bits-cheat-sheet.pdf diff --git a/translations/README-ar.md b/translations/README-ar.md index 8346fb1c60..d5c0ffbea3 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -717,7 +717,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-bn.md b/translations/README-bn.md index 826e9884a303e2edcb87669c2819cff98fb762a8..753a2cd0594e97e503e0d92645162ae7bb58c966 100644 GIT binary patch delta 31 jcmaF0L-5rO!G>、<< - [ ] [字码(words)](https://en.wikipedia.org/wiki/Word_(computer_architecture)) diff --git a/translations/README-de.md b/translations/README-de.md index bf272e96c9..e5a91da11d 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -693,7 +693,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - Binärsuche mittels Rekursion - ### Bitweise Operationen - - [ ] [Bits Spickzettel](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - man sollte viele der Zweierpotenzen kennen (von 2^1 über 2^16 und 2^32) + - [ ] [Bits Spickzettel](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - man sollte viele der Zweierpotenzen kennen (von 2^1 über 2^16 und 2^32) - [ ] Erhalte sehr gutes Verständnis Bits zu manipulieren mit: &, |, ^, ~, >>, << - [ ] [Wörter](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Gute Einführung: diff --git a/translations/README-es.md b/translations/README-es.md index 0995f5be1d..f3c244d05a 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -636,7 +636,7 @@ Escriba código en un pizarrón o en papel no en la computadora. Pruebe con algu - Búsqueda binaria usando recursión - ### Operaciones bit a bit - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) - [ ] Obtenga un buen entendimiento de la manipulación de bits con: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Buena introducción: diff --git a/translations/README-fr.md b/translations/README-fr.md index 65fb76914d..c66547f939 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -703,7 +703,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-he.md b/translations/README-he.md index efdec4bcb5..250fc5b71b 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -697,7 +697,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-hi.md b/translations/README-hi.md index bd8f86d9c0..2e83edc551 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -549,7 +549,7 @@ memory" का एरर न दे, और तब मुजे कोई वै - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-id.md b/translations/README-id.md index e04e3d53d0..f12d3d640c 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -669,7 +669,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-ko.md b/translations/README-ko.md index b67b075c4b..42c8854334 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -720,7 +720,7 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - 재귀를 사용한 이진 탐색 - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] 비트 연산자(&, |, ^, ~, >>, <<) 제대로 이해하기 - [ ] [워드](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] 시작하기 좋은 곳: diff --git a/translations/README-pl.md b/translations/README-pl.md index 687f09e258..58128dfe3a 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -617,7 +617,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - binary search using recursion - ### Operacje bitowe - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Dobrze zrozum manipulowanie bitami korzystając z: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index c2c7dd3dc2..c015eccef2 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -650,7 +650,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - busca binária usando recursividade - ### Lógica binária - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) (Folha de consultas sobre Bits) - você deve conhecer várias das potências de 2 de (2^1 até 2^16 e 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) (Folha de consultas sobre Bits) - você deve conhecer várias das potências de 2 de (2^1 até 2^16 e 2^32) - [ ] Consiga um bom entendimento sobre manipulação de bits com: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) (palavras) - [ ] Boa introdução: diff --git a/translations/README-th.md b/translations/README-th.md index be3064fede..e33cbc6010 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -628,7 +628,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-uk.md b/translations/README-uk.md index 5dc1fe71c6..f6e8c22a84 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -626,7 +626,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: diff --git a/translations/README-vi.md b/translations/README-vi.md index 0a92d0e325..8ad65bce86 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -662,7 +662,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - Tìm kiếm nhị phân sử dụng đệ quy - ### Toán tử trên bit - - [ ] [Bits cheat sheet](/extras/cheat%20sheets/bits-cheat-cheet.pdf) - bạn nên thuộc lòng nhiều lũy thừa của 2 (từ 2^1 đến 2^16 và 2^32) + - [ ] [Bits cheat sheet](/extras/cheat%20sheets/bits-cheat-sheet.pdf) - bạn nên thuộc lòng nhiều lũy thừa của 2 (từ 2^1 đến 2^16 và 2^32) - [ ] Hãy chuẩn bị một nền tảng tốt về các biến đổi bit với các toán tử: &, |, ^, ~, >>, << - [ ] [words (thuật ngữ trong kiến trúc máy tính)](https://en.wikipedia.org/wiki/Word_(computer_architecture) ) - [ ] Bài mở đầu: From 45b6e78db1452d7b68a5b94132c750a9822a0a31 Mon Sep 17 00:00:00 2001 From: xorover <46455303+xorover@users.noreply.github.com> Date: Sat, 25 Apr 2020 22:13:52 +0300 Subject: [PATCH 112/857] Add MIT Bit Hacks lecture https://www.youtube.com/watch?v=ZusiKXcz_ac --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a814bf46e3..bc7b6a3792 100644 --- a/README.md +++ b/README.md @@ -696,6 +696,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) From fa94da2a0ba9250bd2ac8273d6ee29bf54b756a6 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 5 May 2020 06:48:38 -0500 Subject: [PATCH 113/857] Create README-kh.md Khmer translation - header section --- translations/README-kh.md | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 translations/README-kh.md diff --git a/translations/README-kh.md b/translations/README-kh.md new file mode 100644 index 0000000000..784f9fb24a --- /dev/null +++ b/translations/README-kh.md @@ -0,0 +1,68 @@ +# មហាវិទ្យាល័យការសរសេរកូដសំរាប់ការសម្ភាសន៍ (Coding Interview University) + + +### បង្កើតដោយ: [@John Washam](https://github.com/jwasham) +### បកប្រែជាភាសារខ្មែរដោយ: [@Vortana Say](https://github.com/vsay01) + +> ពីដំបូងខ្ញុំបង្កើតនេះជាបញ្ជីប្រធានបទត្រូវធ្វើខ្លីដើម្បីក្លាយជាវិស្វករអភិវឌ្ឍន៍កម្មវិធី ប៉ុន្តែវាបានកើនឡើងដល់បញ្ជីធំដែលអ្នកបានឃើញសព្វថ្ងៃនេះ។ បន្ទាប់ពីឆ្លងកាត់គំរោងសិក្សានេះខ្ញុំបានក្លាយ +> ជាវិស្វករអភិវឌ្ឍន៍កម្មវិធីនៅអាមាហ្សូន (Amazon) ] (https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> អ្នកប្រហែលជាមិនចាំបាច់សិក្សាច្រេីនដូចខ្ញុំទេ។ ទោះយ៉ាងណាក៏ដោយអ្វីគ្រប់យ៉ាងដែលអ្នកត្រូវការគឺនៅទីនេះ។ +> +> ខ្ញុំបានសិក្សាប្រហែលជា ៨ ទៅ ១២ ម៉ោងក្នុងមួយថ្ងៃអស់រយៈពេលជាច្រើនខែ។ អ្នកអាចអានារឿងរបស់ខ្ញុំ៖ [ហេតុអ្វីខ្ញុំសិក្សាពេញម៉ោងរយៈពេល ៨ ខែសំរាប់ការសំភាសន៍ហ្គូហ្គល] (https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> +> ចំណុចដែលបានរាយនៅទីនេះនឹងជួយអ្នករៀបចំការសំភាសន៍បច្ចេកទេសនៅក្រុមហ៊ុនកម្មវិធីណាមួយ។ +> រាប់បញ្ចូលទាំងក្រុមហ៊ុនធំៗដូចជា Amazon, Facebook, Google និង Microsoft ។ +> +> * សូមសំណាងល្អដល់អ្នក! * + +
+ការបកប្រែ៖ + +- [ភាសារចិន - 中文版本](translations/README-cn.md) +- [ភាសារវៀតណាម - Tiếng Việt - Vietnamese](translations/README-vi.md) +- [ភាសារអេស្ប៉ាញ - Español](translations/README-es.md) +- [ភាសារព័រទុយហ្កាល់ - Português Brasileiro](translations/README-ptbr.md) +- [ភាសារប៉ូឡូញ - Polish](translations/README-pl.md) + +
+ +
+ភាសារដែលកំពុងបកប្រែ: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) + +
+ + +## តើវាគឺជាអ្វី? + +នេះគឺជាគំរោងសិក្សារបស់ខ្ញុំដែលមានរយៈពេលជាច្រើនខែសំរាប់ការរៀនក្លាយពីអ្នកបង្កើតគេហទំព័រ (បង្រៀនដោយខ្លួនឯង និង មិនមានសញ្ញាប័ត្រ +វិទ្យាសាស្ត្រកុំព្យូទ័រ) រហូតដល់ក្លាយជាវិស្វករអភិវឌ្ឍន៍កម្មវិធីសំរាប់ក្រុមហ៊ុនធំ។! + +![ការសរសេរកូដនៅលើក្ដារខៀន - ពីតំបន់ Silicon Valley របស់ HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +នេះមានន័យថាសម្រាប់ ** វិស្វករអភិវឌ្ឍន៍កម្មវិធីថ្មី ** ឬអ្នកដែលប្តូរពី +ការអភិវឌ្ឍន៍កម្មវិធី / អ្នកបង្កេីតវេបសាយ (ដែលត្រូវការចំណេះដឹងផ្នែកវិទ្យាសាស្ត្រកុំព្យូទ័រ) ។ ប្រសិនបើអ្នកមាន +បទពិសោធជាច្រើនឆ្នាំក្នុងការអភិវឌ្ឍន៍កម្មវិធី នោះអ្នកអាចនឹងរំពឹងថាមានបទសម្ភាសន៍ពិបាក។ + +ប្រសិនបើអ្នកមានបទពិសោធន៍អភិវឌ្ឍន៍កម្មវិធី ឬ វេបសាយច្រើនឆ្នាំ សូមកត់សម្គាល់ថាក្រុមហ៊ុនធំ ៗ ដូចជាហ្គូហ្គោល(Google) អាម៉ាហ្សូន (Amazon) +ហ្វេសប៊ុក (Facebook) និង ម៉ៃក្រូសូហ្វ (Microsoft) មានទស្សនៈថាវិស្វករអភិវឌ្ឍន៍កម្មវិធី ខុសគ្នាពីអ្នកបង្កេីតកម្មវិធី ឬ ការអភិវឌ្ឍន៍គេហទំព័រវេបសាយ ហើយពួកគេត្រូវការចំណេះដឹងផ្នែកវិទ្យាសាស្ត្រកុំព្យូទ័រ។ + +ប្រសិនបើអ្នកចង់ក្លាយជាវិស្វករដែលអាចទុកចិត្តបានឬវិស្វករប្រតិបត្តិការសូមសិក្សាបន្ថែមពីបញ្ជីជម្រើស (បណ្តាញ និង សុវត្ថិភាព) ។ + +--- From 998fd4b38480ee3742a4b3e70cd2c534dd9db301 Mon Sep 17 00:00:00 2001 From: Afaq Ahmed Khan Date: Tue, 5 May 2020 22:02:07 +0500 Subject: [PATCH 114/857] started urdu translations --- translations/README-ur.md | 1978 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1978 insertions(+) create mode 100644 translations/README-ur.md diff --git a/translations/README-ur.md b/translations/README-ur.md new file mode 100644 index 0000000000..89ccefe00b --- /dev/null +++ b/translations/README-ur.md @@ -0,0 +1,1978 @@ +# Coding Interview University + +> سافٹ ویئر انجینئر بننے کے لئے میں نے اصل میں اس کو اسٹڈی لسٹ کے طور پر اسٹڈی ٹاپکس کی فہرست کے طور پر تخلیق کیا ہے, +> لیکن یہ اس بڑی تعداد میں بڑھ گئی جو آپ آج دیکھ رہے ہیں۔ اس مطالعاتی منصوبے سے گزرنے کے بعد ، [مجھے نوکری مل گئی +> ایمیزون میں سافٹ ویئر ڈویلپمنٹ انجینئر کی حیثیت سے](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> آپ کو شاید اتنا مطالعہ نہیں کرنا پڑے گا جتنا میں نے کیا تھا۔ بہر حال ، آپ کی ہر چیز کی ضرورت یہاں ہے۔ +> +> میں نے کئی مہینوں تک ، دن میں تقریبا 8 سے 12 گھنٹے مطالعہ کیا۔ یہ میری کہانی ہے: [گوگل انٹرویو کے لئے میں نے 8 ماہ تک فل ٹائم کیوں پڑھا](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> یہاں درج آئٹمز کسی بھی سافٹ ویئر کمپنی کے بارے میں تکنیکی انٹرویو کے ل آپ کو اچھی طرح تیار کریں گے ، +> سمیت: Amazon, Facebook, Google, and Microsoft. +> +> *آپ کو نیک خواہشات!* + +
+ترجمہ: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [Urdu](translations/README-ur.md) +
+ +
+ترجمہ جاری ہے: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) + +
+ +## What is it? + +This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +This is meant for **new software engineers** or those switching from +software/web development to software engineering (where computer science knowledge is required). If you have +many years of experience and are claiming many years of software engineering experience, expect a harder interview. + +If you have many years of software/web development experience, note that large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. + +If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). + +--- + +## Table of Contents + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [The Daily Plan](#the-daily-plan) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. +Every data structure I've ever used was built into the language, and I didn't know how they worked +under the hood at all. I've never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and +thousands of associative arrays, but I've never created data structures from scratch. + +It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. + +## How to use it + +Everything below is an outline, and you should tackle the items in order from top to bottom. + +I'm using Github's special markdown flavor, including tasks lists to check progress. + +**Create a new branch so you can check items like this, just put an x in the brackets: [x]** + + + Fork a branch and follow the commands below + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + Mark all boxes with X after you completed your changes + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/master` + +`git push --force` + +[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + + +## Don't feel you aren't smart enough + +- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## About Video Resources + +Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. + + I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. + I like using university lectures. + + +## Interview Process & General Interview Prep + +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Prep Course: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + +## Pick One Language for the Interview + +You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: + +- C++ +- Java +- Python + +You could also use these, but read around first. There may be caveats: + +- JavaScript +- Ruby + +Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +You need to be very comfortable in the language and be knowledgeable. + +Read more about choices: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[See language resources here](programming-language-resources.md) + +You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. + +## Book List + +This is a shorter list than what I used. This is abbreviated to save you time. + +### Interview Prep + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - answers in C++ and Java + - this is a good warm-up for Cracking the Coding Interview + - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +### If you have tons of extra time: + +Choose one: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### Language Specific + +**You need to choose a language for the interview (see above).** + +Here are my recommendations by language. I don't have resources for all languages. I welcome additions. + +If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. +**You can skip all the video lectures in this project**, unless you'd like a review. + +[Additional language-specific resources here.](programming-language-resources.md) + +### C++ + +I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. + +### Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - videos with book content (and Sedgewick!) on coursera: + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +OR: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - by Goodrich, Tamassia, Goldwasser + - used as optional text for CS intro course at UC Berkeley + - see my book report on the Python version below. This book covers the same topics. + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + + +## Before you Get Started + +This list grew over many months, and yes, it kind of got out of hand. + +Here are some mistakes I made so you'll have a better experience. + +### 1. You Won't Remember it All + +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards so I could review. + +Read please so you won't make my mistakes: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) + +### 2. Use Flashcards + +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. + +I made a mobile-first website so I could review on my phone and tablet, wherever I am. + +Make your own for free: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): + +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. + +**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. 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. + +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) + +### 3. 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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding +linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, +or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, +but how you apply the knowledge. There are several books and sites I recommend. +See here for more: [Coding Question Practice](#coding-question-practice) + +### 4. Review, review, review + +I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. + +Take a break from programming problems for a half hour and go through your flashcards. + +### 5. Focus + +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 +- Javascript +- HTML, CSS, and other front-end technologies + +## The Daily Plan + +Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. + +Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: +- C - using structs and functions that take a struct * and something else as args. +- C++ - without using built-in types +- C++ - using built-in types, like STL's std::list for a linked list +- Python - using built-in types (to keep practicing Python) +- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements +- You may do Java or something else, this is just my thing. + +You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). + +Why code in all of these? +- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) +- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) +- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) + +I may not have time to do all of these for every subject, but I'll try. + +You can see my code here: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +You don't need to memorize the guts of every algorithm. + +Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. + +## Prerequisite Knowledge + +- [ ] **Learn C** + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - [answers to questions](https://github.com/lekkas/c-algorithms) + +- [ ] **How computers process a program:** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +## Algorithmic complexity / Big-O / Asymptotic analysis + +- Nothing to implement +- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. +- If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +## Data Structures + +- ### Arrays + - Implement an automatically resizing vector. + - [ ] Description: + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation. + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] Will not implement. Implementing with array is trivial. + +- ### Queue + - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap + - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable. + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above. + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none. + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - when it is appropriate to use it + - how is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - difference between processes and threads + - processes + - threads + - locks + - mutexes + - semaphores + - monitors + - how they work + - deadlock + - livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - in an OS, how it works + - can be gleaned from Operating System videos + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path. + - I read through code, but will not implement. + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this. +- Considerations: + - scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - system design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - define the use cases, with interviewer's help + - suggest additional features + - remove items that interviewer deems out of scope + - assume high availability is required, add as a use case + 2. Think about constraints: + - ask how many requests per month + - ask how many requests per second (they may volunteer it or make you do the math) + - estimate reads vs. writes percentage + - keep 80/20 rule in mind when estimating + - how much data written per second + - total storage required over 5 years + - how much data read per second + 3. Abstract design: + - layers (service, data, caching) + - infrastructure: load balancing, messaging + - rough overview of any key algorithm that drives the service + - consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- problem recognition, and where the right data structures and algorithms fit in +- gathering requirements for the problem +- talking your way through the problem like you will in the interview +- coding on a whiteboard or paper, not a computer +- coming up with time and space complexity for 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/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code. + - You can watch several in a short time. +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. + + +## Once you're closer to the interview + +- Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## Your Resume + +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed + + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product. +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - an oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - a modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - a gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - aka the "Gang Of Four" book, or GOF + - the canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - aka CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture. + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - more about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below. + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - also see videos below + - make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - also see videos below + - make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - used to determine the similarity of documents + - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. + - splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets. + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc. + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - these are a translation of a 2-3 tree (see below) + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used. + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address. + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - great for finding number of points in a rectangle or higher dimension object + - a good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - see videos below + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. "Netflix and skill" :P + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From 79b9e37599e18d70be89e0be1cd7156b1c31b9dc Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 5 May 2020 12:43:19 -0500 Subject: [PATCH 115/857] Update README-kh.md Translate Khmer - content, what it is, why use it, how to use it --- translations/README-kh.md | 116 +++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 784f9fb24a..fffec2d73a 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -13,7 +13,7 @@ > ចំណុចដែលបានរាយនៅទីនេះនឹងជួយអ្នករៀបចំការសំភាសន៍បច្ចេកទេសនៅក្រុមហ៊ុនកម្មវិធីណាមួយ។ > រាប់បញ្ចូលទាំងក្រុមហ៊ុនធំៗដូចជា Amazon, Facebook, Google និង Microsoft ។ > -> * សូមសំណាងល្អដល់អ្នក! * +> សូមសំណាងល្អដល់អ្នក!
ការបកប្រែ៖ @@ -48,6 +48,78 @@
+--- + +## តារាងមាតិកា + +- [តើវាគឺជាអ្វី?](#what-is-it) +- [ហេតុអ្វីប្រើវា?](#why-use-it) +- [របៀបប្រើវា](#how-to-use-it) +- [កុំមានអារម្មណ៍ថាអ្នកមិនឆ្លាតគ្រប់គ្រាន់](#dont-feel-you-arent-smart-enough) +- [ធនធានវីដេអូ](#about-video-resources) +- [ដំណើរការសម្ភាសន៍ និង ការត្រៀមសម្ភាសន៍ទូទៅ](#interview-process--general-interview-prep) +- [ជ្រើសរើសភាសាមួយសម្រាប់ការសម្ភាសន៍](#pick-one-language-for-the-interview) +- [បញ្ជីសៀវភៅ](#book-list) +- [មុនពេលអ្នកចាប់ផ្តើម](#before-you-get-started) +- [អ្វីដែលអ្នកនឹងមិនឃើញ](#what-you-wont-see-covered) +- [ចំណេះដឹងជាមុនដែលគួរមាន](#prerequisite-knowledge) +- [ផែនការប្រចាំថ្ងៃ](#the-daily-plan) +- [ភាពស្មុគស្មាញនៃក្បួនដោះស្រាយ / Big-O / ការវិភាគ អាសុីមតុតិច (Asymptotic analysis)](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [ចំណេះដឹងបន្ថែម](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - កំណត់សំគាល់ និង ប្រវត្តិ](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (គំនិតទូទៅ តែពុំមែនព័ត៌មានលម្អិតទេ) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [ចំណេះដឹងបន្ថែមទៀត](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [ពិនិត្យចុងក្រោយ](#final-review) +- [អនុវត្តសំណួរសរសេរកូដ](#coding-question-practice) +- [លំហាត់សរសេរកូដ / បញ្ហា](#coding-exerciseschallenges) +- [នៅពេលអ្នកជិតដល់ការសំភាសន៍](#once-youre-closer-to-the-interview) +- [ប្រវត្តិរូបសង្ខេបរបស់អ្នក](#your-resume) +- [ត្រូវគិតអំពីពេលសម្ភាសន៍មកដល់](#be-thinking-of-for-when-the-interview-comes) +- [មានសំណួរសម្រាប់អ្នកសម្ភាសន៍យេីង](#have-questions-for-the-interviewer) +- [នៅពេលដែលទទួលបានការងារធ្វើ](#once-youve-got-the-job) + +--- ## តើវាគឺជាអ្វី? @@ -56,7 +128,7 @@ ![ការសរសេរកូដនៅលើក្ដារខៀន - ពីតំបន់ Silicon Valley របស់ HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -នេះមានន័យថាសម្រាប់ ** វិស្វករអភិវឌ្ឍន៍កម្មវិធីថ្មី ** ឬអ្នកដែលប្តូរពី +នេះមានន័យថាសម្រាប់ "វិស្វករអភិវឌ្ឍន៍កម្មវិធីថ្មី" ឬអ្នកដែលប្តូរពី ការអភិវឌ្ឍន៍កម្មវិធី / អ្នកបង្កេីតវេបសាយ (ដែលត្រូវការចំណេះដឹងផ្នែកវិទ្យាសាស្ត្រកុំព្យូទ័រ) ។ ប្រសិនបើអ្នកមាន បទពិសោធជាច្រើនឆ្នាំក្នុងការអភិវឌ្ឍន៍កម្មវិធី នោះអ្នកអាចនឹងរំពឹងថាមានបទសម្ភាសន៍ពិបាក។ @@ -66,3 +138,43 @@ ប្រសិនបើអ្នកចង់ក្លាយជាវិស្វករដែលអាចទុកចិត្តបានឬវិស្វករប្រតិបត្តិការសូមសិក្សាបន្ថែមពីបញ្ជីជម្រើស (បណ្តាញ និង សុវត្ថិភាព) ។ --- + +## ហេតុអ្វីប្រើវា? + +នៅពេលដែលខ្ញុំចាប់ផ្តើមគំរោងនេះ ខ្ញុំមិនដឹងពី stack, heap, Big-O, trees និង មិនដឹងរបៀបឆ្លងកាត់ក្រាហ្វ។ ប្រសិនបើខ្ញុំត្រូវសរសេរកូដដោះស្រាយ Sort ខ្ញុំអាចប្រាប់អ្នកថាវានឹងមិនល្អទេ។ + +Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់បានប្រើត្រូវបានបង្កើតឡើងមកជាមួយភាសា ហើយខ្ញុំមិនដឹងពីរបៀប និង ដំណេីរការដែល Data Structure។ ខ្ញុំមិនដែលត្រូវគ្រប់គ្រង Programming Memory ទេលុះត្រាតែកម្មវិធីខ្ញុំសរសេរមានបញ្ហា "អស់ Memory" ហើយបន្ទាប់មកខ្ញុំត្រូវរកដំណោះស្រាយបណ្តោះអាសន្ន។ ខ្ញុំបានប្រើ Multidiemsional arrays ពីរបីនៅក្នុងជីវិតរបស់ខ្ញុំ និង រាប់ពាន់នៃ Associate arrays ប៉ុន្តែខ្ញុំមិនដែលបង្កើត Data Structure ពីដំបូងឡើយ។ + +វាជាផែនការវែង។ វាអាចចំណាយពេលច្រើនខែ។ ប្រសិនបើអ្នកធ្លាប់ស្គាល់រឿងនេះរួចហើយវានឹងនាំអ្នកចំណាយពេលតិចជាងមុន។ + +--- + +## របៀបប្រើវា + +អ្វីគ្រប់យ៉ាងខាងក្រោមគឺជាគ្រោង អ្នកគួរតែដោះស្រាយតាមលំដាប់ពីលើចុះក្រោម។ + +ខ្ញុំកំពុងប្រើសញ្ញាសម្គាល់ពិសេសរបស់ GitHub រួមទាំងបញ្ជីភារកិច្ចដើម្បីពិនិត្យមើលវឌ្ឍនភាពការងារខ្ញុំ។ + +**បង្កើតសាខាថ្មី ដូច្នេះអ្នកអាចពិនិត្យមើលដូចនេះគ្រាន់តែដាក់សញ្ញា x ក្នុងតង្កៀប៖ [x]** + + +ដាក់សាខាមួយ ហើយធ្វើតាមពាក្យបញ្ជាខាងក្រោម + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + +គូសសញ្ញា X ក្នុងប្រអប់ទាំងអស់បន្ទាប់ពីអ្នកបានបញ្ចប់ការកែសម្រួល +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/master` + +`git push --force` + +[ព័ត៌មានបន្ថែមអំពីសញ្ញាសម្គាល់ Github]] (https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +--- From bccbc63a193aec3f3725a2eb822f1b3c7a873468 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 5 May 2020 18:38:08 -0500 Subject: [PATCH 116/857] Update README-kh.md Khmer Translation - don't feel you aren't smart enough, about video resources, interview process & general interview prep --- translations/README-kh.md | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index fffec2d73a..ac8f1adf85 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -178,3 +178,46 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ [ព័ត៌មានបន្ថែមអំពីសញ្ញាសម្គាល់ Github]] (https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) --- + +## កុំមានអារម្មណ៍ថាអ្នកមិនឆ្លាតគ្រប់គ្រាន់ + +- វិស្វករអភិវឌ្ឍន៍កម្មវិធីដែលទទួលបានជោគជ័យគឺឆ្លាត ប៉ុន្តែមនុស្សជាច្រើនមានអារម្មណ៍ដែលពួកគេមិនឆ្លាតគ្រប់គ្រាន់។ +- [រឿងរបស់អ្នកសរសេរកម្មវិធីដែលមានទេពកោសល្យ] (https://www.youtube.com/watch?v=0SARbwvhupQ) +- [វាមានគ្រោះថ្នាក់ក្នុងការទៅតែម្នាក់ឯង: ការប្រយុទ្ធនឹងសត្វចម្លែកដែលចេះបំបាំងកាយនៅក្នុងបច្ចេកវិទ្យា] (https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## ធនធានវីដេអូ + +វីដេអូខ្លះអាចប្រើបានតែតាមរយៈការចុះឈ្មោះចូលរៀនវគ្គ Coursera ឬ EdX ប៉ុណ្ណោះ។ ទាំងនេះត្រូវបានគេហៅថា MOOCs ។ +ពេលខ្លះថ្នាក់រៀនមិននៅក្នុងវគ្គដូច្នេះអ្នកត្រូវរង់ចាំពីរបីខែសិន។ + +ខ្ញុំសូមកោតសរសើរចំពោះជំនួយរបស់អ្នកក្នុងការបន្ថែមប្រភពសាធារណៈដែលអាចរកបានដោយឥតគិតថ្លៃជានិច្ចដូចជាវីដេអូយូធ្យូប (YouTube) ដើម្បីភ្ជាប់វីដេអូវគ្គសិក្សាតាមអ៊ីនធឺណិត។ + +ខ្ញុំចូលចិត្តប្រើការបង្រៀនសាកលវិទ្យាល័យ។ + +--- + +## ដំណើរការសំភាសន៍និងកម្មវិធីសម្ភាសន៍ទូទៅ + +- [] [ABC: តែងតែសរសេរកូដ] (https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [] [ការប្រេីប្រាស់ក្តារខៀន] (https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី] (http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា] (https://www.youtube.com/watch?v=N233T0epWTs) +- [] វិធីរកការងារនៅក្រុមហ៊ុនធំ ៤៖ + - [] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)] (https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [បំបែកការសម្ភាសន៍ការសរសេរកូដ ១៖ + - [] [ហ្គេលឡេអិលម៉ាកឌូវែល (Gayle L McDowell) - បំបែកការសម្ភាសន៍ការសរសេរកូដ (វីដេអូ)] (https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [] [បំបែកបទសម្ភាសន៍នៃការសរសេរកូដជាមួយអ្នកនិពន្ធហ្គេលឡាឡាក់មែនម៉ាកម៉ាកឌូវែល (Gayle Laakmann McDowell) (វីដេអូ)] (https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [] បំបែកបទសម្ភាសន៍កូដហ្វេសប៊ុក + - [] [វិធីសាស្រ្ត] (https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [] [ពន្យល់ពីបញ្ហា] (https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [] វគ្គសិក្សាត្រៀម: + - [] [សំភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធី (មិនបានបង់ប្រាក់)] (https://www.udemy.com/software-engineer-interview-unleashed)៖ + - រៀនពីរបៀបដើម្បីត្រៀមខ្លួនសម្រាប់ការសម្ភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធីពីអ្នកសំភាសន៍របស់ហ្គូហ្គោល (Google) ។ + - [] [Python សម្រាប់រចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយនិងសំភាសន៍ (វគ្គសិក្សាបង់លុយ)] (https://www.udemy.com/python-for-data-structures- algorithms-and-interviews/)៖ + - វគ្គសិក្សាសំភាសន៍ Python ដែលផ្តោតលើរចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយ ការសំភាសន៍សាកល្បងនិងច្រើនទៀត។ + - [] [ការណែនាំអំពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយដោយប្រើ Python (វគ្គសិក្សាឥតគិតថ្លៃរបស់ Udacity)] (https://www.udacity.com/course/data-structures-and-al algorithms-in-python--ud513)៖ + - រចនាសម្ព័នធ័រណេតនិងអ័រហ្គ្រែនដោយឥតគិតថ្លៃ។ + - [] [រចនាសម្ព័នទិន្នន័យនិងក្បួនដោះស្រាយ! (Udacity បង់ Nanodegree)] (https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256)៖ + - ទទួលបានការអនុវត្តជាក់ស្តែងជាមួយនឹងរចនាសម្ព័ន្ធទិន្នន័យជាង ១០០ លំហាត់ និងការណែនាំពីអ្នកបងៀនដើម្បីជួយរៀបចំអ្នកសម្រាប់ការសម្ភាសន៍ និង ដាក់ការងារ។ + +--- From b2f27542e12dde6b4dd37127d31ca29c60d71d88 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 5 May 2020 19:00:13 -0500 Subject: [PATCH 117/857] Update README-kh.md Khmer Translation: Fixed linked contents and link resources --- translations/README-kh.md | 46 +++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index ac8f1adf85..a31a7c3a73 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -4,11 +4,10 @@ ### បង្កើតដោយ: [@John Washam](https://github.com/jwasham) ### បកប្រែជាភាសារខ្មែរដោយ: [@Vortana Say](https://github.com/vsay01) -> ពីដំបូងខ្ញុំបង្កើតនេះជាបញ្ជីប្រធានបទត្រូវធ្វើខ្លីដើម្បីក្លាយជាវិស្វករអភិវឌ្ឍន៍កម្មវិធី ប៉ុន្តែវាបានកើនឡើងដល់បញ្ជីធំដែលអ្នកបានឃើញសព្វថ្ងៃនេះ។ បន្ទាប់ពីឆ្លងកាត់គំរោងសិក្សានេះខ្ញុំបានក្លាយ -> ជាវិស្វករអភិវឌ្ឍន៍កម្មវិធីនៅអាមាហ្សូន (Amazon) ] (https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> ពីដំបូងខ្ញុំបង្កើតនេះជាបញ្ជីប្រធានបទត្រូវធ្វើខ្លីដើម្បីក្លាយជាវិស្វករអភិវឌ្ឍន៍កម្មវិធី ប៉ុន្តែវាបានកើនឡើងដល់បញ្ជីធំដែលអ្នកបានឃើញសព្វថ្ងៃនេះ។ បន្ទាប់ពីឆ្លងកាត់គំរោងសិក្សានេះ [ ខ្ញុំបានក្លាយ ជាវិស្វករអភិវឌ្ឍន៍កម្មវិធីនៅអាមាហ្សូន (Amazon)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) > អ្នកប្រហែលជាមិនចាំបាច់សិក្សាច្រេីនដូចខ្ញុំទេ។ ទោះយ៉ាងណាក៏ដោយអ្វីគ្រប់យ៉ាងដែលអ្នកត្រូវការគឺនៅទីនេះ។ > -> ខ្ញុំបានសិក្សាប្រហែលជា ៨ ទៅ ១២ ម៉ោងក្នុងមួយថ្ងៃអស់រយៈពេលជាច្រើនខែ។ អ្នកអាចអានារឿងរបស់ខ្ញុំ៖ [ហេតុអ្វីខ្ញុំសិក្សាពេញម៉ោងរយៈពេល ៨ ខែសំរាប់ការសំភាសន៍ហ្គូហ្គល] (https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> ខ្ញុំបានសិក្សាប្រហែលជា ៨ ទៅ ១២ ម៉ោងក្នុងមួយថ្ងៃអស់រយៈពេលជាច្រើនខែ។ អ្នកអាចអានារឿងរបស់ខ្ញុំ៖ [ហេតុអ្វីខ្ញុំសិក្សាពេញម៉ោងរយៈពេល ៨ ខែសំរាប់ការសំភាសន៍ហ្គូហ្គល](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > ចំណុចដែលបានរាយនៅទីនេះនឹងជួយអ្នករៀបចំការសំភាសន៍បច្ចេកទេសនៅក្រុមហ៊ុនកម្មវិធីណាមួយ។ > រាប់បញ្ចូលទាំងក្រុមហ៊ុនធំៗដូចជា Amazon, Facebook, Google និង Microsoft ។ @@ -121,6 +120,7 @@ --- +## What is it? ## តើវាគឺជាអ្វី? នេះគឺជាគំរោងសិក្សារបស់ខ្ញុំដែលមានរយៈពេលជាច្រើនខែសំរាប់ការរៀនក្លាយពីអ្នកបង្កើតគេហទំព័រ (បង្រៀនដោយខ្លួនឯង និង មិនមានសញ្ញាប័ត្រ @@ -139,6 +139,7 @@ --- +### Why use it? ## ហេតុអ្វីប្រើវា? នៅពេលដែលខ្ញុំចាប់ផ្តើមគំរោងនេះ ខ្ញុំមិនដឹងពី stack, heap, Big-O, trees និង មិនដឹងរបៀបឆ្លងកាត់ក្រាហ្វ។ ប្រសិនបើខ្ញុំត្រូវសរសេរកូដដោះស្រាយ Sort ខ្ញុំអាចប្រាប់អ្នកថាវានឹងមិនល្អទេ។ @@ -149,8 +150,10 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ --- +### How to use it? ## របៀបប្រើវា + អ្វីគ្រប់យ៉ាងខាងក្រោមគឺជាគ្រោង អ្នកគួរតែដោះស្រាយតាមលំដាប់ពីលើចុះក្រោម។ ខ្ញុំកំពុងប្រើសញ្ញាសម្គាល់ពិសេសរបស់ GitHub រួមទាំងបញ្ជីភារកិច្ចដើម្បីពិនិត្យមើលវឌ្ឍនភាពការងារខ្ញុំ។ @@ -175,16 +178,20 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ `git push --force` -[ព័ត៌មានបន្ថែមអំពីសញ្ញាសម្គាល់ Github]] (https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[ព័ត៌មានបន្ថែមអំពីសញ្ញាសម្គាល់ Github]](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) --- +### Don't feel you aren't smart enough ## កុំមានអារម្មណ៍ថាអ្នកមិនឆ្លាតគ្រប់គ្រាន់ - វិស្វករអភិវឌ្ឍន៍កម្មវិធីដែលទទួលបានជោគជ័យគឺឆ្លាត ប៉ុន្តែមនុស្សជាច្រើនមានអារម្មណ៍ដែលពួកគេមិនឆ្លាតគ្រប់គ្រាន់។ -- [រឿងរបស់អ្នកសរសេរកម្មវិធីដែលមានទេពកោសល្យ] (https://www.youtube.com/watch?v=0SARbwvhupQ) -- [វាមានគ្រោះថ្នាក់ក្នុងការទៅតែម្នាក់ឯង: ការប្រយុទ្ធនឹងសត្វចម្លែកដែលចេះបំបាំងកាយនៅក្នុងបច្ចេកវិទ្យា] (https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [រឿងរបស់អ្នកសរសេរកម្មវិធីដែលមានទេពកោសល្យ](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [វាមានគ្រោះថ្នាក់ក្នុងការទៅតែម្នាក់ឯង: ការប្រយុទ្ធនឹងសត្វចម្លែកដែលចេះបំបាំងកាយនៅក្នុងបច្ចេកវិទ្យា](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +--- +### About Video Resources ## ធនធានវីដេអូ វីដេអូខ្លះអាចប្រើបានតែតាមរយៈការចុះឈ្មោះចូលរៀនវគ្គ Coursera ឬ EdX ប៉ុណ្ណោះ។ ទាំងនេះត្រូវបានគេហៅថា MOOCs ។ @@ -196,28 +203,29 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ --- +### Interview Process & General Interview Prep ## ដំណើរការសំភាសន៍និងកម្មវិធីសម្ភាសន៍ទូទៅ -- [] [ABC: តែងតែសរសេរកូដ] (https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [] [ការប្រេីប្រាស់ក្តារខៀន] (https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី] (http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា] (https://www.youtube.com/watch?v=N233T0epWTs) +- [] [ABC: តែងតែសរសេរកូដ](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [] [ការប្រេីប្រាស់ក្តារខៀន](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា](https://www.youtube.com/watch?v=N233T0epWTs) - [] វិធីរកការងារនៅក្រុមហ៊ុនធំ ៤៖ - - [] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)] (https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [បំបែកការសម្ភាសន៍ការសរសេរកូដ ១៖ - - [] [ហ្គេលឡេអិលម៉ាកឌូវែល (Gayle L McDowell) - បំបែកការសម្ភាសន៍ការសរសេរកូដ (វីដេអូ)] (https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [] [បំបែកបទសម្ភាសន៍នៃការសរសេរកូដជាមួយអ្នកនិពន្ធហ្គេលឡាឡាក់មែនម៉ាកម៉ាកឌូវែល (Gayle Laakmann McDowell) (វីដេអូ)] (https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [] [ហ្គេលឡេអិលម៉ាកឌូវែល (Gayle L McDowell) - បំបែកការសម្ភាសន៍ការសរសេរកូដ (វីដេអូ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [] [បំបែកបទសម្ភាសន៍នៃការសរសេរកូដជាមួយអ្នកនិពន្ធហ្គេលឡាឡាក់មែនម៉ាកម៉ាកឌូវែល (Gayle Laakmann McDowell) (វីដេអូ)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [] បំបែកបទសម្ភាសន៍កូដហ្វេសប៊ុក - - [] [វិធីសាស្រ្ត] (https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [] [ពន្យល់ពីបញ្ហា] (https://www.youtube.com/watch?v=4UWDyJq8jZg) + - [] [វិធីសាស្រ្ត](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [] [ពន្យល់ពីបញ្ហា](https://www.youtube.com/watch?v=4UWDyJq8jZg) - [] វគ្គសិក្សាត្រៀម: - - [] [សំភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធី (មិនបានបង់ប្រាក់)] (https://www.udemy.com/software-engineer-interview-unleashed)៖ + - [] [សំភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធី (មិនបានបង់ប្រាក់)](https://www.udemy.com/software-engineer-interview-unleashed)៖ - រៀនពីរបៀបដើម្បីត្រៀមខ្លួនសម្រាប់ការសម្ភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធីពីអ្នកសំភាសន៍របស់ហ្គូហ្គោល (Google) ។ - - [] [Python សម្រាប់រចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយនិងសំភាសន៍ (វគ្គសិក្សាបង់លុយ)] (https://www.udemy.com/python-for-data-structures- algorithms-and-interviews/)៖ + - [] [Python សម្រាប់រចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយនិងសំភាសន៍ (វគ្គសិក្សាបង់លុយ)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/)៖ - វគ្គសិក្សាសំភាសន៍ Python ដែលផ្តោតលើរចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយ ការសំភាសន៍សាកល្បងនិងច្រើនទៀត។ - - [] [ការណែនាំអំពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយដោយប្រើ Python (វគ្គសិក្សាឥតគិតថ្លៃរបស់ Udacity)] (https://www.udacity.com/course/data-structures-and-al algorithms-in-python--ud513)៖ + - [] [ការណែនាំអំពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយដោយប្រើ Python (វគ្គសិក្សាឥតគិតថ្លៃរបស់ Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)៖ - រចនាសម្ព័នធ័រណេតនិងអ័រហ្គ្រែនដោយឥតគិតថ្លៃ។ - - [] [រចនាសម្ព័នទិន្នន័យនិងក្បួនដោះស្រាយ! (Udacity បង់ Nanodegree)] (https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256)៖ + - [] [រចនាសម្ព័នទិន្នន័យនិងក្បួនដោះស្រាយ! (Udacity បង់ Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256)៖ - ទទួលបានការអនុវត្តជាក់ស្តែងជាមួយនឹងរចនាសម្ព័ន្ធទិន្នន័យជាង ១០០ លំហាត់ និងការណែនាំពីអ្នកបងៀនដើម្បីជួយរៀបចំអ្នកសម្រាប់ការសម្ភាសន៍ និង ដាក់ការងារ។ --- From 7626ac8534dd8ec57c3107c35512a70adcf964e1 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Wed, 6 May 2020 10:59:03 -0500 Subject: [PATCH 118/857] Update README-kh.md Khmer Translation - Pick One Language for the Interview and book list --- translations/README-kh.md | 111 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index a31a7c3a73..2e4c6f0385 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -229,3 +229,114 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - ទទួលបានការអនុវត្តជាក់ស្តែងជាមួយនឹងរចនាសម្ព័ន្ធទិន្នន័យជាង ១០០ លំហាត់ និងការណែនាំពីអ្នកបងៀនដើម្បីជួយរៀបចំអ្នកសម្រាប់ការសម្ភាសន៍ និង ដាក់ការងារ។ --- + +### Pick One Language for the Interview +## ជ្រើសរើសភាសាមួយសម្រាប់ការសម្ភាសន៍ + +អ្នកអាចប្រើភាសាដែលអ្នកមានភាពងាយស្រួលក្នុងការសរសេរកូដសំភាសន៍ប៉ុន្តែសម្រាប់ក្រុមហ៊ុនធំ ៗ ទាំងនេះគឺជាជំរើសដ៏រឹងមាំ៖ + +- C ++ +- Java +- Python + +អ្នកក៏អាចប្រើរបស់ទាំងនេះដែរប៉ុន្តែត្រូវអានជាមុនសិន។ វាអាចមានការនិយាយតៗគ្នា៖ + +- JavaScript +- Ruby + +នេះគឺជាអត្ថបទមួយដែលខ្ញុំបានសរសេរអំពីការជ្រើសរើសភាសាសម្រាប់ការសម្ភាសន៍៖ [ជ្រើសរើសយកភាសាមួយសម្រាប់ការសម្ភាសន៍សរសេរកូដ](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +អ្នកគួររេីសភាសាដែលអ្នកទំលាប់ជាមួយ និង មានចំណេះដឹង។ + +សូមអានបន្ថែមអំពីជំរើស៖ +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[មើលធនធានភាសានៅទីនេះ](programming-language-resources.md) + +អ្នកនឹងឃើញការរៀន C, C ++ និង Python ខាងក្រោមព្រោះខ្ញុំកំពុងរៀន។ មានសៀវភៅពីរបីដែលពាក់ព័ន្ធសូមមើលនៅខាងក្រោម។ + +--- + +### Book List +## បញ្ជីសៀវភៅ + +នេះគឺជាបញ្ជីខ្លីជាងអ្វីដែលខ្ញុំបានប្រើ។ នេះត្រូវបានសង្ខេបដើម្បីជួយសន្សំសំចៃពេលវេលារបស់អ្នក។ + +--- + +### Interview Prep +## ត្រៀមការសម្ភាសន៍ + +- [] [សំភាសន៍ការសរសេរកម្មវិធីបង្ហាញ: ការសរសេរកូដវិធីរបស់អ្នកតាមរយៈការសំភាសន៍, បោះពុម្ពលើកទី ៤](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - ចម្លើយសរសេរ C++ និង Java + - នេះគឺជាសមដ៏ល្អសម្រាប់ការបំបែកសំភាសន៍កូដ + - មិនពិបាកពេកទេ បញ្ហាភាគច្រើនប្រហែលជាងាយស្រួលជាងអ្វីដែលអ្នកបានឃើញក្នុងបទសម្ភាសន៍ (ពីអ្វីដែលខ្ញុំបានអាន) +- [] [ការសំភាសន៍ការសរសេរកូដការបោះពុម្ពលើកទី ៦](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - ចម្លើយនសរសេរជា Java + +--- + +### If you have tons of extra time: +## ប្រសិនបើអ្នកមានពេលវេលាបន្ថែមច្រេីន + +ជ្រើសរើសមួយ: + +- [] [ធាតុផ្សំនៃបទសម្ភាសន៍សរសេរកម្មវិធី (កំណែ C ++)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [] [ធាតុផ្សំនៃការសំភាសន៍សរសេរកម្មវិធីក្នុង Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [] ធាតុនៃការសំភាសន៍សរសេរកម្មវិធី (កំណែ Java) + - [សៀវភៅ](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [គម្រោង - វិធីសាស្រ្ត Stub និងករណីតេស្តិ៍សម្រាប់រាល់បញ្ហាក្នុងសៀវភៅ](https://github.com/gardncl/elements-of-programming-interviews) + +--- + +### Language Specific +## ភាសាជាក់លាក់ + +**អ្នកត្រូវជ្រើសរើសភាសាសំរាប់សំភាសន៍ (សូមមើលខាងលើ) ។** + +នេះជាអ្នីដែលខ្ញុំគិតថាអ្នកគួរមេីល។ ខ្ញុំមិនមានធនធានសម្រាប់ភាសាទាំងអស់ទេ។ ខ្ញុំស្វាគមន៍ការដាក់បន្ថែមពីអ្នក។ + +ប្រសិនបើអ្នកអានចំណុចមួយក្នុងចំណោមចំណុចទាំងនេះអ្នកគួរតែមានចំនេះដឹង Data Structure និងចំណេះដឹងអំពីក្បួនដោះស្រាយ (Algorithm) ដែលអ្នកត្រូវចាប់ផ្តើមធ្វើបញ្ហាសរសេរកូដ។ + +**អ្នកអាចរំលងការបង្រៀនវីដេអូទាំងអស់នៅក្នុងគម្រោងនេះ** លើកលែងតែអ្នកចង់ពិនិត្យឡើងវិញ។ + +[ធនធានភាសាជាក់លាក់នៅទីនេះ។](programming-language-resources.md) + +--- + +## C++ + +ខ្ញុំមិនបានអានទាំងពីរនេះទេ ប៉ុន្តែវាត្រូវបានវាយតម្លៃនិងសរសេរយ៉ាងខ្ពស់ដោយ Sedgewick ។ គាត់អស្ចារ្យណាស់។ + +- [] [វិធីដោះស្រាយក្នុង C++, ផ្នែក ១-៤៖ មូលដ្ឋានគ្រឹះរចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) តម្រៀប (Sort) ស្វែងរក (Searching)](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [] [វិធីដោះស្រាយក្នុង C++ ភាគ ៥៖ ក្បួនដោះស្រាយក្រាហ្វិច](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +ប្រសិនបើអ្នកមានអនុសាសន៍ល្អប្រសើរសម្រាប់ C++ សូមប្រាប់ខ្ញុំឱ្យដឹង។ រកមើលធនធានទូលំទូលាយ។ + +--- + +## Java + +- [] [វិធីដោះស្រាយ (Sedgewick និង Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - វីដេអូដែលមានមាតិកាសៀវភៅ (និង Sedgewick!) លើវគ្គសិក្សា៖ + - [ក្បួនដោះស្រាយ I](https://www.coursera.org/learn/algorithms-part1) + - [ក្បួនដោះស្រាយទី ២](https://www.coursera.org/learn/algorithms-part2) + +រឺ៖ + +- [] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - ដោយហ្គ្រីដល (Goodrich), តាតសាសៀ (Tamassia), ហ្គោវីស (Goldwasser) + - អត្ថបទសម្រាប់វគ្គសិក្សាសំរាប់ថ្នាក់ដំបូងរបស់វិទ្យាសាស្ត្រកុំព្យូទ័រនៅឯ UC Berkeley + - សូមមើលរបាយការណ៍សៀវភៅរបស់ខ្ញុំស្តីពីកំណែ Python ខាងក្រោម។ សៀវភៅនេះមានប្រធានបទដូចគ្នា។ + +--- + +## Python +- [] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ (Algorithm) ក្នុង Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - ដោយហ្គ្រីដល (Goodrich), តាតសាសៀ (Tamassia), ហ្គោវីស (Goldwasser) + - ខ្ញុំចូលចិត្តសៀវភៅនេះ។ វាគ្របដណ្តប់អ្វីៗគ្រប់យ៉ាងនិងច្រើនទៀត។ + - លេខកូដព្យញ្ជនៈ + - របាយការណ៍សៀវភៅរបស់ខ្ញុំ៖ https://startupnextdoor.com/book-report-data-structures-and-al algorithms-in-python/ + +--- From 53985512b9315634bfe369e953e2c8374fdfb604 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Wed, 6 May 2020 15:06:58 -0500 Subject: [PATCH 119/857] Update README-kh.md Khmer Translation - Before you Get Started --- translations/README-kh.md | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index 2e4c6f0385..66a4d70358 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -340,3 +340,66 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - របាយការណ៍សៀវភៅរបស់ខ្ញុំ៖ https://startupnextdoor.com/book-report-data-structures-and-al algorithms-in-python/ --- + +### Before you Get Started +## មុនពេលអ្នកចាប់ផ្តើម + +បញ្ជីនេះបានកើនឡើងអស់រយៈពេលជាច្រើនខែហើយ ។ + +នេះគឺជាកំហុសមួយចំនួនដែលខ្ញុំបានធ្វើដូច្នេះអ្នកនឹងមានបទពិសោធប្រសើរជាងមុន។ + +### 1. អ្នកនឹងមិនចងចាំវាទាំងអស់ + +ខ្ញុំបានមើលវីដេអូជាច្រើនម៉ោងនិងកត់ចំណាំគួរអោយចង់សើច ហើយប៉ុន្មានខែក្រោយមកមានរឿងជាច្រើនដែលខ្ញុំមិនចាំ។ ខ្ញុំចំណាយពេល ៣ ថ្ងៃទៀត +តាមរយៈកំណត់ចំណាំរបស់ខ្ញុំនិងធ្វើប័ណ្ណបញ្ជាក់ដូច្នេះខ្ញុំអាចពិនិត្យមើលឡើងវិញ។ + +សូមមេត្តាអានដូច្នេះអ្នកនឹងមិនធ្វើឱ្យខ្ញុំខុសទេ។ + +[រក្សាចំណេះដឹងវិទ្យាសាស្ត្រកុំព្យូទ័រ](https://startupnextdoor.com/retaining-computer-science-knowledge/) ។ + +វគ្គសិក្សាដែលបានណែនាំដល់ខ្ញុំ (មិនបានសិក្សាវាទេ)៖ [ការរៀនពីរបៀបរៀន](https://www.coursera.org/learn/learning-how-to-learn) + +### 2. ប្រើកាតបង្ហាញ + +ដើម្បីដោះស្រាយបញ្ហា ខ្ញុំបានបង្កើតវេបសាយកាតតូចមួយដែលខ្ញុំអាចបន្ថែមកាតចំនួន ២ ប្រភេទគឺទូទៅនិងលេខកូដ។ +កាតនីមួយៗមានទ្រង់ទ្រាយខុសៗគ្នា។ + +ខ្ញុំបានបង្កើតវេបសាយសំរាប់ទូរស័ព្ទដំបូងមួយ ដូច្នេះខ្ញុំអាចពិនិត្យមើលឡើងវិញនៅលើទូរស័ព្ទ និង ថេប្លេតរបស់ខ្ញុំទោះបីខ្ញុំនៅទីណាក៏ដោយ។ + +អ្នកអាចបង្កេីតដោយឥតគិតថ្លៃ៖ + +- [បណ្តាញឃ្លាំងផ្ទុកកាតឡើងវិញ](https://github.com/jwasham/computer-science-flash-cards) +- [មូលដ្ឋានទិន្នន័យកាតរបស់ខ្ញុំ (កាតចាស់ - ១២០០ កាត)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db)៖ +- [ប្រព័ន្ធទិន្នន័យកាតរបស់ខ្ញុំ (កាតថ្មី - ១៨០០)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db)៖ + +សូមចងចាំថាខ្ញុំបានឡើងលើក្តារហើយមានកាតគ្របដណ្តប់លើអ្វីៗទាំងអស់ចាប់ពីភាសាការជួបប្រជុំគ្នា និង សំនួរទាក់ទងនឹង Python រហូតដល់ការរៀនម៉ាស៊ីននិងស្ថិតិ។ វាជាវិធីច្រើនពេកសម្រាប់អ្វីដែលត្រូវការ។ + +**កំណត់ចំណាំនៅលើបណ្ណបង្ហាញ៖** ជាលើកដំបូងដែលអ្នកទទួលស្គាល់អ្នកដឹងពីចម្លើយ សូមកុំសម្គាល់វាថាត្រូវបានគេស្គាល់។ អ្នកត្រូវតែមើល +កាតដូចគ្នានិងឆ្លើយវាច្រើនដងឱ្យបានត្រឹមត្រូវមុនពេលដែលអ្នកពិតជាដឹង។ ពាក្យដដែលៗនឹងធ្វើឱ្យចំណេះដឹងនោះកាន់តែស៊ីជម្រៅ +ខួរក្បាលរបស់អ្នក។ + +ជំរើសមួយផ្សេងទៀតក្នុងការប្រើប្រាស់បណ្តាញកាតរបស់ខ្ញុំគឺ [Anki](http://ankisrs.net/) ដែលត្រូវបានណែនាំអោយខ្ញុំច្រើនដង។ វាប្រើប្រព័ន្ធពាក្យដដែលៗដើម្បីជួយអ្នកចងចាំ។ +វាមានភាពងាយស្រួលសម្រាប់អ្នកប្រើដែលមាននៅលើគ្រប់វេទិកាទាំងអស់និងមានប្រព័ន្ធធ្វើសមកាលកម្មពពក។ វាមានតម្លៃ ២៥ ដុល្លារលើប្រព័ន្ធប្រតិបត្តិការ iOS ប៉ុន្តែមិនគិតថ្លៃនៅលើវេទិកាផ្សេងទៀតទេ។ + +មូលដ្ឋានទិន្នន័យបណ្ណបង្ហាញរបស់ខ្ញុំក្នុងទំរង់អាគី (Anki) ៖ https://ankiweb.net/shared/info/25173560 (សូមអរគុណ [@xiewenya](https://github.com/xiewenya) + +### ៣. ចាប់ផ្តើមធ្វើសំណួរសម្ភាសន៍សរសេរកូដខណៈពេលដែលអ្នកកំពុងរៀនរចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និង ក្បួនដោះស្រាយ (Algorithm) + +អ្នកត្រូវអនុវត្តអ្វីដែលអ្នកកំពុងរៀនដើម្បីដោះស្រាយបញ្ហាឬអ្នកនឹងភ្លេច។ ខ្ញុំបានធ្វើកំហុសនេះ។ នៅពេលដែលអ្នកបានរៀនប្រធានបទមួយ +ហើយមានអារម្មណ៍ស្រួលជាមួយវាដូចជាបញ្ជីភ្ជាប់បើកសៀវភៅសម្ភាសន៍កូដសរសេរមួយហើយធ្វើសំណួរពីរបីទាក់ទងនឹង +បញ្ជីដែលបានភ្ជាប់។ បន្ទាប់មកបន្តទៅប្រធានបទសិក្សាបន្ទាប់។ បន្ទាប់មកពេលក្រោយ ត្រលប់ក្រោយហើយធ្វើបញ្ហាបញ្ជីដែលបានភ្ជាប់ផ្សេងទៀត +ឬបញ្ហាការហៅឡើងវិញឬអ្វីផ្សេងទៀត។ ប៉ុន្តែនៅតែធ្វើបញ្ហានៅពេលអ្នកកំពុងរៀន។ អ្នកមិនត្រូវបានគេជួលដើម្បីចំណេះដឹងទេ +ប៉ុន្តែរបៀបដែលអ្នកអនុវត្តចំណេះដឹង។ មានសៀវភៅនិងគេហទំព័រជាច្រើនដែលខ្ញុំសូមណែនាំ។ +សូមមើលនៅទីនេះសម្រាប់ព័ត៌មានបន្ថែម: [ការអនុវត្តសំណួរសំណួរសរសេរកូដ](#coding-question-practice) + +### 4. ពិនិត្យឡើងវិញ ពិនិត្យឡើងវិញ ពិនិត្យឡើងវិញ + +ខ្ញុំរក្សាទុកសន្លឹកបន្លំមួយសន្លឹកនៅលើ ASCII, OSI stack, សញ្ញាណសំគាល់ធំ ៗ (Big-O) និងច្រើនទៀត។ ខ្ញុំសិក្សាវានៅពេលខ្ញុំមានពេលទំនេរខ្លះ។ + +សម្រាកពីបញ្ហាសរសេរកម្មវិធីរយៈពេលកន្លះម៉ោង ហើយអានកាតរបស់អ្នក។ + +### 5. ផ្តោតអារម្មណ៍ + +មានការរំខានជាច្រើនដែលអាចចំណាយពេលដ៏មានតម្លៃ។ ការផ្តោតអារម្មណ៍គឺពិបាក។ បើកតន្ត្រីមួយចំនួនដែលគ្មានទំនុកច្រៀងទេអ្នកនឹងអាចផ្តោតអារម្មណ៍បានល្អ។ + +--- From 59b4664ca9caa8f52c56bad84b3827c16061489f Mon Sep 17 00:00:00 2001 From: sundb Date: Thu, 7 May 2020 17:15:08 +0800 Subject: [PATCH 120/857] =?UTF-8?q?"Always=20Be=20Coding"=20translates=20m?= =?UTF-8?q?ore=20closely=20to=20"=E4=B8=8D=E8=A6=81=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E7=BC=96=E7=A8=8B"=20than=20"=E6=B0=B8=E8=BF=9C=E9=83=BD?= =?UTF-8?q?=E8=A6=81=E7=BC=96=E7=A8=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 13f304472a..48f3faf41c 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -195,7 +195,7 @@ - [ ] [电话面试的问题](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - [ ] 附加的(虽然 Google 不建议,但我还是添加在此): - - [ ] [ABC:永远都要去编程(Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) + - [ ] [ABC:不要停止编程(Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [四步成为 Google 里一名没有学位的员工](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [共享白板(Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Google 是如何看待应聘、管理和公司文化](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) From 43dc7c1ccdbb224f0d14e40c9e1e49d25c9415af Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Thu, 7 May 2020 06:46:32 -0500 Subject: [PATCH 121/857] Update README-kh.md Khmer Translations - What you won't see covered until arrays --- translations/README-kh.md | 129 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index 66a4d70358..b96246bb2d 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -403,3 +403,132 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ មានការរំខានជាច្រើនដែលអាចចំណាយពេលដ៏មានតម្លៃ។ ការផ្តោតអារម្មណ៍គឺពិបាក។ បើកតន្ត្រីមួយចំនួនដែលគ្មានទំនុកច្រៀងទេអ្នកនឹងអាចផ្តោតអារម្មណ៍បានល្អ។ --- + +### What you won't see covered +## អ្វីដែលអ្នកនឹងមិនឃើញគ្របដណ្តប់ + +ទាំងនេះជាបច្ចេកវិទ្យាដែលមានជាទូទៅប៉ុន្តែមិនមែនជាផ្នែកនៃផែនការសិក្សានេះទេ៖ + +- SQL +- Javascript +- HTML, CSS និងបច្ចេកវិទ្យាផ្នែក front-end + +--- + +### The Daily Plan +## ផែនការប្រចាំថ្ងៃ + +មុខវិជ្ជាខ្លះចំណាយពេលមួយថ្ងៃហើយ មុខវិជ្ជាខ្លះនឹងចំណាយពេលច្រើនថ្ងៃ។ អ្នកខ្លះរៀនតែគ្មានអ្វីអនុវត្ត។ + +ជារៀងរាល់ថ្ងៃខ្ញុំយកប្រធានបទមួយចេញពីបញ្ជីខាងក្រោមមើលវីដេអូអំពីប្រធានបទនោះហើយសរសេរកូតនៅក្នុង៖ +- C - ប្រើរចនាសម្ព័ន្ធ និង មុខងារដែលយករចនាសម្ព័ន្ធ * និង អ្វីផ្សេងទៀតជា Arguments។ +- C++ - ដោយមិនប្រើមុខងារដែលភ្ជាប់មកជាមួយនឹង ភាសា +- C++ - ប្រើប្រភេទដែលមានស្រាប់ដូចជា STL's::list សម្រាប់បញ្ជីភ្ជាប់ (Linked list) +- Python - ប្រើប្រភេទដែលមានស្រាប់ (ដើម្បីរំលឹក Python) +- និងសរសេរការធ្វើតេស្តដើម្បីធានាថាខ្ញុំធ្វើវាបានត្រឹមត្រូវពេលខ្លះគ្រាន់តែប្រើសេចក្តីថ្លែងអះអាងសាមញ្ញ assert() +- អ្នកអាចធ្វើ Jav ឬ អ្វីផ្សេងទៀតនេះគ្រាន់តែជារឿងរបស់ខ្ញុំប៉ុណ្ណោះ។ + +អ្នកមិនត្រូវការរបស់ទាំងអស់នេះទេ។ អ្នកត្រូវការតែ [ភាសាមួយសម្រាប់ការសម្ភាសន៍](#pick-one-language-for-the-interview) ។ + +ហេតុអ្វីត្រូវកូដទាំងអស់នេះ? +- អនុវត្ត អនុវត្ត អនុវត្តរហូតដល់ខ្ញុំច្បាស់ហើយអាចធ្វើវាដោយគ្មានបញ្ហា (អ្នកខ្លះមានករណីកំរច្រើន និង ព័ត៌មានលំអិតនៃការរក្សាទុកសៀវភៅដើម្បីចងចាំ) +- ធ្វើការនៅក្នុងឧបសគ្គ (បែងចែក / លុបចេញអង្គចងចាំ (Memory) ដោយគ្មានជំនួយពីការប្រមូលសំរាម (Gabage Collection) (លើកលែងតែ Python ឬ Java)) +- ប្រើប្រភេទដែលមានស្រាប់ដូច្នេះខ្ញុំមានបទពិសោធន៍ប្រើឧបករណ៍ដែលមានស្រាប់សម្រាប់ការប្រើប្រាស់ដូចពេលធ្វេីការ (មិនមែនថាសរសេរការអនុវត្តន៍បញ្ជី (Linked List) របស់ខ្ញុំផ្ទាល់ក្នុងពេលធ្វេីការ) + +ខ្ញុំប្រហែលជាមិនមានពេលវេលាដើម្បីធ្វើការទាំងអស់សម្រាប់មុខវិជ្ជាទាំងអស់នោះទេប៉ុន្តែខ្ញុំនឹងព្យាយាម។ + +អ្នកអាចឃើញកូដរបស់ខ្ញុំនៅទីនេះ៖ + +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) + +អ្នកមិនចាំបាច់ទន្ទេញចាំគ្រប់ក្បួនដោះស្រាយទាំងអស់។ + +សរសេរកូដនៅលើក្ដារខៀនឬក្រដាស មិនមែនកុំព្យូទ័រទេ។ សាកល្បងជាមួយធាតុចូលគំរូមួយចំនួន។ បន្ទាប់មកសាកល្បងវានៅលើកុំព្យូទ័រ។ + +## ចំណេះដឹងចាំបាច់ + +- [] **រៀន C** + - C គឺនៅគ្រប់ទីកន្លែង។ អ្នកនឹងឃើញឧទាហរណ៍នៅក្នុងសៀវភៅការបង្រៀនវីដេអូ *នៅគ្រប់ទីកន្លែង* ពេលអ្នកកំពុងសិក្សា។ + + - [] [ភាសាសរសេរកម្មវិធី C, ភាគ ២](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) +         + - នេះគឺជាសៀវភៅខ្លីមួយប៉ុន្តែវានឹងផ្តល់ឱ្យអ្នកនូវភាសា C យ៉ាងល្អហើយប្រសិនបើអ្នកអនុវត្តវាបន្តិច អ្នកនឹងឆាប់ស្ទាត់ជំនាញ។ ការយល់ដឹង C ជួយអ្នកឱ្យយល់ពីរបៀបដែលកម្មវិធីនិងការចងចាំដំណើរការ។ +         + - [ចម្លើយចំពោះសំណួរ](https://github.com/lekkas/c-algorithms) + +- [] **របៀបដែលកុំព្យូទ័រដំណើរការកម្មវិធី:** + - [] [តើស៊ីភីយូប្រតិបត្តិកម្មវិធីមួយយ៉ាងដូចម្តេច? (វីដេអូ)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [] [របៀបគណនាកុំព្យូទ័រ - ALU (វីដេអូ)](https://youtu.be/1I5ZMmrOfnA) + - [] [ចុះបញ្ជី (Registers) និង រ៉េម (RAM) (វីដេអូ)](https://youtu.be/fpnE6UAfbtU) + - [] [អង្គភាពកែច្នៃកណ្តាល (ស៊ីភីយូ) (The Central Processing Unit) (វីដេអូ)](https://youtu.be/FZGugFqdr60) + - [] [សេចក្តីណែនាំនិងកម្មវិធី (វីដេអូ)](https://youtu.be/zltgXvg6r3k) + +--- + +### Algorithmic complexity / Big-O / Asymptotic analysis +## ភាពស្មុគស្មាញនៃក្បួនដោះស្រាយ / ការវិភាគ Big-O + +- គ្មានអ្វីត្រូវអនុវត្តទេ +- មានវីដេអូជាច្រើននៅទីនេះ។ គ្រាន់តែមើលឱ្យបានគ្រប់គ្រាន់រហូតដល់អ្នកយល់។ អ្នកអាចត្រលប់មកពិនិត្យឡើងវិញជានិច្ច។ +- ប្រសិនបើការបង្រៀនមួយចំនួនមានភាពស្រងូតស្រងាត់អ្នកអាចរំលងដល់ក្រោមហើយមើលវីដេអូគណិតវិទ្យាដែលដាច់ពីគ្នាដើម្បីទទួលបានចំណេះដឹងជាមូលដ្ឋាន។ +- [] [Harvard CS50 - Asymptotic Notation (វីដេអូ)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [] [កំណត់ចំណាំ Big-O (ការបង្រៀនរហ័សទូទៅ) (វីដេអូ)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [] [Big O Notation (និង Omega និង Theta) - ការពន្យល់គណិតវិទ្យាល្អបំផុត (វីដេអូ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [] Skiena៖ +    - [វីដេអូ](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) +    - [ស្លាយ](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [] [ការណែនាំមួយចំពោះការវិភាគស្មុគស្មាញនៃគណិតវិទ្យា](http://discrete.gr/complexity/) +- [] [លំដាប់នៃការលូតលាស់ (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [] [ការវិភាគអាមីស្តូតូទិក (Amortized) (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [] [UC Berkeley Big O (មានវីដេអូ)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [] [UC Berkeley Big Omega (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [] [ការវិភាគរំលោះ (Amortized) (វីដេអូ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [] [បង្ហាញរូបភាព "Big-O" (វីដេអូ)](https://www.coursera.org/lecture/alacticmic-thinking-1/illustrating-big-o-YVqzv) +- [] TopCoder (រួមបញ្ចូលទាំងទំនាក់ទំនងកើតឡើងវិញនិងទ្រឹស្តីបទមេ)៖ + - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ១](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ២](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [] [សន្លឹកជំនួយ](http://bigocheatsheet.com/) + +--- + +### Data Structures +## រចនាសម្ព័ន្ធទិន្នន័យ + +- ### Arrays + - អនុវត្តវ៉ិចទ័រប្តូរទំហំដោយស្វ័យប្រវត្តិ។ + - [] ការពិពណ៌នា៖ + - [Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + -[UC Berkeley CS61B - អារេ លីនែអ៊ែរ និង ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (ចាប់ផ្តើមមើលចាប់ពី ១៥នាទី ៣២វិនាទី) + - [Arrays មូលដ្ឋាន (វីដេអូ)](https://archive.org/details/0102What YouShouldKnow/02_04-basicArrays.mp4) + - [ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/0102What YouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Arrays ឌីណាមិចេ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (វីដេអូ)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [ការប្តូរទំហំ Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [] អនុវត្តវ៉ិចទ័រ (បំលែង Arrays ដោយប្តូរទំហំស្វ័យប្រវត្តិ)៖ + - [] អនុវត្តការសរសេរកូដដោយប្រើArrays និង ទ្រនិចចង្អុល និង គណិតទ្រនិចដើម្បីលោតទៅសន្ទស្សន៍មួយ។ + - [] Arrays ទិន្នន័យថ្មីដែលមានអង្គចងចាំបម្រុងទុក + - អាចបែងចែកArraysនៅក្រោមក្រណាត់ដោយគ្រាន់តែមិនប្រើលក្ខណៈពិសេសរបស់វា + - ចាប់ផ្តើមជាមួយលេខ ១៦ ឬបើលេខចាប់ផ្តើមធំជាងប្រើថាមពល ២ - ១៦, ៣២, ៦៤, ១២៨ + - [] size() - ចំនួនធាតុ + - [] capacity() - ចំនួនធាតុដែលវាអាចផ្ទុកបាន + - [] is_empty() + - [] at(index) - ត្រឡប់ធាតុនៅសន្ទស្សន៍ដែលបានផ្តល់ឱ្យផ្លុំឡើងប្រសិនបើសន្ទស្សន៍នៅក្រៅព្រំដែន + - [] push(item) + - [] insert(index, item) - បញ្ចូលធាតុនៅសន្ទស្សន៍ប្តូរតម្លៃសន្ទស្សន៍និងធាតុនៅខាងក្រោមទៅខាងស្តាំ + - [] prepend (item) - អាចប្រើបញ្ចូលខាងលើនៅសន្ទស្សន៍ ០ + - [] pop() - ដកចេញពីចុងបញ្ចប់តម្លៃត្រឡប់មកវិញ + - [] delete(index) - លុបធាតុនៅលិបិក្រមផ្លាស់ប្តូរធាតុនៅពីក្រោយទាំងអស់ + - [] remove(item) - រកមើលតម្លៃនិងយកលិបិក្រមដែលផ្ទុកវាចេញ (ទោះបីជានៅកន្លែងច្រើនក៏ដោយ) + - [] find(item) - រកមើលតម្លៃហើយត្រឡប់សន្ទស្សន៍ដំបូងជាមួយតម្លៃនោះ -1 បើរកមិនឃើញ + - [] resize(new_capacity) // មុខងារឯកជន + - នៅពេលដែលអ្នកឈានដល់សមត្ថភាព, ផ្លាស់ប្តូរទំហំទ្វេដងទំហំ + - នៅពេលដែលចាប់យកវត្ថុមួយប្រសិនបើទំហំគឺ 1/4 នៃសមត្ថភាព, ផ្លាស់ប្តូរទំហំដល់ពាក់កណ្តាល + - [] ពេលវេលា + - O(១) ត្រូវបន្ថែម / ដកចេញនៅចុងបញ្ចប់ (សងប្រាក់សម្រាប់ការបែងចែកសម្រាប់ទំហំបន្ថែម) សន្ទស្សន៍ឬបច្ចុប្បន្នភាព + - O(n) ដើម្បីបញ្ចូល / ដកចេញនៅកន្លែងផ្សេងទៀត + - [] លំហ + - ជាប់ទាក់ទងនឹងការចងចាំដូច្នេះភាពជិតស្និទ្ធជួយដល់ការអនុវត្ត + - ទំហំត្រូវការ = (ទំហំ Array, ដែលជា >= n) * ទំហំនៃធាតុ, ប៉ុន្តែបើទោះបីជា 2n, នៅតែ O (n) From 108ba5f764165fbabb07ce1267ab9d711f6be910 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Fri, 8 May 2020 19:24:18 -0500 Subject: [PATCH 122/857] Update README-kh.md Khmer translation - Linked List --- translations/README-kh.md | 60 +++++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index b96246bb2d..e2f4d20d83 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -501,8 +501,8 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [] ការពិពណ៌នា៖ - [Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) -[UC Berkeley CS61B - អារេ លីនែអ៊ែរ និង ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (ចាប់ផ្តើមមើលចាប់ពី ១៥នាទី ៣២វិនាទី) - - [Arrays មូលដ្ឋាន (វីដេអូ)](https://archive.org/details/0102What YouShouldKnow/02_04-basicArrays.mp4) - - [ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/0102What YouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Arrays មូលដ្ឋាន (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Arrays ឌីណាមិចេ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (វីដេអូ)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [Jagged Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) @@ -515,20 +515,56 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [] size() - ចំនួនធាតុ - [] capacity() - ចំនួនធាតុដែលវាអាចផ្ទុកបាន - [] is_empty() - - [] at(index) - ត្រឡប់ធាតុនៅសន្ទស្សន៍ដែលបានផ្តល់ឱ្យផ្លុំឡើងប្រសិនបើសន្ទស្សន៍នៅក្រៅព្រំដែន + - [] at(index) - ត្រឡប់ធាតុនៅទីតាំងដែលបានផ្តល់ឱ្យ បេីទីតាំងនៅក្រៅព្រំដែន វានឹង មានកុំហស - [] push(item) - - [] insert(index, item) - បញ្ចូលធាតុនៅសន្ទស្សន៍ប្តូរតម្លៃសន្ទស្សន៍និងធាតុនៅខាងក្រោមទៅខាងស្តាំ - - [] prepend (item) - អាចប្រើបញ្ចូលខាងលើនៅសន្ទស្សន៍ ០ + - [] insert(index, item) - បញ្ចូលធាតុនៅទីតាំង ប្តូរតម្លៃទីតាំង និងធាតុនៅខាងក្រោមទៅខាងស្តាំ + - [] prepend (item) - អាចប្រើបញ្ចូលខាងលើនៅទីតាំង ០ - [] pop() - ដកចេញពីចុងបញ្ចប់តម្លៃត្រឡប់មកវិញ - - [] delete(index) - លុបធាតុនៅលិបិក្រមផ្លាស់ប្តូរធាតុនៅពីក្រោយទាំងអស់ - - [] remove(item) - រកមើលតម្លៃនិងយកលិបិក្រមដែលផ្ទុកវាចេញ (ទោះបីជានៅកន្លែងច្រើនក៏ដោយ) - - [] find(item) - រកមើលតម្លៃហើយត្រឡប់សន្ទស្សន៍ដំបូងជាមួយតម្លៃនោះ -1 បើរកមិនឃើញ + - [] delete(index) - លុបធាតុនៅទីតាំងដែលអោយ ផ្លាស់ប្តូរធាតុនៅពីក្រោយទាំងអស់ + - [] remove(item) - រកមើលតម្លៃនិងយកទីតាំងចេញដែលផ្ទុកវាចេញ (ទោះបីជានៅកន្លែងច្រើនក៏ដោយ) + - [] find(item) - រកមើលតម្លៃហើយត្រឡប់វិញនៅទីតាំងដំបូងជាមួយតម្លៃនោះ បើរកមិនឃើញត្រលប់វិញ -1 - [] resize(new_capacity) // មុខងារឯកជន - - នៅពេលដែលអ្នកឈានដល់សមត្ថភាព, ផ្លាស់ប្តូរទំហំទ្វេដងទំហំ - - នៅពេលដែលចាប់យកវត្ថុមួយប្រសិនបើទំហំគឺ 1/4 នៃសមត្ថភាព, ផ្លាស់ប្តូរទំហំដល់ពាក់កណ្តាល + - ពេលទំហំ Array ដល់កំណត់, ផ្លាស់ប្តូរទំហំទ្វេដងទំហំ + - នៅពេលដែលចាប់យកវត្ថុមួយ ប្រសិនបើទំហំគឺ 1/4 នៃទំហំសរុប, ផ្លាស់ប្តូរទំហំដល់ពាក់កណ្តាល - [] ពេលវេលា - - O(១) ត្រូវបន្ថែម / ដកចេញនៅចុងបញ្ចប់ (សងប្រាក់សម្រាប់ការបែងចែកសម្រាប់ទំហំបន្ថែម) សន្ទស្សន៍ឬបច្ចុប្បន្នភាព + - O(១) ត្រូវបន្ថែម / ដកចេញនៅចុងបញ្ចប់ (សងវិញសម្រាប់ការបែងចែកសម្រាប់ទំហំបន្ថែម) ទីតាំង - O(n) ដើម្បីបញ្ចូល / ដកចេញនៅកន្លែងផ្សេងទៀត - [] លំហ - ជាប់ទាក់ទងនឹងការចងចាំដូច្នេះភាពជិតស្និទ្ធជួយដល់ការអនុវត្ត - - ទំហំត្រូវការ = (ទំហំ Array, ដែលជា >= n) * ទំហំនៃធាតុ, ប៉ុន្តែបើទោះបីជា 2n, នៅតែ O (n) + - ទំហំត្រូវការ = (ទំហំ Array, ដែល >= n) * ទំហំនៃធាតុ, ប៉ុន្តែបើទោះបីជា 2n, នៅតែ O (n) + +--- + +- ### Linked Lists + - [] ការពិពណ៌នា៖ + - [] [Singly Linked Lists (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [] [CS 61B - Linked Lists ១ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [] [CS 61B - Linked Lists ២ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [] [កូដ C (វីដេអូ)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - មិនមែនវីដេអូទាំងមូលទេគឺគ្រាន់តែជាផ្នែកអំពីរចនាសម្ព័ន្ធ (Data Structure) និងការបែងចែក Memory ។ + - [] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [នៅក្នុងពិភពពិត Linked Lists Vs Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [] [ហេតុអ្វីអ្នកគួរចៀសវាង linked lists (វីដេអូ)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [] Gotcha: you need pointer to pointer knowledge: +        (សម្រាប់ពេលអ្នកហុច pointer ទៅមុខងារមួយដែលអាចផ្លាស់ប្តូរអាស័យដ្ឋានដែលព្រួញចង្អុល) +        ទំព័រនេះគ្រាន់តែដើម្បីស្វែងយល់ពី pointer ទៅ pointer ។ ខ្ញុំមិនណែនាំបញ្ជីឈ្មោះបែបត្រាប់តាមនេះទេ។ ភាពងាយស្រួលក្នុងការអាននិងរក្សាបាននូវភាពលំបាកដោយសារតែភាពឆ្លាតវៃ។ + - [Pointer ទៅ pointer](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [] អនុវត្ត (ខ្ញុំបានធ្វើដោយប្រើទ្រនិចកន្ទុយនិងដោយគ្មាន)៖ + - [] size() - ត្រឡប់ចំនួនធាតុទិន្នន័យក្នុងបញ្ជី + - [] empty() - bool ត្រឡប់ពិតបើទទេ + - [] value_at(index) - ត្រឡប់តម្លៃនៃធាតុទី (ចាប់ផ្តើមពីលេខ ០ ដំបូង) + - [] push_front(តម្លៃ) - បន្ថែមធាតុនៅខាងមុខបញ្ជី + - [] pop_front() - យកធាតុខាងមុខចេញហើយប្រគល់តម្លៃរបស់វាមកវិញ + - [] push_back(តម្លៃ) - បន្ថែមធាតុនៅចុងបញ្ចប់ + - [] pop_back() - យកធាតុបញ្ចប់ហើយត្រឡប់តម្លៃរបស់វា + - [] front() - ទទួលបានតម្លៃនៃធាតុខាងមុខ + - [] back() - ទទួលបានតម្លៃនៃធាតុបញ្ចប់ + - [] insert(index, តម្លៃ) - បញ្ចូលតម្លៃនៅindex ដូច្នេះធាតុបច្ចុប្បន្ននៅindexនោះត្រូវបានចង្អុលទៅធាតុថ្មីនៅindex។ + - [] erase(index) - យក Node ចេញនៅ index ដែលបានផ្តល់ឱ្យ + - [] value_n_from_end(n) - ត្រឡប់តម្លៃ Node ទីពីខាងចុងបញ្ជី + - [] reverse() - បញ្ច្រាស់បញ្ជី + - [] remove_value(តម្លៃ) - លុបធាតុដំបូងក្នុងបញ្ជីជាមួយតម្លៃនេះ + - [] Doubly-linked List + - [ការពិពណ៌នា (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - មិនចាំបាច់អនុវត្តទេ From e8857f0ba0fb4df1456dfc52721f80c9338de831 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Sat, 9 May 2020 10:01:54 -0500 Subject: [PATCH 123/857] Update README-kh.md Khmer Translation - Stack until bitwise operations --- translations/README-kh.md | 96 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index e2f4d20d83..931aa40697 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -568,3 +568,99 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [] Doubly-linked List - [ការពិពណ៌នា (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - មិនចាំបាច់អនុវត្តទេ + +--- + +- ### Stack + - [] [Stack (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [] [ការប្រើ Stack ចូលមុនចេញក្រោយ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [] នឹងមិនអនុវត្តទេ។ ការអនុវត្តជាមួយ Array គឺមិនសំខាន់។ + +- ### Queue + - [] [ការប្រើ Queue ចូលមុនចេញមុន(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [] [Queue (វីដេអូ)](https://www.coursera.org/lecture/data-structures/queues-EShpq) +    - [] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) +    - [] [Queue អាទិភាព (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) +    - [] ប្រើ linked-list ដែលមានភ្ជាប់ជាមួយទ្រនិចនៅកន្ទុយ៖ + - enqueue(តម្លៃ) - បន្ថែមតម្លៃនៅទីតាំងនៅកន្ទុយ + - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ (ផ្នែកខាងមុខ) + - empty() +    - [] អនុវត្តដោយប្រើអារេ Array ទំហំថេរ៖ + - enqueue(តម្លៃ) - បន្ថែមធាតុនៅចុងបញ្ចប់នៃការផ្ទុកដែលមាន + - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ + - empty() + - full() +    - [] ថ្លៃ៖ + - ការអនុវត្តមិនល្អដោយប្រើlinked listដែលអ្នករៀបជាជួរនៅនឹងក្បាលនិងដេស្កាយនៅកន្ទុយប្រហែលជា O(n) +            ដោយសារតែអ្នកត្រូវការនៅជាប់នឹងធាតុចុងក្រោយ, បណ្តាលឱ្យ dequeue គ្នាឆ្លងកាត់ពេញលេញ + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### តារាងហាស (Hash table) + - [] វីដេអូ៖ + - [] [Hashing with Chaining (វីដេអូ)](https://www.youtube.com/watch?v=0M_kIqwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [] [Table Doubling, Karp-Rabin (វីដេអូ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [] [Open Addressing, Cryptographic Hashing (វីដេអូ)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [] [PyCon 2010: វចនានុក្រមដ៏អស្ចារ្យ (វីដេអូ)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [] [(កម្រិតខ្ពស់) Randomization: Universal & Perfect Hashing (វីដេអូ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [] [(ជឿនលឿន) Perfect hashing (វីដេអូ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [] វគ្គសិក្សាអនឡាញ៖ + - [] [ស្វែងយល់អំពីមុខងារ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [] [ការប្រើតារាងHash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [] [គាំទ្រ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_04- ឧបត្ថម្ភគាំទ្រហាន់ឌ្រី) + - [] [តារាងជំនួយភាសា Hash(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [] [Core Hash Tables (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [] [រចនាសម្ព័ន្ធទិន្នន័យ (វីដេអូ)](https://www.coursera.org/learn/data-structures/home/week/4) + - [] [បញ្ហាសៀវភៅទូរស័ព្ទ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [តារាងចែកចាយ] + - [ការផ្ទុកឡើងភ្លាមៗនិងការបង្កើនប្រសិទ្ធភាពផ្ទុកនៅក្នុងប្រអប់ឯកសារ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [តារាងហាសចែកចាយ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [] អនុវត្តជាមួយអារេដោយប្រើការស៊ើបអង្កេតលីនេអ៊ែរ + - hash(k, m) - m គឺជាទំហំនៃតារាង hash + - add(key, value) - ប្រសិនបើមានកូនសោររួចហើយ, ធ្វើបច្ចុប្បន្នភាពតម្លៃ + - exists(key) + - get(key) + - remove(key) + +--- + +### More Knowledge +## ចំណេះដឹងបន្ថែម + +- ### Binary search + - [] [Binary search (វីដេអូ)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [] [Binary search (វីដេអូ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [] [លម្អិត](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [] អនុវត្ត៖ + - Binary search (នៅលើជួរអារេនៃចំនួនគត់) + - Binary search ដោយប្រើការហៅខ្លួនឯង + +- ### ប្រតិបតិ្តការ Bitwise + - [] [សន្លឹកជំនួយ Bits](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - អ្នកគួរតែស្គាល់ អំណាច ២ ពី (២ ^ ១ ដល់ ២ ^ ១៦ និង ២ ^ ៣២) + - [] ទទួលបានការយល់ដឹងដ៏ល្អអំពីការរៀបចំBitsជាមួយ៖ &, |, ^, ~, >>, << + - [] [ពាក្យ](https://en.wikipedia.org/wiki/Word_ (computer_architecture)) + - [] ការណែនាំល្អ៖ +            ការធ្វើចលនាBits (វីដេអូ)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [] [C ការបង្រៀនសរសេរកម្មវិធី ២-១០: ប្រតិបត្តិការ Bitwise (វីដេអូ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [] [ការរៀបចំBits](https://en.wikipedia.org/wiki/Bit_manipulation) +  - [] [ប្រតិបតិ្តការ Bitwise](https://en.wikipedia.org/wiki/Bitwise_operation) + - [] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [] [Bit Hacks (វីដេអូ)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [] 2s និង 1s បំពេញបន្ថែម + - [Binary: Plusses & Minuses (ហេតុអ្វីយើងប្រើសមពីរ) (វីដេអូ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [១s បំពេញ](https://en.wikipedia.org/wiki/Ones%27_complement) + - [២ វិនាទីបំពេញ](https://en.wikipedia.org/wiki/Two%27s_complement) + - [] រាប់សំណុំ bits + - [វិធី ៤ យ៉ាងដើម្បីរាប់ប៊ីតជាសាមសិបប៊ីត (វីដេអូ)](https://youtu.be/Hzuzo9NJrlc) + - [រាប់ប៊ីត](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [របៀបរាប់ចំនួនសំណុំប៊ីតក្នុងចំនួនគត់ ៣២ ប៊ីត](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit- ចំនួនគត់) + - [] ប្តូរតម្លៃ + - [ប្តូរ](https://bits.stephan-brumme.com/swap.html) + - [] តម្លៃដាច់ខាត: + - [អាំងតេក្រាលពេញលេញ](https://bits.stephan-brumme.com/absInteger.html) From 4bcd83b7ca7f8950ea406ec202ef314a514876d3 Mon Sep 17 00:00:00 2001 From: Himanshu Airan <62210670+Himanshu-77@users.noreply.github.com> Date: Mon, 11 May 2020 22:00:24 +0530 Subject: [PATCH 124/857] Update README-hi.md Correction in some grammatical mistakes --- translations/README-hi.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 2e83edc551..71be70a6c9 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1,5 +1,5 @@ # कोडिंग साक्षात्कार विश्वविद्यालय ->मैं मूल रूप से इसे एक सॉफ़्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी-छोटी सूची के रूप में बनाया था, लेकिन यह आज की बड़ी सूची में बढ़ी है। इस अध्ययन योजना के माध्यम से जाने के बाद, [मुझे अमेज़ॅन पर सॉफ़्टवेयर डेवलपमेंट इंजीनियर के रूप में काम पर रखा गया है !](https://startupnextdoor.com/ive-been-acquired-by->amazon/?src=ciu) आपको संभवतः जितना मैंने किया उतना ही पढ़ना नहीं होगा। वैसे भी, आपको जो भी चाहिए वह यहां है +>मैने मूल रूप से इसे एक सॉफ़्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी सी सूची के रूप में बनाया था, लेकिन यह आज एक बड़ी सूची में बढ़ी है। इस अध्ययन योजना के माध्यम से जाने के बाद, [मुझे अमेज़ॅन पर सॉफ़्टवेयर डेवलपमेंट इंजीनियर के रूप में काम पर रखा गया है !](https://startupnextdoor.com/ive-been-acquired-by->amazon/?src=ciu) आपको संभवतः जितना मैंने किया उतना नहीं पढ़ना होगा। वैसे भी, आपको जो भी चाहिए वह यहां है > >यहां सूचीबद्ध आइटम आपको किसी साफ्टवेयर कंपनी के बारे में साक्षात्कार में अच्छी तरह से तैयार करेंगे, जिनमें दिग्गज, अमेज़ॅन, फेसबुक, गूगल या माइक्रोसॉफ्ट शामिल हैं। > @@ -12,10 +12,10 @@ यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें। -यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि सॉफ्टवेयर, वेब डेवलपमेंट से भिन्न Google, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट दृश्य सॉफ्टवेयर इंजीनियरिंग जैसी बड़ी सॉफ्टवेयर कंपनियों और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है। +यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि Google, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट जैसी बड़ी सॉफ्टवेयर कंपनियों की दृष्टि में सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर/वेब डेवलपमेंट से भिन्न है , और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है। + +यदि आप एक विश्वसनीय इंजीनियर या सिस्टम इंजीनियर बनना चाहते हैं, तो वैकल्पिक सूची (नेटवर्किंग, सुरक्षा) से अधिक जानें। -यदि आप एक विश्वसनीयता इंजीनियर या सिस्टम इंजीनियर बनना चाहते हैं, तो वैकल्पिक सूची (नेटवर्किंग, सुरक्षा) से अधिक जानें। -चाहिए --- ## अनुक्रमणिका @@ -42,11 +42,10 @@ - [क़ु](#queue) - [हैश टेबल](#hash-table) - [अधिक जानकारी](#more-knowledge) - - [एन्दिंनेस](#endianness) - [बाइनरी सर्च](#binary-search) - [बिट-वाईस ऑपेरशन](#bitwise-operations) - [ट्रीज](#trees) - - [ट्रीज पृष्टभूमि और तिपनिया](#trees---notes--background) + - [ट्रीज पृष्टभूमि और टिप्पणियाँ](#trees---notes--background) - [बाइनरी सर्च ट्री: BST](#binary-search-trees-bsts) - [हीप / प्रायोरिटी क्यू / बाइनरी हीप](#heap--priority-queue--binary-heap) - [ट्राइस](#tries) @@ -60,7 +59,7 @@ - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [गार्बेज कलेक्शन](#garbage-collection) - - [काशेस](#caches) + - [Caches](#caches) - [प्रोसेस और थ्रेड](#processes-and-threads) - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - [Papers](#papers) @@ -72,13 +71,13 @@ - [Scheduling](#scheduling) - [Implement system routines](#implement-system-routines) - [String searching & manipulations](#string-searching--manipulations) -- [आखरी समीक्षा](#final-review) +- [आखिरी समीक्षा](#final-review) - [पुस्तकें](#books) -- [कोडिंग अभ्यास/चुनौतियों](#coding-exerciseschallenges) +- [कोडिंग अभ्यास/चुनौतियाँ](#coding-exerciseschallenges) - [एक बार जब आप इंटरव्यू के करीब हो](#once-youre-closer-to-the-interview) - [आपका रिज्यूमे](#आपका-रिज्यूमे) - [इंटरव्यू की सोंच](#be-thinking-of-for-when-the-interview-comes) -- [इन्तेर्विएवर के लिए प्रश्न रखे](#have-questions-for-the-interviewer) +- [इंटरव्यूअर के लिए प्रश्न रखे](#have-questions-for-the-interviewer) - [अतिरिक्त पढाई (जरुरत नहीं)](#additional-learnings-not-required) - [इनफार्मेशन थ्योरी](#information-theory) - [पारिटी और हैमिंग कोड](#parity--hamming-code) @@ -87,7 +86,7 @@ - [संक्षिप्तीकरण](#compression) - [नेटवर्किंग](#networking) - [संगणक सुरक्षा](#computer-security) - - [परैल्लेल प्रोग्रामिंग](#parallel-programming) + - [पैरेलल प्रोग्रामिंग](#parallel-programming) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - [Fast Fourier Transform](#fast-fourier-transform) - [ब्लूम फ़िल्टर](#bloom-filter) @@ -103,17 +102,17 @@ - [Discrete math](#discrete-math) - [मशीन लर्निंग](#मशीन-लर्निंग) - [गो](#गो) -- [कुछ विषयोकी अधिक जानकारी](#कुछ-विषयोकी-अधिक-जानकारी) +- [कुछ विषयो की अधिक जानकारी](#कुछ-विषयोकी-अधिक-जानकारी) - [विडियो शृखला](#विडियो-शृखला) - [जब आपको नौकरी मिल जाये](#जब-आपको-नौकरी-मिल-जाये) --- -## इसका उपयोग क्यू करे? +## इसका उपयोग क्यों करे? -मैंने जब ये परियोजना शुरू की, तब मैं स्टैक और हीप में फरक नहीं जनता था, मुजे नहीं पता था की Big-O क्या हे, ट्रीज क्या हे, या ग्राफ को पार कैसे करते हैं. अगर मुजे छाटने का अल्गोरिथम लिखना पड़ता तो मैं आपको ये बता सकता हु के वो इतना ख़ास नहीं होगा. जो भी डाटा स्ट्रक्चर का मैंने उपयोग किया वो भाषा में समाविष्ट था, और वो कैसे काम करता हे उसकी कोई जानकारी मुजे नहीं थी. मुजे कभी मेमोरी का संचालन नहीं करता पड़ा, जबतक मेरी चलाई कोई प्रोसेस "out of -memory" का एरर न दे, और तब मुजे कोई वैकल्पिक हल धुन्दाना पड़ता था. मैंने मेरी जिन्दगी में बहोत कम मुल्ती-डायमेंशनल ऐरे और बहोत सारे अस्सोसिअतिव् ऐरे का उपयोग किया हे, पर मैंने कोई भी डाटा स्ट्रक्चर शुरू से नहीं लिखा था. -पर इस अध्ययन योजना का उपयोग करने बाद मेरा नौकरी लगाने का आत्मविश्वास बहोत बढ़ा हें. यह एक लम्बी योजना हें. यह मेरे लिए बहोत महीनोतक चलेगी. अगर आपको ईंमैसे कुछ पता हैं तो आपको कम वक्त लगेगा. +मैंने जब ये परियोजना शुरू की, तब मैं स्टैक और हीप में फर्क नहीं जानता था, मुझे नहीं पता था की Big-O क्या हे, ट्रीज क्या हे, या ग्राफ को पार कैसे करते हैं. अगर मुझे छाटने का अल्गोरिथम लिखना पड़ता तो मैं आपको ये बता सकता हु कि वो इतना ख़ास नहीं होगा. जो भी डाटा स्ट्रक्चर का मैंने उपयोग किया वो भाषा में समाविष्ट था, और वो कैसे काम करता हे उसकी कोई जानकारी मुझे नहीं थी. मैं कभी मेमोरी का संचालन नहीं करता, जब तक मेरी चलाई कोई प्रोसेस "out of +memory" का एरर न दे, और तब मुझे कोई वैकल्पिक हल ढूँढनाा पड़ता था. मैंने मेरी जिन्दगी में बहुत कम मल्टी-डायमेंशनल ऐरे और बहोत सारे associative ऐरे का उपयोग किया हे, पर मैंने कोई भी डाटा स्ट्रक्चर शुरू से नहीं लिखा था. +पर इस अध्ययन योजना का उपयोग करने बाद मेरा नौकरी लगने का आत्मविश्वास बहुत बढ़ा हें. यह एक लम्बी योजना हें. यह मेरे लिए बहुत महीनो तक चली. अगर आपको इनमें से कुछ पता हैं तो आपको कम वक्त लगेगा. ## इसका कैसे उपयोग करे? From a10b18d5e9b85ce33f770e9404326b63c79595f7 Mon Sep 17 00:00:00 2001 From: Himanshu Airan <62210670+Himanshu-77@users.noreply.github.com> Date: Tue, 12 May 2020 01:10:43 +0530 Subject: [PATCH 125/857] Update README-hi.md Corrected some grammatical errors. --- translations/README-hi.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 71be70a6c9..31da9798d7 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -119,7 +119,7 @@ memory" का एरर न दे, और तब मुझे कोई वै नीचे सब कुछ एक रूपरेखा है, और आप ऊपर से नीचे के क्रम में पढ़े. -मैं गितहब के विशेष मार्कडाउन का उपयोग कर रहा हूँ, प्रगति की जाँच करने के लिए कार्य सूचियों का प्रयोग करे. +मैं गिटहब के विशेष मार्कडाउन का उपयोग कर रहा हूँ, प्रगति की जाँच करने के लिए कार्य सूचियों का प्रयोग करे. - [x] एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जांच कर सकते हैं, बस कोष्ठक में एक एक्स डाले: [x] @@ -151,18 +151,18 @@ memory" का एरर न दे, और तब मुझे कोई वै ## इंटरव्यू के लिए एक संगणक भाषा चुने -इंटरव्यू मैं आप कोंसिभी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: +इंटरव्यू मैं आप कोई भी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: - C++ - Java - Python -आप निम्न्लिहित भाषाएँ भी चुन सकते हैं, पर उन्हें सावधानीसे चुने +आप निम्नलिखित भाषाएँ भी चुन सकते हैं, पर उन्हें सावधानी से चुने - JavaScript - Ruby -आपको भाषा में बहुत सहज होना चाहिए और जानकार होना चाहिए। +आपको भाषा में बहुत सहज होना चाहिए और जानकारी होनी चाहिए। विकल्पों के बारे में अधिक पढ़ें: @@ -178,7 +178,7 @@ memory" का एरर न दे, और तब मुझे कोई वै ### इंटरव्यू प्रेप - [ ] प्रोग्रामिंग साक्षात्कार का खुलासा: आपकी अगली नौकरी, दूसरी संस्करण को लैंडिंग करने के लिए रहस्य - - सी ++ और जावा में जवाब + - C++ और java में जवाब - यह कोडिंग साक्षात्कार के लिए क्रैकिंग के लिए एक अच्छा वार्म-अप है - बहुत मुश्किल नहीं है, सबसे अधिक समस्याएं आपको साक्षात्कार में जो दिखाई दे रही हैं उससे अधिक आसान हो सकती हैं (मैंने जो पढ़ा है) - [ ] कोडिंग साक्षात्कार, 6 वें संस्करण @@ -295,16 +295,16 @@ memory" का एरर न दे, और तब मुझे कोई वै इस सूची में कई महीनों से वृद्धि हुई है, और हाँ, यह एक तरह से हाथ से बाहर हो गयी हैं -निचे कुछ गलतिया हैं जो मैंने की हैं तो आपका अनुभव बेहतर होगा +नीचे कुछ गलतिया हैं जो मैंने की हैं तो आपका अनुभव बेहतर होगा ### १. आपसे यह सब याद नहीं होगा -मैंने घंटो वीडिय के विडियो देखे और टिप्पणिया लिखी, और महीनो बाद मुजे कुछ याद नहीं रहा. सबकी समीक्षा करने के लिए मैंने 3 दिन मेरी तिप्पनिओयो और flashcards बनाने में बितायें +मैंने घंटो वीडियो के विडियो देखे और टिप्पणिया लिखी, और महीनो बाद मुझे कुछ याद नहीं रहा. सबकी समीक्षा करने के लिए मैंने 3 दिन मेरी टिप्पणीयो और flashcards बनाने में बितायें कृपया पढ़ें तो आप मेरी गलतियां नहीं करेंगे: [कंप्यूटर विज्ञान ज्ञान को बनाए रखना](https://startupnextdoor.com/retaining-computer-science-knowledge/) -### २. फ्लाश्कार्ड्स का उपयोग कीजिये +### २. फ़्लैशकार्ड्स का उपयोग कीजिये इस समस्या को हल करने के लिए, मैंने एक छोटे से फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड प्रत्येक कार्ड के पास भिन्न स्वरूपण है। From c6dfe461dbf384db34c54197186e0e16c5c927f8 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Fri, 15 May 2020 09:04:18 -0500 Subject: [PATCH 126/857] Update README-kh.md Khmer translation Binary search trees --- translations/README-kh.md | 324 ++++++++++++++++++++++---------------- 1 file changed, 189 insertions(+), 135 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 931aa40697..a2b4fd1ae6 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -206,26 +206,26 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ### Interview Process & General Interview Prep ## ដំណើរការសំភាសន៍និងកម្មវិធីសម្ភាសន៍ទូទៅ -- [] [ABC: តែងតែសរសេរកូដ](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [] [ការប្រេីប្រាស់ក្តារខៀន](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -- [] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា](https://www.youtube.com/watch?v=N233T0epWTs) -- [] វិធីរកការងារនៅក្រុមហ៊ុនធំ ៤៖ - - [] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] [ABC: តែងតែសរសេរកូដ](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [ការប្រេីប្រាស់ក្តារខៀន](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) +- [ ] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] វិធីរកការងារនៅក្រុមហ៊ុនធំ ៤៖ + - [ ] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [បំបែកការសម្ភាសន៍ការសរសេរកូដ ១៖ - - [] [ហ្គេលឡេអិលម៉ាកឌូវែល (Gayle L McDowell) - បំបែកការសម្ភាសន៍ការសរសេរកូដ (វីដេអូ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [] [បំបែកបទសម្ភាសន៍នៃការសរសេរកូដជាមួយអ្នកនិពន្ធហ្គេលឡាឡាក់មែនម៉ាកម៉ាកឌូវែល (Gayle Laakmann McDowell) (វីដេអូ)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [] បំបែកបទសម្ភាសន៍កូដហ្វេសប៊ុក - - [] [វិធីសាស្រ្ត](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [] [ពន្យល់ពីបញ្ហា](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [] វគ្គសិក្សាត្រៀម: - - [] [សំភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធី (មិនបានបង់ប្រាក់)](https://www.udemy.com/software-engineer-interview-unleashed)៖ + - [ ] [ហ្គេលឡេអិលម៉ាកឌូវែល (Gayle L McDowell) - បំបែកការសម្ភាសន៍ការសរសេរកូដ (វីដេអូ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [បំបែកបទសម្ភាសន៍នៃការសរសេរកូដជាមួយអ្នកនិពន្ធហ្គេលឡាឡាក់មែនម៉ាកម៉ាកឌូវែល (Gayle Laakmann McDowell) (វីដេអូ)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] បំបែកបទសម្ភាសន៍កូដហ្វេសប៊ុក + - [ ] [វិធីសាស្រ្ត](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [ពន្យល់ពីបញ្ហា](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] វគ្គសិក្សាត្រៀម: + - [ ] [សំភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធី (មិនបានបង់ប្រាក់)](https://www.udemy.com/software-engineer-interview-unleashed)៖ - រៀនពីរបៀបដើម្បីត្រៀមខ្លួនសម្រាប់ការសម្ភាសន៍វិស្វករអភិវឌ្ឍន៍កម្មវិធីពីអ្នកសំភាសន៍របស់ហ្គូហ្គោល (Google) ។ - - [] [Python សម្រាប់រចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយនិងសំភាសន៍ (វគ្គសិក្សាបង់លុយ)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/)៖ + - [ ] [Python សម្រាប់រចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយនិងសំភាសន៍ (វគ្គសិក្សាបង់លុយ)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/)៖ - វគ្គសិក្សាសំភាសន៍ Python ដែលផ្តោតលើរចនាសម្ព័ន្ធទិន្នន័យក្បួនដោះស្រាយ ការសំភាសន៍សាកល្បងនិងច្រើនទៀត។ - - [] [ការណែនាំអំពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយដោយប្រើ Python (វគ្គសិក្សាឥតគិតថ្លៃរបស់ Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)៖ + - [ ] [ការណែនាំអំពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយដោយប្រើ Python (វគ្គសិក្សាឥតគិតថ្លៃរបស់ Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)៖ - រចនាសម្ព័នធ័រណេតនិងអ័រហ្គ្រែនដោយឥតគិតថ្លៃ។ - - [] [រចនាសម្ព័នទិន្នន័យនិងក្បួនដោះស្រាយ! (Udacity បង់ Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256)៖ + - [ ] [រចនាសម្ព័នទិន្នន័យនិងក្បួនដោះស្រាយ! (Udacity បង់ Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256)៖ - ទទួលបានការអនុវត្តជាក់ស្តែងជាមួយនឹងរចនាសម្ព័ន្ធទិន្នន័យជាង ១០០ លំហាត់ និងការណែនាំពីអ្នកបងៀនដើម្បីជួយរៀបចំអ្នកសម្រាប់ការសម្ភាសន៍ និង ដាក់ការងារ។ --- @@ -268,11 +268,11 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ### Interview Prep ## ត្រៀមការសម្ភាសន៍ -- [] [សំភាសន៍ការសរសេរកម្មវិធីបង្ហាញ: ការសរសេរកូដវិធីរបស់អ្នកតាមរយៈការសំភាសន៍, បោះពុម្ពលើកទី ៤](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) +- [ ] [សំភាសន៍ការសរសេរកម្មវិធីបង្ហាញ: ការសរសេរកូដវិធីរបស់អ្នកតាមរយៈការសំភាសន៍, បោះពុម្ពលើកទី ៤](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - ចម្លើយសរសេរ C++ និង Java - នេះគឺជាសមដ៏ល្អសម្រាប់ការបំបែកសំភាសន៍កូដ - មិនពិបាកពេកទេ បញ្ហាភាគច្រើនប្រហែលជាងាយស្រួលជាងអ្វីដែលអ្នកបានឃើញក្នុងបទសម្ភាសន៍ (ពីអ្វីដែលខ្ញុំបានអាន) -- [] [ការសំភាសន៍ការសរសេរកូដការបោះពុម្ពលើកទី ៦](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) +- [ ] [ការសំភាសន៍ការសរសេរកូដការបោះពុម្ពលើកទី ៦](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - ចម្លើយនសរសេរជា Java --- @@ -282,9 +282,9 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ជ្រើសរើសមួយ: -- [] [ធាតុផ្សំនៃបទសម្ភាសន៍សរសេរកម្មវិធី (កំណែ C ++)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [] [ធាតុផ្សំនៃការសំភាសន៍សរសេរកម្មវិធីក្នុង Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [] ធាតុនៃការសំភាសន៍សរសេរកម្មវិធី (កំណែ Java) +- [ ] [ធាតុផ្សំនៃបទសម្ភាសន៍សរសេរកម្មវិធី (កំណែ C ++)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [ធាតុផ្សំនៃការសំភាសន៍សរសេរកម្មវិធីក្នុង Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] ធាតុនៃការសំភាសន៍សរសេរកម្មវិធី (កំណែ Java) - [សៀវភៅ](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [គម្រោង - វិធីសាស្រ្ត Stub និងករណីតេស្តិ៍សម្រាប់រាល់បញ្ហាក្នុងសៀវភៅ](https://github.com/gardncl/elements-of-programming-interviews) @@ -309,8 +309,8 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ខ្ញុំមិនបានអានទាំងពីរនេះទេ ប៉ុន្តែវាត្រូវបានវាយតម្លៃនិងសរសេរយ៉ាងខ្ពស់ដោយ Sedgewick ។ គាត់អស្ចារ្យណាស់។ -- [] [វិធីដោះស្រាយក្នុង C++, ផ្នែក ១-៤៖ មូលដ្ឋានគ្រឹះរចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) តម្រៀប (Sort) ស្វែងរក (Searching)](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [] [វិធីដោះស្រាយក្នុង C++ ភាគ ៥៖ ក្បួនដោះស្រាយក្រាហ្វិច](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [វិធីដោះស្រាយក្នុង C++, ផ្នែក ១-៤៖ មូលដ្ឋានគ្រឹះរចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) តម្រៀប (Sort) ស្វែងរក (Searching)](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [វិធីដោះស្រាយក្នុង C++ ភាគ ៥៖ ក្បួនដោះស្រាយក្រាហ្វិច](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) ប្រសិនបើអ្នកមានអនុសាសន៍ល្អប្រសើរសម្រាប់ C++ សូមប្រាប់ខ្ញុំឱ្យដឹង។ រកមើលធនធានទូលំទូលាយ។ @@ -318,14 +318,14 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ## Java -- [] [វិធីដោះស្រាយ (Sedgewick និង Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) +- [ ] [វិធីដោះស្រាយ (Sedgewick និង Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - វីដេអូដែលមានមាតិកាសៀវភៅ (និង Sedgewick!) លើវគ្គសិក្សា៖ - [ក្បួនដោះស្រាយ I](https://www.coursera.org/learn/algorithms-part1) - [ក្បួនដោះស្រាយទី ២](https://www.coursera.org/learn/algorithms-part2) រឺ៖ -- [] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- [ ] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - ដោយហ្គ្រីដល (Goodrich), តាតសាសៀ (Tamassia), ហ្គោវីស (Goldwasser) - អត្ថបទសម្រាប់វគ្គសិក្សាសំរាប់ថ្នាក់ដំបូងរបស់វិទ្យាសាស្ត្រកុំព្យូទ័រនៅឯ UC Berkeley - សូមមើលរបាយការណ៍សៀវភៅរបស់ខ្ញុំស្តីពីកំណែ Python ខាងក្រោម។ សៀវភៅនេះមានប្រធានបទដូចគ្នា។ @@ -333,7 +333,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ --- ## Python -- [] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ (Algorithm) ក្នុង Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) +- [ ] [រចនាសម្ព័ន្ធទិន្នន័យ (Data Structure) និងក្បួនដោះស្រាយ (Algorithm) ក្នុង Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - ដោយហ្គ្រីដល (Goodrich), តាតសាសៀ (Tamassia), ហ្គោវីស (Goldwasser) - ខ្ញុំចូលចិត្តសៀវភៅនេះ។ វាគ្របដណ្តប់អ្វីៗគ្រប់យ៉ាងនិងច្រើនទៀត។ - លេខកូដព្យញ្ជនៈ @@ -449,21 +449,21 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ## ចំណេះដឹងចាំបាច់ -- [] **រៀន C** +- [ ] **រៀន C** - C គឺនៅគ្រប់ទីកន្លែង។ អ្នកនឹងឃើញឧទាហរណ៍នៅក្នុងសៀវភៅការបង្រៀនវីដេអូ *នៅគ្រប់ទីកន្លែង* ពេលអ្នកកំពុងសិក្សា។ - - [] [ភាសាសរសេរកម្មវិធី C, ភាគ ២](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - [ ] [ភាសាសរសេរកម្មវិធី C, ភាគ ២](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)          - នេះគឺជាសៀវភៅខ្លីមួយប៉ុន្តែវានឹងផ្តល់ឱ្យអ្នកនូវភាសា C យ៉ាងល្អហើយប្រសិនបើអ្នកអនុវត្តវាបន្តិច អ្នកនឹងឆាប់ស្ទាត់ជំនាញ។ ការយល់ដឹង C ជួយអ្នកឱ្យយល់ពីរបៀបដែលកម្មវិធីនិងការចងចាំដំណើរការ។          - [ចម្លើយចំពោះសំណួរ](https://github.com/lekkas/c-algorithms) -- [] **របៀបដែលកុំព្យូទ័រដំណើរការកម្មវិធី:** - - [] [តើស៊ីភីយូប្រតិបត្តិកម្មវិធីមួយយ៉ាងដូចម្តេច? (វីដេអូ)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [] [របៀបគណនាកុំព្យូទ័រ - ALU (វីដេអូ)](https://youtu.be/1I5ZMmrOfnA) - - [] [ចុះបញ្ជី (Registers) និង រ៉េម (RAM) (វីដេអូ)](https://youtu.be/fpnE6UAfbtU) - - [] [អង្គភាពកែច្នៃកណ្តាល (ស៊ីភីយូ) (The Central Processing Unit) (វីដេអូ)](https://youtu.be/FZGugFqdr60) - - [] [សេចក្តីណែនាំនិងកម្មវិធី (វីដេអូ)](https://youtu.be/zltgXvg6r3k) +- [ ] **របៀបដែលកុំព្យូទ័រដំណើរការកម្មវិធី:** + - [ ] [តើស៊ីភីយូប្រតិបត្តិកម្មវិធីមួយយ៉ាងដូចម្តេច? (វីដេអូ)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [របៀបគណនាកុំព្យូទ័រ - ALU (វីដេអូ)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [ចុះបញ្ជី (Registers) និង រ៉េម (RAM) (វីដេអូ)](https://youtu.be/fpnE6UAfbtU) + - [ ] [អង្គភាពកែច្នៃកណ្តាល (ស៊ីភីយូ) (The Central Processing Unit) (វីដេអូ)](https://youtu.be/FZGugFqdr60) + - [ ] [សេចក្តីណែនាំនិងកម្មវិធី (វីដេអូ)](https://youtu.be/zltgXvg6r3k) --- @@ -473,23 +473,23 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - គ្មានអ្វីត្រូវអនុវត្តទេ - មានវីដេអូជាច្រើននៅទីនេះ។ គ្រាន់តែមើលឱ្យបានគ្រប់គ្រាន់រហូតដល់អ្នកយល់។ អ្នកអាចត្រលប់មកពិនិត្យឡើងវិញជានិច្ច។ - ប្រសិនបើការបង្រៀនមួយចំនួនមានភាពស្រងូតស្រងាត់អ្នកអាចរំលងដល់ក្រោមហើយមើលវីដេអូគណិតវិទ្យាដែលដាច់ពីគ្នាដើម្បីទទួលបានចំណេះដឹងជាមូលដ្ឋាន។ -- [] [Harvard CS50 - Asymptotic Notation (វីដេអូ)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [] [កំណត់ចំណាំ Big-O (ការបង្រៀនរហ័សទូទៅ) (វីដេអូ)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [] [Big O Notation (និង Omega និង Theta) - ការពន្យល់គណិតវិទ្យាល្អបំផុត (វីដេអូ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [] Skiena៖ +- [ ] [Harvard CS50 - Asymptotic Notation (វីដេអូ)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [កំណត់ចំណាំ Big-O (ការបង្រៀនរហ័សទូទៅ) (វីដេអូ)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (និង Omega និង Theta) - ការពន្យល់គណិតវិទ្យាល្អបំផុត (វីដេអូ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena៖     - [វីដេអូ](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)     - [ស្លាយ](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [] [ការណែនាំមួយចំពោះការវិភាគស្មុគស្មាញនៃគណិតវិទ្យា](http://discrete.gr/complexity/) -- [] [លំដាប់នៃការលូតលាស់ (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [] [ការវិភាគអាមីស្តូតូទិក (Amortized) (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) -- [] [UC Berkeley Big O (មានវីដេអូ)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [] [UC Berkeley Big Omega (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [] [ការវិភាគរំលោះ (Amortized) (វីដេអូ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [] [បង្ហាញរូបភាព "Big-O" (វីដេអូ)](https://www.coursera.org/lecture/alacticmic-thinking-1/illustrating-big-o-YVqzv) -- [] TopCoder (រួមបញ្ចូលទាំងទំនាក់ទំនងកើតឡើងវិញនិងទ្រឹស្តីបទមេ)៖ +- [ ] [ការណែនាំមួយចំពោះការវិភាគស្មុគស្មាញនៃគណិតវិទ្យា](http://discrete.gr/complexity/) +- [ ] [លំដាប់នៃការលូតលាស់ (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [ការវិភាគអាមីស្តូតូទិក (Amortized) (វីដេអូ)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (មានវីដេអូ)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [ការវិភាគរំលោះ (Amortized) (វីដេអូ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [បង្ហាញរូបភាព "Big-O" (វីដេអូ)](https://www.coursera.org/lecture/alacticmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (រួមបញ្ចូលទាំងទំនាក់ទំនងកើតឡើងវិញនិងទ្រឹស្តីបទមេ)៖ - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ១](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ២](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [] [សន្លឹកជំនួយ](http://bigocheatsheet.com/) +- [ ] [សន្លឹកជំនួយ](http://bigocheatsheet.com/) --- @@ -498,7 +498,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - ### Arrays - អនុវត្តវ៉ិចទ័រប្តូរទំហំដោយស្វ័យប្រវត្តិ។ - - [] ការពិពណ៌នា៖ + - [ ] ការពិពណ៌នា៖ - [Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) -[UC Berkeley CS61B - អារេ លីនែអ៊ែរ និង ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (ចាប់ផ្តើមមើលចាប់ពី ១៥នាទី ៣២វិនាទី) - [Arrays មូលដ្ឋាន (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) @@ -507,90 +507,90 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [Jagged Arrays (វីដេអូ)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [Jagged Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - [ការប្តូរទំហំ Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [] អនុវត្តវ៉ិចទ័រ (បំលែង Arrays ដោយប្តូរទំហំស្វ័យប្រវត្តិ)៖ - - [] អនុវត្តការសរសេរកូដដោយប្រើArrays និង ទ្រនិចចង្អុល និង គណិតទ្រនិចដើម្បីលោតទៅសន្ទស្សន៍មួយ។ - - [] Arrays ទិន្នន័យថ្មីដែលមានអង្គចងចាំបម្រុងទុក + - [ ] អនុវត្តវ៉ិចទ័រ (បំលែង Arrays ដោយប្តូរទំហំស្វ័យប្រវត្តិ)៖ + - [ ] អនុវត្តការសរសេរកូដដោយប្រើArrays និង ទ្រនិចចង្អុល និង គណិតទ្រនិចដើម្បីលោតទៅសន្ទស្សន៍មួយ។ + - [ ] Arrays ទិន្នន័យថ្មីដែលមានអង្គចងចាំបម្រុងទុក - អាចបែងចែកArraysនៅក្រោមក្រណាត់ដោយគ្រាន់តែមិនប្រើលក្ខណៈពិសេសរបស់វា - ចាប់ផ្តើមជាមួយលេខ ១៦ ឬបើលេខចាប់ផ្តើមធំជាងប្រើថាមពល ២ - ១៦, ៣២, ៦៤, ១២៨ - - [] size() - ចំនួនធាតុ - - [] capacity() - ចំនួនធាតុដែលវាអាចផ្ទុកបាន - - [] is_empty() - - [] at(index) - ត្រឡប់ធាតុនៅទីតាំងដែលបានផ្តល់ឱ្យ បេីទីតាំងនៅក្រៅព្រំដែន វានឹង មានកុំហស - - [] push(item) - - [] insert(index, item) - បញ្ចូលធាតុនៅទីតាំង ប្តូរតម្លៃទីតាំង និងធាតុនៅខាងក្រោមទៅខាងស្តាំ - - [] prepend (item) - អាចប្រើបញ្ចូលខាងលើនៅទីតាំង ០ - - [] pop() - ដកចេញពីចុងបញ្ចប់តម្លៃត្រឡប់មកវិញ - - [] delete(index) - លុបធាតុនៅទីតាំងដែលអោយ ផ្លាស់ប្តូរធាតុនៅពីក្រោយទាំងអស់ - - [] remove(item) - រកមើលតម្លៃនិងយកទីតាំងចេញដែលផ្ទុកវាចេញ (ទោះបីជានៅកន្លែងច្រើនក៏ដោយ) - - [] find(item) - រកមើលតម្លៃហើយត្រឡប់វិញនៅទីតាំងដំបូងជាមួយតម្លៃនោះ បើរកមិនឃើញត្រលប់វិញ -1 - - [] resize(new_capacity) // មុខងារឯកជន + - [ ] size() - ចំនួនធាតុ + - [ ] capacity() - ចំនួនធាតុដែលវាអាចផ្ទុកបាន + - [ ] is_empty() + - [ ] at(index) - ត្រឡប់ធាតុនៅទីតាំងដែលបានផ្តល់ឱ្យ បេីទីតាំងនៅក្រៅព្រំដែន វានឹង មានកុំហស + - [ ] push(item) + - [ ] insert(index, item) - បញ្ចូលធាតុនៅទីតាំង ប្តូរតម្លៃទីតាំង និងធាតុនៅខាងក្រោមទៅខាងស្តាំ + - [ ] prepend (item) - អាចប្រើបញ្ចូលខាងលើនៅទីតាំង ០ + - [ ] pop() - ដកចេញពីចុងបញ្ចប់តម្លៃត្រឡប់មកវិញ + - [ ] delete(index) - លុបធាតុនៅទីតាំងដែលអោយ ផ្លាស់ប្តូរធាតុនៅពីក្រោយទាំងអស់ + - [ ] remove(item) - រកមើលតម្លៃនិងយកទីតាំងចេញដែលផ្ទុកវាចេញ (ទោះបីជានៅកន្លែងច្រើនក៏ដោយ) + - [ ] find(item) - រកមើលតម្លៃហើយត្រឡប់វិញនៅទីតាំងដំបូងជាមួយតម្លៃនោះ បើរកមិនឃើញត្រលប់វិញ -1 + - [ ] resize(new_capacity) // មុខងារឯកជន - ពេលទំហំ Array ដល់កំណត់, ផ្លាស់ប្តូរទំហំទ្វេដងទំហំ - នៅពេលដែលចាប់យកវត្ថុមួយ ប្រសិនបើទំហំគឺ 1/4 នៃទំហំសរុប, ផ្លាស់ប្តូរទំហំដល់ពាក់កណ្តាល - - [] ពេលវេលា + - [ ] ពេលវេលា - O(១) ត្រូវបន្ថែម / ដកចេញនៅចុងបញ្ចប់ (សងវិញសម្រាប់ការបែងចែកសម្រាប់ទំហំបន្ថែម) ទីតាំង - O(n) ដើម្បីបញ្ចូល / ដកចេញនៅកន្លែងផ្សេងទៀត - - [] លំហ + - [ ] លំហ - ជាប់ទាក់ទងនឹងការចងចាំដូច្នេះភាពជិតស្និទ្ធជួយដល់ការអនុវត្ត - ទំហំត្រូវការ = (ទំហំ Array, ដែល >= n) * ទំហំនៃធាតុ, ប៉ុន្តែបើទោះបីជា 2n, នៅតែ O (n) --- - ### Linked Lists - - [] ការពិពណ៌នា៖ - - [] [Singly Linked Lists (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [] [CS 61B - Linked Lists ១ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [] [CS 61B - Linked Lists ២ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [] [កូដ C (វីដេអូ)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - [ ] ការពិពណ៌នា៖ + - [ ] [Singly Linked Lists (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists ១ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists ២ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [កូដ C (វីដេអូ)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - មិនមែនវីដេអូទាំងមូលទេគឺគ្រាន់តែជាផ្នែកអំពីរចនាសម្ព័ន្ធ (Data Structure) និងការបែងចែក Memory ។ - - [] Linked List vs Arrays: + - [ ] Linked List vs Arrays: - [Core Linked Lists Vs Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [នៅក្នុងពិភពពិត Linked Lists Vs Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [] [ហេតុអ្វីអ្នកគួរចៀសវាង linked lists (វីដេអូ)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [] Gotcha: you need pointer to pointer knowledge: + - [ ] [ហេតុអ្វីអ្នកគួរចៀសវាង linked lists (វីដេអូ)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge:         (សម្រាប់ពេលអ្នកហុច pointer ទៅមុខងារមួយដែលអាចផ្លាស់ប្តូរអាស័យដ្ឋានដែលព្រួញចង្អុល)         ទំព័រនេះគ្រាន់តែដើម្បីស្វែងយល់ពី pointer ទៅ pointer ។ ខ្ញុំមិនណែនាំបញ្ជីឈ្មោះបែបត្រាប់តាមនេះទេ។ ភាពងាយស្រួលក្នុងការអាននិងរក្សាបាននូវភាពលំបាកដោយសារតែភាពឆ្លាតវៃ។ - [Pointer ទៅ pointer](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [] អនុវត្ត (ខ្ញុំបានធ្វើដោយប្រើទ្រនិចកន្ទុយនិងដោយគ្មាន)៖ - - [] size() - ត្រឡប់ចំនួនធាតុទិន្នន័យក្នុងបញ្ជី - - [] empty() - bool ត្រឡប់ពិតបើទទេ - - [] value_at(index) - ត្រឡប់តម្លៃនៃធាតុទី (ចាប់ផ្តើមពីលេខ ០ ដំបូង) - - [] push_front(តម្លៃ) - បន្ថែមធាតុនៅខាងមុខបញ្ជី - - [] pop_front() - យកធាតុខាងមុខចេញហើយប្រគល់តម្លៃរបស់វាមកវិញ - - [] push_back(តម្លៃ) - បន្ថែមធាតុនៅចុងបញ្ចប់ - - [] pop_back() - យកធាតុបញ្ចប់ហើយត្រឡប់តម្លៃរបស់វា - - [] front() - ទទួលបានតម្លៃនៃធាតុខាងមុខ - - [] back() - ទទួលបានតម្លៃនៃធាតុបញ្ចប់ - - [] insert(index, តម្លៃ) - បញ្ចូលតម្លៃនៅindex ដូច្នេះធាតុបច្ចុប្បន្ននៅindexនោះត្រូវបានចង្អុលទៅធាតុថ្មីនៅindex។ - - [] erase(index) - យក Node ចេញនៅ index ដែលបានផ្តល់ឱ្យ - - [] value_n_from_end(n) - ត្រឡប់តម្លៃ Node ទីពីខាងចុងបញ្ជី - - [] reverse() - បញ្ច្រាស់បញ្ជី - - [] remove_value(តម្លៃ) - លុបធាតុដំបូងក្នុងបញ្ជីជាមួយតម្លៃនេះ - - [] Doubly-linked List + - [ ] អនុវត្ត (ខ្ញុំបានធ្វើដោយប្រើទ្រនិចកន្ទុយនិងដោយគ្មាន)៖ + - [ ] size() - ត្រឡប់ចំនួនធាតុទិន្នន័យក្នុងបញ្ជី + - [ ] empty() - bool ត្រឡប់ពិតបើទទេ + - [ ] value_at(index) - ត្រឡប់តម្លៃនៃធាតុទី (ចាប់ផ្តើមពីលេខ ០ ដំបូង) + - [ ] push_front(តម្លៃ) - បន្ថែមធាតុនៅខាងមុខបញ្ជី + - [ ] pop_front() - យកធាតុខាងមុខចេញហើយប្រគល់តម្លៃរបស់វាមកវិញ + - [ ] push_back(តម្លៃ) - បន្ថែមធាតុនៅចុងបញ្ចប់ + - [ ] pop_back() - យកធាតុបញ្ចប់ហើយត្រឡប់តម្លៃរបស់វា + - [ ] front() - ទទួលបានតម្លៃនៃធាតុខាងមុខ + - [ ] back() - ទទួលបានតម្លៃនៃធាតុបញ្ចប់ + - [ ] insert(index, តម្លៃ) - បញ្ចូលតម្លៃនៅindex ដូច្នេះធាតុបច្ចុប្បន្ននៅindexនោះត្រូវបានចង្អុលទៅធាតុថ្មីនៅindex។ + - [ ] erase(index) - យក Node ចេញនៅ index ដែលបានផ្តល់ឱ្យ + - [ ] value_n_from_end(n) - ត្រឡប់តម្លៃ Node ទីពីខាងចុងបញ្ជី + - [ ] reverse() - បញ្ច្រាស់បញ្ជី + - [ ] remove_value(តម្លៃ) - លុបធាតុដំបូងក្នុងបញ្ជីជាមួយតម្លៃនេះ + - [ ] Doubly-linked List - [ការពិពណ៌នា (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - មិនចាំបាច់អនុវត្តទេ --- - ### Stack - - [] [Stack (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [] [ការប្រើ Stack ចូលមុនចេញក្រោយ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [] នឹងមិនអនុវត្តទេ។ ការអនុវត្តជាមួយ Array គឺមិនសំខាន់។ + - [ ] [Stack (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [ការប្រើ Stack ចូលមុនចេញក្រោយ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] នឹងមិនអនុវត្តទេ។ ការអនុវត្តជាមួយ Array គឺមិនសំខាន់។ - ### Queue - - [] [ការប្រើ Queue ចូលមុនចេញមុន(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [] [Queue (វីដេអូ)](https://www.coursera.org/lecture/data-structures/queues-EShpq) -    - [] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) -    - [] [Queue អាទិភាព (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) -    - [] ប្រើ linked-list ដែលមានភ្ជាប់ជាមួយទ្រនិចនៅកន្ទុយ៖ + - [ ] [ការប្រើ Queue ចូលមុនចេញមុន(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (វីដេអូ)](https://www.coursera.org/lecture/data-structures/queues-EShpq) +    - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) +    - [ ] [Queue អាទិភាព (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) +    - [ ] ប្រើ linked-list ដែលមានភ្ជាប់ជាមួយទ្រនិចនៅកន្ទុយ៖ - enqueue(តម្លៃ) - បន្ថែមតម្លៃនៅទីតាំងនៅកន្ទុយ - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ (ផ្នែកខាងមុខ) - empty() -    - [] អនុវត្តដោយប្រើអារេ Array ទំហំថេរ៖ +    - [ ] អនុវត្តដោយប្រើអារេ Array ទំហំថេរ៖ - enqueue(តម្លៃ) - បន្ថែមធាតុនៅចុងបញ្ចប់នៃការផ្ទុកដែលមាន - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ - empty() - full() -    - [] ថ្លៃ៖ +    - [ ] ថ្លៃ៖ - ការអនុវត្តមិនល្អដោយប្រើlinked listដែលអ្នករៀបជាជួរនៅនឹងក្បាលនិងដេស្កាយនៅកន្ទុយប្រហែលជា O(n)             ដោយសារតែអ្នកត្រូវការនៅជាប់នឹងធាតុចុងក្រោយ, បណ្តាលឱ្យ dequeue គ្នាឆ្លងកាត់ពេញលេញ - enqueue: O(1) (amortized, linked list and array [probing]) @@ -598,27 +598,27 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - empty: O(1) (linked list and array) - ### តារាងហាស (Hash table) - - [] វីដេអូ៖ - - [] [Hashing with Chaining (វីដេអូ)](https://www.youtube.com/watch?v=0M_kIqwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [] [Table Doubling, Karp-Rabin (វីដេអូ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [] [Open Addressing, Cryptographic Hashing (វីដេអូ)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [] [PyCon 2010: វចនានុក្រមដ៏អស្ចារ្យ (វីដេអូ)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [] [(កម្រិតខ្ពស់) Randomization: Universal & Perfect Hashing (វីដេអូ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [] [(ជឿនលឿន) Perfect hashing (វីដេអូ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [] វគ្គសិក្សាអនឡាញ៖ - - [] [ស្វែងយល់អំពីមុខងារ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [] [ការប្រើតារាងHash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [] [គាំទ្រ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_04- ឧបត្ថម្ភគាំទ្រហាន់ឌ្រី) - - [] [តារាងជំនួយភាសា Hash(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [] [Core Hash Tables (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [] [រចនាសម្ព័ន្ធទិន្នន័យ (វីដេអូ)](https://www.coursera.org/learn/data-structures/home/week/4) - - [] [បញ្ហាសៀវភៅទូរស័ព្ទ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] វីដេអូ៖ + - [ ] [Hashing with Chaining (វីដេអូ)](https://www.youtube.com/watch?v=0M_kIqwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (វីដេអូ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Cryptographic Hashing (វីដេអូ)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: វចនានុក្រមដ៏អស្ចារ្យ (វីដេអូ)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(កម្រិតខ្ពស់) Randomization: Universal & Perfect Hashing (វីដេអូ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(ជឿនលឿន) Perfect hashing (វីដេអូ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] វគ្គសិក្សាអនឡាញ៖ + - [ ] [ស្វែងយល់អំពីមុខងារ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [ការប្រើតារាងHash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [គាំទ្រ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_04- ឧបត្ថម្ភគាំទ្រហាន់ឌ្រី) + - [ ] [តារាងជំនួយភាសា Hash(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [រចនាសម្ព័ន្ធទិន្នន័យ (វីដេអូ)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [បញ្ហាសៀវភៅទូរស័ព្ទ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [តារាងចែកចាយ] - [ការផ្ទុកឡើងភ្លាមៗនិងការបង្កើនប្រសិទ្ធភាពផ្ទុកនៅក្នុងប្រអប់ឯកសារ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [តារាងហាសចែកចាយ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [] អនុវត្តជាមួយអារេដោយប្រើការស៊ើបអង្កេតលីនេអ៊ែរ + - [ ] អនុវត្តជាមួយអារេដោយប្រើការស៊ើបអង្កេតលីនេអ៊ែរ - hash(k, m) - m គឺជាទំហំនៃតារាង hash - add(key, value) - ប្រសិនបើមានកូនសោររួចហើយ, ធ្វើបច្ចុប្បន្នភាពតម្លៃ - exists(key) @@ -631,36 +631,90 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ## ចំណេះដឹងបន្ថែម - ### Binary search - - [] [Binary search (វីដេអូ)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [] [Binary search (វីដេអូ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [] [លម្អិត](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [] អនុវត្ត៖ + - [ ] [Binary search (វីដេអូ)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Binary search (វីដេអូ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [លម្អិត](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] អនុវត្ត៖ - Binary search (នៅលើជួរអារេនៃចំនួនគត់) - Binary search ដោយប្រើការហៅខ្លួនឯង - ### ប្រតិបតិ្តការ Bitwise - - [] [សន្លឹកជំនួយ Bits](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - [ ] [សន្លឹកជំនួយ Bits](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - អ្នកគួរតែស្គាល់ អំណាច ២ ពី (២ ^ ១ ដល់ ២ ^ ១៦ និង ២ ^ ៣២) - - [] ទទួលបានការយល់ដឹងដ៏ល្អអំពីការរៀបចំBitsជាមួយ៖ &, |, ^, ~, >>, << - - [] [ពាក្យ](https://en.wikipedia.org/wiki/Word_ (computer_architecture)) - - [] ការណែនាំល្អ៖ + - [ ] ទទួលបានការយល់ដឹងដ៏ល្អអំពីការរៀបចំBitsជាមួយ៖ &, |, ^, ~, >>, << + - [ ] [ពាក្យ](https://en.wikipedia.org/wiki/Word_ (computer_architecture)) + - [ ] ការណែនាំល្អ៖             ការធ្វើចលនាBits (វីដេអូ)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [] [C ការបង្រៀនសរសេរកម្មវិធី ២-១០: ប្រតិបត្តិការ Bitwise (វីដេអូ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [] [ការរៀបចំBits](https://en.wikipedia.org/wiki/Bit_manipulation) -  - [] [ប្រតិបតិ្តការ Bitwise](https://en.wikipedia.org/wiki/Bitwise_operation) - - [] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [] [Bit Hacks (វីដេអូ)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - - [] 2s និង 1s បំពេញបន្ថែម + - [ ] [C ការបង្រៀនសរសេរកម្មវិធី ២-១០: ប្រតិបត្តិការ Bitwise (វីដេអូ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [ការរៀបចំBits](https://en.wikipedia.org/wiki/Bit_manipulation) +  - [ ] [ប្រតិបតិ្តការ Bitwise](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (វីដេអូ)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] 2s និង 1s បំពេញបន្ថែម - [Binary: Plusses & Minuses (ហេតុអ្វីយើងប្រើសមពីរ) (វីដេអូ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [១s បំពេញ](https://en.wikipedia.org/wiki/Ones%27_complement) - [២ វិនាទីបំពេញ](https://en.wikipedia.org/wiki/Two%27s_complement) - - [] រាប់សំណុំ bits + - [ ] រាប់សំណុំ bits - [វិធី ៤ យ៉ាងដើម្បីរាប់ប៊ីតជាសាមសិបប៊ីត (វីដេអូ)](https://youtu.be/Hzuzo9NJrlc) - [រាប់ប៊ីត](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [របៀបរាប់ចំនួនសំណុំប៊ីតក្នុងចំនួនគត់ ៣២ ប៊ីត](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit- ចំនួនគត់) - - [] ប្តូរតម្លៃ + - [ ] ប្តូរតម្លៃ - [ប្តូរ](https://bits.stephan-brumme.com/swap.html) - - [] តម្លៃដាច់ខាត: + - [ ] តម្លៃដាច់ខាត: - [អាំងតេក្រាលពេញលេញ](https://bits.stephan-brumme.com/absInteger.html) + +--- + +## Trees + +- ### Trees - កំណត់ត្រា និង ព័ត៌មាន + - [ ] [ស៊េរី៖ ចំនុចសំខាន់ Trees (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [ស៊េរី៖ Trees (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - ការសាងសង់ tree + - ការឆ្លងកាត់ tree + - ក្បួនដោះស្រាយ + - [ ] [BFS(breadth-first search) និង DFS(depth-first search) (វីដេអូ)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - កំណត់សំគាល់របស់ BFS: + - level order (BFS, ដោយប្រេី queue) + - ភាពស្មុគស្មាញពេលវេលា: O(n) + - ភាពស្មុគស្មាញនៃលំហ: ល្អបំផុត៖ O(1), អាក្រក់បំផុត៖ O(n/2)=O(n) + - DFS notes: + - ភាពស្មុគស្មាញពេលវេលា: O(n) + - ភាពស្មុគស្មាញនៃលំហ: + ល្អបំផុត៖ O(log n) - មធ្យមកម្ពស់ tree + អាក្រក់បំផុត៖ O(n) + - inorder (DFS: ឆ្វេង, ខ្លួនឯង, ស្តាំ) + - postorder (DFS: ឆ្វេង, ស្តាំ, ខ្លួនឯង) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [ការពិនិត្យឡើងវិញ Binary Search Tree (វីដេអូ)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [ស៊េរី (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - ចាប់ផ្តើមជាមួយតារាងនិមិត្តសញ្ញាហើយឆ្លងកាត់ការអនុវត្ត BST + - [ ] [សេចក្តីផ្តើម (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (វីដេអូ)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - ការអនុវត្តក្នុង C/C++ (វីដេអូ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST ការអនុវត្តក្នុង - ការបែងចែក memory ក្នុង stack និង heap (វីដេអូ)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [ស្វែងរកធាតុតូចបំផុត និង ធំបំផុតនៅក្នុង binary search tree (វីដេអូ)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [រកកំពស់ binary tree (វីដេអូ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - យុទ្ធសាស្ត្រ breadth-first និង depth-first (វីដេអូ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (វីដេអូ)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (វីដេអូ)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [ពិនិត្យមើលថាតើ binary tree គឺ binary search tree រឺទេ (វីដេអូ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [លុបធាតុពី Binary Search Tree (វីដេអូ)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor ក្នុង binary search tree មួយ (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] ការអនុវត្ត: + - [ ] insert // ដាក់ធាតុក្នុង tree + - [ ] get_node_count // ទទួលចំនួនធាតុដែលផ្ទុក + - [ ] print_values // បង្ហាញតម្លៃក្នុង tree, ពី តូច ទៅ ធំ + - [ ] delete_tree + - [ ] is_in_tree // ត្រឡប់វិញ ពិត ប្រសិនបេីតម្លៃក្នុង tree + - [ ] get_height // ត្រឡប់វិញ កំពស់ក្នុង nodes (កំពស់ single node គឺ 1) + - [ ] get_min // ត្រឡប់វិញ ធាតុតូចជាងគេ + - [ ] get_max // ត្រឡប់វិញ ធាតុធំជាងគេ + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // ត្រឡប់តម្លៃខ្ពស់បំផុតបន្ទាប់នៅក្នុងtreeបន្ទាប់ពីតម្លៃដែលបានផ្ដល់ ៕ បើគ្មានត្រឡប់ -1 From dc4715f8f54ee842fc4dde1912ede5ad5be9da1a Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Sat, 16 May 2020 12:17:22 -0500 Subject: [PATCH 127/857] Update README-kh.md Khmer Translation: Heap / Priority Queue / Binary Heap --- translations/README-kh.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index a2b4fd1ae6..a203ffcfb7 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -718,3 +718,32 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] is_binary_search_tree - [ ] delete_value - [ ] get_successor // ត្រឡប់តម្លៃខ្ពស់បំផុតបន្ទាប់នៅក្នុងtreeបន្ទាប់ពីតម្លៃដែលបានផ្ដល់ ៕ បើគ្មានត្រឡប់ -1 + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [សេចក្តីផ្តើម (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [ការអនុវត្តដំបូង (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [កំពស់ Tree (វីដេអូ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [ប្រតិបត្តិការមូលដ្ឋាន (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Binary Trees ពេញលេញ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - លោតដើម្បីចាប់ផ្ដើម (វីដេអូ)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [ការកសាង heap (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps និង Heap Sort (វីដេអូ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B មេរៀន 24: Priority Queues (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] ការអនុវត្ត max-heap: + - [ ] insert + - [ ] sift_up - ត្រូវការសំរាប់បញ្ចូល + - [ ] get_max - ត្រឡប់ធាតុអតិបរិមាដោយមិនយកវាចេញ + - [ ] get_size() - ត្រឡប់ចំនួននៃធាតុដែលបានរក្សាទុក + - [ ] is_empty() - ត្រឡប់ពិតប្រសិនបើ heap មិនមានធាតុ + - [ ] extract_max - ត្រឡប់ធាតុអតិបរិមាយកវាចេញ + - [ ] sift_down - ត្រូវការសំរាប់ extract_max + - [ ] remove(i) - យកធាតុចេញនៅ index x + - [ ] heapify - បង្កើតheap ពីធាតុជាច្រើនដែលត្រូវការសម្រាប់ heap_sort + - [ ] heap_sort() - យកarray ដែលមិនបានតម្រៀបហើយប្រែក្លាយវាទៅជាកន្លែងដែលបានតម្រៀបតាមកន្លែងដោយប្រើheapអតិបរមា។ t + - ចំណាំ៖ ការប្រើ heap តូច ជំនួសនឹងជួយសន្សំប្រតិបត្តិការ ប៉ុន្តែត្រូវការទំហំទ្វេដង (មិនអាចធ្វើនៅនឹងកន្លែង) ។ From 484a8ca5c4f550ce948e3a4051645f83709dfa1d Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 16 May 2020 11:16:41 -0700 Subject: [PATCH 128/857] Fixed Khan Academy link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index da4bfa7912..26f512d5d1 100644 --- a/README.md +++ b/README.md @@ -1084,7 +1084,7 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Networking - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) From 901c7bfc0578bb90559e89a781b77652f1228dfa Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Fri, 22 May 2020 07:16:22 -0500 Subject: [PATCH 129/857] Khmer Translation: sort --- translations/README-kh.md | 77 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index a203ffcfb7..72895f1b6a 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -747,3 +747,80 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] heapify - បង្កើតheap ពីធាតុជាច្រើនដែលត្រូវការសម្រាប់ heap_sort - [ ] heap_sort() - យកarray ដែលមិនបានតម្រៀបហើយប្រែក្លាយវាទៅជាកន្លែងដែលបានតម្រៀបតាមកន្លែងដោយប្រើheapអតិបរមា។ t - ចំណាំ៖ ការប្រើ heap តូច ជំនួសនឹងជួយសន្សំប្រតិបត្តិការ ប៉ុន្តែត្រូវការទំហំទ្វេដង (មិនអាចធ្វើនៅនឹងកន្លែង) ។ + +--- + +## Sorting + +- [ ] កំណត់សំគាល់: + - អនុវត្ត sorts និងដឹងពីករណីដែលល្អ និង ដែលអាក្រក់, ភាពស្មុគស្មាញជាមធ្យមនីមួយៗ: + - កុំប្រេី bubble sort - វាមិនល្អ - O(n^2), លុះត្រាតែ n <= 16 + - [ ] ស្ថេរភាពក្នុងក្បួនដោះស្រាយ sorting ("តើ Quicksort មានស្ថេរភាពឬ?") + - [ស្ថេរភាពក្នុងក្បួនដោះស្រាយ Sorting](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [ស្ថេរភាពក្នុងក្បួនដោះស្រាយ Sorting](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [ស្ថេរភាពក្នុងក្បួនដោះស្រាយ Sorting](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [ស្ថេរភាពក្នុងក្បួនដោះស្រាយ Sorting](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] តើក្បួនដោះស្រាយអ្វីខ្លះអាចត្រូវបានប្រើ linked lists? អាចត្រូវបានប្រើ arrays? អាចត្រូវបានប្រើទាំងពីរ? + - ខ្ញុំនឹងមិនណែនាំឱ្យ Sort ជាមួយ linked list ប៉ុន្តែអាចប្រេី Merge Sort។ + - [Merge Sort សំរាប់ Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- សំរាប់ heapsort, សូមមេីល Heap data structure ខាងលេី. Heap sort គឺល្អ, ប៉ុន្តែមិនមានស្ថេរភាពទេ. + +- [ ] [Sedgewick - Mergesort (5 វីដេអូ)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. ភាពស្មុគស្មាញ Sorting](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. ប្រៀបធៀប](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. ស្ថេរភាព](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 វីដេអូរ)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Keys ស្ទួន](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. Sorts ជាប្រព័ន្ធ](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B មេរៀនទី 29: Sorting I (វីដេអូរ)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B មេរៀនទី 30: Sorting II (វីដេអូរ)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B មេរៀនទី 32: Sorting III (វីដេអូរ)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B មេរៀនទី 33: Sorting V (វីដេអូរ)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (វីដេអូរ)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [វិភាគ Bubble Sort (វីដេអូរ)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (វីដេអូរ)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (វីដេអូរ)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (វីដេអូរ)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (វីដេអូរ)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (វីដេអូរ)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] កូដ Merge sort: + - [ ] [ការប្រើប្រាស់ output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [ការប្រើប្រាស់ output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] កូដ Quick sort: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] អនុវត្ត: + - [ ] Mergesort: O(n log n) ករណីមធ្យម និង អាក្រក់បំផុត + - [ ] Quicksort O(n log n) ករណីមធ្យម + - Selection sort និង insertion sort ទាំងពីរគឺ O(n^2) សំរាប់ករណីមធ្យម និង អាក្រក់បំផុត + - ចំពោះ heapsort, សូមមេីល Heap data structure ខាងលេី. + +- [ ] មិនចាំបាច់ទេ ប៉ុន្តែខ្ញុំសូមណែនាំពួកគេ: + - [ ] [Sedgewick - Radix Sorts (6 វីដេអូរ)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings ក្នុង Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. ការរាប់ Key Indexed](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. តម្រៀបខ្ទង់អក្សរដំបូងដែលមានខ្ទង់តិចបំផុត Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. វិធី ៣ Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (វីដេអូរ)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (វីដេអូរ)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (វីដេអូរ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (វីដេអូរ)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +ជាការសង្ខេបនេះគឺជាការបង្ហាញជាក់ស្តែងនៃ [១៥ វិធីដោះស្រាយ Sorting](https://www.youtube.com/watch?v=kPRA0W1kECg) ។ +ប្រសិនបើអ្នកត្រូវការព័ត៌មានលម្អិតបន្ថែមលើប្រធានបទនេះសូមមើលផ្នែក "Sorting" នៅក្នុង [ព័ត៌មានលំអិតលើប្រធានបទមួយចំនួន](#additional-detail-on-some-subjects) From 6817e6aac06dad0f087098c374052cc90e4a2cf1 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Fri, 22 May 2020 09:05:12 -0500 Subject: [PATCH 130/857] Khmer translation: Graph --- translations/README-kh.md | 62 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index 72895f1b6a..f59a0d654d 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -824,3 +824,65 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ ជាការសង្ខេបនេះគឺជាការបង្ហាញជាក់ស្តែងនៃ [១៥ វិធីដោះស្រាយ Sorting](https://www.youtube.com/watch?v=kPRA0W1kECg) ។ ប្រសិនបើអ្នកត្រូវការព័ត៌មានលម្អិតបន្ថែមលើប្រធានបទនេះសូមមើលផ្នែក "Sorting" នៅក្នុង [ព័ត៌មានលំអិតលើប្រធានបទមួយចំនួន](#additional-detail-on-some-subjects) + +--- + +## Graphs + +Graphs អាចត្រូវបានប្រើដើម្បីបង្ហាញពីបញ្ហាជាច្រើននៅក្នុងវិទ្យាសាស្ត្រកុំព្យូទ័រ ដូចជា Trees និង Sorting។ + +- កំណត់ចំណាំ: + -  មានវិធីជាមូលដ្ឋានចំនួន ៤ ដើម្បីតំណាង graph ក្នុង memory: + - objects និង pointers + - adjacency matrix + - adjacency list + - adjacency map + - ស្គាល់ខ្លួនឯងជាមួយនឹង Graphs និង គុណសម្បត្តិនិងគុណវិបត្តិរបស់វា + - BFS និង DFS - ដឹងពីភាពស្មុគស្មាញក្នុងការគណនាការជួញដូររបស់ពួកគេ និង វិធីអនុវត្តកូដពិតប្រាកដ + - នៅពេលសួរសំណួរសូមស្វែងរកដំណោះស្រាយដែលមានមូលដ្ឋានលើ Graphs ជាមុនសិនបន្ទាប់មកបន្តទៅមុខទៀតប្រសិនបើគ្មាន។ + +- [ ] MIT(វីដេអូ): + - [ ] [ការស្វែងរក Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [ការស្វែងរក Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] ការបង្រៀន Skiena - ការណែនាំ: + - [ ] [CSE373 2012 - មេរៀនទី 11 - Graph Data Structures (វីដេអូ)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - មេរៀនទី 12 - Breadth-First Search (វីដេអូ)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - មេរៀនទី 13 - Graph Algorithms (វីដេអូ)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - មេរៀនទី 14 - Graph Algorithms (បន្ត) (វីដេអូ)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - មេរៀនទី 15 - Graph Algorithms (បន្ត 2) (វីដេអូ)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - មេរៀនទី 16 - Graph Algorithms (បន្ត 3) (វីដេអូ)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (ពិនិត្យឡើងវិញ និង ច្រើនទៀត): + + - [ ] [6.006 Single-Source Shortest Paths Problem (វីដេអូ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (វីដេអូ)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (វីដេអូ)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (វីដេអូ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - មេរៀនទី 6 (វីដេអូ)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - មេរៀនទី 7 (វីដេអូ)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - មេរៀនទី 8 (វីដេអូ)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - មេរៀនទី 9 (វីដេអូ)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (វីដេអូ)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (វីដេអូ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (វីដេអូ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- វគ្គសិក្សា Coursera: + - [ ] [Algorithms on Graphs (វីដេអូ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- ខ្ញុំនឹងអនុវត្ត: + - [ ] DFS ជាមួយ adjacency list (recursive) + - [ ] DFS ជាមួយ adjacency list (iterative with stack) + - [ ] DFS ជាមួយ adjacency matrix (recursive) + - [ ] DFS ជាមួយ adjacency matrix (iterative with stack) + - [ ] BFS ជាមួយ adjacency list + - [ ] BFS ជាមួយ adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (សូមមេីល Aduni វីដេអូ ខាងលេី): + - [ ] ពិនិត្យ cycle (ត្រូវការសំរាប់ topological sort ព្រោះយើងនឹងពិនិត្យមើលវដ្តមុនពេលចាប់ផ្តើម) + - [ ] topological sort + - [ ] រាប់សមាសធាតុដែលបានភ្ជាប់នៅក្នុងក្រាហ្វ + - [ ] រាយសមាសធាតុដែលភ្ជាប់គ្នាយ៉ាងខ្លាំង + - [ ] ពិនិត្យក្រាហ្វិច bipartite From 0b6e62be550ac65f986d9b18edbd49463d80ff0c Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Fri, 22 May 2020 12:26:16 -0500 Subject: [PATCH 131/857] Khmer Translation: Recursion and Dynamic Programming --- translations/README-kh.md | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index f59a0d654d..dcbee57472 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -886,3 +886,45 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] រាប់សមាសធាតុដែលបានភ្ជាប់នៅក្នុងក្រាហ្វ - [ ] រាយសមាសធាតុដែលភ្ជាប់គ្នាយ៉ាងខ្លាំង - [ ] ពិនិត្យក្រាហ្វិច bipartite + +--- + +## Even More Knowledge +## ចំណេះដឹងបន្ធែម + +- ### Recursion + - [ ] ការបង្រៀនរបស់ Stanford លេី recursion និង backtracking: + - [ ] [មេរៀនទី 8 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [មេរៀនទី 9 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [មេរៀនទី 10 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [មេរៀនទី 11 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - នៅពេលដែលសមរម្យដើម្បីប្រើវា + - តេី tail recursion ប្រសើរជាងអត់? + - [ ] [អ្វីជា Tail Recursion និង ហេតុអ្វីបានជាវាអាក្រក់?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (វីដេអូ)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Dynamic Programming + - អ្នកប្រហែលជាមិនឃើញមានបញ្ហានៃការសរសេរកម្មវិធី dynamic programming នៅក្នុងបទសម្ភាសន៍របស់អ្នកទេ ប៉ុន្តែវាសមនឹងទទួលបានការទទួលស្គាល់នូវបញ្ហាមួយក្នុងនាមជាបេក្ខជនសម្រាប់ការសរសេរកម្មវិធី dynamic programming។ + - ប្រធានបទនេះអាចជាការពិបាកណាស់, ព្រោះថាបញ្ហារបស់ DP នីមួយៗត្រូវបានកំណត់ថាជាការទាក់ទងគ្នា + - ខ្ញុំស្នើឱ្យក្រឡេកមើលឧទាហរណ៍ជាច្រើននៃបញ្ហា DP រហូតទាល់តែអ្នកមានការយល់ដឹងច្បាស់អំពីគំរូដែលពាក់ព័ន្ធ។ + - [ ] វីដេអូ: + - វីដេអូ Skiena អាចពិបាកធ្វើតាមព្រោះពេលខ្លះគាត់ប្រើក្តារខៀនដែលវាមើលមិនឃើញ + - [ ] [Skiena: CSE373 2012 - មេរៀនទី 19 - ការណែនាំអំពី Dynamic Programming (វីដេអូ)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - មេរៀនទី 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - មេរៀនទី 21 - ឧទាហរណ៍ Dynamic Programming (វីដេអូ)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - មេរៀនទី 22 - ការអនុវត្តកម្មវិធី Dynamic Programming (វីដេអូ)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (ចាប់ផ្តេីមពី 59:18) (វីដេអូ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - មេរៀនទី 11 (វីដេអូ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - មេរៀនទី 12 (វីដេអូ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] បញ្ជីបញ្ហារបស់ DP (នីមួយៗខ្លី): + [Dynamic Programming (វីដេអូ)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [បញ្ហា RNA secondary structure (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [បង្ហាញរូបភាពពីវិធីដោះស្រាយ DP (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [ពេលវេលាដំណើរការនៃ DP algorithm (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) From 91517036bcd049439700365254c8e36f6a6e8da9 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 23 May 2020 10:23:57 -0700 Subject: [PATCH 132/857] Removed dead link. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 8271b95e70..e0c2e81c99 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) From 5a0040e9fbf84a28ee18476ad64cc725f2f0941f Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 8 Jun 2020 17:17:24 -0700 Subject: [PATCH 133/857] Update coursera link in Series: Trees (video) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0c2e81c99..5198f4cf4c 100644 --- a/README.md +++ b/README.md @@ -656,7 +656,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Trees - Notes & Background - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - basic tree construction - traversal - manipulation algorithms From 231ed913ebd994a606c407f6ef2c969f4ea8e36a Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 8 Jun 2020 17:29:14 -0700 Subject: [PATCH 134/857] Update additional coursera links --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5198f4cf4c..8758205f44 100644 --- a/README.md +++ b/README.md @@ -494,11 +494,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Arrays - Implement an automatically resizing vector. - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [Arrays (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) - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Dynamic Arrays (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://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) @@ -530,14 +530,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Linked Lists - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) @@ -559,11 +559,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - No need to implement - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. @@ -602,9 +602,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) @@ -655,7 +655,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [Series: Core Trees (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-trees-ovovP) - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - basic tree construction - traversal From 0e96a8bcc27f21fd11442f0e82ec34fe43b09fd0 Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 8 Jun 2020 17:37:03 -0700 Subject: [PATCH 135/857] Update coursera links for distributed hash tables --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8758205f44..9caecbdbfb 100644 --- a/README.md +++ b/README.md @@ -606,8 +606,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - [ ] implement with array using linear probing - hash(k, m) - m is size of hash table From af885651db572295328726244fbb769935e932b1 Mon Sep 17 00:00:00 2001 From: mikeburnsdev Date: Sun, 28 Jun 2020 21:27:13 -0400 Subject: [PATCH 136/857] Added a Practice Operations link to Bitwise operations section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9caecbdbfb..011ac47181 100644 --- a/README.md +++ b/README.md @@ -639,6 +639,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) From 536da358a1aae3dbac3b4b26be8c7ddd7d7fcac6 Mon Sep 17 00:00:00 2001 From: flyotlin Date: Tue, 30 Jun 2020 09:39:34 +0800 Subject: [PATCH 137/857] 2020/06/30 Almost done --- translations/README-tw.md | 1239 ++++++++++++++++---------------- tw_translation_progress_log.md | 13 +- 2 files changed, 616 insertions(+), 636 deletions(-) mode change 100755 => 100644 translations/README-tw.md diff --git a/translations/README-tw.md b/translations/README-tw.md old mode 100755 new mode 100644 index 2e2da774ef..ad7653892f --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -72,108 +72,107 @@ - [這份清單沒有包含的內容](#這份清單沒有包含的內容) - [先備知識](#先備知識) - [每日計畫](#每日計畫) -- [演算法複雜度(Algorithmic complexity) / Big-O / 漸進分析(Asymptotic analysis)](#演算法複雜度(Algorithmic-complexity)--Big-O--漸進分析(Asymptotic-analysis)) +- [演算法複雜度 / Big-O / 漸進分析](#演算法複雜度(Algorithmic-complexity)--Big-O--漸進分析(Asymptotic-analysis)) - [資料結構](#資料結構) - - [Arrays](#arrays) + - [陣列](#陣列) - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Stack](#Stack(堆疊)) + - [Queue](#Queue(佇列)) + - [Hash table](#Hash-table(雜湊表)) +- [更多](#更多) + - [二分搜尋法](#二分搜尋法(Binary-Search)) + - [位元運算](#位元運算(Bitwise-operations)) +- [樹狀結構(Tree)](#樹狀結構(Tree)) + - [Trees-重點與背景知識](#Trees-重點與背景知識) + - [二元搜尋樹](#二元搜尋樹Binary-search-trees:-BSTs) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS + - 平衡搜尋樹(基本概念,非細節) + - 遍歷:前序、中序、後序、BFS、DFS - [排序](#排序) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected + - 選擇排序 + - 插入排序 + - 堆積排序 + - 快速排序 + - 合併排序 +- [圖](#圖) + - 有向圖 + - 無向圖 - adjacency matrix - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) + - 遍歷: 廣度優先(BFS), 深度優先(DFS) +- [更多知識](#更多知識) + - [遞迴](#遞迴Recursion) + - [動態規劃](#動態規劃) + - [物件導向程式設計](#物件導向程式設計) + - [設計模式](#設計模式) + - [組合數&機率](#組合數&機率) + - [NP、NP-Complete以及近似演算法](#NP、NP-Complete以及近似演算法) + - [快取(cache)](#快取(cache)) + - [程序與執行緒](#程序與執行緒(Processes&Threads)) - [Testing](#testing) - - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) + - [排程](#排程Scheduling) + - [字串搜尋演算法以及操作](#字串搜尋演算法以及操作) + - [字典樹](#字典樹(Tries)) + - [浮點數](#浮點數) - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -## Additional Resources - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) + - [端序](#端序(Endianness)) + - [網路](#網路) +- [系統設計、可擴充性、資料處理](#系統設計、可擴充性、資料處理) (如果你有四年以上的經驗) +- [總複習](#總複習) +- [解題練習](#解題練習) +- [解題練習/挑戰](#解題練習/挑戰) +- [面試前夕](#面試前夕) +- [你的履歷](#你的履歷) +- [想想面試時可能的狀況](#想想面試時可能的狀況) +- [一旦你得到工作](#一旦你得到工作) + +---------------- 以下皆為選讀 ---------------- + +## 額外資源 + +- [選修書籍](#選修書籍) +- [額外學習](#額外學習) + - [編譯器](#編譯器) - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Unix命令列工具](#Unix命令列(command-line)工具) + - [資訊理論](#資訊理論-(影片)) + - [同位位元 & 漢明碼](#同位位元-&-漢明碼-(影片)) - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [密碼學](#密碼學) + - [壓縮](#壓縮) + - [電腦安全](#電腦安全) + - [垃圾回收](#垃圾回收(GC)) + - [平行計算](#平行計算) + - [通訊、序列化以及佇列系統](#通訊、序列化以及佇列系統(Messaging,-Serialization,-and-Queueing-Systems)) + - [A*搜尋演算法](#A*搜尋演算法) + - [快速傅立葉轉換](#快速傅立葉轉換) + - [布隆過濾器](#布隆過濾器(Bloom-filter)) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [van Emde Boas Trees](#van-emde-boas-trees) - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) + - [平衡樹](#平衡樹) + - AVL樹 + - 伸縮樹Splay tree + - 紅黑樹 + - 2-3搜尋樹 + - 2-3-4樹(aka 2-4樹) + - N-ary (K-ary, M-ary)樹 + - B樹 + - [k-D樹](#k-d樹) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [快速處理的數學](#快速處理(Fast-Processing)的數學) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) + - [線性程式設計](#線性程式設計Linear-Programming-(影片)) + - [幾何、Convex hull](#幾何、Convex-hull-(影片)) + - [離散數學](#離散數學) + - [機器學習](#機器學習) +- [某些主題的額外知識](#某些主題的額外知識) +- [影片系列](#影片系列) +- [電腦科學課程](#電腦科學課程) +- [論文](#論文) --- @@ -559,25 +558,25 @@ - dequeue: O(1) (linked list與陣列) - empty: O(1) (linked list與陣列) -- ### 雜湊表(Hash table) +- ### Hash table(雜湊表) - [ ] 影片: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [Hashing with Chaining (影片))](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (影片)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Cryptographic Hashing (影片)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (影片)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (影片)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (影片)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] 線上開放式課程: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Understanding Hash Functions (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (影片)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (影片)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] 分散式雜湊表(distributed hash table): - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (影片)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (影片)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - [ ] 實作雜湊表(用陣列以及線性探測(linear probing)) - hash(k, m) - m:雜湊表的大小 @@ -597,23 +596,23 @@ - 用遞迴(recursion)的方法實作二分搜尋法 - ### 位元運算(Bitwise operations) - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 你應該能背出一些2的指數(從2^1到2^16以及2^32) - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + [Bit Manipulation (影片)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (影片)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - [ ] 一補數與二補數 - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (影片)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [4 ways to count bits in a byte (影片)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] swap values: @@ -623,12 +622,12 @@ ## 樹狀結構(Tree) -- ### Trees - 重點與背景知識 +- ### Trees-重點與背景知識 - [ ] [Series: Core Trees (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms + - 如何建立一棵樹 + - 遍歷 + - 操作樹的演算法 - [ ] [BFS(breadth-first search) and DFS(depth-first search) (影片)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS(廣度優先搜尋)重點: - 每一層的順序(BFS,用queue) @@ -643,23 +642,23 @@ - 後序 (DFS: 左子樹、右子樹、根) - 前序 (DFS: 根、左子樹、右子樹) -- ### (二元搜尋樹)Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) +- ### 二元搜尋樹Binary search trees: BSTs + - [ ] [Binary Search Tree Review (影片)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [Introduction (影片)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (影片)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二元搜尋樹-用C/C++實作 (影片)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [實作二元搜尋樹 - stack以及heap的記憶體分配 (影片)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [在二元搜尋樹中尋找最大值與最小值 (影片)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [找出二元搜尋樹的高度 (影片)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [遍歷二元搜尋樹 - 廣度和深度優先 (影片)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [二元樹:層層遍歷 (影片)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二元搜尋樹:前序、中序、後序 (影片)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [檢查一棵二元樹是否為二元搜尋樹 (影片)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [從二元搜尋樹中刪除一個節點 (影片)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [二元搜尋樹-如何在中序中尋找下一個節點 (影片)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] 實作: - [ ] insert // 把數值插入到二元搜尋樹當中 - [ ] get_node_count // get count of values stored @@ -676,18 +675,18 @@ - ### Heap / Priority Queue / Binary Heap - 一般將此資料結構以樹的方式視覺化,但實際上是以線性的方式儲存(陣列、linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Introduction (影片)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (影片)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (影片)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (影片)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (影片)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (影片)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (影片)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (影片)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (影片)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (影片)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] 實作max heap: - [ ] insert @@ -718,32 +717,32 @@ - 有關於堆積排序,可以看看上面有關於堆積的介紹。堆積排序很棒,但不太穩定。 -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) +- [ ] [Sedgewick - Mergesort (5部影片)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) +- [ ] [Sedgewick - Quicksort (4部影片)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + - [ ] [CS 61B Lecture 29: Sorting I (影片)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (影片)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (影片)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (影片)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (影片)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (影片)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (影片)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (影片)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (影片)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (影片)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (影片)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - [ ] 合併排序程式碼: - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) @@ -761,7 +760,7 @@ - 有關堆積排序,請見上方關於堆積的介紹。 - [ ] 非必要,但我建議看一看: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [Sedgewick - Radix Sorts (6部影片)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) @@ -769,10 +768,10 @@ - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [Radix Sort (影片)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (影片)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (影片)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (影片)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) 這裡有[15種排序演算法](https://www.youtube.com/watch?v=kPRA0W1kECg)的影片,如果你想對排序演算法有更多的了解,看看[Additional Detail on Some Subjects](#additional-detail-on-some-subjects)裡的「排序」這個部分 @@ -795,30 +794,30 @@ - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - [ ] Skiena Lectures - 很棒的入門介紹: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (影片)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (影片)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (影片)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (影片)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (影片)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (影片)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] 圖(複習以及進階知識): - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [6.006 Single-Source Shortest Paths Problem (影片)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (影片)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (影片)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (影片)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (影片)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (影片)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (影片)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (影片)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (影片)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (影片)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (影片)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (影片)](https://www.youtube.com/watch?v=RpgcYiky7uw) - 完整Coursera課程: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + - [ ] [Algorithms on Graphs (影片)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - 我將實作: - [ ] 深度優先搜尋搭配adjacency list(遞迴recursive) @@ -840,14 +839,14 @@ - ### 遞迴Recursion - [ ] Stanford課程-遞迴recursion與回溯法backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - [ ] [Lecture 8 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - 什麼時候適合用這些 - tail recursion沒有比較好? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + - [ ] [Tail Recursion (影片)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### 動態規劃 - 在你的面試中或許沒有任何動態規劃的問題,但能夠知道一個題目可以使用動態規劃來解決是很重要的。 @@ -855,29 +854,29 @@ - 我建議你可以多看一些動態規劃的題目,這可以讓你對這類型的問題以及他的長相有更多的理解。 - [ ] 影片: - Skiena的影片有點難跟上,他有時候用白板,寫的字又很小。 - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (影片)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (影片)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (影片)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (影片)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (影片)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (影片)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (影片)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] List of individual DP problems (每一部都很短): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + [Dynamic Programming (v影片ideo)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] Yale課程筆記: - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] [The RNA secondary structure problem (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (影片)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### 物件導向程式設計 - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] 重要!物件導向程式設計原則: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] [Optional: UML 2.0 Series (影片)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] 重要!物件導向程式設計原則: [SOLID Principles (影片)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - ### 設計模式 - [ ] [Quick UML review(影片)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) @@ -899,24 +898,24 @@ - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Chapter 6 (Part 1) - Patterns (影片)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (影片)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (影片)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27部影片)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - 我知道"Design Patterns: Elements of Reusable Object-Oriented Software"才是這方面的經典書籍,但深入淺出系列對於物件導向的初學者可能是更好的選擇。 - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - ### 組合數&機率 - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (影片)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (影片)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (影片)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - - Course大崗: + - Course大綱: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - 只有影片 - 41 (每個都很簡單而且很短): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - 只有影片(每個都很簡單而且很短): + - [ ] [Probability Explained (影片)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP、NP-Complete以及近似演算法 - 了解一些著名的NP-Complete問題,像是旅行推銷員問題(traveling salesman problem)和背包問題(knapsack problem),並要能夠在面試官問類似這些經典範例的問題時辨認出他們。 @@ -948,104 +947,103 @@ - [ ] [MIT 6.004 L16: 快取深入探討(影片)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### 程序與執行緒(Processes&Threads) -- [ ] Computer Science 162 - 作業系統 (25 videos): +- [ ] Computer Science 162 - 作業系統 (25部影片): - 程序與執行緒在第1~11部影片中 - [作業系統以及系統程式設計(影片)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [程序與執行緒有什麼差別?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - 涵蓋: - 探討程序、執行緒與並行性 - 程序與執行緒的差別 - - 程序 - - 執行緒 - - locks - - mutexes - - semaphores - - monitors + - 程序(processes) + - 執行緒(threads) + - 鎖(locks) + - 互斥鎖(mutexes) + - 號誌(semaphores) + - 監視器(monitors) - 他們如何運作? - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors + - 死鎖(deadlock) + - 活鎖(livelock) + - CPU活動、中斷、上下文交換(context switching) + - 現代cpu並行性由多核處理器實現 - [Paging, segmentation and virtual memory(影片)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts(影片)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [中斷Interrupt(影片)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - 程序所需資源 (記憶體): code, 靜態儲存, stack, heap,檔案描述符(file descriptors)以及i/o) + - 執行序所需資源 (跟上述相同(除了stack), 其他的執行序都各自擁有pc、stack計數器、暫存器以及stack在相同的程序中) + - Forking只有複製寫入(唯讀),直到新的程序被寫入到記憶體中u,然後他再複製一個新的 + - 上下文交換 + - 上下文交換如何被作業系統以及硬體所啟動 + - [ ] [C++執行序 (包含10部影片的系列)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] Python並行性 (影片)): + - [ ] [執行序簡短系列](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python執行序](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [理解Python GIL(2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [參考資源](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python並行性入門: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ ] [Python互斥鎖](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### Testing - 涵蓋: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - 單元測試如何運作 + - 什麼是模擬對象(mock object) + - 整合測試(integration testing)是什麼 + - 什麼是依賴注入(dependency injection) + - [ ] [敏捷軟體測試-James Bach(影片))](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [James Bach軟體測試的公開課程(影片))](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - 測試導向軟體開發(影片))](https://vimeo.com/83960706) + - [投影片](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] 依賴注入(Dependency injection): + - [ ] [影片](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ ] [如何寫測試](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### 排程Scheduling - 作業系統中排程如何運作? - 可以從作業系統的課程影片中學習 -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays(影片)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search(影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - - [ ] [Search pattern in text(影片)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries(3部影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case)(影片)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)(影片)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary(影片)](https://www.youtube.com/watch?v=50ZYcZebIec) +- ### 字串搜尋演算法以及操作 + - [ ] [Sedgewick-後綴陣列(Suffix Arrays)(影片)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick-子字串搜尋(影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1.子字串搜尋導論](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2.子字串搜尋-暴力法](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3.KMP演算法](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4.Boyer-Moore字串搜尋演算法](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5.Rabin-Karp演算法](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [在文字中尋找模式(影片)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + 如果你想知道更多有關這個主題的知識,可以去看[某些主題的額外知識](#某些主題的額外知識)中的"String Matching" + +- ### 字典樹(Tries) + - 請注意字典樹有許多種類。有些有前綴,有些沒有,而有些在追蹤路徑時使用字串而非位元。 + - 我有看過這些程式碼,但沒有實作 + - [ ] [Sedgewick-字典樹(3部影片)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1.R Way字典樹](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2.三元搜尋樹](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3.字元操作](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Note:資料結構以及coding技巧](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] 簡短的課程影片: + - [ ] [字典樹簡介(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [字典樹效能(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [實作字典樹(影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [字典樹:一個被忽視的資料結構](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder-使用字典樹](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford線上課程(實際使用範例))(影片)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT進階資料結構-字串(影片中間有點困難)(影片)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### 浮點數 + - [ ] 8位元: [浮點數表示 - 1 (影片 - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32位元: [IEEE754 32位元浮點數(影片)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + - [ ] [每個軟體工程師一定要知道的Unicode以及字元集]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [每個工程師一定要知道的編碼以及字元集-如何與文字搭配](http://kunststube.net/encoding/) -- ### Endianness - - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian(影片)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out(影片)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. +- ### 端序(Endianness) + - [ ] [大/小端序](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [大端序 Vs 小端序(影片)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [由裡入內的大端序與小端序(影片)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - 對於核心開發非常具有技術性。如果大多數的內容聽不懂也沒關係。 + - 前半部就已經足夠了 - ### 網路 - **以下為如果你有網路相關經驗,或是想成為一個可靠的工程師需要知道的知識** @@ -1066,47 +1064,47 @@ ## 系統設計、可擴充性、資料處理 -**You can expect system design questions if you have 4+ years of experience.** - -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +**如果你已經擁有了4年以上的程式經驗,那你可以來看看有關系統設計的問題** + +- 可擴充性與系統設計的範圍非常廣大,裡面還包含了許多主題,因為在設計一個具有擴充性的軟體/硬體時有許多事情需要考量。你可以花點時間看看這些。 + +- 考量: + - 可擴充性 + - 將大量資料抽取出而成一個值 + - 將一個資料轉換成另一個 + - 處理大量的資料 + - 系統設計 + - 功能集 + - 介面 + - class階層 + - 在某些限制下設計一個系統 + - 簡單與強健的系統 + - 權衡得失 + - 效能評估與最佳化 + +- [ ] **從這裡開始**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF(影片)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - 這個裡面包含許多資源。把裡面的文章與例子都看過一遍,裡面有些我把他特別放在下面。 - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters(影片)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Consensus Algorithms: +- [ ] 共識演算法(Consensus Algorithms): - [ ] Paxos - [Paxos Agreement - Computerphile(影片)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm(影片)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. +- [ ] 可擴充性: + - 不用把這些全讀過,挑幾個你有興趣的即可。 - [ ] [Great overview(影片)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: + - [ ] 簡單系列: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) @@ -1115,14 +1113,14 @@ - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (影片)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (影片)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (影片)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (影片)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(影片)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [影片](https://www.youtube.com/watch?v=G-lGCC4KKok) - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) @@ -1153,35 +1151,35 @@ - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] 看看下方的"通訊、序列化以及佇列系統",裡面有一些你可以參考的東西。 - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (影片)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [影片系列]](#video-series) section. -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions - - Exercises: + - 更多請看看下面[影片系列](#影片系列)中的"Mining Massive Datasets" +- [ ] 練習系統設計的過程:以下是在紙上練習的一些方法,每個都有他們如何運用在現實中的說明文件: + - 複習: [系統設計入門](https://github.com/donnemartin/system-design-primer) + - [HiredInTech系統設計](http://www.hiredintech.com/system-design/) + - [提示](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - 流程: + 1. 了解問題與其範圍: + - 在面試官的幫助下定義使用情況 + - 提供些額外功能的建議 + - 移除面試官認為是超出範圍的東西 + - 默認高可用度是必須的,並增加一些使用情況 + 2. 設想限制: + - 想想看每個月會有多少請求 + - 想想看每秒會有多少請求(他們可能自願或者讓你自己計算) + - 評估讀寫比率 + - 評估時請保持80/20法則 + - 每秒有多少資料被寫入? + - 5年內總共需要的儲存空間 + - 每秒有多少資料被讀取? + 3. 抽象設計: + - 層(服務、資料、快取) + - 基礎:讀取平衡、通訊 + - 初步概覽驅動整個服務的關鍵演算法 + - 考慮會遇到的瓶頸以及解決方案 + - 練習: - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) @@ -1245,17 +1243,16 @@ ## 解題練習/挑戰 -Once you've learned your brains out, put those brains to work. -試試每天解一些題目,越多越好! +學了一些東西之後,可以開始試試每天解一些題目,越多越好! - [如何找到解法](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/) +- [如何剖析好的coder的問題解析](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) Coding面試題目影片: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) +- [IDeserve (88部影片)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5個播放清單)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - 對於解法的練習非常有幫助 -- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) +- [Nick White - LeetCode Solutions (187部影片)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - 這些是我最近很喜歡的影片,你可以在短時間內看完他們 - 對於解法以及程式碼有很棒的解釋 @@ -1334,76 +1331,74 @@ Coding面試題目影片: 你可以從以下的書單挑選你有興趣的主題來研讀 - [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - an oldie but a goodie + - 老,但卻很棒 - [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option + - 現代選擇 - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns + - 設計模式的入門簡介 - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book + - 也被稱為"四人幫"("Gang of Four(GOF)") + - 經典設計模式書籍 - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + - 作為複習以及問題辨別 + - 這本書中演算法的部分難度已經超過面試會出現的 + - 本書分為兩個部分: + - 資料結構及演算法課本 + - 優點: + - 跟其他演算法課本一樣是個很棒的複習素材 + - 內含關於作者以往解決工業及學術上問題的經驗的故事 + - 含C語言程式碼範例 + - 缺點: + - 某些地方跟"Introduction to Algorithms"一樣艱深,但在某些主題,"Introduction to Algorithms"或許是更好的選擇。 + - 第7、8、9章有點難以消化,因為某些地方並沒有解釋得很清楚,或者根本上我就是個學渣 + - 別會錯意了,我很喜歡Skiena的教學方法以及他的風格。 + - 演算法目錄: + - 這個部分是買這本書的最大誘因 + - 我即將著手進行這部分,一旦完成這部分我會再更新上來 + - 可以在kindle上租 + - 解答: + - [解答](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [解答](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [勘誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization + - 這本書出版於2004年,某些程度上他有點過時了,但對於初步理解電腦是個很棒的資源 + - 作者發明了[高階組合語言HLA](https://zh.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80),所以提到,並且舉了一些HLA的例子。裡面沒有用到很多,但都是很棒的組合語言的例子。 + - 這些章節很值得一讀,讓你具備極佳的基礎: + - 第2章 - 數值表示法 + - 第3章 - 二進位運算和位元運算 + - 第4章 - 浮點數表示法 + - 第5章 - 字元表示法 + - 第6章 - 記憶體組織和存取 + - 第7章 - 複合資料型別和記憶體 + - 第9章 - CPU架構 + - 第10章 - 指令集架構 + - 第11章 - 記憶體架構與組織 - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - aka CLR, sometimes CLRS, because Stein was late to the game + - **重要:** 讀這本書CP值不高。這本書作為複習演算法和資料結構還算滿不錯的,但它裡面沒有教你怎麼實作這些東西。你必須要能夠自己寫出很棒、有效率的解法。 + - 也被稱為CLR,或是CLRS,因為Stein是後來才加入作者群的。 - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - - For a richer, more up-to-date (2017), but longer treatment + - 更豐富、更新(2017年),但篇幅較長。 - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture. + - 前幾章提供了一些解決coding問題的精妙絕倫的方法(有些很舊,甚至還用磁帶),但那些只是導論。這是本程式設計和架構的指南。 -## Additional Learning +## 額外學習 - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. + 我把他們加了進來為了讓你成為更全方位的軟體工程師,並且留意一些科技以及演算法,讓你的資料庫中有更多素材。 -- ### Compilers - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) +- ### 編譯器 + - [How a Compiler Works in ~1 minute (影片)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (影片)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (影片)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (影片)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor + - 讓你自己熟悉unix的文字編輯器 - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With vim 01 - Installation, Setup, and The Modes (影片)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - set of 4 videos: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) @@ -1412,17 +1407,16 @@ Coding面試題目影片: - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [基礎Emacs教學 (影片)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 三組影片: + - [Emacs教學(初學者) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs教學(初學者) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs教學(初學者) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (影片)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [(maybe) Org Mode In Depth: Managing Structure (影片)](https://www.youtube.com/watch?v=nsGYet02bEk) -- ### Unix command line tools - - I filled in the list below from good tools. +- ### Unix命令列(command line)工具 - bash - cat - grep @@ -1432,40 +1426,40 @@ Coding面試題目影片: - sort - tr - uniq - - [strace](https://en.wikipedia.org/wiki/Strace) + - [strace](https://zh.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### 資訊理論 (影片) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - more about Markov processes: + - 更多有關馬可夫鏈: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - 進一步的可以去看看下方的MIT 6.050J Information和Entropy系列 -- ### Parity & Hamming Code (videos) - - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) +- ### 同位位元 & 漢明碼 (影片) + - [簡介](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [同位位元](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - 漢明碼: + - [錯誤偵測](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [錯誤修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [錯誤檢查](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - also see videos below - - make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - 同樣看看下方的影片 + - 務必先看過資訊理論的影片 + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (影片)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography - - also see videos below - - make sure to watch information theory videos first +- ### 密碼學 + - 同樣看看下方的影片 + - 務必先看過資訊理論的影片 - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression - - make sure to watch information theory videos first - - Computerphile (videos): +- ### 壓縮 + - 務必先看過資訊理論的影片 + - 電腦愛好者 (影片): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) @@ -1473,10 +1467,10 @@ Coding面試題目影片: - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - [(額外) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- ### 電腦安全 + - [MIT (23部影片)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) @@ -1490,24 +1484,24 @@ Coding面試題目影片: - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) +- ### 垃圾回收(GC) + - [GC in Python (影片)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (影片)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ### Parallel Programming +- ### 平行計算 - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (影片)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### Messaging, Serialization, and Queueing Systems +- ### 通訊、序列化以及佇列系統(Messaging, Serialization, and Queueing Systems) - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [教學](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [教學](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 for Java Developers (影片)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) + - [教學](http://try.redis.io/) - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [RabbitMQ](https://www.rabbitmq.com/) @@ -1521,197 +1515,181 @@ Coding面試題目影片: - [MessagePack](http://msgpack.org/index.html) - [Avro](https://avro.apache.org/) -- ### A* - - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### Fast Fourier Transform - - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) +- ### A*搜尋演算法 + - [A搜尋演算法](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* 路徑找尋教學 (影片)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* 路徑找尋 (E01: 演算法解釋) (影片)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### 快速傅立葉轉換 + - [傅立葉轉換互動式教學](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [什麼是傅立葉轉換? 他是用來幹嘛的?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [快速傅立葉轉換是什麼? (影片)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [分治法: 快速傅立葉轉換 (影片)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [理解快速傅立葉轉換](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### 布隆過濾器(Bloom filter) + - 給定布隆過濾器m個位元以及k個雜湊函式,插入以及membership testing都是O(k) + - [布隆過濾器 (影片))](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [布隆過濾器 | Mining of Massive Datasets | Stanford University (影片)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [教學](http://billmill.org/bloomfilter-tutorial/) + - [如何寫一個布隆過濾器的APP](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [如何只用僅僅1.5KB的記憶體計算數十億個不同的物體](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - 用來判定文件的相似度 + - 跟MD5/SHA正好相反,他們是用來判定兩個文件/字串是否完全相同 - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (影片)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT課程筆記](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) - ### Augmented Data Structures - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) -- ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) +- ### 平衡樹 + - 至少要了解一種平衡樹(並且理解怎麼實作他): + - "在平衡樹中,AVL和2/3樹已經有點過時了,而紅黑樹則比較流行。伸展樹(Splay tree)是一個特別有趣,能夠自我伸展的資料結構,他利用了旋轉rotation來移動任何accessed key到樹的根部。" - Skiena + - 在這麼多平衡樹之中,我選擇實作伸縮樹。從我曾聽過的看來,在面試時你並不需要會實作平衡搜尋樹。我看過了很多紅黑樹的程式碼。 + - 伸縮樹:插入、搜尋、刪除函式 + 如果你最後選擇實作紅黑樹,試試看以下這些: + - 搜尋和插入函式,跳過刪除 + - 我想學習更多有關B-Tree的東西,因為在大量資料的時候他運用得十分廣泛 + - [自我平衡二元搜尋樹](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL樹** + - 實際上: + 從我所知,這些樹在實際上並沒有用到太多,但這些是他們可能會出現的地方: + AVL樹是另一個能夠在O(log n)的時間內搜尋、插入和刪除的資料結構。AVL樹比起紅黑樹更加嚴格的兩邊平衡,而這也導致了比較慢的插入和刪除,但比較快速的拿取。這對於那些只要建立一次,之後就只要取用的資料結構非常有吸引力,像是字典(或是程式字典,像是直譯器或組譯器的opcodes) + - [MIT AVL Trees / AVL Sort (影片)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (影片)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - **Red/black trees** - - these are a translation of a 2-3 tree (see below) - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - **伸縮樹Splay tree** + - 實際上: + 伸縮樹運用在快取、記憶體分配、路由、垃圾回收、資料壓縮、ropes(在長字串時取代string)、Windows NT(在虛擬記憶體、網路以及檔案系統)等等。 + - [CS 61B: Splay Trees (影片)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: 伸縮樹: + - 非常數學,但務必看看最後10分鐘 + - [影片](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **紅黑樹** + - 這些是2-3樹的解釋(請看下方) + - 實際上: + 紅黑樹插入、刪除以及搜尋的時間複雜度在最糟情況下仍有一定程度的保證表現。 + 這不只讓他們在時間要求極高的應用(像是即時應用)有著很高的價值,在建構其他資料結構中也有著極高的價值。 + 舉例來說,許多在計算幾何中的資料結構都是由紅黑樹所構成的,而在Linux中用到的Completely Fair Scheduler也用到了紅黑樹。 + 在Java8中,Collection HashMap也從原本用Linked List實作,儲存特定元素的hashcode,改為用紅黑樹實作。 + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (影片)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (影片)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - **2-3搜尋樹** + - 實際上: + 2-3樹在犧牲了搜尋速度下換來了相對快速的插入速度(因為高度比起AVL樹來的高) + - 2-3樹極少被用到,因為實作他需要用到不同的節點。因此,紅黑樹的出現機率較高。 + - [23-Tree Intuition and Definition (影片)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [2-3 Trees (student recitation) (影片)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4樹 (aka 2-4樹)** + - 實際上: + 每個2-4樹都有相對應,有著相同資料順序的紅黑樹。2-4樹的插入以及刪除跟紅黑樹中的color-flipping以及rotation是相同的。這讓2-4樹成為了了解紅黑樹背後的 + 邏輯的重要工具,而這也是為什麼很多演算法入門課本都會在介紹紅黑樹前介紹2-4樹,即使**2-4樹在實際上並不常用到**。 + - [CS 61B Lecture 26: Balanced Search Trees (影片)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (影片)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (影片)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary + - 重點: N或K指的是branching factor(最大的分支數) + - 二元樹屬於2-ary tree,branching factor為2 + - 2-3樹屬於3-ary - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. + - **B樹** + - 有趣的小知識: B代表什麼是個謎題,或許代表Boeing、Balanced,或Bayer(co-inventor) + - 實際上: + B樹廣泛的運用在資料庫中。多數現代資料系統使用B樹(或是其變異體)。除了在資料庫方面的應用,B樹也用在資料系統中,使得我們能夠 + 隨機存取特定檔案中的任意部分。最基礎的問題是把file block的i address轉變為disk block(或是轉變為cylinder head sector)的address。 - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [Introduction to B-Trees (影片)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (影片)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (影片)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (影片)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - 涵蓋了cache-oblivious B樹,非常有趣的資料結構 + - 前37分鐘非常技術性,可以跳過(B代表block大小、cache line大小) -- ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) +- ### k-D樹 + - 是找矩形中或是更高維度物體中的點的數量的好方法 + - 對於k-nearest neighbors很有幫助 + - [Kd Trees (影片)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (影片)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - "這些資料結構某種程度上有些邪門" - Skiena + - [Randomization: Skip Lists (影片)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (影片)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (影片)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (影片)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (影片)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6部影片)](https://www.coursera.org/learn/algorithms-part1/home/week/1) -- ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) +- ### 快速處理(Fast Processing)的數學 + - [Integer Arithmetic, Karatsuba Multiplication (影片)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (影片)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - - Combination of a binary search tree and a heap + - 二元搜尋樹以及heap的結合 - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Data Structures: Treaps explained (影片)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### 線性程式設計Linear Programming (影片) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) +- ### 幾何、Convex hull (影片) - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math +- ### 離散數學 - 觀看下方影片 -- ### Machine Learning - - Why ML? +- ### 機器學習 + - 為什麼要學機器學習? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Large-Scale Deep Learning for Intelligent Computer Systems (影片)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Google's Cloud Machine learning tools (影片)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (影片)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (影片)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: + - [Practical Guide to implementing Neural Networks in Python (使用Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - 課程: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - [只有影片](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: + - [Metis Online Course ($99/2個月)](http://www.thisismetis.com/explore-data-science) + - 資源: + - 書籍: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) @@ -1720,10 +1698,9 @@ Coding面試題目影片: --- -## Additional Detail on Some Subjects +## 某些主題的額外知識 - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. + 我為了強化某些已經在上面呈現的內容,所以才增加這些東西。但因為上面已經有太多內容了,所以不想把這些放在上面。 You want to get hired in this century, right? - **SOLID** @@ -1734,10 +1711,10 @@ Coding面試題目影片: - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients不該被強迫去實作他們不會用到的介面 + - [Interface Segregation Principle in 5 minutes (影片)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | 減少對物件的composition的依賴 - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) @@ -1750,7 +1727,7 @@ Coding面試題目影片: - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- **More Dynamic Programming** (videos) +- **More Dynamic Programming** (影片) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -1759,11 +1736,11 @@ Coding面試題目影片: - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Advanced Graph Processing** (影片) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Probability** (過於數學,進度緩慢,但這對於數學的東西卻是必要之惡) (影片): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1776,7 +1753,7 @@ Coding面試題目影片: - [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **String Matching** - - Rabin-Karp (videos): + - Rabin-Karp (影片): - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) @@ -1786,89 +1763,89 @@ Coding面試題目影片: - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (影片)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped + - 開始的時候很不錯,但過了KMP的部分後就變得過於困難 + - 很好的解釋了tries(字典樹) + - 可以跳過 -- **Sorting** +- **排序** - - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Stanford的排序課程: + - [Lecture 15 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (影片)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [Algorithms - Sorting - Lecture 2 (影片)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (影片)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena的排序課程: + - [lecture begins at 26:46 (影片)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (影片)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (影片)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (影片)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## 影片系列 -Sit back and enjoy. "Netflix and skill" :P +坐下來享受一下"Netflix和技巧" :P -- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [List of individual Dynamic Programming problems (每部都很短)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11部影片)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35部影片)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) -- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [Discrete Mathematics by Shai Simonson (19部影片)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [Discrete Mathematics Part 1 by Sarada Herke (5部影片)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Analysis of Algorithms (25部影片) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25部影片)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39部影片)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26部影片)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21部影片)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20部影片)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [MIT 6.004: Computation Structures (49部影片)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39部影片)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47部影片)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22部影片)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30部影片)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25部影片)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34部影片)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19部影片)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22部影片)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24部影片)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25部影片)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27部影片)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94部影片)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67部影片)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## 電腦科學課程 @@ -1879,7 +1856,7 @@ Sit back and enjoy. "Netflix and skill" :P - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) + - [Go語言實作](https://godoc.org/github.com/thomas11/csp) - [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - replaced by Colossus in 2012 - [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) @@ -1893,13 +1870,13 @@ Sit back and enjoy. "Netflix and skill" :P - [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available + - 論文暫不提供 - 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [論文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [影片](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) + - [論文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [影片](https://www.usenix.org/node/170855) - [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) diff --git a/tw_translation_progress_log.md b/tw_translation_progress_log.md index 82d286bf70..7ab3b57183 100644 --- a/tw_translation_progress_log.md +++ b/tw_translation_progress_log.md @@ -7,15 +7,18 @@ | 日期 | 事件 | 其他 | |---|---|---| | 2020/04/09 |建立tw_translation_progress_log.md | | - +| 2020/04/14 |完成 程序與執行緒(Processes&Threads) 翻譯 | | +Testing +String searching & manipulations +Tries # To be done... ## 雜湊表 ## Heap/Priority Queue/Binary Heap ## 更多知識: - 程序與執行緒(Processes&Threads) - Testing - String searching & manipulations - Tries + + + + Floating Point Numbers Unicode Endianness From 3efab1f54c3ee40561b27fed633a35506621209b Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 4 Jul 2020 17:27:26 -0700 Subject: [PATCH 138/857] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 9caecbdbfb..a309f1621b 100644 --- a/README.md +++ b/README.md @@ -730,8 +730,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] sift_down - needed for extract_max - [ ] remove(i) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap ## Sorting From 13af862d09831af348830985a274d7e7f5b412a1 Mon Sep 17 00:00:00 2001 From: fadifrancis Date: Tue, 7 Jul 2020 11:32:51 -0700 Subject: [PATCH 139/857] add interviewing.io to list of resources --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a309f1621b..8f36c2b645 100644 --- a/README.md +++ b/README.md @@ -1325,6 +1325,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. ## Once you're closer to the interview From 7ae750384c441e27062cc59f8545623d7c48b66d Mon Sep 17 00:00:00 2001 From: Renan Reis Date: Fri, 10 Jul 2020 10:51:43 +0200 Subject: [PATCH 140/857] fix cdn article --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f36c2b645..3fc7caef62 100644 --- a/README.md +++ b/README.md @@ -1215,7 +1215,7 @@ Graphs can be used to represent many problems in computer science, so this secti - rough overview of any key algorithm that drives the service - consider bottlenecks and determine solutions - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) From 03cf78e07bc90724d8deb6f7259f25731799d113 Mon Sep 17 00:00:00 2001 From: flyotlin Date: Sun, 12 Jul 2020 12:34:33 +0800 Subject: [PATCH 141/857] fix the link --- README.md | 1 + translations/README-tw.md | 1 + tw_translation_progress_log.md | 62 ---------------------------------- 3 files changed, 2 insertions(+), 62 deletions(-) delete mode 100644 tw_translation_progress_log.md diff --git a/README.md b/README.md index ba6d3f3303..b706da2fa0 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) +- [繁體中文](translations/README-tw.md) diff --git a/translations/README-tw.md b/translations/README-tw.md index ad7653892f..eca3b64bc3 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -18,6 +18,7 @@ - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) +- [繁體中文](translations/README-tw.md) diff --git a/tw_translation_progress_log.md b/tw_translation_progress_log.md deleted file mode 100644 index 7ab3b57183..0000000000 --- a/tw_translation_progress_log.md +++ /dev/null @@ -1,62 +0,0 @@ -# TIP (2020.04.09) -以下是這個翻譯計畫中還尚未完成的部份, -想參與這個計畫的人可以先挑選幾個部份翻譯並告知我,我會在這份log中標示那個部份已經有人負責,以避免衝突。完成翻譯後再聯絡我! -# participants -# translation log - -| 日期 | 事件 | 其他 | -|---|---|---| -| 2020/04/09 |建立tw_translation_progress_log.md | | -| 2020/04/14 |完成 程序與執行緒(Processes&Threads) 翻譯 | | -Testing -String searching & manipulations -Tries -# To be done... -## 雜湊表 -## Heap/Priority Queue/Binary Heap -## 更多知識: - - - - - Floating Point Numbers - Unicode - Endianness -## 系統設計、可擴充性、資料處理 - -## 選修書籍 - -## Additional Learning - Compilers - Emacs and vi(m) - 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 - k-D Trees - Skip lists - Network Flows - Disjoint Sets & Union Find - Math for Fast Processing - Treap - Linear Programming (videos) - Geometry, Convex hull (videos) - Machine Learning -## Additional Detail on Some Subjects -## Video Series -## 論文 - From 9e84901045e7d83929ed256a757ee52e736a0407 Mon Sep 17 00:00:00 2001 From: flyotlin Date: Sun, 12 Jul 2020 12:38:36 +0800 Subject: [PATCH 142/857] update --- README.md | 62 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index b706da2fa0..9ea0971dcc 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) - [繁體中文](translations/README-tw.md) @@ -36,7 +37,6 @@ - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) @@ -242,7 +242,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) @@ -496,11 +495,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Arrays - Implement an automatically resizing vector. - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [Arrays (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) - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Dynamic Arrays (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://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) @@ -532,14 +531,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Linked Lists - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) @@ -561,11 +560,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - No need to implement - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. @@ -604,12 +603,12 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - [ ] implement with array using linear probing - hash(k, m) - m is size of hash table @@ -629,7 +628,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -640,6 +639,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) @@ -656,8 +656,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [Series: Core Trees (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-trees-ovovP) + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - basic tree construction - traversal - manipulation algorithms @@ -731,8 +731,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] sift_down - needed for extract_max - [ ] remove(i) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap ## Sorting @@ -1085,7 +1084,7 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Networking - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) @@ -1217,7 +1216,7 @@ Graphs can be used to represent many problems in computer science, so this secti - rough overview of any key algorithm that drives the service - consider bottlenecks and determine solutions - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) @@ -1297,20 +1296,26 @@ Coding Interview Question Videos: - [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-) - - These are my new favorite. You can watch several in a short time. - Good explanations of solution and the code. + - You can watch several in a short time. +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: - [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerEarth](https://www.hackerearth.com/) + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) +- [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) @@ -1321,6 +1326,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. ## Once you're closer to the interview @@ -1970,4 +1976,4 @@ Sit back and enjoy. "Netflix and skill" :P ## LICENSE -[CC-BY-SA-4.0](./LICENSE.txt) +[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file From 8e6110f2f438b3b6bf320819feb76551251e830b Mon Sep 17 00:00:00 2001 From: Swaroop Samek Date: Sun, 2 Aug 2020 16:19:01 -0700 Subject: [PATCH 143/857] Added more steps to GIT setup to help users new to Git/GitHub --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9ea0971dcc..c54ce31d65 100644 --- a/README.md +++ b/README.md @@ -201,9 +201,14 @@ I'm using Github's special markdown flavor, including tasks lists to check progr **Create a new branch so you can check items like this, just put an x in the brackets: [x]** - Fork a branch and follow the commands below +Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button + + Clone to your local repo + +`git clone git@github.com:/coding-interview-university.git` + `git checkout -b progress` `git remote add jwasham https://github.com/jwasham/coding-interview-university` @@ -218,6 +223,8 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git rebase jwasham/master` +`git push --set-upstream origin progress` + `git push --force` [More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) @@ -1976,4 +1983,4 @@ Sit back and enjoy. "Netflix and skill" :P ## LICENSE -[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file +[CC-BY-SA-4.0](./LICENSE.txt) From c4cb4e174dec911b87db889f92801a2729802ce1 Mon Sep 17 00:00:00 2001 From: Lucas Alves Date: Mon, 10 Aug 2020 14:53:29 -0300 Subject: [PATCH 144/857] Fix some hyperlinks --- translations/README-ptbr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index c015eccef2..4110012a79 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -467,9 +467,9 @@ Por que programar em todas essas linguagens? Talvez eu não tenha tempo para fazer tudo isso para cada tema, mas eu vou tentar. Você pode ver meu código aqui: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) Você não precisa memorizar os detalhes intrínsecos de cada algoritmo. From 072176275b680d78a3c82c57a9ac10951670632b Mon Sep 17 00:00:00 2001 From: mnovaispimenta Date: Mon, 17 Aug 2020 06:55:52 +0100 Subject: [PATCH 145/857] Add code-exercises.com to challenge sites section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c54ce31d65..4dbf738306 100644 --- a/README.md +++ b/README.md @@ -1318,6 +1318,7 @@ Challenge sites: - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) Language-learning sites, with challenges: - [Codewars](http://www.codewars.com) From 6108b54c0a539cd736a549a0e71d8fde5cc7c1b2 Mon Sep 17 00:00:00 2001 From: justaaguy <69151483+justaaguy@users.noreply.github.com> Date: Fri, 21 Aug 2020 09:06:35 +0530 Subject: [PATCH 146/857] Fixed Broken link - Steven Skiena Lecture slides - Fixed Broken link to the lecture slides. - Used internet archive as the source --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c54ce31d65..1273686e01 100644 --- a/README.md +++ b/README.md @@ -484,7 +484,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) + - [slides](https://archive.org/details/lecture2_202008) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) - [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) - [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) From 7bac392e30934bd853063491ab91ab06f6fb1699 Mon Sep 17 00:00:00 2001 From: Nidhirajput1301 Date: Sun, 23 Aug 2020 00:06:17 +0530 Subject: [PATCH 147/857] Update programming-language-resources.md --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index c4d93f87fe..a50dbd878c 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -14,6 +14,7 @@ - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) - basics - pointers + - class and object - functions - references - templates From 47c3948efab38d3cc05f7a950ce68736d9357f3c Mon Sep 17 00:00:00 2001 From: Ca Chen Date: Mon, 31 Aug 2020 14:04:57 +0800 Subject: [PATCH 148/857] update README-tw --- translations/README-tw.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index eca3b64bc3..0237ac35d8 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -431,7 +431,7 @@ ## 先備知識 -- [ ] **學習C++** +- [ ] **學習C** - C語言無所不在。在你學習的過程中,幾乎任何一本書、課程,或者影片中你都能看到他的身影。 - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - 這本書還滿輕薄的,但他能讓你有初步對於C語言的認識。看著這本書並且練習,你能更快地掌握C語言。理解C語言能讓你更了解程式的運作以及內部記憶體配置。 From 5b3accaaca683432497f10a88e8b8de377445c08 Mon Sep 17 00:00:00 2001 From: rakshaa2000 Date: Mon, 31 Aug 2020 17:29:59 +0530 Subject: [PATCH 149/857] Added resources for c++ and python --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1273686e01..c835abb262 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,9 @@ I haven't read these two, but they are highly rated and written by Sedgewick. He - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - Rich and detailed collection of Data Structures and Algorithms. + - Great for first-timers. If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. @@ -357,7 +360,7 @@ OR: - I loved this book. It covered everything and more. - Pythonic code - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - +- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) ## Before you Get Started @@ -466,6 +469,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - [answers to questions](https://github.com/lekkas/c-algorithms) + - [ ] [The C Programming Language](https://www.amazon.in/Programming-Language-Kernighan-Dennis-Ritchie/dp/9332549443/ref=sr_1_1?dchild=1&qid=1598874882&refinements=p_27%3ADennis+Ritchie&s=books&sr=1-1) + - This is the original documentation, guide, tutorial and a comprehensive book to learn and master the C language. It includes exercises for practice as well. - [ ] **How computers process a program:** - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) From 33591b901de7f3386d816a0a63ae813edec55c84 Mon Sep 17 00:00:00 2001 From: rakshaa2000 Date: Mon, 31 Aug 2020 17:31:58 +0530 Subject: [PATCH 150/857] Changed resource --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index c835abb262..a3a539eb50 100644 --- a/README.md +++ b/README.md @@ -465,12 +465,10 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] **Learn C** - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - [answers to questions](https://github.com/lekkas/c-algorithms) - - [ ] [The C Programming Language](https://www.amazon.in/Programming-Language-Kernighan-Dennis-Ritchie/dp/9332549443/ref=sr_1_1?dchild=1&qid=1598874882&refinements=p_27%3ADennis+Ritchie&s=books&sr=1-1) - - This is the original documentation, guide, tutorial and a comprehensive book to learn and master the C language. It includes exercises for practice as well. - [ ] **How computers process a program:** - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) From 3b504bbbeca5ff99367ec0d1e01978e664f11bab Mon Sep 17 00:00:00 2001 From: Ramazan Sakin Date: Tue, 1 Sep 2020 14:08:11 +0300 Subject: [PATCH 151/857] Update README.md Typo fix --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a3a539eb50..53ac133a75 100644 --- a/README.md +++ b/README.md @@ -371,9 +371,9 @@ Here are some mistakes I made so you'll have a better experience. ### 1. You Won't Remember it All I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +through my notes and making flashcards, so I could review. -Read please so you won't make my mistakes: +Please, read so you won't make my mistakes: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). @@ -384,7 +384,7 @@ A course recommended to me (haven't taken it): [Learning how to Learn](https://w To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. Each card has different formatting. -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +I made a mobile-first website, so I could review on my phone and tablet, wherever I am. Make your own for free: @@ -448,7 +448,7 @@ You don't need all these. You need only [one language for the interview](#pick-o Why code in all of these? - Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) - Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +- Make use of built-in types, so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) I may not have time to do all of these for every subject, but I'll try. @@ -468,7 +468,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) + - [Answers to questions](https://github.com/lekkas/c-algorithms) - [ ] **How computers process a program:** - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) @@ -481,7 +481,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - Nothing to implement - There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. -- If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. +- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -515,7 +515,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 - [ ] size() - number of items @@ -554,7 +554,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): + - [ ] Implement (I did with tail pointer & without): - [ ] size() - returns number of data elements in list - [ ] empty() - bool returns true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) @@ -620,7 +620,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] implement with array using linear probing + - [ ] Implement with array using linear probing - hash(k, m) - m is size of hash table - add(key, value) - if key already exists, update value - exists(key) @@ -654,13 +654,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits + - [ ] Count set bits - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] swap values: + - [ ] Swap values: - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: + - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## Trees @@ -748,7 +748,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Notes: - Implement sorts & know best case/worst case, average complexity of each: - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) @@ -829,7 +829,7 @@ Graphs can be used to represent many problems in computer science, so this secti - adjacency list - adjacency map - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none. - [ ] MIT(videos): @@ -1513,7 +1513,7 @@ You're never really done. - ### Information theory (videos) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - more about Markov processes: + - More about Markov processes: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) @@ -1668,7 +1668,7 @@ You're never really done. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - **Red/black trees** - - these are a translation of a 2-3 tree (see below) + - These are a translation of a 2-3 tree (see below). - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, @@ -1707,7 +1707,7 @@ You're never really done. - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary @@ -1765,7 +1765,7 @@ You're never really done. - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - see videos below + - See videos below - ### Machine Learning - Why ML? From 6f54eeb8c94415304a7e99ff2f9e34d463330631 Mon Sep 17 00:00:00 2001 From: Alexandro <52381045+Alexandro-845@users.noreply.github.com> Date: Tue, 8 Sep 2020 23:22:06 -0300 Subject: [PATCH 152/857] Update README-ptbr.md --- translations/README-ptbr.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 4110012a79..7eeef50e99 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -73,13 +73,13 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est - [Conhecimento Prévio](#conhecimento-prévio) - [Complexidade Algorítmica / Big-O / Análise assintótica](#complexidade-algorítmica--big-o--análise-assintótica) - [Estrutura de Dados](#estrutura-de-dados) - - [Arrays](#arrays) - - [Listas Ligadas](#listas-ligadas) - - [Stack](#stack) - - [Queue (Fila)](#queue-fila) + - [Vetores (Arrays)](#arrays) + - [Listas Ligadas (Linked List)](#listas-ligadas) + - [Pilha (Stack)](#stack) + - [Fila (Queue)](#queue-fila) - [Tabela hash](#tabela-hash) - [Mais Conhecimento](#mais-conhecimento) - - [Busca binária](#busca-binária) + - [Busca binária ( Binary Search)](#busca-binária) - [Lógica binária](#lógica-binária) - [Árvores](#Árvores) - [Árvores - Anotações e Fundamentos](#Árvores---anotações-e-fundamentos) @@ -88,17 +88,17 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est - árvores de busca balanceadas (conceito geral, não detalhes) - transversais: pré-ordem, em-ordem (ordem simétrica), pós-ordem, busca em largura, busca em profundidade - [Ordenação](#ordenação) - - seleção - - inserção - - heapsort - - quicksort - - ordenação por mistura (merge sort) + - Seleção + - Inserção + - Heapsort + - Quicksort + - Merge sort - [Grafos](#grafos) - - directed - - undirected - - matriz de adjacência - - lista de adjacência - - traversals: BFS, DFS + - Diretos + - Indiretos + - Matriz de Adjacência + - Lista de Adjacência + - Traversals: BFS, DFS - [Ainda Mais Conhecimento](#ainda-mais-conhecimento) - [Recursão](#recursão) - [Programação Dinâmica](#programação-dinâmica) @@ -113,7 +113,7 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est - [Agendamento](#agendamento) - [Implementar rotinas de sistema](#implementar-rotinas-de-sistema) - [Busca de string e manipulações](#busca-de-string-e-manipulações) - - [Tries (ou Árvore de Prefixos)](#tries-ou-Árvore-de-prefixos) + - [Árvore de Prefixos (Tries)](#tries-ou-Árvore-de-prefixos) - [Números de Ponto Flutuantes ("Floating Point Numbers")](#números-de-ponto-flutuantes-floating-point-numbers) - [Unicode](#unicode) - [Extremidade (ordenação) (ou "endianness" em Inglês)](#extremidade-ordenação-ou-endianness-em-inglês) From 05839f6be5d05491ba7d088aa65522b15296868a Mon Sep 17 00:00:00 2001 From: Alexandro <52381045+Alexandro-845@users.noreply.github.com> Date: Sun, 13 Sep 2020 13:36:50 -0300 Subject: [PATCH 153/857] Update README-ptbr.md --- translations/README-ptbr.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 7eeef50e99..5e28435215 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1,12 +1,12 @@ # Universidade de Entrevista de Programação -> Originalmente eu criei isso como uma pequena lista to-do de tópicos de estudo para se tornar um engenheiro de software, -> mas isso cresceu para a grande lista que você vê hoje. Após passar por esse plano de estudo, [Eu fui contratado +> Originalmente eu criei isso como uma pequena lista to-do (a fazer) de tópicos de estudo para se tornar um engenheiro de software, +> mas isso cresceu para este imenso acervo que você consulta hoje. Após passar por todo esse plano de estudo, [Eu fui contratado > como Engenheiro de Desenvolvimento de Software na Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > Você provavelmente não vai precisar estudar tanto quanto eu. De qualquer maneira, tudo que você precisa está aqui. > > Os itens listados aqui irão preparar você muito bem para uma entrevista em praticamente qualquer empresa de software, -> incluindo as gigantes: Amazon, Facebook, Google ou Microsoft. +> incluindo as gigantes como: Amazon, Facebook, Google ou Microsoft. > > *Boa sorte para todos vocês!* @@ -42,14 +42,14 @@ Traduções em progresso: ## O que é isso? -Esse é o meu plano de estudo mensal para ir de desenvolvedor web (autodidata, sem formação em Ciência da Computação) à engenheiro de software para uma grande empresa. +Esse é o meu plano de estudo mensal para ir de desenvolvedor web (autodidata, sem formação em Ciência da Computação) à engenheiro de software em uma grande empresa. ![Programando no quadro branco - do Vale do Silício da HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) Essa longa lista foi extraída e expandida a partir das **anotações de treinamento da Google**, então essas são as coisas que você precisa saber. Eu adicionei alguns itens extras no final que podem aparecer na entrevista ou serem úteis para resolver um problema. Muitos itens são da obra “[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)” (Consiga aquele trabalho na Google) de Steve Yegge's e às vezes são expressados palavra-por-palavra nas anotações de treinamento da Google. -Isso é direcionado à **engenheiros de software novos** ou àqueles que estão migrando de desenvolvimento de software/web para engenharia de software (onde conhecimento de ciência da computação é necessário). Se você tem vários anos de experiência e está alegando muitos anos de experiência com engenharia de software, pode esperar por uma entrevista mais difícil. +Isso é direcionado à **novos engenheiros de software**, ou àqueles que estão migrando de desenvolvimento de software/web para engenharia de software, onde conhecimento sobre ciência da computação é necessário. Se você tem vários anos de experiência e está alegando muitos anos de experiência com engenharia de software, pode esperar por uma entrevista mais difícil. Se você tem vários anos de experiência com desenvolvimento de software/web, observe que grandes empresas como Google, Amazon, Facebook e Microsoft consideram engenharia de software como algo distinto de desenvolvimento de software/web e elas requerem conhecimento de ciência da computação. @@ -77,7 +77,7 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est - [Listas Ligadas (Linked List)](#listas-ligadas) - [Pilha (Stack)](#stack) - [Fila (Queue)](#queue-fila) - - [Tabela hash](#tabela-hash) + - [Tabela hash (Hash Table)](#tabela-hash) - [Mais Conhecimento](#mais-conhecimento) - [Busca binária ( Binary Search)](#busca-binária) - [Lógica binária](#lógica-binária) @@ -178,13 +178,13 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est ## Por que usar? Quando eu comecei esse projeto, eu não sabia diferenciar memória dinâmica de memória estática, não sabia notação Big-O, árvores, ou como percorrer um grafo. Se eu tivesse que escrever um algoritmo de ordenação, eu posso te dizer que ele não seria muito bom. -Todas as estruturas de dados que eu já usei eram construídas dentro da linguagem, e eu não sabia como elas funcionavam por debaixo dos panos. Eu nunca tive que gerenciar memória a não ser que um processo que eu estava rodando desse um erro de "memória insuficiente", nesse caso eu teria que dar um jeito. Eu já usei alguns arrays multidimensionais na minha vida e milhares de arrays associativos, mas eu nunca criei estruturas de dados do zero. +Todas as estruturas de dados que eu já usei eram construídas dentro da linguagem, e eu não sabia como elas funcionavam por debaixo dos panos. Eu nunca tive que gerenciar memória a não ser que um processo que eu estava rodando desse um erro de "memória insuficiente", nesse caso eu teria que dar um jeito. Eu já usei alguns vetores multidimensionais na minha vida e milhares de vetores associativos, mas eu nunca criei estruturas de dados do zero. É um longo plano. Você vai levar meses. Se você já é familiarizado com muitas dessas coisas, você vai precisar de muito menos tempo. ## Como usar -Tudo abaixo é um esboço, e você deve abordar os itens em ordem de cima para baixo. +**Tudo abaixo é um esboço**, e você deve abordar os itens em ordem de cima para baixo. Eu estou usando a sintaxe de markdown especial do Github, incluindo listas de tarefas para verificar o progresso. @@ -393,9 +393,9 @@ OU: ## Antes de começar -Essa lista cresceu por longos meses, e sim, ela meio que saiu do controle. +Essa lista cresceu por longos meses, e sim, ela meio que saiu do controle! -Aqui estão alguns erros que eu cometi para que você tenha uma experiência melhor. +**Aqui estão alguns erros que eu cometi para que você tenha uma experiência melhor**. ### 1. Você não se lembrará de tudo From 02f9dbb14ee060b6bc8b960c243070c82b393c12 Mon Sep 17 00:00:00 2001 From: emmanuelepp Date: Wed, 16 Sep 2020 11:44:10 -0400 Subject: [PATCH 154/857] Update README-es.md Grammar error corrected. --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index f3c244d05a..4acc4ef90a 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -415,7 +415,7 @@ Tenga en cuenta que empecé desde abajo y hay tarjetas que cubren todo, desde el Una alternativa a usar mi sitio de tarjetas es [Anki](http://ankisrs.net/), que me ha sido recomendado muchas veces. Usa un sistema de repetición para ayudarle a recordar. Es amigable con el usuario y disponible para todas las plataformas y tiene un sistema de sincronización en la nube. Cuesta $25 en iOS pero es gratuito en las otras plataformas. -Mis tarjetas en ek formato de Anki: https://ankiweb.net/shared/info/25173560 (Gracias[@xiewenya](https://github.com/xiewenya)) +Mis tarjetas en el formato de Anki: https://ankiweb.net/shared/info/25173560 (Gracias[@xiewenya](https://github.com/xiewenya)) ### 3. Revise, revise, revise From 6f8c666f1979a995caf4f1f30e33bfd344477ff9 Mon Sep 17 00:00:00 2001 From: Se-Ok Jeon <33389418+JadeTheZapper@users.noreply.github.com> Date: Tue, 22 Sep 2020 15:27:04 +0900 Subject: [PATCH 155/857] Update README-ko.md --- translations/README-ko.md | 921 +++++++++++++++++--------------------- 1 file changed, 407 insertions(+), 514 deletions(-) diff --git a/translations/README-ko.md b/translations/README-ko.md index 42c8854334..e194ae8d49 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -5,6 +5,8 @@ > [나는 아마존에 소프트웨어 엔지니어로 채용됐다](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > 당신은 아마 내가 한 것처럼 많이 공부할 필요는 없을 것이다. 어쨌든 당신이 필요로 하는 모든 것은 여기에 있다. > +> 몇 달 동안 하루에 8-12 시간 정도 공부했습니다. 이것이 제 이야기입니다. [Google 인터뷰를 위해 8 개월 동안 풀 타임으로 공부 한 이유](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> > 여기에 나열된 목록들은 아마존, 페이스북, 구글, 마이크로소프트 같은 거대 기업을 포함한 거의 모든 소프트웨어 회사의 인터뷰를 준비하는데에 도움이 될것이다. > > @@ -14,32 +16,34 @@
번역: +- [중국어](translations/README-cn.md) - [베트남어](translations/README-vi.md) -- [브라질 포르투갈어](translations/README-ptbr.md) - [스페인어](translations/README-es.md) -- [중국어](translations/README-cn.md) +- [브라질 포르투갈어](translations/README-ptbr.md) +- [폴란드어](translations/README-pl.md) +- [타이완어](translations/README-tw.md)
진행 중인 번역: -- [그리스어](https://github.com/jwasham/coding-interview-university/issues/166) -- [러시아어](https://github.com/jwasham/coding-interview-university/issues/87) -- [말라얄람어](https://github.com/jwasham/coding-interview-university/issues/239) +- [힌디어](https://github.com/jwasham/coding-interview-university/issues/81) +- [히브리어](https://github.com/jwasham/coding-interview-university/issues/82) - [바하사 인도네시아어](https://github.com/jwasham/coding-interview-university/issues/101) - [아랍어](https://github.com/jwasham/coding-interview-university/issues/98) -- [우르두어](https://github.com/jwasham/coding-interview-university/issues/140) -- [우크라이나어](https://github.com/jwasham/coding-interview-university/issues/106) -- [이탈리아어](https://github.com/jwasham/coding-interview-university/issues/170) -- [일본어](https://github.com/jwasham/coding-interview-university/issues/257) -- [태국어](https://github.com/jwasham/coding-interview-university/issues/156) - [터키어](https://github.com/jwasham/coding-interview-university/issues/90) -- [텔루구어](https://github.com/jwasham/coding-interview-university/issues/117) -- [폴란드어](https://github.com/jwasham/coding-interview-university/issues/122) - [프랑스어](https://github.com/jwasham/coding-interview-university/issues/89) +- [러시아어](https://github.com/jwasham/coding-interview-university/issues/87) +- [우크라이나어](https://github.com/jwasham/coding-interview-university/issues/106) - [한국어](https://github.com/jwasham/coding-interview-university/issues/118) -- [히브리어](https://github.com/jwasham/coding-interview-university/issues/82) -- [힌디어](https://github.com/jwasham/coding-interview-university/issues/81) +- [텔루구어](https://github.com/jwasham/coding-interview-university/issues/117) +- [우르두어](https://github.com/jwasham/coding-interview-university/issues/140) +- [태국어](https://github.com/jwasham/coding-interview-university/issues/156) +- [그리스어](https://github.com/jwasham/coding-interview-university/issues/166) +- [이탈리아어](https://github.com/jwasham/coding-interview-university/issues/170) +- [말라얄람어](https://github.com/jwasham/coding-interview-university/issues/239) +- [일본어](https://github.com/jwasham/coding-interview-university/issues/257) +
## 코딩 인터뷰 대학이란? @@ -107,7 +111,6 @@ - [NP와 NP-완전, 그리고 근사 알고리즘](#np-np-complete-and-approximation-algorithms) - [캐시](#caches) - [프로세스와 쓰레드](#processes-and-threads) - - [논문](#papers) - [테스트](#테스트) - [스케줄링](#scheduling) - [시스템 루틴의 구현](#implement-system-routines) @@ -116,7 +119,7 @@ - [부동 소수점](#floating-point-numbers) - [유니코드](#unicode) - [엔디언(Endianness)](#endianness) -- [네트워크](#networking) + - [네트워크](#networking) - [시스템 디자인, 확장성, 데이터 핸들링](#시스템-디자인-확장성-데이터-핸들링) (4년 이상 경력자를 위한 주제) - [최종 검토](#최종-검토) - [코딩 문제 연습](#코딩-문제-연습) @@ -132,9 +135,6 @@ - [추가 도서](#additional-books) - [추가 주제](#additional-learning) - [컴파일러](#compilers) - - [부동 소수점 수](#floating-point-numbers) - - [유니코드](#unicode) - - [엔디언](#endianness) - [Emacs 와 vi(m)](#emacs-and-vim) - [유닉스 명령어 도구](#unix-command-line-tools) - [정보 이론](#information-theory-videos) @@ -142,7 +142,6 @@ - [엔트로피](#entropy) - [암호기법](#cryptography) - [압축](#compression) - - [네트워크](#networking) (만약 당신이 네트워크에 대한 경험이 있거나 시스템 엔지이너가 되고 싶다면 받을 수 있는 질문들) - [컴퓨터 보안](#computer-security) - [가비지 콜렉션](#garbage-collection) - [병렬 프로그래밍](#parallel-programming) @@ -154,8 +153,6 @@ - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [van Emde Boas 트리](#van-emde-boas-trees) - [Augmented Data Structures](#augmented-data-structures) - - [트라이(Tries)](#tries) - - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - [균형 탐색 트리](#balanced-search-trees) - AVL 트리 - Splay 트리 @@ -177,7 +174,7 @@ - [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항) - [영상 자료](#video-series) - [컴퓨터 과학 강의들](#컴퓨터-과학-강의들) -- [라이센스](#라이센스) +- [논문들](#논문들) --- @@ -194,8 +191,7 @@ ## 어떻게 사용하면 되나요? -
-How to use it? + 아래의 모든 것은 대략적인 개요이며 당신은 위에서 아래 순서대로 진행해야 한다. @@ -205,6 +201,12 @@ 브랜치를 포크하고 아래의 명령을 따라라 +포크 버튼을 눌러 Github https://github.com/jwasham/coding-interview-university 레포지토리를 포크하라. + + 로컬 레포지토리에 클론하라. + +`git clone git@github.com:/coding-interview-university.git` + `git checkout -b progress` `git remote add jwasham https://github.com/jwasham/coding-interview-university` @@ -219,48 +221,47 @@ `git rebase jwasham/master ` -`git push --force ` +`git push --set-upstream origin progress` -[Github식 마크다운에 대하여](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +`git push --force` -
+[Github식 마크다운에 대하여](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ## 당신은 충분히 똑똑합니다 - 성공한 소프트웨어 엔지니어들은 똑똑합니다. 하지만 그들 조차도 자신들의 지적 능력면에 대해서 불안감을 갖기 일쑤입니다. - [천재 프로그래머에 대한 미신(迷信)](https://www.youtube.com/watch?v=0SARbwvhupQ) - [위험한 홀로서기: 테크 산업의 보이지 않는 괴물들의 전쟁](https://www.youtube.com/watch?v=1i8ylq4j_EY) -- [Believe you can change](http://www.aaronsw.com/weblog/dweck) ## 영상 자료에 관하여 -몇몇 영상들은 Cousera, Edx, Lynda.com 클래스에 등록하여야만 시청이 가능합니다. 이것들은 MOOCs라고 불리는데요. -강의가 없는 경우에는 몇 달 동안 기다려야 할 수도 있습니다. Lynda.com 강좌들은 무료가 아닙니다. +몇몇 영상들은 Cousera, Edx에 등록을 해야만 접근할 수 있습니다. 이것들은 MOOCs라고 불리는데요. +강의가 없는 경우에는 몇 달 동안 기다려야 할 수도 있습니다. 여러분이 YouTube 온라인 강의 동영상과 같이 무료이고 항상 접근 가능한 동영상 소스들을 추가해주면 정말 감사하겠습니다. 저는 대학 강의 듣는 것을 좋아합니다. ## 인터뷰 과정 & 전반적인 인터뷰 준비 과정 -
-인터뷰 과정 & 전반적인 인터뷰 준비 과정 - - [ ] [ABC: 항상 코딩 하라](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [화이트 보드 쓰기](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [코딩 인터뷰에서 화이트 보드 효율적으로 쓰기](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Big 4에 취업하는 방법: + - [ ] ['Big 4에 취업하는 방법 - Amazon, Facebook, Google & Microsoft' (영상)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] 코딩 인터뷰 정복 Set 1: - [ ] [Gayle L McDowell - 코딩 인터뷰 정복 (영상)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [저자와 함께하는 코딩 인터뷰 정복 (영상)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Big 4에 취업하는 방법: - - [ ] ['Big 4에 취업하는 방법 - Amazon, Facebook, Google & Microsoft' (영상)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - +- [ ] 페이스북 코딩 인터뷰 정복 + - [ ] [접근법](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [문제 풀이](https://www.youtube.com/watch?v=4UWDyJq8jZg) - [ ] 준비 코스: - [ ] [소프트웨어 엔지니어 인터뷰 대공개 (유료 강좌)](https://www.udemy.com/software-engineer-interview-unleashed): - 전직 구글 면접관이 당신이 어떻게 소프트웨어 엔지니어 인터뷰를 준비해야 하는지 알려줍니다. - [ ] [자료 구조, 알고리즘 그리고 면접을 위한 파이썬! (유료 강좌)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - 자료 구조와 알고리즘, 모의 면접 등을 다루는 파이썬 중점 면접의 준비 강좌입니다. - -
+ - [ ] [Intro to Data Structures and Algorithms using Python (Udacity 무료 강좌))](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - 파이썬 중심적 자료구조와 알고리즘 강좌. + - [ ] [자료구조와 알고리즘 나노학위! (Udacity 유료 나노학위)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 100개 이상의 자료구조, 알고리즘 실습과 당신의 인터뷰, 취업을 도울 섬세한 멘토의 가이드 ## 인터뷰를 위한 언어 고르기 @@ -275,9 +276,11 @@ - JavaScript - Ruby +코딩 인터뷰를 위한 언어를 선택하는 것과 관련하여 제가 쓴 글입니다: [코딩 인터뷰를 위한 언어 선택하기](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + 당신은 당신의 언어에 매우 익숙하고 그 언어에 대해 잘 알아야 합니다. -언어 선택을 도움이 될 만한 읽을 거리들 +언어 선택에 도움이 될 만한 읽을 거리들 - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ @@ -298,47 +301,16 @@ - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - JAVA 문제의 답변을 위해서 -
-만일 당신이 많은 여유 시간이 있다면: +### 만일 당신이 많은 여유 시간이 있다면: + +하나를 선택: - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - 모든 코드가 C++로 되어있다, 만일 당신의 인터뷰에서 C++를 사용하길 고려한다면 정말 좋은 책이다. - - 일반적인 문제들을 해결하기 위해 좋은 책이다. +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) - [ ] Elements of Programming Interviews (Java version) - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -
- -### 컴퓨터 구조 - -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - 이 책은 2004년에 출판된 다소 구식의 책이지만, 간략히 컴퓨터를 이해하는 데에 훌륭한 자료입니다. - - 이 책의 저자는 HLA를 발명했습니다. 그래서 회의적인 시선으로 HLA에 대해 언급하고 예로 듭니다. 널리 읽히지는 않지만, 어셈블리가 어떻게 생겼는 지를 보여주는 좋은 예입니다. - - 이 장들은 당신에게 탄탄한 기초를 세워줄 것입니다: -
- ...... - - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -
- -
-만약에 시간적 여유가 좀 더 있다면 아래 서적을 읽어보는 것을 권유합니다. - -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment - -
- ### 특정 언어 관련 **인터뷰를 위해 당신의 언어를 선택하여야 합니다 (윗글 참조)** 아래는 제가 추천하는 언어들입니다. 이 언어들중에 부연설명이나 부가 자료들이 있다면 나눠 주세요. @@ -351,23 +323,18 @@ ### C++ -
-C++ - 나는 아래의 두 책들을 읽지 않았습니다. 하지만 Sedgewick이 높게 평가한 책들입니다. 그는 정말 대단한 사람입니다. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - 자세하고 많은 자료구조와 알고리즘. + - 처음 시도 하는 사람에게 좋은 선택. C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적인 자료를 찾고 있습니다. -
- ### Java -
-Java - - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - videos with book content (and Sedgewick!) on coursera: - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) @@ -380,63 +347,14 @@ C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적 - UC버클리 대학의 CS입문 과정의 선택 텍스트로 사용됨 - 아래에서 Python 버전에 대한 나의 책 보고서를 참조하십시오. 이 책은 동일한 주제를 다루고 있습니다. -
- ### Python -
-Python - - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - by Goodrich, Tamassia, Goldwasser - 나는 이 책을 사랑한다. 이 책은 모든 것을 다룬다. - Pythonic code - 나의 열렬한 서적 보고서: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - -
- -### 선택 도서 - -**어떤 사람들은 이 책들을 추천한다. 하지만 만약 당신이 소프트웨어 엔지니어링 분야에 오랜 경험이 있고, 그로 인해 훨씬 더 어려운 인터뷰를 볼 것이라 생각하지 않는다면, 나는 이 책들을 공부하는 것이 너무 과하다고 생각한다:** - -
-Optional Books - -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - 알고리즘 카탈로그 부분은 면접에서 다루는 난이도의 범주를 훨씬 넘깁니다. - - 이 책은 2개의 파트가 있습니다: - - class textbook on data structures and algorithms - - 장점: - - is a good review as any algorithms textbook would be - - 산학과 연구에서 문제들을 해결한 그의 경험을 이야기하는 것이 좋음 - - 예제 코드가 C언어 - - 단점: - - CLRS처럼 너무 함축되어 있어서 헤아리기 힘들 수 있다. 그래서 어떤 주제는 CLRS를 읽는 게 더 나을 수도 있다. - - 7, 8, 9장은 따라가기 힘들 수 있다. 어떤 항목들은 설명이 잘 안되어있거나 더 많은 배경 지식이 필요하기 때문이다. - - (오해하지 마세요) 전 Skiena씨와 그 분의 교육 스타일과 매너리즘은 좋아합니다만, 스토니브룩 대학의 자료는 그렇지 않더군요. - - 알고리즘 카탈로그: - - 이게 이 책을 사는 진짜 이유 - - about to get to this part. Will update here once I've made my way through it. - - 아마존 킨들에서 도서 대여 가능 - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **중요:** 이 책을 읽으면 특별한 가치를 얻을 수 있습니다. 이 책은 알고리즘과 자료구조를 훌륭하게 살피고 있지만, 좋은 코드를 작성하는 법을 알려주지는 않습니다. 괜찮은 솔루션을 코드로 효율적으로 옮겨적을 줄 알아야합니다. - - CLR 또는 CLRS로 알려져있습니다. (역: 저자들 이름의 첫글자를 따서 CLRS라고 불리지만, 초판에는 Stein이 없었습니다.) - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - 처음 두 장은 (데이터 테이프를 사용한 아주 오래된) 문제를 프로그래밍하는 기발한 솔루션을 보여줍니다. 하지만, - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. - -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - 좋은 책. 하지만 몇 페이지 넘기면서 문제를 해결한 후에 파스칼, do while 반복문, 1-indexed 배열, unclear post-condition satisfaction results를 보고 좌절했다. - - 다른 책이나 온라인 코딩 문제에 있는 코딩 문제를 보는 게 나을 것 같다. - -
+- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) ## 시작하기 전에 @@ -452,6 +370,8 @@ C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적 [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) +내가 추천받은 강좌 (아직 수업을 들어보지는 않았다): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) + ### 2. Flashcard를 사용하자. 이 문제를 해결하기 위해 나는 2가지 종류(일반적인 내용, 코드)의 flashcard를 보관하고 추가할 수 있는 작은 사이트를 만들었다. @@ -476,13 +396,20 @@ C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적 Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) -### 3. 검토, 검토, 검토 +### 3. 자료구조와 알고리즘을 배우면서 코딩 인터뷰를 시작하라 + +문제를 풀기 위해 배웠던 무언가를 적용하는 것이 필요합니다., 그렇지 않으면 까먹을 겁니다. 내가 이 실수를 했습니다. 한 주제를 익혔다면 , + 링크드 리스트와 같이 그 주제에 좀 익숙해졌다면, 코딩 인터뷰 책 한권을 펴서 링크드 리스트와 관련된 문제를 몇개 풀어보십시오. 그리고 나서 다시 돌아가 다른 링크드리스트 문제를 해결하던, 회귀 문제나 다른 것을 하십시오. 하지만 배우면서 문제를 계속해서 푸십시오. 당신은 지식 자체의 소유가 아니라 그 지식을 적용할 수 있기에 고용되는 것입니다. +다음은 제가 추천하는 책과 사이트들입니다.. +좀 더 알아보고 싶다면: [Coding Question Practice](#coding-question-practice) + +### 4. 검토, 검토, 검토 나는 ASCII, OSI 구조, Big-O 표기법 등에 관한 일련의 치트시트를 만들어 놓고, 여유 시간이 날 때마다 공부한다. 30분 동안 프로그래밍 문제를 해결하고, flashcard를 살펴보자. -### 4. 집중 +### 5. 집중 주의를 산만하게 만드는 많은 것이 있으며, 이것들은 우리의 귀중한 시간을 뺏어간다. 주의를 집중하는 것은 힘든 일이다. @@ -517,9 +444,9 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info 모든 주제에 대한 모든 것을 할 수 없지만 나는 노력했다. 나의 코드를 여기서 확인하세요: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) 당신은 모든 알고리즘에 대해서 기억할 필요는 없다. @@ -527,9 +454,6 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info ## 먼저 알아야 할 지식 -
-Prerequisite Knowledge - - [ ] **C언어 배우기** - C 는 어디에나 있다. 당신은 책이나 강의, 비디오 등 공부하는 동안 모든 곳에서 예제를 볼 것이다. - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) @@ -543,14 +467,11 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] [중앙처리장치(CPU) (영상)](https://youtu.be/FZGugFqdr60) - [ ] [명렁어와 프로그램 (영상)](https://youtu.be/zltgXvg6r3k) -
- ## 알고리즘 복잡도 / Big-O / 점근적 분석 -
-Algorithmic complexity / Big-O / Asymptotic analysis - - 구현할 것은 없다. +- 여기에는 다양한 영상들이 있다. 이해할 때까지 충분히 보고 언제든지 다시 돌아와서 복습할 수 있다. +- 일부 강의가 너무 수학적이라면, 아래로 가서 이산 수학에 대한 동영상을 보며 배경 지식을 쌓아보세요. - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -569,16 +490,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - - 일부 강의가 너무 수학적이라면, 아래로 가서 이산 수학에 대한 동영상을 보며 배경 지식을 쌓아보세요. - -
- ## 자료구조 -
-Data Structures - - ### 배열 - 자동 리사이징 벡터 구현하기 - [ ] 설명: @@ -704,13 +617,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - get(key) - remove(key) -
- ## 추가 지식 -
-More Knowledge - - ### Binary search - [ ] [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) @@ -731,28 +639,22 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] 2의 보수와 1의 보수 - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1의 보수](https://ko.wikipedia.org/wiki/1의_보수) - [2의 보수](https://ko.wikipedia.org/wiki/2의_보수) - - [ ] count set bits + - [ ] Count set bits - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](https://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: + - [ ] Swap values: - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: + - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) -
- ## 트리 -
-Trees - - ### Trees - Notes & Background - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) @@ -834,13 +736,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] heap_sort() - 정렬되지 않은 배열을 받아서 정렬된 배열로 만든다. 추가 메모리 없이 제자리에서 max-heap을 사용한다. - 노트: min-heap을 사용하면 연산을 줄일 수 있지만, 공간이 두 배로 필요합니다. (제자리에서 못 하기 때문에) -
- ## 정렬 -
-Sorting - - [ ] Notes: - 정렬들 구현 & 각 정렬의 최적의 경우/최악의 경우, 평균적인 복잡도를 알기: - 버블 소트 쓰지 마세요 - 끔찍하니까요 - n이 16이하 제외하고 O(n^2) @@ -914,20 +811,16 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info 개략적으로 보자면, 여기에 시각적으로 나타낸 [15가지 정렬 알고리즘들](https://www.youtube.com/watch?v=kPRA0W1kECg)을 보세요. 이 주제에 대해서 더 자세히 알고 싶다면, [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항)에서 "정렬" 섹션를 보세요. -
- ## 그래프 -
-Graphs - 그래프는 컴퓨터 과학의 여러 문제들을 표현하는 데 사용할 수 있다. 때문에 이 섹션은 트리나 정렬 섹션처럼 길다. - 노트: - - 메모리에 그래프를 표시하는 세 가지 기본 방법이 있다: + - 메모리에 그래프를 표시하는 네 가지 기본 방법이 있다: - 오브젝트와 포인터 - 행렬 - 인접 리스트 + - 인접 맵 - 각각의 표현과 장단점을 숙지하라. - 넓이 우선 탐색(BFS)와 깊이 우선 탐색(DFS) - 계산상의 복잡성, 장단점, 실제 코드로 구현하는 방법을 알아야 한다. - 질문을 받을 시 먼저 그래프 기반 솔루션을 찾고, 없을 경우에 다른 솔루션으로 넘어가라. @@ -980,13 +873,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그래프 실습을 할 수 있습니다. -
- ## Even More Knowledge -
-더 많은 지식 - - ### Recursion - [ ] 재귀와 백트래킹에 대한 스탠포드 대학 강의: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) @@ -1000,6 +888,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - ### Dynamic Programming + - 인터뷰에서 DP 문제를 접하지 않을 수도 있습니다. 하지만 알고 있는게 미뤄두는 것 보다 낫습니다. - 이 주제는 아주 어렵습니다. DP로 풀리는 각 문제마다 어떤 점화식을 정의해야 하는데 그게 까다롭습니다. - 얽혀있는 패턴들을 확실히 이해할 때까지, 많은 DP 예시 문제들을 찾아보기를 권합니다. - [ ] Videos: @@ -1026,24 +915,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - ### Object-Oriented Programming - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] 객체 지향 소프트웨어 공학: UML과 JAVA를 사용한 소프트웨어 개발 (21개의 영상): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [더 알아보기](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [더 알아보기](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [더 알아보기](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [더 알아보기](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [더 알아보기](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - ### Design patterns - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) @@ -1136,7 +1009,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - Modern concurrency constructs with multicore processors - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. @@ -1152,38 +1024,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Papers - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - - ### 테스트 - 알아 두어야 할 것: - 유닛 테스트는 어떻게 작동하는지 @@ -1194,10 +1034,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [소프트웨어 테스트에 대한 James Bach의 무료 강의 (비디오)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - Test-Driven 개발 (이것은 우리가 의미하는 것은 아니다) (비디오)](https://vimeo.com/83960706) - [참고자료](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD는 끝났다. 오래 사는 테스팅.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [TDD는 정말 끝났는가? (비디오)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [비디오 시리즈 (152 개) - 다 볼 필요 없음 (비디오)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [파이턴과 함께하는 Test-Driven 웹 개발](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] 의존성 주입: - [ ] [비디오](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) @@ -1207,10 +1043,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - 운영체제(OS)에서 어떻게 동작하는지 - 운영 체제 관련 영상들에서 알아보실 수 있습니다. -- ### Implement system routines - - 당신이 사용하는 프로그래밍 API들이 어떤 이점을 가져오는지 이해하기 - - 그리고 그것들을 구현할 수 있는가? - - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) @@ -1272,13 +1104,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) -
- ## 시스템 디자인, 확장성, 데이터 핸들링 -
-System Design, Scalability, Data Handling - - **4년 이상의 경력자라면 이런 시스템 디자인 질문들을 받을 수 있다.** - Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider when designing a software/hardware system that can scale. @@ -1308,10 +1135,11 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: @@ -1345,7 +1173,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) @@ -1354,7 +1181,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) @@ -1404,15 +1230,10 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) -
- --- ## 최종 검토 -
-Final Review - 이 섹션에는 중요한 개념들을 빠르게 검토할 수 있는 짧은 영상들이 포함되어 있다. 복습을 하고자 한다면, 이 영상들이 도움이 될 것이다. @@ -1423,15 +1244,10 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) -
- --- ## 코딩 문제 연습 -
-Coding Question Practice - 이제 당신은 위의 컴퓨터 과학 주제들을 모두 알고 있으므로, 코딩 문제에 답하는 것을 연습할 차례이다. **코딩 문제 연습은 프로그래밍 문제에 대한 답을 외우는 것이 아니다.** @@ -1450,7 +1266,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 소파에 앉아서 연습할 수 있다. 이 것은 내 "소파 화이트보드"이다. 크기 비교를 위해 사진에 펜을 추가하였다. 펜을 쓰면, 곧 지우고 싶어질 것이다. 금방 지저분해 진다. -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![my sofa whiteboard](https://camo.githubusercontent.com/880d361d19c21cf62d49846283c2742890b53905/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f6172745f626f6172645f736d5f322e6a7067) 보충: @@ -1468,13 +1284,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 [위의 도서 목록](#도서-목록)을 보세요. -
- ## 코딩 연습/도전 -
-Coding Question Practice - 공부하는 게 머리에 잘 안 들어올 때, 한번 해보세요. 가능한 한 매일 코딩 챌린지를 하는겁니다. @@ -1484,18 +1295,28 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 코딩 인터뷰 질문들 영상: - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) +- [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. +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: - [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerEarth](https://www.hackerearth.com/) + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) +- [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) @@ -1506,8 +1327,7 @@ Challenge repos: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. - -
+- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. ## 인터뷰가 얼마 남지 않았을 때 @@ -1551,6 +1371,7 @@ Challenge repos: - 지금은 어떤 일을 하고 계신가요? - What do you like about it? - 어떤 Work life를 생각하시나요? +- 워라밸은 어떤게 좋나요? ## 취직했다면 @@ -1576,8 +1397,7 @@ Challenge repos: ## Additional Books -
-Additional Books + 아래는 당신이 흥미로워하는 주제에 대해 공부할 수 있는 자료들입니다. - [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - an oldie but a goodie @@ -1590,16 +1410,55 @@ Challenge repos: - aka the "Gang Of Four" book, or GOF - the canonical design patterns book - [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - aka CLR, sometimes CLRS, because Stein was late to the game -
+- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture. ## Additional Learning -
-Additional Learning -These topics will likely not come up in an interview, but I added them to help you become a well-rounded -software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. + 두루 갖춘 소프트웨어 엔지니어가 되는데 도움이 될만한 것들을 추가했습니다. 이를 통해 더 큰 도구들을 다루실 수 있게 되실 겁니다. - ### Compilers - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) @@ -1630,116 +1489,115 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - ### Unix command line tools - I filled in the list below from good tools. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Information theory (videos) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below. - ### Parity & Hamming Code (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - also see videos below - make sure to watch information theory videos first - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - also see videos below - make sure to watch information theory videos first - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - make sure to watch information theory videos first - - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) + - [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) + - [gRPC](http://www.grpc.io/) - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) + - [Celery](http://www.celeryproject.org/) - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) + - [ZeroMQ](http://zeromq.org/) - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) - ### A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) @@ -1757,11 +1615,11 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) - ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - Know at least one type of balanced binary tree (and know how it's implemented): @@ -1775,31 +1633,31 @@ software engineer, and to be aware of certain technologies and algorithms, so yo If you end up implementing red/black tree try just these: - search and insertion functions, skipping delete - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - [ ] **AVL trees** + - **AVL trees** - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - [ ] **Splay trees** + - **Splay trees** - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, networking and file system code) etc. - - [ ] [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - [ ] MIT Lecture: Splay Trees: + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - [ ] **Red/black trees** + - **Red/black trees** - these are a translation of a 2-3 tree (see below) - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. @@ -1809,47 +1667,47 @@ software engineer, and to be aware of certain technologies and algorithms, so yo the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - [ ] **2-3 search trees** + - **2-3 search trees** - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] **2-3-4 Trees (aka 2-4 trees)** + - **2-3-4 Trees (aka 2-4 trees)** - In practice: For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - [ ] **N-ary (K-ary, M-ary) trees** + - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) - binary trees are a 2-ary tree, with branching factor = 2 - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - [ ] **B-Trees** + - **B-Trees** - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block i address into a disk block (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) @@ -1857,57 +1715,57 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - ### k-D Trees - great for finding number of points in a rectangle or higher dimension object - a good fit for k-nearest neighbors - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Linear Programming (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - 아래에 있는 영상을 확인하세요. - ### Machine Learning - - [ ] Why ML? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Courses: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) @@ -1925,163 +1783,198 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - Data School: http://www.dataschool.io/ -
- --- ## 몇몇 주제에 대한 세부사항 -
-Additional Detail on Some Subjects - I added these to reinforce some ideas already presented above, but didn't want to include them above because it's just too much. It's easy to overdo it on a subject. You want to get hired in this century, right? -- [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -- [ ] **문자열 매칭 - - [ ] 라빈-카프(Rabin-Karp) (동영상): +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **문자열 매칭 + - 라빈-카프(Rabin-Karp) (동영상): - [라빈 카프 알고리즘](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [최적화: 구현과 분석](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP): + - Knuth-Morris-Pratt (KMP): - [The Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] 보이어-무어(Boyer–Moore) 문자열 검색 알고리즘 + - 보이어-무어(Boyer–Moore) 문자열 검색 알고리즘 - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - 트라이(tries)에 대해서 잘 설명하고 있다. - 이건 생략 가능 -- [ ] **정렬** +- **정렬** - - [ ] 스탠포드 대학의 정렬 강의들: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) - -
+ - 스탠포드 대학의 정렬 강의들: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## Video Series 편하게 보세요. "Netflix and skill"이라니까요 :P -
-비디오 시리즈 - -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- [ ] CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Analysis of Algorithms (25 videos) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) - -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -
+- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## 컴퓨터 과학 강의들 -
-Computer Science Courses - - [컴퓨터 과학 온라인 강의들](https://github.com/open-source-society/computer-science) - [(많은 온라인 강의가 있는) 컴퓨터 과학 강의들](https://github.com/prakhar1989/awesome-courses) -
+## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Papers +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) ## 라이센스 From 9078ff16af18cff805b7b9f769675d7e7d80da96 Mon Sep 17 00:00:00 2001 From: ajinkyal121 Date: Thu, 24 Sep 2020 01:28:50 +0530 Subject: [PATCH 156/857] Create python coding essentials file --- ...ing Interview Python Language Essentials.pdf | Bin 0 -> 81135 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/cheat sheets/Coding Interview Python Language Essentials.pdf diff --git a/extras/cheat sheets/Coding Interview Python Language Essentials.pdf b/extras/cheat sheets/Coding Interview Python Language Essentials.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c8988b8519ba704d13fb5be5ce38589ef6eaa0e7 GIT binary patch literal 81135 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�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 Date: Thu, 24 Sep 2020 22:56:02 +0530 Subject: [PATCH 157/857] Added link in Language Resources --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index a50dbd878c..1639c7eb24 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -41,6 +41,7 @@ - [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs) - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) + - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - [Software Construction In Java (video)](https://www.edx.org/course/software-construction-java-mitx-6-005-1x) From 3cc2c103111ef3c8f9d37c249af64abf7982252f Mon Sep 17 00:00:00 2001 From: Mohamed Yamani Date: Mon, 28 Sep 2020 10:58:34 +0100 Subject: [PATCH 158/857] Improving the consistency of capitalization and punctuation --- README.md | 240 +++++++++++++++++++++++++++--------------------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 5c72de2973..52934749f1 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Cracking the Facebook Coding Interview +- [ ] Cracking the Facebook Coding Interview: - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) - [ ] Prep Course: @@ -281,7 +281,7 @@ You could also use these, but read around first. There may be caveats: - JavaScript - Ruby -Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). You need to be very comfortable in the language and be knowledgeable. @@ -334,8 +334,8 @@ I haven't read these two, but they are highly rated and written by Sedgewick. He - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) - - Rich and detailed collection of Data Structures and Algorithms. - - Great for first-timers. + - Rich and detailed collection of Data Structures and Algorithms + - Great for first-timers If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. @@ -351,13 +351,13 @@ OR: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - by Goodrich, Tamassia, Goldwasser - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. + - see my book report on the Python version below. This book covers the same topics ### Python - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. + - I loved this book. It covered everything and more - Pythonic code - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) @@ -377,7 +377,7 @@ Please, read so you won't make my mistakes: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). -A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) +A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn). ### 2. Use Flashcards @@ -401,16 +401,16 @@ your brain. An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -### 3. Start doing coding interview questions while you're learning data structures and algorithms, +### 3. 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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, but how you apply the knowledge. There are several books and sites I recommend. -See here for more: [Coding Question Practice](#coding-question-practice) +See here for more: [Coding Question Practice](#coding-question-practice). ### 4. Review, review, review @@ -436,12 +436,12 @@ These are prevalent technologies but not part of this study plan: Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. +- C - using structs and functions that take a struct * and something else as args - C++ - without using built-in types - C++ - using built-in types, like STL's std::list for a linked list - Python - using built-in types (to keep practicing Python) - and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +- You may do Java or something else, this is just my thing You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). @@ -464,10 +464,10 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Prerequisite Knowledge - [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + you'll quickly get proficient. Understanding C helps you understand how programs and memory work - [Answers to questions](https://github.com/lekkas/c-algorithms) - [ ] **How computers process a program:** @@ -480,8 +480,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Algorithmic complexity / Big-O / Asymptotic analysis - Nothing to implement -- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. -- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. +- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review +- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -503,7 +503,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Data Structures - ### Arrays - - Implement an automatically resizing vector. + - Implement an automatically resizing vector - [ ] Description: - [Arrays (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) @@ -545,7 +545,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. + - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) @@ -576,7 +576,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] Will not implement. Implementing with array is trivial - ### Queue - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) @@ -757,7 +757,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. +- For heapsort, see Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) @@ -799,7 +799,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. + - For heapsort, see Heap data structure above - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) @@ -830,7 +830,7 @@ Graphs can be used to represent many problems in computer science, so this secti - adjacency map - Familiarize yourself with each representation and its pros & cons - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. + - When asked a question, look for a graph-based solution first, then move on if none - [ ] MIT(videos): - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) @@ -886,15 +886,15 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? + - When it is appropriate to use it? + - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) @@ -998,16 +998,16 @@ Graphs can be used to represent many problems in computer science, so this secti - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Covers: - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) @@ -1016,7 +1016,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - - How context switching is initiated by the operating system and underlying hardware + - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] concurrency in Python (videos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) @@ -1043,8 +1043,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos + - In an OS, how it works? + - Can be gleaned from Operating System videos - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) @@ -1056,12 +1056,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. + to track the path + - I read through code, but will not implement - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1093,7 +1093,7 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Networking - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - otherwise, this is just good to know + - Otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) @@ -1114,13 +1114,13 @@ Graphs can be used to represent many problems in computer science, so this secti - Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. + Expect to spend quite a bit of time on this - Considerations: - - scalability + - Scalability - Distill large data sets to single values - Transform one data set to another - Handling obscenely large amounts of data - - system design + - System design - features sets - interfaces - class hierarchies @@ -1134,7 +1134,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) @@ -1148,7 +1148,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. + - You don't need all of these. Just pick a few that interest you - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1201,30 +1201,30 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions - Exercises: - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) @@ -1258,12 +1258,12 @@ Now that you know all the computer science topics above, it's time to practice a **Coding question practice is not about memorizing answers to programming problems.** Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for your solutions -- testing your solutions +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for 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: @@ -1304,15 +1304,15 @@ Take coding challenges every day, as many as you can. Coding Interview Question Videos: - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - - Super for walkthroughs of problem solutions. + - Super for walkthroughs of problem solutions - [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. + - Good explanations of solution and the code + - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: - [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 - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) @@ -1334,9 +1334,9 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. @@ -1360,7 +1360,7 @@ Have a story, not just data, about something you accomplished. - What's a tough problem you've solved? - Biggest challenges faced? - Best/worst designs seen? -- Ideas for improving an existing product. +- Ideas for improving an existing product - How do you work best, as an individual and as part of a team? - Which of your skills or experiences would be assets in the role and why? - What did you most enjoy at [job x / project y]? @@ -1411,40 +1411,40 @@ You're never really done. These are here so you can dive into a topic you find interesting. - [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - an oldie but a goodie + - An oldie but a goodie - [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option + - A modern option - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns + - A gentle introduction to design patterns - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book + - About to get to this part. Will update here once I've made my way through it - Can rent it on kindle - Answers: - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like - These chapters are worth the read to give you a nice foundation: - Chapter 2 - Numeric Representation - Chapter 3 - Binary Arithmetic and Bit Operations @@ -1456,15 +1456,15 @@ You're never really done. - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - aka CLR, sometimes CLRS, because Stein was late to the game + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture. + that is just an intro. This a guidebook on program design and architecture ## Additional Learning @@ -1518,7 +1518,7 @@ You're never really done. - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - See more in MIT 6.050J Information and Entropy series below - ### Parity & Hamming Code (videos) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) @@ -1529,19 +1529,19 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - also see videos below - - make sure to watch information theory videos first + - Also see videos below + - Make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - also see videos below - - make sure to watch information theory videos first + - Also see videos below + - Make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - make sure to watch information theory videos first + - Make sure to watch information theory videos first - Computerphile (videos): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) @@ -1621,8 +1621,8 @@ You're never really done. - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees @@ -1639,11 +1639,11 @@ You're never really done. to move any accessed key to the root." - Skiena - Of these, I chose to implement a splay tree. From what I've read, you won't implement a balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - **AVL trees** @@ -1652,7 +1652,7 @@ You're never really done. The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) @@ -1662,7 +1662,7 @@ You're never really done. - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. + networking and file system code) etc - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. @@ -1677,7 +1677,7 @@ You're never really done. for example, many data structures used in computational geometry can be based on red–black trees, and the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. + hashcodes, a Red-Black tree is used - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) @@ -1708,12 +1708,12 @@ You're never really done. - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. + (or perhaps to a cylinder-head-sector) address - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1725,8 +1725,8 @@ You're never really done. - ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) From 915eaa66b353c44cc9a51e33712362b488733378 Mon Sep 17 00:00:00 2001 From: Tanay Toshniwal Date: Thu, 1 Oct 2020 14:06:56 +0530 Subject: [PATCH 159/857] new course links for html, css and js --- programming-language-resources.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index a50dbd878c..ddcef6583a 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -59,12 +59,15 @@ - HTML - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) + - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) - CSS - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) + - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) - Javascript - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) + - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - Other Language 1 - Other Language 2 - etc From b7af267eb103a1e1aea5d09410fadddc90f96deb Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Yadav <45727674+coderaky@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:48:52 +0530 Subject: [PATCH 160/857] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5c72de2973..dc81c704f2 100644 --- a/README.md +++ b/README.md @@ -267,6 +267,8 @@ Sometimes the classes are not in session so you have to wait a couple of months, - A free Python centric data structures and algorithms course. - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. ## Pick One Language for the Interview From 7f04cba33e769be51e94f1b72d138528a626d75f Mon Sep 17 00:00:00 2001 From: Himanshu Airan <62210670+Himanshu-77@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:27:28 +0530 Subject: [PATCH 161/857] Update README-hi.md gramatical corrections --- translations/README-hi.md | 54 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 31da9798d7..a0b94fbe3a 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -127,7 +127,7 @@ memory" का एरर न दे, और तब मुझे कोई वै ## कभी भी आप चालाक नहीं हो ऐसा ना सोचो -- सफल सॉफ्टवेयर इंजीनियर चालाक होते हें, पर बहुत लोगो असुरक्षा होती है की वो चालाक नहीं हैं ! +- सफल सॉफ्टवेयर इंजीनियर चालाक होते हें, पर बहुत लोगो को असुरक्षा होती है किी वो चालाक नहीं हैं ! - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) ## विडियो संसाधनों के बारे में @@ -138,7 +138,7 @@ memory" का एरर न दे, और तब मुझे कोई वै I'd appreciate your help converting the MOOC video links to public sources to replace the online course विडियो over time. I like using university lectures. -## इंटरव्यू प्रकिया और साधारण इंटरव्यू तयारी +## इंटरव्यू प्रकिया और साधारण इंटरव्यू तैयारी [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) @@ -151,7 +151,7 @@ memory" का एरर न दे, और तब मुझे कोई वै ## इंटरव्यू के लिए एक संगणक भाषा चुने -इंटरव्यू मैं आप कोई भी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: +इंटरव्यू में आप कोई भी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: - C++ - Java @@ -171,7 +171,7 @@ memory" का एरर न दे, और तब मुझे कोई वै [भाषा संसाधनोंको यहाँ देखें](programming-language-resources.md) -क्युकी में मैं पढ़ रहा हूँ, आपको कुछ C, C++, और Python शामिल दिखेगा. वहाँ कुछ शामिल किताबें, नीचे आखिर में देख ले. +क्योकि में मैं पढ़ रहा हूँ, आपको कुछ C, C++, और Python शामिल दिखेगा. वहाँ कुछ शामिल किताबें, नीचे आखिर में देख ले. ## पुस्तक सूची यह मैंने जो इस्तेमाल किया था उससे छोटी सूची है यह आपको समय बचाने के लिए संक्षिप्त है @@ -337,7 +337,7 @@ memory" का एरर न दे, और तब मुझे कोई वै ## इसमे क्या समाविष्ट नहीं हे -यह बड़ी सूचि गूगल इंटरव्यू टिप्पणियों से व्यक्तिगत कार्य सूचि से बनायीं गयी थी. निचे कुछ प्रचलित टेक्नोलॉजी हैं पर उन्हें टिप्पणियो में समविस्ट नहीं किया गया हैं. +यह बड़ी सूचि गूगल इंटरव्यू टिप्पणियों से व्यक्तिगत कार्य सूचि से बनायीं गयी थी. निचे कुछ प्रचलित टेक्नोलॉजी हैं पर उन्हें टिप्पणियो में समाविस्ट नहीं किया गया हैं. - SQL - Javascript @@ -345,9 +345,9 @@ memory" का एरर न दे, और तब मुझे कोई वै ## दैनिक योजना -कुछ विषय एक दिन ले सकते हैं और कुछ ज्यादा.कुचो का सिर्फ पढाई हो सकती हैं पर अमल नहीं हो सकता. +कुछ विषय एक दिन ले सकते हैं और कुछ ज्यादा. कुछो की सिर्फ पढाई हो सकती हैं पर अमल नहीं हो सकता. -हर दिन मैं निचली सूचि से एक विषय लेता हु, उसका विडियो देखता हु, और उसका अमल निचे दिए तरह करता हूँ: +हर दिन मैं निचली सूची से एक विषय लेता हूँ, उसका विडियो देखता हूँ, और उसका अमल नीचे दिए तरह करता हूँ: - C - struct और function का उपयोग करके जो  struct * या args का  उपयोग करते हैं. - C++ - built-in types का उपयोग न करके - C++ - built-in types का उपयोग करके, जैसे STL की std::list, linked list के लिए @@ -357,7 +357,7 @@ memory" का एरर न दे, और तब मुझे कोई वै आपको इन सभी की ज़रूरत नहीं है साक्षात्कार के लिए आपको केवल एक ही भाषा की आवश्यकता है इन सब में कोड क्यों? -- अभ्यास, अभ्यास, अभ्यास, जब तक मैं इससे बीमार न हो, और यह कोई समस्या नहीं कर सकता (कुछ बहुत बढ़िया मामलों और याद रखने के लिए बहीखाता विवरण) +- अभ्यास, अभ्यास, अभ्यास, जब तक मैं इससे बीमार न हो, और यह कोई समस्या नहीं कर सकता (कुछ बहुत बढ़िया मामलों और याद रखने के लिए बही-खाता विवरण) - कच्ची बाधाओं के भीतर काम करना (कचरा संग्रहण की सहायता के बिना स्मृति को आवंटित करना / मुक्त करना (पायथन को छोड़कर)) - अंतर्निहित प्रकारों का उपयोग करें, इसलिए मुझे वास्तविक दुनिया के उपयोग के लिए निर्मित उपकरणों का उपयोग करने का अनुभव है (उत्पादन में अपनी स्वयं की लिंक्ड सूची कार्यान्वयन नहीं लिखना) @@ -370,14 +370,14 @@ memory" का एरर न दे, और तब मुझे कोई वै आपको हर एल्गोरिथम याद करने की आवश्यकता नहीं है। -एक व्हाईटबोर्ड या कागज़ पर कोड लिखें, कंप्यूटर नहीं। कुछ नमूना इनपुट के साथ टेस्ट करें फिर इसे कंप्यूटर पर जांचें +एक व्हाइटबोर्ड या कागज़ पर कोड लिखें, कंप्यूटर नहीं। कुछ नमूना इनपुट के साथ टेस्ट करें फिर इसे कंप्यूटर पर जांचें ## पूर्वाभ्यास ज्ञान - [ ] **C जानें** - सी हर जगह है आप पुस्तकों, व्याख्यान, वीडियो, हर जगह जब आप पढ़ रहे हैं, में उदाहरण देखेंगे। - [ ] [सी प्रोग्रामिंग भाषा, खंड 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - यह एक छोटी पुस्तक है, लेकिन यह आपको सी भाषा पर एक महान संभाल देगा और यदि आप इसे थोड़ा अभ्यास करते हैं तो आपको जल्दी से कुशल मिलेगा। समझना सी आपको यह समझने में मदद करता है कि प्रोग्राम और मेमोरी कैसे काम करते हैं + - यह एक छोटी पुस्तक है, लेकिन यह आपको सी भाषा पर एक महान संभाल देगा और यदि आप इसे थोड़ा अभ्यास करते हैं तो आपको जल्दी से कुशल मिलेगा। सी आपको यह समझने में मदद करता है कि प्रोग्राम और मेमोरी कैसे काम करते हैं - [सवालों के जवाब](https://github.com/lekkas/c-algorithms) - [ ] **कंप्यूटर एक प्रोग्राम की प्रक्रिया कैसे करते हैं:** @@ -1363,21 +1363,21 @@ Take coding challenges every day, as many as you can. - [ ] [Great intro (copied from System Design section): Algorithm design:](http://www.hiredintech.com/algorithm-design/) - [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -- [ ] [टॉपकोड़ेर्स के लिए गणित](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) +- [ ] [टॉपकोडर्स के लिए गणित](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [ ] [डायनामिक प्रोग्रामिंग – नौसिखिया से उन्नत](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT इंटरव्यू सामग्री](https://courses.csail.mit.edu/iap/interview/materials.php) - - [लीतकोड](https://leetcode.com/) + - [लीटकोड](https://leetcode.com/) - [टॉप कोडर](https://www.topcoder.com/) - - [प्रोजेक्ट यूलेर (math-focused)](https://projecteuler.net/index.php?section=problems) - - [कोदवार](http://www.codewars.com) + - [प्रोजेक्ट यूलर (math-focused)](https://projecteuler.net/index.php?section=problems) + - [कोडवॉर ](http://www.codewars.com) - [हैकररैंक](https://www.hackerrank.com/) - [कोदिलिटी](https://codility.com/programmers/) - [इंटरव्यूकेक](https://www.interviewcake.com/) - [इंटरव्यूबिट](https://www.interviewbit.com/invite/icjf) - - [प्र्ग्रम्मिंग लैंग्वेज में सुधार करने के लिए](http://exercism.io/languages) + - [प्रोग्रामिंग लैंग्वेज में सुधार करने के लिए](http://exercism.io/languages) ## Once you're closer to the interview @@ -1394,31 +1394,31 @@ Take coding challenges every day, as many as you can. ## इंटरव्यू की सोंच - निचे दिए गए विषयो के साथ साथ, अपने २० इंटरव्यू प्रश्न तयार रखे. हर एक प्रश्न के २-३ जवाब तयार रखे. आपने जो हासिल किया हे उसकी कहानी रखे. + निचे दिए गए विषयो के साथ साथ, अपने २० इंटरव्यू प्रश्न तैयार रखे. हर एक प्रश्न के २-३ जवाब तैयार रखे. आपने जो हासिल किया हे उसकी कहानी रखे. -- आपको ये नौकरी क्यू चाहिए? +- आपको ये नौकरी क्यूँ चाहिए? - आपने कौनसी एक कठिन समस्या हल की हैं? -- आपकी सबसे बढ़ी चुनोतिया कोनसी थी? -- आपने देखि हुए सर्वोतम और बुरी संरचनाये? +- आपकी सबसे बड़ी चुनौतियां कोनसी थी? +- आपने देखी हुई सर्वोतम और बुरी संरचनाये? - किसी मौजूदा गूगल उत्पाद में सुधार के लिए विचार. - आप अपना काम सर्वोत्तम कैसे कर सकते हो, टीम के साथ या एकेले? -- आपकी कोनसी कुशलता या अनुभव आपके भूमिका में मदतगार होंगे? +- आपकी कोनसी कुशलता या अनुभव आपके भूमिका में मददगार होंगे? - आपने [जॉब क्ष / प्रोजेक्ट य] में सबसे ज्यादा किससे आनद मिला? - आपकी सबसे बड़ी [जॉब क्ष/ प्रोजेक्ट य] की चुनोती जिसे आपको सामना करना पड़ा? - [जॉब क्ष / प्रोजेक्ट य] में से सबसे बड़ा बग? - आपने [जॉब क्ष / प्रोजेक्ट य] में क्या सिखा? - [जॉब क्ष / प्रोजेक्ट य] में आप क्या सुधार कर सकते थे/ करना चाहते थे? -## इन्तेर्विएवर के लिए प्रश्न रखे +## इंटरव्यूअर के लिए प्रश्न रखे - मेरे कुछ प्रश्न (मुजे पहिलेसेही कुछ जवाब बता हे पर मैं टीम की राय जानना चाहता हूँ): + मेरे कुछ प्रश्न (मुझे पहले से ही कुछ जवाब पता है पर मैं टीम की राय जानना चाहता हूँ): - आपकी टीम कितनी बड़ी हैं? - आपकी डेव साइकिल कैसी हैं? क्या आपको वॉटरफॉल/स्प्रिंट/एजाइल पता हैं? - क्या काम के पीछे भागना पड़ता हैं? या लचीलापन हैं? - आपकी टीम मैं निर्णय कैसे लिए जाते हैं? - हर सप्ताह आपकी कितनी बैठके होती हैं? -- क्या आपका काम का मौहोल काम करने मैं मदत करता हैं? +- क्या आपका काम का माहौल काम करने मैं मदद करता हैं? - आप किसपे काम करते हो? - आपको उसमे क्या पसंद हैं? - आपका काम जीवन कैसा हैं? @@ -1620,7 +1620,7 @@ Take coding challenges every day, as many as you can.    - [ ] पुस्तके:        - [ ] [गो प्रोग्रामिंग का परिचय (ऑनलाइन मुफ्त पढ़े)](https://www.golang-book.com/books/intro)        - [ ] [गो प्रोग्रामिंग लैंग्वेज (दोनोवन & केर्निघन)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) -    - [ ] [बूतकाम्प](https://www.golang-book.com/guides/bootcamp) +    - [ ] [बूटकैंप ](https://www.golang-book.com/guides/bootcamp) -- @@ -1710,7 +1710,7 @@ Sit back and enjoy. "netflix and skill" :P - [ ] [क्रिप्टोग्राफ़ी का परिचय](https://www.youtube.com/watch?v=2aHkqB2-46k&feature=youtu.be) - [श्रृंखला में अधिक (क्रम में नहीं)](https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg) -- [ ] [विशाल डेटासेट खनन – स्तान्फोर्ड विश्वविद्यालय(९४ विडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [ ] [विशाल डेटासेट खनन – स्टैनफोर्ड विश्वविद्यालय(९४ विडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) ## शायद @@ -1722,8 +1722,8 @@ http://www.gainlo.co/ - बड़ी कंपनी के मोक इंटर बधाई हो! -- [१० बाते काश मुज्हे गूगल के पाहिले दिन पता होती](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +- [१० बाते काश मुझे गूगल के पहले दिन पता होती](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) सिखाते रहो. -वास्तव में आपकी पढाई कभी ख़तम नहीं होती. +वास्तव में आपकी पढाई कभी ख़त्म नहीं होती. From 5dba31d044034020426ebf380f2cebc968a9ac9c Mon Sep 17 00:00:00 2001 From: Mohamed El Amine Yamani Date: Fri, 2 Oct 2020 16:32:18 +0100 Subject: [PATCH 162/857] Readded the full stops I mistakingly removed --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 52934749f1..f51a0274c6 100644 --- a/README.md +++ b/README.md @@ -503,7 +503,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Data Structures - ### Arrays - - Implement an automatically resizing vector + - Implement an automatically resizing vector. - [ ] Description: - [Arrays (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) @@ -892,9 +892,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) @@ -1148,7 +1148,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - You don't need all of these. Just pick a few that interest you + - You don't need all of these. Just pick a few that interest you. - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1708,7 +1708,7 @@ You're never really done. - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary From d4d37b5b9f6a97661328cbb2aab3124591226ce5 Mon Sep 17 00:00:00 2001 From: wangming Date: Mon, 5 Oct 2020 19:02:46 +0800 Subject: [PATCH 163/857] =?UTF-8?q?Updated=20link=20to=20"=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E7=B3=BB=E7=BB=9F=E5=92=8C=E7=B3=BB=E7=BB=9F=E7=BC=96?= =?UTF-8?q?=E7=A8=8B(video)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 48f3faf41c..d9c169367a 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -871,7 +871,7 @@ - ### 进程(Processe)和线程(Thread) - [ ] 计算机科学 162 - 操作系统 (25 个视频): - 视频 1-11 是关于进程和线程 - - [操作系统和系统编程 (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [操作系统和系统编程 (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [进程和线程的区别是什么?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - 涵盖了: - 进程、线程、协程 From 17d5d72117b9b123b4ed68dd8f61fbd434813dbe Mon Sep 17 00:00:00 2001 From: wangming Date: Wed, 7 Oct 2020 10:46:37 +0800 Subject: [PATCH 164/857] =?UTF-8?q?Updated=20link=20to=20"CPU=E6=98=AF?= =?UTF-8?q?=E5=A6=82=E4=BD=95=E6=89=A7=E8=A1=8C=E4=BB=A3=E7=A0=81=EF=BC=88?= =?UTF-8?q?=E8=A7=86=E9=A2=91=EF=BC=89"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index d9c169367a..1771d1f46c 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -307,7 +307,7 @@ ## 必备知识 - [ ] **计算机是如何处理一段程序:** - - [ ] [CPU 是如何执行代码(视频)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [CPU 是如何执行代码(视频)](https://www.youtube.com/watch?v=XM4lGflQFvA) - [ ] [机器码指令(视频)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - [ ] **编译器** From 2263be37d7b8be06949d6d5d3ac7d513f6e3ce3c Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 8 Oct 2020 18:06:07 -0700 Subject: [PATCH 165/857] Removed Core Trees --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e8039f09a3..4518097fe0 100644 --- a/README.md +++ b/README.md @@ -669,7 +669,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-trees-ovovP) - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - basic tree construction - traversal From 52db6949bdbbb15382e82783db2413d3d87be1de Mon Sep 17 00:00:00 2001 From: nnguyen <55342025+nhi-nguyen-csis@users.noreply.github.com> Date: Wed, 14 Oct 2020 23:02:37 -0700 Subject: [PATCH 166/857] adding python and java resources --- programming-language-resources.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 5a1aee9c06..957104b7a6 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -42,12 +42,14 @@ - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) + - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - [Software Construction In Java (video)](https://www.edx.org/course/software-construction-java-mitx-6-005-1x) - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) + - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) - Go - [The Go programming Language](https://golang.org/) - [The Go programming Language (book)](http://www.gopl.io/) From 042bdbfc1f212e89284a92cd6d51792cedc040d2 Mon Sep 17 00:00:00 2001 From: davidsetyanugraha Date: Sat, 24 Oct 2020 13:32:31 +1100 Subject: [PATCH 167/857] Removed core trees link to all translations --- translations/README-ar.md | 1 - translations/README-bn.md | Bin 285802 -> 285542 bytes translations/README-cn.md | 1 - translations/README-de.md | 1 - translations/README-es.md | 1 - translations/README-fr.md | 1 - translations/README-he.md | 1 - translations/README-hi.md | 1 - translations/README-id.md | 1 - translations/README-ko.md | 1 - translations/README-pl.md | 1 - translations/README-ptbr.md | 1 - translations/README-th.md | 1 - translations/README-tw.md | 1 - translations/README-uk.md | 1 - translations/README-vi.md | 1 - 16 files changed, 15 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index d5c0ffbea3..9a7fddde27 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -746,7 +746,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-bn.md b/translations/README-bn.md index 753a2cd0594e97e503e0d92645162ae7bb58c966..b1b8d07111108e8c06a3ba0ff9d054b9904f9e66 100644 GIT binary patch delta 29 icmaF0L-5%)!GTrees (Bäume) - ### Trees - Notizen und Hintergrund - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - generell Baumerstellung - Traversieren (Durchlaufen) diff --git a/translations/README-es.md b/translations/README-es.md index 4acc4ef90a..0339e281e9 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -664,7 +664,6 @@ Escriba código en un pizarrón o en papel no en la computadora. Pruebe con algu ## Árboles - ### Árboles - Notas & Antecedentes - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - Construcción básica de árboles - Recorrido diff --git a/translations/README-fr.md b/translations/README-fr.md index a53505263c..1ba9e80734 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -732,7 +732,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-he.md b/translations/README-he.md index 250fc5b71b..4254182f31 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -726,7 +726,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-hi.md b/translations/README-hi.md index a0b94fbe3a..8393a15ccc 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -577,7 +577,6 @@ memory" का एरर न दे, और तब मुझे कोई वै ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (विडियो)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-id.md b/translations/README-id.md index f12d3d640c..c04bf123a1 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -698,7 +698,6 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-ko.md b/translations/README-ko.md index e194ae8d49..f8a72b5414 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -656,7 +656,6 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info ## 트리 - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - 트리 기초 형태 만들기 - 순회 diff --git a/translations/README-pl.md b/translations/README-pl.md index 58128dfe3a..3e439e1294 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -644,7 +644,6 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr ## Drzewa - ### Drzewa - uwagi & zarys - - [ ] [Series: Core Trees (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - podstawy budowy drzewa - traversal (ścieżki) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 5e28435215..70cbfe83c4 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -679,7 +679,6 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u ## Árvores - ### Árvores - Anotações e Fundamentos - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) (Série: Fundamentos de Árvores - vídeo) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) (Série: Árvores - vídeo) - contrução básica de árvore - transversal diff --git a/translations/README-th.md b/translations/README-th.md index e33cbc6010..45e0d26cdf 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -657,7 +657,6 @@ There are a lot of distractions that can take up valuable time. Focus and concen ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-tw.md b/translations/README-tw.md index 0237ac35d8..821b363758 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -624,7 +624,6 @@ ## 樹狀結構(Tree) - ### Trees-重點與背景知識 - - [ ] [Series: Core Trees (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - 如何建立一棵樹 - 遍歷 diff --git a/translations/README-uk.md b/translations/README-uk.md index f6e8c22a84..190939d854 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -655,7 +655,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Trees - ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal diff --git a/translations/README-vi.md b/translations/README-vi.md index 8ad65bce86..0bea8598e5 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -692,7 +692,6 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy ## Cây - ### Cây - Ghi chú và kiến thức nền - - [ ] [Chuỗi bài giảng: Căn bản về cây](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - [ ] [Chuỗi bài giảng: Cây](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - Xây dựng cây cơ bản. - Duyệt cây. From fe177b39d6c64ac60986bcaaea0ecb182fbcef37 Mon Sep 17 00:00:00 2001 From: qiwihui Date: Sat, 31 Oct 2020 01:02:09 +0800 Subject: [PATCH 168/857] docs: update to latest in Chinese --- translations/README-cn.md | 2000 +++++++++++++++++++++---------------- 1 file changed, 1115 insertions(+), 885 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 1f7d8d3467..f3ccbd61a7 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1,11 +1,12 @@ -# [译] Coding Interview University 一套完整的学习手册帮助自己准备 Google 的面试 +# Coding Interview University -> * 原文地址:[Coding Interview University](https://github.com/jwasham/coding-interview-university) -* 原文作者:[John Washam](https://github.com/jwasham) -* 译文出自:[掘金翻译计划](https://github.com/xitu/gold-miner) -* 译者:[aleen42](https://github.com/aleen42),[Newton](https://github.com/Newt0n),[bobmayuze](https://github.com/bobmayuze),[Jaeger](https://github.com/laobie),[sqrthree](https://github.com/sqrthree) +原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 -[![xitu](https://camo.githubusercontent.com/c9c9db0a39b56738a62332f0791d58b1522fdf82/68747470733a2f2f7261776769742e636f6d2f616c65656e34322f6261646765732f6d61737465722f7372632f786974752e737667)](https://github.com/xitu/gold-miner) +我每天自学8~12小时,这样持续了好几个月。这是我的故事:[为什么我为了 Google 面试而自学了8个月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)。 + +在这份清单内的主题会让你拥有足够的知识去面对几乎每家软件公司的技术面试,包括科技巨头:Amazon、Facebook、Google,以及 Microsoft。 + +祝你好运! ## 这是? @@ -13,7 +14,11 @@ ![白板上编程 ———— 来自 HBO 频道的剧集,“硅谷”](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -这一长列表是从 **Google 的指导笔记** 中萃取出来并进行扩展。因此,有些事情你必须去了解一下。我在列表的底部添加了一些额外项,用于解决面试中可能会出现的问题。这些额外项大部分是来自于 Steve Yegge 的“[得到在 Google 工作的机会](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)”。而在 Google 指导笔记的逐字间,它们有时也会被反映出来。 +这份清单适用于 **新手软件工程师**,或者想从软件/网站开发转向软件工程(需要计算机科学知识)的人员。如果你有多年的经验,并且声称拥有多年的软件工程经验,并且期待一次更艰难的面试。 + +如果你具有多年的软件/网页开发经验,请注意,大型软件公司(例如 Google,Amazon,Facebook 和 Microsoft)将软件工程视为不同于软件/网页开发,并且它们需要计算机科学知识。 + +如果你想成为可靠性工程师或运维工程师,请从可选列表(网络,安全)中学习更多。 --- @@ -22,18 +27,15 @@ - [这是?](#这是) - [为何要用到它?](#为何要用到它) - [如何使用它](#如何使用它) -- [拥有一名 Googler 的心态](#拥有一名-googler-的心态) -- [我得到了工作吗?](#我得到了工作吗) -- [跟着我的脚步](#跟着我的脚步) -- [不要妄自菲薄](#不要妄自菲薄) -- [关于 Google](#关于-google) +- [不要觉得自己不够聪明](#不要觉得自己不够聪明) - [相关视频资源](#相关视频资源) - [面试过程 & 通用的面试准备](#面试过程--通用的面试准备) - [为你的面试选择一种语言](#为你的面试选择一种语言) +- [书单](#书单) - [在你开始之前](#在你开始之前) -- [你所看不到的](#你所看不到的) -- [日常计划](#日常计划) +- [没有包含的内容](#没有包含的内容) - [必备知识](#必备知识) +- [日常计划](#日常计划) - [算法复杂度 / Big-O / 渐进分析法](#算法复杂度--big-o--渐进分析法) - [数据结构](#数据结构) - [数组(Arrays)](#数组arrays) @@ -48,27 +50,41 @@ - [树 —— 笔记 & 背景](#树--笔记--背景) - [二叉查找树(Binary search trees):BSTs](#二叉查找树binary-search-treesbsts) - [堆(Heap) / 优先级队列(Priority Queue) / 二叉堆(Binary Heap)](#堆heap--优先级队列priority-queue--二叉堆binary-heap) - - [字典树(Tries)](#字典树tries) - - [平衡查找树(Balanced search trees)](#平衡查找树balanced-search-trees) - - [N 叉树(K 叉树、M 叉树)](#n-叉树k-叉树m-叉树) + - [平衡查找树(Balanced search trees)(基本概念,非细节)](#平衡查找树balanced-search-trees) + - 遍历:前序、中序、后序、BFS、DFS - [排序](#排序sorting) + - 选择排序(selection) + - 插入排序(insertion) + - 堆排序(heapsort) + - 快速排序(quicksort) + - 归并排序(merge sort) - [图(Graphs)](#图graphs) + - 有向图(directed) + - 无向图(undirected) + - 邻接矩阵(adjacency matrix) + - 邻接表(adjacency list) + - 遍历:广度优先(BFS), 深度优先(DFS) - [更多知识](#更多知识) - [递归](#递归recursion) - [动态规划](#动态规划dynamic-programming) + - [面向对象编程](#面向对象编程) + - [设计模式](#设计模式) - [组合 & 概率](#组合combinatorics-n-中选-k-个--概率probability) - [NP, NP-完全和近似算法](#np-np-完全和近似算法) - [缓存](#缓存cache) - [进程和线程](#进程processe和线程thread) - - [系统设计、可伸缩性、数据处理](#系统设计可伸缩性数据处理) - - [论文](#论文) - [测试](#测试) - [调度](#调度) - - [实现系统例程](#实现系统例程) - [字符串搜索和操作](#字符串搜索和操作) + - [字典树(Tries)](#字典树tries) + - [浮点数](#浮点数) + - [Unicode](#unicode) + - [字节顺序](#字节顺序) + - [网络](#网络) +- [系统设计、可伸缩性、数据处理](#系统设计可伸缩性数据处理)(如果你有4+年经验) - [终面](#终面) -- [书籍](#书籍) -- [编码练习和挑战](#编码练习和挑战) +- [编程问题练习](#编程问题练习) +- [编程练习和挑战](#编程练习和挑战) - [当你临近面试时](#当你临近面试时) - [你的简历](#你的简历) - [当面试来临的时候](#当面试来临的时候) @@ -77,199 +93,273 @@ ---------------- 下面的内容是可选的 ---------------- -- [附加的学习](#附加的学习) - - [Unicode](#unicode) - - [字节顺序](#字节顺序) +- [额外书籍](#额外书籍) +- [附加学习](#附加学习) + - [编译器](#编译器) - [Emacs and vi(m)](#emacs-and-vim) - [Unix 命令行工具](#unix-命令行工具) - - [信息资源 (视频)](#信息资源-视频) + - [信息论](#信息论-视频) - [奇偶校验位 & 汉明码 (视频)](#奇偶校验位--汉明码-视频) - - [系统熵值(系统复杂度)](#系统熵值系统复杂度) + - [系统熵值](#系统熵值Entropy) - [密码学](#密码学) - [压缩](#压缩) - - [网络 (视频)](#网络-视频) - [计算机安全](#计算机安全) - - [释放缓存](#释放缓存) - - [并行/并发编程](#并行并发编程) - - [设计模式](#设计模式) - - [信息传输, 序列化, 和队列化的系统](#信息传输-序列化和队列化的系统) + - [垃圾回收](#垃圾回收) + - [并行编程](#并行编程) + - [消息传递,序列化和队列化的系统](#消息传递-序列化和队列系统) + - [A*搜索算法](#A*搜索算法) - [快速傅里叶变换](#快速傅里叶变换) - [布隆过滤器](#布隆过滤器) + - [HyperLogLog](#HyperLogLog) + - [局部敏感哈希](#局部敏感哈希) - [van Emde Boas 树](#van-emde-boas-树) - [更深入的数据结构](#更深入的数据结构) + - [平衡查找树](#平衡查找树balanced-search-trees) + - AVL 树 + - 伸缩树(Splay tree) + - 红黑树 + - 2-3 查找树 + - 2-3-4 树(也称 2-4 树) + - N-ary (K-ary, M-ary)树 + - B 树 + - [k-D 树](#k-D树) - [跳表](#跳表) - [网络流](#网络流) - [不相交集 & 联合查找](#不相交集--联合查找) - - [快速处理数学](#math-for-fast-processing) + - [快速处理的数学](#快速处理的数学) - [树堆 (Treap)](#树堆-treap) - [线性规划](#线性规划linear-programming视频) - [几何:凸包(Geometry, Convex hull)](#几何凸包geometry-convex-hull视频) - [离散数学](#离散数学) - [机器学习](#机器学习machine-learning) - - [Go 语言](#go-语言) - [一些主题的额外内容](#一些主题的额外内容) - [视频系列](#视频系列) - [计算机科学课程](#计算机科学课程) +- [论文](#论文) --- ## 为何要用到它? -我一直都是遵循该计划去准备 Google 的面试。自 1997 年以来,我一直从事于 web 程序的构建、服务器的构建及创业型公司的创办。对于只有着一个经济学学位,而不是计算机科学学位(CS degree)的我来说,在职业生涯中所取得的都非常成功。然而,我想在 Google 工作,并进入大型系统中,真正地去理解计算机系统、算法效率、数据结构性能、低级别编程语言及其工作原理。可一项都不了解的我,怎么会被 Google 所应聘呢? - -当我创建该项目时,我从一个堆栈到一个堆都不了解。那时的我,完全不了解 Big-O 、树,或如何去遍历一个图。如果非要我去编写一个排序算法的话,我只能说我所写的肯定是很糟糕。一直以来,我所用的任何数据结构都是内建于编程语言当中。至于它们在背后是如何运作,对此我一概不清楚。此外,以前的我并不需要对内存进行管理,最多就只是在一个正在执行的进程抛出了“内存不足”的错误后,采取一些权变措施。而在我的编程生活中,也甚少使用到多维数组,可关联数组却成千上万。而且,从一开始到现在,我都还未曾自己实现过数据结构。 +当我开始这个项目时,我不知道堆和栈的区别,不了解时间复杂度(Big-O)、树,或如何去遍历一个图。如果非要我去编写一个排序算法的话,我只能说我所写的肯定是很糟糕。一直以来,我所用的任何数据结构都是内建于编程语言当中。至于它们在背后是如何运作,对此我一概不清楚。此外,以前的我并不需要对内存进行管理,最多就只是在一个正在执行的进程抛出了“内存不足”的错误后,才会去找解决方法。在我的编程生涯中,虽然我有用过多维数组,也用过关联数组成千上万次,但我从来没有自己实现过数据结构。 -就是这样的我,在经过该学习计划后,已然对被 Google 所雇佣充满信心。这是一个漫长的计划,以至于花费了我数月的时间。若您早已熟悉大部分的知识,那么也许能节省大量的时间。 +这是一个漫长的计划,以至于花费了我数月的时间。若你早已熟悉大部分的知识,那么也许能节省大量的时间。 ## 如何使用它 下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 -在学习过程中,我是使用 GitHub 特殊的语法特性 markdown flavor 去检查计划的进展,包括使用任务列表。 +在学习过程中,我使用 GitHub 特殊语法的 markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 -- [x] 创建一个新的分支,以使得你可以像这样去检查计划的进展。直接往方括号中填写一个字符 x 即可:[x] +**创建一个新的分支,以便你可以像这样去勾选计划的进展:直接往方括号中填写一个字符 x 即可:[x]**。 -[更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + Fork一个分支,并跟随以下的指令 -## 我得到了工作吗? +通过单击 Fork 按钮来 fork GitHub 仓库:[jwasham/coding-interview-university](https://github.com/jwasham/coding-interview-university) -我还没去应聘。 + 克隆项目到本地 -因为我离完成学习(完成该疯狂的计划列表)还需要数天的时间,并打算在下周开始用一整天的时间,以编程的方式去解决问题。当然,这将会持续数周的时间。然后,我才通过使用在二月份所得到的一个介绍资格,去正式应聘 Google(没错,是二月份时就得到的)。 +`git checkout -b progress` - 感谢 JP 的这次介绍。 +`git remote add jwasham https://github.com/jwasham/coding-interview-university` -## 跟着我的脚步 +`git fetch --all` -目前我仍在该计划的执行过程中,如果你想跟随我脚步去学习的话,可以登进我在 [GoogleyAsHeck.com](https://googleyasheck.com/) 上所写的博客。 + 在你完成了一些修改后,在框框中打 x -下面是我的联系方式: +`git add .` -- Twitter: [@googleyasheck](https://twitter.com/googleyasheck) -- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor) -- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck) -- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham) +`git commit -m "Marked x"` -![John Washam - Coding Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) +`git rebase jwasham/master` -## 不要妄自菲薄 +`git push --set-upstream origin progress` + +`git push --force` + +[更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -- Google 的工程师都是才智过人的。但是,就算是工作在 Google 的他们,仍然会因为觉得自己不够聪明而感到一种不安。 -- [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ) -## 关于 Google - -- [ ] 面向学生 —— [Google 的职业生涯:技术开发指导](https://www.google.com/about/careers/students/guide-to-technical-development.html) -- [ ] Google 检索的原理: - - [ ] [Google 检索的发展史(视频)](https://www.youtube.com/watch?v=mTBShTwCnD4) - - [ ] [Google 检索的原理 —— 故事篇](https://www.google.com/insidesearch/howsearchworks/thestory/) - - [ ] [Google 检索的原理](https://www.google.com/insidesearch/howsearchworks/) - - [ ] [Google 检索的原理 —— Matt Cutts(视频)](https://www.youtube.com/watch?v=BNHR6IQJGZs) - - [ ] [Google 是如何改善其检索算法(视频)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) -- [ ] 系列文章: - - [ ] [Google 检索是如何处理移动设备](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) - - [ ] [Google 为了寻找大众需求的秘密研究](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) - - [ ] [Google 检索将成为你的下一个大脑](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) - - [ ] [Demis Hassabis 的心灵直白](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) -- [ ] [书籍:Google 公司是如何运作的](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) -- [ ] [由 Google 通告所制作 —— 2016年10月(视频)](https://www.youtube.com/watch?v=q4y0KOeXViI) +## 不要觉得自己不够聪明 + +- 大多数成功的软件工程师都非常聪明,但他们都有一种觉得自己不够聪明的不安全感。 +- [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [不要单打独斗:面对技术中的隐形怪物](https://www.youtube.com/watch?v=1i8ylq4j_EY) ## 相关视频资源 -部分视频只能通过在 Coursera、Edx 或 Lynda.com class 上注册登录才能观看。这些视频被称为网络公开课程(MOOC)。即便是免费观看,部分课程可能会由于不在时间段内而无法获取。因此,你需要多等待几个月。 +部分视频只能通过在 Coursera 或者 Edx 课程上注册登录才能观看。这些视频被称为网络公开课程(MOOC)。有时候某些课程需要等待好几个月才能获取,这期间你无法观看这些课程的影片。 - 很感谢您能帮我把网络公开课程的视频链接转换成公开的视频源,以代替那些在线课程的视频。此外,一些大学的讲座视频也是我所青睐的。 + 很感谢你能帮我把网络公开课程的视频链接转换成公开的,可持续访问的视频源,比如 YouTube 视频,以代替那些在线课程的视频。此外,一些大学的讲座视频也是我所青睐的。 ## 面试过程 & 通用的面试准备 -- [ ] 视频: - - [ ] [如何在 Google 工作 —— 考生指导课程(视频)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Google 招聘者所分享的技术面试小窍门(视频)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [如何在 Google 工作:技术型简历的准备(视频)](https://www.youtube.com/watch?v=8npJLXkcmu8) - -- [ ] 文章: - - [ ] [三步成为 Googler](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [得到在 Google 的工作机会](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - 所有他所提及的事情都列在了下面 - - [ ] _(早已过期)_ [如何得到 Google 的一份工作,面试题,应聘过程](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - - [ ] [电话面试的问题](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - -- [ ] 附加的(虽然 Google 不建议,但我还是添加在此): - - [ ] [ABC:不要停止编程(Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [四步成为 Google 里一名没有学位的员工](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - - [ ] [共享白板(Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - - [ ] [Google 是如何看待应聘、管理和公司文化](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [程序开发面试中有效的白板(Whiteboarding)](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - - [ ] 震撼开发类面试 第一集: - - [ ] [Gayle L McDowell —— 震撼开发类面试(视频)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [震撼开发类面试 —— 作者 Gayle Laakmann McDowell(视频)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - - [ ] 如何在世界四强企业中获得一份工作: - - [ ] [“如何在世界四强企业中获得一份工作 —— Amazon、Facebook、Google 和 Microsoft”(视频)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [面试 Google 失败](http://alexbowe.com/failing-at-google-interviews/) +- [ ] [ABC:不要停止编程(Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [白板编程(Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [揭秘技术招聘](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] 如何在科技四强企业中获得一份工作: + - [ ] [“如何在科技四强企业中获得一份工作 —— Amazon、Facebook、Google 和 Microsoft”(视频)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] 解密开发类面试第一集: + - [ ] [Gayle L McDowell —— 解密开发类面试(视频)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [解密开发类面试 —— 作者 Gayle Laakmann McDowell(视频)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] 解密 Facebook 编码面试: + - [方法](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [问题演练](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] 准备课程: + - [ ] [软件工程师面试发布(收费课程)](https://www.udemy.com/software-engineer-interview-unleashed): + - 从前 Google 面试官身上学习如何准备自己,让自己能够应付软件工程师的面试。 + - [ ] [Python 数据结构,算法和面试(收费课程)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Python 面试准备课程,内容涉及数据结构,算法,模拟面试等。 + - [ ] [Python 的数据结构和算法简介(Udacity 免费课程)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - 免费的 Python 数据结构和算法课程。 + - [ ] [数据结构和算法纳米学位!(Udacity 收费纳米学位)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 获得超过100种数据结构和算法练习以及指导的动手练习,专门导师帮助你在面试和职场中做好准备。 + - [ ] [探究行为面试(Educative 免费课程)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - 很多时候,不是你的技术能力会阻碍你获得理想的工作,而是你在行为面试中的表现。 ## 为你的面试选择一种语言 -在这,我就以下话题写一篇短文 —— [重点:为在 Google 的面试选择一种语言](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) - -在大多数公司的面试当中,你可以在编程这一环节,使用一种自己用起来较为舒适的语言去完成编程。但在 Google,你只有三种固定的选择: +你可以在编程这一环节,使用一种自己用起来较为舒适的语言去完成编程,但对于大公司,你只有三种固定的选择: - C++ - Java - Python -有时你也可以使用下面两种,但需要事先查阅说明。因为,说明中会有警告: +你也可以使用下面两种编程语言,但可能会有某些限制,你需要实现查明: - JavaScript - Ruby +我之前写过一篇关于在面试时选择编程语言的文章:[为编程面试选择一种语言](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)。 + 你需要对你所选择的语言感到非常舒适且足够了解。 更多关于语言选择的阅读: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview [在此查看相关语言的资源](../programming-language-resources.md) -由于,我正在学习C、C++ 和 Python。因此,在下面你会看到部分关于它们的学习资料。相关书籍请看文章的底部。 +由于我正在学习C、C++ 和 Python,因此在下面你会看到部分关于它们的学习资料。相关书籍请看文章的底部。 + +## 书单 + +为了节省你的时间,以下是比我使用过的更缩减的书单。 + +### 面试准备 + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - 附有 C++ 和 Java 解答 + - 这是在练习 Cracking the Coding Interview 之前一个很好的热身 + - 不太困难,大多数问题可能比你在面试中看到的要容易(根据我的阅读) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - 附有 Java 答案 + +### 如果你有额外的时间: + +选择以下之一: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [书](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [配套项目──书中每个问题的方法和测试用例](https://github.com/gardncl/elements-of-programming-interviews) + +### 编程语言精选 + +**你需要选择面试语言(请参见上文)。** + +这是我按语言给出的建议。我没有所有语言的资源,欢迎贡献。 + +如果你通读其中之一,你应该具备了开始解决编程问题所需的所有数据结构和算法知识。除非你需要复习,否则**你可以跳过此项目中的所有视频讲座**。 + +[额外编程语言的精选资源](https://github.com/jwasham/coding-interview-university/blob/master/programming-language-resources.md) + +### C++ + +我没有读过这两本书,但是它们颇受好评,作者是 Sedgewick,他非常厉害。 + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - 丰富而详细的数据结构和算法集合 + - 非常适合初学者 + +如果你有更好的 C++ 书籍,请告诉我。我正在搜集全面的资源。 + +### Java + +- [ ] [算法(Sedgewick 和 Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 包含课程内容(和Sedgewick!)的视频 + - [第一部分](https://www.coursera.org/learn/algorithms-part1) + - [第二部分](https://www.coursera.org/learn/algorithms-part2) + +或者: + +- [ ] [Java 数据结构和算法](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - 作者:Goodrich、Tamassia、Goldwasser + - 用作 UC Berkeley 的 CS 入门课程的可选教材 + - 请参阅下面有关 Python 版本的我的读书报告,这本书涵盖了相同的主题 + +### Python + +- [ ] [Python数据结构和算法](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - 作者:Goodrich、Tamassia、Goldwasser + - 我非常喜爱这本书,它包含了所有东西 + - 很 Python 的代码 + - 我的读书报告:[startupnextdoor.com/book-report-data-structures-and-algorithms-in-python](https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/) +- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) ## 在你开始之前 该列表已经持续更新了很长的一段时间,所以,我们的确很容易会对其失去控制。 -这里列出了一些我所犯过的错误,希望您不要重滔覆辙。 +这里列出了一些我所犯过的错误,希望你不要重滔覆辙。 ### 1. 你不可能把所有的东西都记住 -就算我查看了数小时的视频,并记录了大量的笔记。几个月后的我,仍然会忘却其中大部分的东西。所以,我翻阅了我的笔记,并将可回顾的东西制作成抽认卡(flashcard)(请往下看) +就算我观看了数小时的视频,并记录了大量的笔记,几个月后的我,仍然会忘却其中大部分的东西。所以,我花了3天翻阅我的笔记,并制作成抽认卡(flashcard)帮助我复习: + +请阅读以下的文章以免重蹈覆辙: + +[记住计算机科学知识](https://startupnextdoor.com/retaining-computer-science-knowledge/)。 + +有人推荐给我的课程(但我还沒看过):[学习如何学习](https://www.coursera.org/learn/learning-how-to-learn)。 ### 2. 使用抽认卡 -为了解决善忘的问题,我制作了一些关于抽认卡的页面,用于添加两种抽认卡:正常的及带有代码的。每种卡都会有不同的格式设计。 +为了解决善忘的问题,我制作了一个抽认卡的网页,用于添加两种抽认卡:一般的及带有代码的。每种卡都会有不同的格式设计。 -而且,我还以移动设备为先去设计这些网页,以使得在任何地方的我,都能通过我的手机及平板去回顾知识。 +而且,我还以移动设备为先去设计这些网页,以使得在任何地方,我都能通过我的手机及平板去回顾知识。 你也可以免费制作属于你自己的抽认卡网站: - [抽认卡页面的代码仓库](https://github.com/jwasham/computer-science-flash-cards) -- [我的抽认卡数据库](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):有一点需要记住的是,我做事有点过头,以至于把卡片都覆盖到所有的东西上。从汇编语言和 Python 的细枝末节,乃至到机器学习和统计都被覆盖到卡片上。而这种做法,对于 Google 的要求来说,却是多余。 +- [我的抽认卡数据库 ── 旧 1200 张](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db) +- [我的抽认卡数据库 ── 新 1800 张](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db) + +有一点需要记住的是,我做事有点过头,以至于卡片都覆盖到所有的东西上,从汇编语言和 Python 的细枝末节,到机器学习和统计都被覆盖到卡片上。而这种做法,对于要求来说是多余的。 + +**在抽认卡上做笔记:** 若你第一次发现你知道问题的答案时,先不要急着把其标注成“已知”。反复复习这张抽认卡,直到每次都能答对后才是真正学会了这个问题。反复地问答可帮助你深刻记住该知识点。 -**在抽认卡上做笔记:** 若你第一次发现你知道问题的答案时,先不要急着把其标注成“已懂”。你需要做的,是去查看一下是否有同样的抽认卡,并在你真正懂得如何解决问题之前,多问自己几次。重复地问答可帮助您深刻记住该知识点。 +这里有个替代我抽认卡的网站 [Anki](http://ankisrs.net/),很多人向我推荐过它。这个网站用同一个字卡重复出现的方式让你牢牢地记住知识。这个网站非常容易使用,支持多平台,并且有云端同步功能。在 iOS 平台上收费25美金,其他平台免费。 -### 3. 回顾,回顾,回顾 +这是我用 Anki 这个网站里的格式所储存的抽认卡资料库: ankiweb.net/shared/info/25173560 (感谢 [@xiewenya](https://github.com/xiewenya)) -我留有一组 ASCII 码表、OSI 堆栈、Big-O 记号及更多的小抄纸,以便在空余的时候可以学习。 +### 3. 复习,复习,再复习 -每编程半个小时就要休息一下,并去回顾你的抽认卡。 +我留有一组 ASCII 码表、OSI 堆栈、Big-O 记号及更多的抽认卡,以便在空余的时候可以学习。 + +编程累了就休息半个小时,并去复习你的抽认卡。 ### 4. 专注 -在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。因此,专注和集中注意力是非常困难的。 +在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。因此,专注和集中注意力是非常困难的。放点纯音乐能帮上一些忙。 -## 你所看不到的 +## 没有包含的内容 -由于,这个巨大的列表一开始是作为我个人从 Google 面试指导笔记所形成的一个事件处理列表。因此,有一些我熟悉且普遍的技术在此都未被谈及到: +有一些熟悉且普遍的技术在此未被谈及到: - SQL - Javascript @@ -277,28 +367,31 @@ ## 日常计划 -部分问题可能会花费一天的时间去学习,而部分则会花费多天。当然,有些学习并不需要我们懂得如何实现。 +部分问题可能会花费一天的时间去学习,而有些则会花费多天。当然,有些学习并不需要我们懂得如何实现。 + +因此,每一天我都会在下面所列出的列表中选择一项,并观看相关的视频。然后,使用以下的一种语言去实现: -因此,每一天我都会在下面所列出的列表中选择一项,并查看相关的视频。然后,使用以下的一种语言去实现: +- C —— 使用结构体和函数,该函数会接受一个结构体指针 * 及其他数据作为参数。 +- C++ —— 不使用内建的数据类型。 +- C++ —— 使用内建的数据类型,如使用 STL 的 std::list 来作为链表。 +- Python —— 使用内建的数据类型(为了持续练习 Python),并编写一些测试去保证自己代码的正确性。有时,只需要使用断言函数 assert() 即可。 +- 此外,你也可以使用 Java 或其他语言。以上只是我的个人偏好而已。 - C —— 使用结构体和函数,该函数会接受一个结构体指针 * 及其他数据作为参数。 - C++ —— 不使用内建的数据类型。 - C++ —— 使用内建的数据类型,如使用 STL 的 std::list 来作为链表。 - Python —— 使用内建的数据类型(为了持续练习 Python),并编写一些测试去保证自己代码的正确性。有时,只需要使用断言函数 assert() 即可。 - 此外,你也可以使用 Java 或其他语言。以上只是我的个人偏好而已。 +你不需要学会所有的编程语言,你只需要专注在[一种编程语言](##为你的面试选择一种语言)上。 为何要在这些语言上分别实现一次? - 因为可以练习,练习,练习,直至我厌倦它,并完美地实现出来。(若有部分边缘条件没想到时,我会用书写的形式记录下来并去记忆) - 因为可以在纯原生的条件下工作(不需垃圾回收机制的帮助下,分配/释放内存(除了 Python)) - 因为可以利用上内建的数据类型,以使得我拥有在现实中使用内建工具的经验(在生产环境中,我不会去实现自己的链表) +- 练习,练习,练习,直至我厌倦它,并正确无误地实现出来。(若有部分边缘条件没想到时,我会用书写的形式记录下来并去记忆) +- 在纯原生的条件下工作(不需垃圾回收机制的帮助下,手动分配/释放内存(除了 Python)) +- 利用语言内建的数据类型,之后在实际工作的时候才能得心应手(在生产环境中,我不会去实现自己的链表) -就算我没有时间去每一项都这么做,但我也会尽我所能的。 +就算我没有时间去每一项都这么做,但我也会尽我所能。 -在这里,你可以查看到我的代码: - - [C](https://github.com/jwasham/practice-c) - - [C++](https://github.com/jwasham/practice-cpp) - - [Python](https://github.com/jwasham/practice-python) +在这里你可以查看到我的代码: + +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) 你不需要记住每一个算法的内部原理。 @@ -306,22 +399,24 @@ ## 必备知识 +- [ ] **学习C语言** + - C 语言无处不在。在学习的过程中,你会在书籍,讲座,视频等任何地方看到它的身影 + - [ ] [C程序设计语言,第二版](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - 这是一本简短的书,但是它将使你更好地使用 C 语言,并且如果你稍加练习,就会很快熟练。理解 C 可帮助你了解程序和内存的工作方式 + - 问题答案 + - [ ] **计算机是如何处理一段程序:** - [ ] [CPU 是如何执行代码(视频)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [机器码指令(视频)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - -- [ ] **编译器** - - [ ] [编译器是如何在 ~1 分钟内工作(视频)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Hardvard CS50 —— 编译器(视频)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++(视频)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [掌握编译器的优化(C++)(视频)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- [ ] **浮点数是如何存储的:** - - [ ] 简单的 8-bit:[浮点数的表达形式 —— 1(视频 —— 在计算上有一个错误 —— 详情请查看视频的介绍)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit:[IEEE754 32-bit 浮点二进制(视频)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] [计算机如何计算(视频)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [寄存器和内存(视频)](https://youtu.be/fpnE6UAfbtU) + - [ ] [中央处理单元(视频)](https://youtu.be/FZGugFqdr60) + - [ ] [指令和程序(视频)](https://youtu.be/zltgXvg6r3k) ## 算法复杂度 / Big-O / 渐进分析法 + - 并不需要实现 +- 这里有很多视频,看到你真正了解它为止。你随时可以回来复习。 +- 如果这些课程太过数学的话,你可以去看看最下面离散数学的视频,它能让你更了解这些数学背后的来源以及原理。 - [ ] [Harvard CS50 —— 渐进表示(视频)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [Big O 记号(通用快速教程)(视频)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O 记号(以及 Omega 和 Theta)—— 最佳数学解释(视频)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -335,22 +430,22 @@ - [ ] [UC Berkeley Big Omega(视频)](https://youtu.be/ca3e7UVmeUc) - [ ] [平摊分析法(Amortized Analysis)(视频)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] [举证“Big O”(视频)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] 高级编程(包括递归关系和主定理): +- [ ] TopCoder(包括递归关系和主定理): - [计算性复杂度:第一部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [计算性复杂度:第二部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [速查表(Cheat sheet)](http://bigocheatsheet.com/) - 如果部分课程过于学术性,你可直接跳到文章底部,去查看离散数学的视频以获取相关背景知识。 - ## 数据结构 - ### 数组(Arrays) - 实现一个可自动调整大小的动态数组。 - [ ] 介绍: - [数组(视频)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UC Berkeley CS61B - 线性数组和多维数组(视频)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE)(从15分32秒开始) - [数组的基础知识(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - [多维数组(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [动态数组(视频)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [不规则数组(视频)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [不规则数组(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - [调整数组的大小(视频)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] 实现一个动态数组(可自动调整大小的可变数组): @@ -382,12 +477,12 @@ - ### 链表(Linked Lists) - [ ] 介绍: - [ ] [单向链表(视频)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B —— 链表(视频)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - - [ ] [C 代码(视频)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - 并非看完整个视频,只需要看关于节点结果和内存分配那一部分即可 + - [ ] [CS 61B —— 链表(一)(视频)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B —— 链表(二)(视频)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C 代码(视频)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) ── 并非看完整个视频,只需要看关于节点结构和内存分配那一部分即可 - [ ] 链表 vs 数组: - - [基本链表 Vs 数组(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [在现实中,链表 Vs 数组(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [基本链表 Vs 数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [在现实中,链表 Vs 数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [为什么你需要避免使用链表(视频)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] 的确:你需要关于“指向指针的指针”的相关知识:(因为当你传递一个指针到一个函数时,该函数可能会改变指针所指向的地址)该页只是为了让你了解“指向指针的指针”这一概念。但我并不推荐这种链式遍历的风格。因为,这种风格的代码,其可读性和可维护性太低。 - [指向指针的指针](https://www.eskimo.com/~scs/cclass/int/sx8.html) @@ -445,9 +540,9 @@ - [ ] [(进阶)完美哈希(Perfect hashing)(视频)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] 在线课程: - - [ ] [哈希函数的掌握(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [理解哈希函数(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - [ ] [使用哈希表(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [哈希表的支持(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [支持哈希(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - [ ] [哈希表的语言支持(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [基本哈希表(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [数据结构(视频)](https://www.coursera.org/learn/data-structures/home/week/3) @@ -474,8 +569,7 @@ - 迭代式二分查找 - ### 按位运算(Bitwise operations) - - [ ] [Bits 速查表](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - - 你需要知道大量2的幂数值(从2^1 到 2^16 及 2^32) + - [ ] [Bits 速查表](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) ── 你需要知道大量2的幂数值(从2^1 到 2^16 及 2^32) - [ ] 好好理解位操作符的含义:&、|、^、~、>>、<< - [ ] [字码(words)](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] 好的介绍: @@ -486,6 +580,8 @@ - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [位元抚弄者(The Bit Twiddler)](http://bits.stephan-brumme.com/) - [ ] [交互式位元抚弄者(The Bit Twiddler Interactive)](http://bits.stephan-brumme.com/interactive.html) + - [ ] [位操作技巧(Bit Hacks)(视频)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [练习位操作](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 一补数和补码 - [二进制:利 & 弊(为什么我们要使用补码)(视频)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [一补数(1s Complement)](https://en.wikipedia.org/wiki/Ones%27_complement) @@ -494,8 +590,6 @@ - [计算一个字节中置位(Set Bits)的四种方式(视频)](https://youtu.be/Hzuzo9NJrlc) - [计算比特位](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [如何在一个 32 位的整型中计算置位(Set Bits)的数量](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] 四舍五入2的幂数: - - [四舍五入到2的下一幂数](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - [ ] 交换值: - [交换(Swap)](http://bits.stephan-brumme.com/swap.html) - [ ] 绝对值: @@ -508,23 +602,21 @@ - 基本的树形结构 - 遍历 - 操作算法 - - BFS(广度优先检索,breadth-first search) - - [MIT(视频)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - 层序遍历(使用队列的 BFS 算法) + - [ ] [BFS(广度优先检索,breadth-first search)和 DFS(深度优先检索,depth-first search)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS 笔记 + - 层序遍历(使用队列的 BFS 算法) - 时间复杂度: O(n) - 空间复杂度: - - 最好情况: O(1) + - 最好情况:O(1) - 最坏情况:O(n/2)=O(n) - - DFS(深度优先检索,depth-first search) - - [MIT(视频)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - 笔记: + - DFS 笔记: - 时间复杂度:O(n) - 空间复杂度: - 最好情况:O(log n) - 树的平均高度 - 最坏情况:O(n) - - 中序遍历(DFS:左、节点本身、右) - - 后序遍历(DFS:左、右、节点本身) - - 先序遍历(DFS:节点本身、左、右) + - 中序遍历(DFS:左、节点本身、右) + - 后序遍历(DFS:左、右、节点本身) + - 先序遍历(DFS:节点本身、左、右) - ### 二叉查找树(Binary search trees):BSTs - [ ] [二叉查找树概览(视频)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -560,7 +652,7 @@ - 可视化是一棵树,但通常是以线性的形式存储(数组、链表) - [ ] [堆](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [介绍(视频)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [无知的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [简单的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [二叉树(视频)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [关于树高的讨论(视频)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [基本操作(视频)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) @@ -582,91 +674,16 @@ - [ ] sift_down —— 用于获取最大值元素 - [ ] remove(i) —— 删除指定索引的元素 - [ ] heapify —— 构建堆,用于堆排序 - - [ ] heap_sort() —— 拿到一个未排序的数组,然后使用大顶堆进行就地排序 - - 注意:若用小顶堆可节省操作,但导致空间复杂度加倍。(无法做到就地) - -- ### 字典树(Tries) - - 需要注意的是,字典树各式各样。有些有前缀,而有些则没有。有些使用字符串而不使用比特位来追踪路径。 - - 阅读代码,但不实现。 - - [ ] [数据结构笔记及编程技术](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] 短课程视频: - - [ ] [对字典树的介绍(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [字典树的性能(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [实现一棵字典树(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [字典树:一个被忽略的数据结构](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [高级编程 —— 使用字典树](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [标准教程(现实中的用例)(视频)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT,高阶数据结构,使用字符串追踪路径(可事半功倍)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### 平衡查找树(Balanced search trees) - - 掌握至少一种平衡查找树(并懂得如何实现): - - “在各种平衡查找树当中,AVL 树和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。这种令人特别感兴趣的数据结构,亦称伸展树(splay tree)。它可以自我管理,且会使用轮换来移除任何访问过根节点的 key。” —— Skiena - - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。虽然,通过我的阅读,我发现在 Google 的面试中并不会被要求实现一棵平衡查找树。但是,为了胜人一筹,我们还是应该看看如何去实现。在阅读了大量关于红黑树的代码后,我才发现伸展树的实现确实会使得各方面更为高效。 - - 伸展树:插入、查找、删除函数的实现,而如果你最终实现了红黑树,那么请尝试一下: - - 跳过删除函数,直接实现搜索和插入功能 - - 我希望能阅读到更多关于 B 树的资料,因为它也被广泛地应用到大型的数据库当中。 - - [ ] [自平衡二叉查找树](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - [ ] **AVL 树** - - 实际中:我能告诉你的是,该种树并无太多的用途,但我能看到有用的地方在哪里:AVL 树是另一种平衡查找树结构。其可支持时间复杂度为 O(log n) 的查询、插入及删除。它比红黑树严格意义上更为平衡,从而导致插入和删除更慢,但遍历却更快。正因如此,才彰显其结构的魅力。只需要构建一次,就可以在不重新构造的情况下读取,适合于实现诸如语言字典(或程序字典,如一个汇编程序或解释程序的操作码)。 - - [ ] [MIT AVL 树 / AVL 树的排序(视频)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL 树(视频)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL 树的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [分离与合并](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - [ ] **伸展树** - - 实际中:伸展树一般用于缓存、内存分配者、路由器、垃圾回收者、数据压缩、ropes(字符串的一种替代品,用于存储长串的文本字符)、Windows NT(虚拟内存、网络及文件系统)等的实现。 - - [ ] [CS 61B:伸展树(Splay trees)(视频)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT 教程:伸展树(Splay trees): - - 该教程会过于学术,但请观看到最后的10分钟以确保掌握。 - - [视频](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - [ ] **2-3查找树** - - 实际中:2-3树的元素插入非常快速,但却有着查询慢的代价(因为相比较 AVL 树来说,其高度更高)。 - - 你会很少用到2-3树。这是因为,其实现过程中涉及到不同类型的节点。因此,人们更多地会选择红黑树。 - - [ ] [2-3树的直感与定义(视频)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [2-3树的二元观点](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3树(学生叙述)(视频)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - [ ] **2-3-4树 (亦称2-4树)** - - 实际中:对于每一棵2-4树,都有着对应的红黑树来存储同样顺序的数据元素。在2-4树上进行插入及删除操作等同于在红黑树上进行颜色翻转及轮换。这使得2-4树成为一种用于掌握红黑树背后逻辑的重要工具。这就是为什么许多算法引导文章都会在介绍红黑树之前,先介绍2-4树,尽管**2-4树在实际中并不经常使用**。 - - [ ] [CS 61B Lecture 26:平衡查找树(视频)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [自底向上的2-4树(视频)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [自顶向下的2-4树(视频)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - [ ] **B 树** - - 有趣的是:为啥叫 B 仍然是一个神秘。因为 B 可代表波音(Boeing)、平衡(Balanced)或 Bayer(联合创造者) - - 实际中:B 树会被广泛适用于数据库中,而现代大多数的文件系统都会使用到这种树(或变种)。除了运用在数据库中,B 树也会被用于文件系统以快速访问一个文件的任意块。但存在着一个基本的问题,那就是如何将文件块 i 转换成一个硬盘块(或一个柱面-磁头-扇区)上的地址。 - - [ ] [B 树](https://en.wikipedia.org/wiki/B-tree) - - [ ] [B 树的介绍(视频)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B 树的定义及其插入操作(视频)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B 树的删除操作(视频)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 —— 内存层次模块(Memory Hierarchy Models)(视频)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - 覆盖有高速缓存参数无关型(cache-oblivious)B 树和非常有趣的数据结构 - - 头37分钟讲述的很专业,或许可以跳过(B 指块的大小、即缓存行的大小) - - - [ ] **红黑树** - - 实际中:红黑树提供了在最坏情况下插入操作、删除操作和查找操作的时间保证。这些时间值的保障不仅对时间敏感型应用有用,例如实时应用,还对在其他数据结构中块的构建非常有用,而这些数据结构都提供了最坏情况下的保障;例如,许多用于计算几何学的数据结构都可以基于红黑树,而目前 Linux 系统所采用的完全公平调度器(the Completely Fair Scheduler)也使用到了该种树。在 Java 8中,红黑树也被用于存储哈希列表集合中相同的数据,而不是使用链表及哈希码。 - - [ ] [Aduni —— 算法 —— 课程4(该链接直接跳到开始部分)(视频)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni —— 算法 —— 课程5(视频)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [黑树(Black Tree)](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [二分查找及红黑树的介绍](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - -- ### N 叉树(K 叉树、M 叉树) - - 注意:N 或 K 指的是分支系数(即树的最大分支数): - - 二叉树是一种分支系数为2的树 - - 2-3树是一种分支系数为3的树 - - [ ] [K 叉树](https://en.wikipedia.org/wiki/K-ary_tree) + - [ ] heap_sort() —— 拿到一个未排序的数组,然后使用大顶堆或者小顶堆进行就地排序 ## 排序(Sorting) - [ ] 笔记: - - 实现各种排序 & 知道每种排序的最坏、最好和平均的复杂度分别是什么场景: - - 不要用冒泡排序 - 大多数情况下效率感人 - 时间复杂度 O(n^2), 除非 n <= 16 + - 实现各种排序,知道每种排序的最坏、最好和平均的复杂度分别是什么场景: + - 不要用冒泡排序 - 效率太差 - 时间复杂度 O(n^2), 除非 n <= 16 - [ ] 排序算法的稳定性 ("快排是稳定的么?") - [排序算法的稳定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [排序算法的稳定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [排序算法的稳定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [排序算法的稳定性](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [排序算法 - 稳定性](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - [ ] 哪种排序算法可以用链表?哪种用数组?哪种两者都可? @@ -674,41 +691,33 @@ - [链表的归并排序](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - 关于堆排序,请查看前文堆的数据结构部分。堆排序很强大,不过是非稳定排序。 - -- [ ] [冒泡排序 (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [冒泡排序分析 (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [插入排序 & 归并排序 (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [插入排序 (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [归并排序 (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [快排 (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [选择排序 (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] 斯坦福大学关于排序算法的视频: - - [ ] [课程 15 | 编程抽象 (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [课程 16 | 编程抽象 (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - -- [ ] Shai Simonson 视频, [Aduni.org](http://www.aduni.org/): - - [ ] [算法 - 排序 - 第二讲 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [算法 - 排序2 - 第三讲 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - -- [ ] Steven Skiena 关于排序的视频: - - [ ] [课程从 26:46 开始 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [课程从 27:40 开始 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [课程从 35:00 开始 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [课程从 23:50 开始 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) - -- [ ] 加州大学伯克利分校(UC Berkeley) 大学课程: - - [ ] [CS 61B 课程 29: 排序 I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B 课程 30: 排序 II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B 课程 32: 排序 III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B 课程 33: 排序 V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - -- [ ] - 归并排序: - - [ ] [使用外部数组](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [对原数组直接排序](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] - 快速排序: - - [ ] [实现](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) +- [ ] [Sedgewick ── 归并排序(5个视频)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] 1. 归并排序 + - [ ] 2. 自下而上的归并排序 + - [ ] 3. 排序复杂度 + - [ ] 4. 比较器 + - [ ] 5. 稳定性 +- [ ] [Sedgewick ── 快速排序(4个视频)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] 1. 快速排序 + - [ ] 2. 选择 + - [ ] 3. 重复键值 + - [ ] 4. 系统排序 +- [ ] [冒泡排序(视频)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [冒泡排序分析(视频)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [插入排序 & 归并排序(视频)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [插入排序(视频)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [归并排序(视频)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [快排(视频)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [选择排序(视频)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] 归并排序代码: + - [ ] [使用外部数组(C语言)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [使用外部数组(Python语言)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [对原数组直接排序(C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] 快速排序代码: + - [ ] [实现(C语言)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [实现(C语言)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [实现(Python语言)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - [ ] 实现: - [ ] 归并:平均和最差情况的时间复杂度为 O(n log n)。 @@ -716,58 +725,65 @@ - 选择排序和插入排序的最坏、平均时间复杂度都是 O(n^2)。 - 关于堆排序,请查看前文堆的数据结构部分。 -- [ ] 有兴趣的话,还有一些补充 - 但并不是必须的: +- [ ] 有兴趣的话,还有一些补充,但并不是必须的: + - [Sedgewick──基数排序 (6个视频)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Java 中的字符串](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. 键值索引计数(Key Indexed Counting)](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3中基数快速排序](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. 后继数组(Suffix Arrays)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [基数排序](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [基数排序 (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [基数排序, 计数排序 (线性时间内) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [随机算法: 矩阵相乘, 快排, Freivalds' 算法 (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [线性时间内的排序 (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [基数排序(视频)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [基数排序, 计数排序 (线性时间内)(视频)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [随机算法: 矩阵相乘, 快排, Freivalds' 算法(视频)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [线性时间内的排序(视频)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +总结一下,这是[15种排序算法](https://www.youtube.com/watch?v=kPRA0W1kECg)的可视化表示。如果你需要有关此主题的更多详细信息,请参阅“[一些主题的额外内容](#一些主题的额外内容)”中的“排序”部分。 ## 图(Graphs) 图论能解决计算机科学里的很多问题,所以这一节会比较长,像树和排序的部分一样。 -- Yegge 的笔记: - - 有 3 种基本方式在内存里表示一个图: +- 笔记: + - 有4种基本方式在内存里表示一个图: - 对象和指针 - - 矩阵 + - 邻接矩阵 - 邻接表 + - 邻接图 - 熟悉以上每一种图的表示法,并了解各自的优缺点 - - 宽度优先搜索和深度优先搜索 - 知道它们的计算复杂度和设计上的权衡以及如何用代码实现它们 + - 广度优先搜索和深度优先搜索:知道它们的计算复杂度和设计上的权衡以及如何用代码实现它们 - 遇到一个问题时,首先尝试基于图的解决方案,如果没有再去尝试其他的。 +- MIT(视频): + - [广度优先搜索](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [深度优先搜索](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - [ ] Skiena 教授的课程 - 很不错的介绍: - - [ ] [CSE373 2012 - 课程 11 - 图的数据结构 (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - 课程 12 - 广度优先搜索 (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - 课程 13 - 图的算法 (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - 课程 14 - 图的算法 (1) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 课程 15 - 图的算法 (2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 课程 16 - 图的算法 (3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 11 - 图的数据结构(视频)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - 课程 12 - 广度优先搜索(视频)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - 课程 13 - 图的算法(视频)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - 课程 14 - 图的算法 (1)(视频)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 15 - 图的算法 (2)(视频)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 16 - 图的算法 (3)(视频)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] 图 (复习和其他): - - [ ] [6.006 单源最短路径问题 (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra 算法 (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford 算法(video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Dijkstra 效率优化 (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: 图的算法 I - 拓扑排序, 最小生成树, Prim 算法 - 第六课 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: 图的算法 II - 深度优先搜索, 广度优先搜索, Kruskal 算法, 并查集数据结构 - 第七课 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: 图的算法 III: 最短路径 - 第八课 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: 图的算法. IV: 几何算法介绍 - 第九课 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (从 58:09 开始) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: 加权图 (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [贪心算法: 最小生成树 (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [图的算法之强连通分量 Kosaraju 算法 (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [6.006 单源最短路径问题(视频)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra 算法(视频)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford 算法(视频)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Dijkstra 效率优化(视频)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: 图的算法 I - 拓扑排序,最小生成树,Prim 算法 - 第六课(视频)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: 图的算法 II - 深度优先搜索, 广度优先搜索, Kruskal 算法, 并查集数据结构 - 第七课(视频)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: 图的算法 III: 最短路径 - 第八课(视频)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: 图的算法. IV: 几何算法介绍 - 第九课(视频)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014 (从 58:09 开始)(视频)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014: 加权图(视频)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [贪心算法: 最小生成树(视频)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [图的算法之强连通分量 Kosaraju 算法(视频)](https://www.youtube.com/watch?v=RpgcYiky7uw) - 完整的 Coursera 课程: - - [ ] [图的算法 (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- Yegge: 如果有机会,可以试试研究更酷炫的算法: - - [ ] Dijkstra 算法 - 上文 - 6.006 - - [ ] A* 算法 - - [ ] [A* 算法](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* 寻路教程 (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* 寻路 (E01: 算法解释) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [ ] [图的算法(视频)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - 我会实现: - [ ] DFS 邻接表 (递归) @@ -791,86 +807,116 @@ - ### 递归(Recursion) - [ ] Stanford 大学关于递归 & 回溯的课程: - - [ ] [课程 8 | 抽象编程 (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [课程 9 | 抽象编程 (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [课程 10 | 抽象编程 (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [课程 11 | 抽象编程 (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - [ ] [课程 8 | 抽象编程(视频)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [课程 9 | 抽象编程(视频)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [课程 10 | 抽象编程(视频)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [课程 11 | 抽象编程(视频)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - 什么时候适合使用 - 尾递归会更好么? - [ ] [什么是尾递归以及为什么它如此糟糕?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [尾递归 (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + - [ ] [尾递归(视频)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### 动态规划(Dynamic Programming) - - **注意** :动态规划是门极为重要的技术,尽管其并未被 Google 提供的准备手册提及,但你可能会对寻求最佳解的方式有点疑问,所以我将其列入这份表单。 + - 在你的面试中或许没有任何动态规划的问题,但能够知道一个题目可以使用动态规划来解决是很重要的。 - 这一部分会有点困难,每个可以用动态规划解决的问题都必须先定义出递推关系,要推导出来可能会有点棘手。 - 我建议先阅读和学习足够多的动态规划的例子,以便对解决 DP 问题的一般模式有个扎实的理解。 - - [ ] 视频: - Skiena 的视频可能会有点难跟上,有时候他用白板写的字会比较小,难看清楚。 - - [ ] [Skiena: CSE373 2012 - 课程 19 - 动态规划介绍 (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - 课程 20 - 编辑距离 (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - 课程 21 - 动态规划举例 (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - 课程 22 - 动态规划应用 (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: 动态规划 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: 动态规划 I - 课程 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: 动态规划 II - 课程 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] 单独的 DP 问题 (每一个视频都很短): - [动态规划 (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale 课程笔记: + - [ ] [Skiena: CSE373 2012 - 课程 19 - 动态规划介绍(视频)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - 课程 20 - 编辑距离(视频)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - 课程 21 - 动态规划举例(视频)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - 课程 22 - 动态规划应用(视频)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: 动态规划 0 (starts at 59:18)(视频)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: 动态规划 I - 课程 11(视频)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: 动态规划 II - 课程 12(视频)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] 单独的 DP 问题 (每一个视频都很短):[动态规划(视频)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] 耶鲁课程笔记: - [ ] [动态规划](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera 课程: - - [ ] [RNA 二级结构问题 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [动态规划算法 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [DP 算法描述 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [DP 算法的运行时间 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs 递归实现 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [全局成对序列排列 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [本地成对序列排列 (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] [RNA 二级结构问题(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [动态规划算法(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [DP 算法描述(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [DP 算法的运行时间(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs 递归实现(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [全局成对序列排列(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [本地成对序列排列(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### 面向对象编程 + - 可选:[UML 2.0系列(视频)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - SOLID 面向对象编程原则:[SOLID 原则(视频)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### 设计模式 + - [ ] [UML 统一建模语言概览 (视频)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] 主要有如下的设计模式: + - [ ] 策略模式(strategy) + - [ ] 单例模式(singleton) + - [ ] 适配器模式(adapter) + - [ ] 原型模式(prototype) + - [ ] 装饰器模式(decorator) + - [ ] 访问者模式(visitor) + - [ ] 工厂模式,抽象工厂模式(factory, abstract factory) + - [ ] 外观模式(facade) + - [ ] 观察者模式(observer) + - [ ] 代理模式(proxy) + - [ ] 委托模式(delegate) + - [ ] 命令模式(command) + - [ ] 状态模式(state) + - [ ] 备忘录模式(memento) + - [ ] 迭代器模式(iterator) + - [ ] 组合模式(composite) + - [ ] 享元模式(flyweight) + - [ ] [第六章 (第 1 部分 ) - 设计模式 (视频)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [第六章 (第 2 部分 ) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (视频)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [第六章 (第 3 部分 ) - Adapter, Facade, Immutable, Read-Only Interface, Proxy(视频)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [系列视频(27个)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First 设计模型](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - 尽管《设计模式:可复用面向对象软件的基础》才是这方面的经典,但是我还是认为Head First对于新手更加友好。 + - [ ] [实际操作:设计模式和对入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - ### 组合(Combinatorics) (n 中选 k 个) & 概率(Probability) - - [ ] [数据技巧: 如何找出阶乘、排列和组合(选择) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [来点学校的东西: 概率 (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [来点学校的东西: 概率和马尔可夫链 (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] [数据技巧: 如何找出阶乘、排列和组合(选择)(视频)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [来点学校的东西: 概率(视频)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [来点学校的东西: 概率和马尔可夫链(视频)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] 可汗学院: - 课程设置: - [ ] [概率理论基础](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - 视频 - 41 (每一个都短小精悍): - - [ ] [概率解释 (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - 只有视频 - 41 (每一个都短小精悍): + - [ ] [概率解释(视频)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-完全和近似算法 - - 知道最经典的一些 NP 完全问题,比如旅行商问题和背包问题, - 而且能在面试官试图忽悠你的时候识别出他们。 + - 知道最经典的一些 NP 完全问题,比如旅行商问题和背包问题,而且能在面试官试图忽悠你的时候识别出他们。 - 知道 NP 完全是什么意思. - - [ ] [计算复杂度 (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] [计算复杂度(视频)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [贪心算法. II & 介绍 NP-完全性 (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP-完全性 II & 归约 (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP-完全性 III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP-完全性 IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [贪心算法. II & 介绍 NP-完全性(视频)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP-完全性 II & 归约(视频)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-完全性 III(视频)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-完全性 IV(视频)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - 课程 23 - 介绍 NP-完全性 IV (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - 课程 24 - NP-完全性证明 (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 课程 25 - NP-完全性挑战 (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [复杂度: P, NP, NP-完全性, 规约 (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [复杂度: 近视算法 Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [复杂度: 固定参数算法 (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [CSE373 2012 - 课程 23 - 介绍 NP-完全性 IV(视频)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - 课程 24 - NP-完全性证明(视频)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 25 - NP-完全性挑战(视频)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [复杂度: P, NP, NP-完全性, 规约(视频)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [复杂度: 近视算法 Algorithms(视频)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [复杂度: 固定参数算法(视频)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - Peter Norvik 讨论旅行商问题的近似最优解: - [Jupyter 笔记本](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - 《算法导论》的第 1048 - 1140 页。 + - 《算法导论》(CLRS)的第 1048 - 1140 页。 - ### 缓存(Cache) - [ ] LRU 缓存: - - [ ] [LRU 的魔力 (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [实现 LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] [LRU 的魔力 (100 Days of Google Dev)(视频)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [实现 LRU(视频)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++)(视频)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU 缓存: - - [ ] [MIT 6.004 L15: 存储体系 (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: 缓存的问题 (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] [MIT 6.004 L15: 存储体系(视频)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: 缓存的问题(视频)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### 进程(Processe)和线程(Thread) - [ ] 计算机科学 162 - 操作系统 (25 个视频): - 视频 1-11 是关于进程和线程 - - [操作系统和系统编程 (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [操作系统和系统编程(视频)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [进程和线程的区别是什么?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - 涵盖了: - 进程、线程、协程 @@ -886,13 +932,15 @@ - 活锁 - CPU 活动, 中断, 上下文切换 - 现代多核处理器的并发式结构 + - [分页(paging),分段(segmentation)和虚拟内存(视频)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [中断(视频)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - 进程资源需要(内存:代码、静态存储器、栈、堆、文件描述符、I/O) - - 线程资源需要(在同一个进程内和其他线程共享以上的资源,但是每个线程都有独立的程序计数器、栈计数器、寄存器和栈) + - 线程资源需要(在同一个进程内和其他线程共享以上(除了栈)的资源,但是每个线程都有独立的程序计数器、栈计数器、寄存器和栈) - Fork 操作是真正的写时复制(只读),直到新的进程写到内存中,才会生成一份新的拷贝。 - 上下文切换 - - 操作系统和底层硬件是如何初始化上下文切换的。 + - 操作系统和底层硬件是如何初始化上下文切换的? - [ ] [C++ 的线程 (系列 - 10 个视频)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] Python 的协程 (视频): + - [ ] Python 的并发 (视频): - [ ] [线程系列](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python 线程](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [理解 Python 的 GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -901,189 +949,16 @@ - [ ] [Keynote David Beazley - 兴趣主题 (Python 异步 I/O)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Python 中的互斥](https://www.youtube.com/watch?v=0zaPs8OtyKY) - - 系统设计以及可伸缩性,要把软硬件的伸缩性设计的足够好有很多的东西要考虑,所以这是个包含非常多内容和资源的大主题。需要花费相当多的时间在这个主题上。 - -- ### 系统设计、可伸缩性、数据处理 - - Yegge 的注意事项: - - 伸缩性 - - 把大数据集提取为单一值 - - 大数据集转换 - - 处理大量的数据集 - - 系统 - - 特征集 - - 接口 - - 类层次结构 - - 在特定的约束下设计系统 - - 轻量和健壮性 - - 权衡和折衷 - - 性能分析和优化 - - [ ] **从这里开始**: [HiredInTech:系统设计](http://www.hiredintech.com/system-design/) - - [ ] [该如何为技术面试里设计方面的问题做准备?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - - [ ] [在系统设计面试前必须知道的 8 件事](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - - [ ] [算法设计](http://www.hiredintech.com/algorithm-design/) - - [ ] [数据库范式 - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - - [ ] [系统设计面试](https://github.com/checkcheckzz/system-design-interview) - 这一部分有很多的资源,浏览一下我放在下面的文章和例子。 - - [ ] [如何在系统设计面试中脱颖而出](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - - [ ] [每个人都该知道的一些数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - - [ ] [上下文切换操作会耗费多少时间?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - - [ ] [跨数据中心的事务 (video)](https://www.youtube.com/watch?v=srOgpXECblk) - - [ ] [简明 CAP 理论介绍](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) - - [ ] Paxos 一致性算法: - - [时间很短](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [用例 和 multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [论文](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) - - [ ] [一致性哈希](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - - [ ] [NoSQL 模式](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - - [ ] [OOSE: UML 2.0 系列 (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] OOSE: 使用 UML 和 Java 开发软件 (21 videos): - - 如果你对 OO 都深刻的理解和实践,可以跳过这部分。 - - [OOSE: 使用 UML 和 Java 开发软件](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] 面向对象编程的 SOLID 原则: - - [ ] [Bob Martin 面向对象的 SOLID 原则和敏捷设计 (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [C# SOLID 设计模式 (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) - - [ ] [SOLID 原则 (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [单一职责原则](http://www.oodesign.com/single-responsibility-principle.html) | [每个对象的单一职责](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [更多](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [开闭原则](http://www.oodesign.com/open-close-principle.html) | [生产环境里的对象应该为扩展做准备而不是为更改](https://en.wikipedia.org/wiki/Open/closed_principle) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [里氏代换原则](http://www.oodesign.com/liskov-s-substitution-principle.html) | [基类和继承类遵循 ‘IS A’ 原则](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [接口隔离原则](http://www.oodesign.com/interface-segregation-principle.html) | 客户端被迫实现用不到的接口 - - [5 分钟讲解接口隔离原则 (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[依赖反转原则](http://www.oodesign.com/dependency-inversion-principle.html) | 减少对象里的依赖。 - - [什么是依赖倒置以及它为什么重要](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - - [ ] 可伸缩性: - - [ ] [很棒的概述 (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] 简短系列: - - [克隆](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) - - [ ] [可伸缩的 Web 架构和分布式系统](http://www.aosabook.org/en/distsys.html) - - [ ] [错误的分布式系统解释](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [实用编程技术](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel 图形处理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - 在 Goolge 构建软件系统 (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [可伸缩系统架构设计介绍](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [使用 App Engine 和云存储扩展面向全球用户的手机游戏架构实践(video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [算法的重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [分片](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Facebook 系统规模扩展实践 (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Facebook 系统规模扩展实践 (2012), "为 10 亿用户构建" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Long Game 工程实践 - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [30 分钟看完 YouTuBe 7 年系统扩展经验](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [PayPal 如何用 8 台虚拟机扛住 10 亿日交易量系统](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [如何对大数据集去重](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [Etsy 的扩展和工程文化探究 Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [是什么造就了 Amazon 自己的微服务架构](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [压缩还是不压缩,是 Uber 面临的问题](https://eng.uber.com/trip-data-squeeze/) - - [ ] [异步 I/O Tarantool 队列](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [什么时候应该用近视查询处理?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google 从单数据中心到故障转移, 到本地多宿主架构的演变]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte: 构建和扩展 PB 级分布式系统架构的经验教训](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [机器学习驱动的编程: 新世界的新编程方式](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [日服务数百万请求的图像优化技术](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [Patreon 架构](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: 推荐引擎是如何决定下一个你将会看到谁的?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [现代缓存设计](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Facebook 实时视频流扩展](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [在 Amazon AWS 上把服务扩展到 1100 万量级的新手教程](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [对延时敏感的应用是否应该使用 Docker?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [AMP(Accelerated Mobile Pages)的存在是对 Google 的威胁么?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [360 度解读 Netflix 技术栈](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [延迟无处不在 - 如何搞定它?](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [无服务器架构](http://martinfowler.com/articles/serverless.html) - - [ ] [是什么驱动着 Instagram: 上百个实例、几十种技术](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast 架构 - 每天处理 1500 小时的音频](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv 实时视频播放架构](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's 社交游戏架构 - 每月五千万用户增长](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [猫途鹰架构 - 40 万访客, 200 万动态页面访问, 30TB 数据](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish 架构](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce 架构 - 如何扛住 13 亿日交易量](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's 架构扩展](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] 下面 『消息、序列化和消息系统』部分的内容会提到什么样的技术能把各种服务整合到一起 - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [时间线的扩展](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - 更多内容可以查看视频部分的『大规模数据挖掘』视频系列。 - - [ ] 系统设计问题练习:下面有一些指导原则,每一个都有相关文档以及在现实中该如何处理。 - - 复习: [HiredInTech 的系统设计](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - - 流程: - 1. 理解问题和范围: - - 在面试官的帮助下定义用例 - - 提出附加功能的建议 - - 去掉面试官认定范围以外的内容 - - 假定高可用是必须的,而且要作为一个用例 - 2. 考虑约束: - - 问一下每月请求量 - - 问一下每秒请求量 (他们可能会主动提到或者让你算一下) - - 评估读写所占的百分比 - - 评估的时候牢记 2/8 原则 - - 每秒写多少数据 - - 总的数据存储量要考虑超过 5 年的情况 - - 每秒读多少数据 - 3. 抽象设计: - - 分层 (服务, 数据, 缓存) - - 基础设施: 负载均衡, 消息 - - 粗略的概括任何驱动整个服务的关键算法 - - 考虑瓶颈并指出解决方案 - - 练习: - - [设计一个 CDN 网络](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [设计一个随机唯一 ID 生成系统](https://blog.twitter.com/2010/announcing-snowflake) - - [设计一个在线多人卡牌游戏](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [设计一个 key-value 数据库](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [设计一个函数获取过去某个时间段内前 K 个最高频访问的请求]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) - - [设计一个图片分享系统](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [设计一个推荐系统](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [设计一个短域名生成系统](http://www.hiredintech.com/system-design/the-system-design-process/) - - [设计一个缓存系统](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - -- ### 论文 - - 有 Google 的论文和一些知名的论文. - - 你很可能实在没时间一篇篇完整的读完他们。我建议可以有选择的读其中一些论文里的核心部分。 - - [ ] [1978: 通信顺序处理](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Go 实现](https://godoc.org/github.com/thomas11/csp) - - [喜欢经典的论文?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google 文件系统](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - 2012 年被 Colossus 取代了 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - 大多被云数据流取代了? - - [ ] [2007: 每个程序员都应该知道的内存知识 (非常长,作者建议跳过某些章节来阅读)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2012: Google 的 Colossus](https://www.wired.com/2012/07/google-colossus/) - - 没有论文 - - [ ] 2012: AddressSanitizer: 快速的内存访问检查器: - - [论文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [视频](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google 的分布式数据库: - - [论文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [视频](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: 大规模高可用: 构建 Google Ads 的数据基础设施](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: 异构分布式系统上的大规模机器学习](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: 开发者应该如何搜索代码:用例学习](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - - ### 测试 - 涵盖了: - 单元测试是如何工作的 - 什么是模拟对象 - 什么是集成测试 - 什么是依赖注入 - - [ ] [James Bach 讲敏捷软件测试 (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [James Bach 软件测试公开课 (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - 测试驱动的开发 (video)](https://vimeo.com/83960706) + - [ ] [James Bach 讲敏捷软件测试(视频)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [James Bach 软件测试公开课(视频)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - 测试驱动的开发(视频)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [测试驱动的开发已死。测试不朽。](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [测试驱动的开发已死? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [视频系列 (152 个) - 并不都是必须 (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - [ ] [Python:测试驱动的 Web 开发](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] 依赖注入: - [ ] [视频](https://www.youtube.com/watch?v=IKD2-MAkXyQ) @@ -1094,152 +969,321 @@ - 在操作系统中是如何运作的 - 在操作系统部分的视频里有很多资料 -- ### 实现系统例程 - - 理解你使用的系统 API 底层有什么 - - 你能自己实现它们么? - - ### 字符串搜索和操作 - - [ ] [文本的搜索模式 (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - [ ] Rabin-Karp (videos): - - [Rabin Karps 算法](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [预先计算的优化](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [优化: 实现和分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [滚动哈希](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP) 算法: - - [Pratt 算法](https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm) - - [教程: Knuth-Morris-Pratt (KMP) 字符串匹配算法](https://www.youtube.com/watch?v=2ogqPWJSftE) - - [ ] Boyer–Moore 字符串搜索算法 - - [Boyer-Moore字符串搜索算法](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Boyer-Moore-Horspool 高级字符串搜索算法 (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: 字符串的算法](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - [ ] [Sedgewick──后缀数组(Suffix Arrays)(视频)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick──子字符串搜寻(视频)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. 子字符串搜寻导论](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. 子字符串搜寻──暴力法](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. KMP算法](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore算法](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp算法](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [文本的搜索模式(视频)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) ---- +如果你需要有关此主题的更多详细信息,请参阅“[一些主题的额外内容](#一些主题的额外内容)”中的“字符串匹配”部分。 -## 终面 +- ### 字典树(Tries) - 这一部分有一些短视频,你可以快速的观看和复习大多数重要概念。 - 这对经常性的巩固很有帮助。 + - 需要注意的是,字典树各式各样。有些有前缀,而有些则没有。有些使用字符串而不使用比特位来追踪路径。 + - 阅读代码,但不实现。 + - [Sedgewick──字典树(3个视频)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way字典树](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. 三元搜索树](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. 基于字符串的操作](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [数据结构笔记及编程技术](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] 短课程视频: + - [ ] [对字典树的介绍(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [字典树的性能(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [实现一棵字典树(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [字典树:一个被忽略的数据结构](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder —— 使用字典树](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [标准教程(现实中的用例)(视频)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT,高阶数据结构,字符串(视频中间有点困难)(视频)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -#### 综述: +- ### 浮点数 -- [ ] 2-3 分钟的短视频系列 (23 个) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 分钟的短视频系列 - Michael Sambol (18 个): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) + - [ ] 简单8位:[浮点数的表示形式-1(视频──计算中存在错误,请参见视频说明)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32位:[IEEE754 32位浮点二进制(视频)](https://www.youtube.com/watch?v=50ZYcZebIec) -#### 排序: +- ### Unicode + - [ ] [每一个软件开发者的绝对最低限度,必须要知道的关于 Unicode 和字符集知识](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [关于处理文本需要的编码和字符集,每个程序员绝对需要知道的知识](http://kunststube.net/encoding/) -- [ ] 归并排序: https://www.youtube.com/watch?v=GCae1WNvnZM +- ### 字节序(Endianness) + - [大/小端序](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [大端序 Vs 小端序(视频)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [由里入内的大端序与小端序(视频)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - 对于内核开发非常具有技术性,如果大多数的内容听不懂也没关系。 + - 前半部就已经足够了。 +- ### 网络 (视频) + - **如果你具有网络经验或想成为可靠性工程师或运维工程师,期待你的问题** + - 知道这些有益无害,多多益善! + - [ ] [可汗学院](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP 和 TCP:网络传输协议中的数据压缩(视频)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP 和 OSI 模型解释!(视频)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [互联网上的数据包传输。网络和 TCP/IP 教程。(视频)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP(视频)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL 和 HTTPS(视频)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS(视频)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0(视频)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [视频系列(21个视频)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [子网络解密 - 第五部分 经典内部域名指向 CIDR 标记(视频)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] 套接字(Sockets): + - [Java──套接字──介绍(视频)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [套接字编程(视频)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## 系统设计、可伸缩性、数据处理 + +**如果你已经拥有了4年以上的编程经验,那你可以来看看有关系统设计的问题** + +- 系统设计以及可伸缩性,要把软硬件的伸缩性设计的足够好有很多的东西要考虑,所以这是个包含非常多内容和资源的大主题。要花费相当多的时间在这个主题上。 +- 考量: + - 伸缩性 + - 把大数据集提取为单一值 + - 大数据集转换 + - 处理大量的数据集 + - 系统 + - 功能集 + - 接口 + - 类层次结构 + - 在特定的约束下设计系统 + - 轻量和健壮性 + - 权衡和折衷 + - 性能分析和优化 +- [ ] **从这里开始**:[系统设计入门](https://github.com/donnemartin/system-design-primer) +- [ ] [HiredInTech:系统设计](http://www.hiredintech.com/system-design/) +- [ ] [该如何为技术面试里设计方面的问题做准备?](https://www.quora.comHow-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [在系统设计面试前必须知道的 8 件事](http://blog.gainlo.co/index.php/2015/10/228-things-you-need-to-know-before-system-design-interviews/) +- [ ] [算法设计](http://www.hiredintech.com/algorithm-design/) +- [ ] [数据库范式 - 1NF, 2NF, 3NF and 4NF(视频)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [系统设计面试](https://github.com/checkcheckzz/system-design-interview) - 这一部分有很多的资源浏览一下我放在下面的文章和例子。 +- [ ] [如何在系统设计面试中脱颖而出](http://www.palantir.com/2011/10how-to-rock-a-systems-design-interview/) +- [ ] [每个人都该知道的一些数字](http://everythingisdata.wordpress.com/2009/10/17numbers-everyone-should-know/) +- [ ] [上下文切换操作会耗费多少时间?](http://blog.tsunanet.net/2010/11how-long-does-it-take-to-make-context.html) +- [ ] [跨数据中心的事务(视频)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [简明 CAP 理论介绍](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] 共识算法: + - [ ] Paxos:[Paxos协议──Computerphile(视频)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft: [Raft 分布式共识算法简介(视频)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [易于阅读的论文](https://raft.github.io/) + - [ ] [信息图] +- [ ] [一致性哈希](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL 模式](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] 可伸缩性: + - 你不需要知道所有这些。只需挑选一些你感兴趣的东西即可。 + - [ ] [很棒的概述(视频)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] 简短系列: + - [克隆](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) + - [ ] [可伸缩的 Web 架构和分布式系统](http://www.aosabook.org/en/distsys.html) + - [ ] [错误的分布式系统解释](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [实用编程技术](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel 图形处理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - 在 Goolge 构建软件系统(视频)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [可伸缩系统架构设计介绍](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [使用 App Engine 和云存储扩展面向全球用户的手机游戏架构实践(视频)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra(视频)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [算法的重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [分片(Sharding)](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Facebook 系统规模扩展实践 (2012), "为 10 亿用户构建"(视频)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Long Game 工程实践 - Astrid Atkinson Keynote(视频)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [30 分钟看完 YouTuBe 7 年系统扩展经验](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [视频](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [PayPal 如何用 8 台虚拟机扛住 10 亿日交易量系统](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [如何对大数据集去重](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [Etsy 的扩展和工程文化探究 Jon Cowie(视频)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [是什么造就了 Amazon 自己的微服务架构](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [压缩还是不压缩,是 Uber 面临的问题](https://eng.uber.com/trip-data-squeeze/) + - [ ] [异步 I/O Tarantool 队列](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [什么时候应该用近似查询处理?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google 从单数据中心到故障转移, 到本地多宿主架构的演变](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Egnyte: 构建和扩展 PB 级分布式系统架构的经验教训](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [机器学习驱动的编程: 新世界的新编程方式](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [日服务数百万请求的图像优化技术](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Patreon 架构](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: 推荐引擎是如何决定下一个你将会看到谁的?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [现代缓存设计](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Facebook 实时视频流扩展](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [在 Amazon AWS 上把服务扩展到 1100 万量级的新手教程](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [对延时敏感的应用是否应该使用 Docker?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [360 度解读 Netflix 技术栈](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [延迟无处不在 - 如何搞定它?](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [无服务器架构](http://martinfowler.com/articles/serverless.html) + - [ ] [是什么驱动着 Instagram: 上百个实例、几十种技术](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast 架构 - 每天处理 1500 小时的音频](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv 实时视频播放架构](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's 社交游戏架构 - 每月五千万用户增长](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [猫途鹰架构 - 40 万访客, 200 万动态页面访问, 30TB 数据](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish 架构](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce 架构 - 如何扛住 13 亿日交易量](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's 架构扩展](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] 下面“消息传递,序列化和队列系统”部分的内容会提到什么样的技术能把各种服务整合到一起 + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter"(视频)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [时间线的扩展](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - 更多内容可以查看[视频系列部分](#视频系列)的“大规模数据挖掘”视频系列。 +- [ ] 系统设计问题练习:下面有一些指导原则,每一个都有相关文档以及在现实中该如何处理。 + - 复习: [系统设计入门](https://github.com/donnemartin/system-design-primer) + - [HiredInTech 的系统设计](http://www.hiredintech.com/system-design/) + - [备忘单](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - 流程: + 1. 理解问题和范围: + - 在面试官的帮助下定义用例 + - 提出附加功能的建议 + - 去掉面试官认定范围以外的内容 + - 假定高可用是必须的,而且要作为一个用例 + 2. 考虑约束: + - 问一下每月请求量 + - 问一下每秒请求量 (他们可能会主动提到或者让你算一下) + - 评估读写所占的百分比 + - 评估的时候牢记 2/8 原则 + - 每秒写多少数据 + - 总的数据存储量要考虑超过 5 年的情况 + - 每秒读多少数据 + 3. 抽象设计: + - 分层 (服务, 数据, 缓存) + - 基础设施: 负载均衡, 消息 + - 粗略的概括任何驱动整个服务的关键算法 + - 考虑瓶颈并指出解决方案 + - 练习: + - [设计一个 CDN 网络](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [设计一个随机唯一 ID 生成系统](https://blog.twitter.com/2010/announcing-snowflake) + - [设计一个在线多人卡牌游戏](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [设计一个键值数据库](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [设计一个图片分享系统](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [设计一个推荐系统](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [设计一个短域名生成系统](http://www.hiredintech.com/system-design/the-system-design-process/) + - [设计一个缓存系统](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) -## 书籍 +--- -### Google Coaching 里提到的 +## 终面 -**阅读并做练习:** + 这一部分有一些短视频,你可以快速的观看和复习大多数重要概念。 + 这对经常性的巩固很有帮助。 -- [ ] 算法设计手册 (Skiena) - - 书 (Kindle 上可以租到): - - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) - - Half.com 是一个资源丰富且性价比很高的在线书店. - - 答案: - - [解答](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [解答](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [勘误表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [ ] 2-3分钟的简短主题视频系列(23个视频) + - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5分钟的简短主题视频系列──Michael Sambol(18个视频): + - [视频](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) - read and do exercises from the books below. Then move to coding challenges (further down below) - 一旦你理解了每日计划里的所有内容,就去读上面所列的书并完成练习,然后开始读下面所列的书并做练习,之后就可以开始实战写代码了(本文再往后的部分) +## 编程问题练习 -**首先阅读:** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +现在你已经了解了上面所有的计算机科学主题,是时候练习回答编程问题了。 -**然后阅读 (这本获得了很多推荐, 但是不在 Google coaching 的文档里):** -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - 如果你看到有人在看 "The Google Resume", 实际上它和 "Cracking the Coding Interview" 是同一个作者写的,而且后者是升级版。 +**编程问题的实践并不是要记住编程问题的答案**。 -### 附加书单 +为什么需要练习编程问题: -这些没有被 Google 推荐阅读,不过我因为需要这些背景知识所以也把它们列在了这里。 +- 快速识别问题,以及如何应用正确的数据结构及算法 +- 收集问题的要求 +- 像在面试中一样谈论问题 +- 在白板或纸上而非计算机上编码 +- 计算解决方案的时间和空间的复杂性 +- 测试你的解决方案 -- [ ] C Programming Language, Vol 2 - - [练习的答案](https://github.com/lekkas/c-algorithms) +这里有个很棒的入门教学,内容是如何在面试中有条不紊,并且有互动沟通地解决问题。这种能力可以从面试书籍中获得,但我觉得这个也很棒:[算法设计画布](http://www.hiredintech.com/algorithm-design/)。 -- [ ] C++ Primer Plus, 6th Edition +家里没有白板?那讲得通。我是一个怪人,有一个很大的白板。从白板商店买了一个大的绘图板,而不是白板。你可以坐在沙发上练习。这是我的“沙发白板”。我在照片中添加了笔以便进行缩放。如果你使用笔,则希望可以擦除。快速变得凌乱。我用铅笔和橡皮擦。 -- [ ] [《Unix 环境高级编程》 The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) +![我的沙发白板](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -- [ ] [《编程珠玑》 Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) +补充: -- [ ] [Algorithms and Programming: Problems and Solutions](http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474) +- [Topcoder的数学](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [动态编程──从新手到高级](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT 面试材料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [练习以掌握特定语言](http://exercism.io/languages) -### 如果你有时间 +**阅读并练习编程问题(按此顺序)**: -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) +- [ ] [编程面试公开:下一份工作的秘密,第二版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - C,C ++ 和 Java 的答案 +- [ ] [破解编码面试,第六版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java 答案 -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - 如果你希望在面试里用 C++ 写代码,这本书的代码全都是 C++ 写的 - - 通常情况下能找到解决方案的好书. +请参阅上方的[书单](#书单)。 -## 编码练习和挑战 +## 编程练习和挑战 一旦你学会了理论基础,就应该把它们拿出来练练。 尽量坚持每天做编码练习,越多越好。 -编程问题预备: - -- [ ] [不错的介绍 (摘自 System Design 章节): 算法设计:](http://www.hiredintech.com/algorithm-design/) -- [ ] [如何找到解决方案](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [如何剖析 Topcoder 题目描述](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -- [ ] [Topcoders 里用到的数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [ ] [动态规划 – 从入门到精通](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [如何找到解决方案](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) +- [如何剖析 Topcoder 题目描述](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) -- [MIT 面试材料](https://courses.csail.mit.edu/iap/interview/materials.php) +编码面试问题视频: -- [针对编程语言本身的练习](http://exercism.io/languages) +- [IDeserve(88个视频)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy(5个播放列表)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - 超级解决问题的方法 +- [Nick White──LeetCode 解题(187个视频)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - 良好的解决方案和代码解释 + - 你可以在短时间内看好几个 +- [FisherCoder──LeetCode 解题](https://youtube.com/FisherCoder) 编码练习平台: - [LeetCode](https://leetcode.com/) + - 我最喜欢的编码问题网站,值得你准备的1-2个月的订阅费用 + - [FisherCoder 的 LeetCode 解题](https://github.com/fishercoder1534/Leetcode) + - 请参阅上面的 Nick White 视频,以获得简短的代码 +- [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [http://www.geeksforgeeks.org/](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) - [Project Euler (数学方向为主)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com/) + +语言学习网站,附带编码挑战: + - [Codewars](http://www.codewars.com) -- [HackerRank](https://www.hackerrank.com/) - [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +编码挑战项目: + +- [Python 交互式编码面试挑战](https://github.com/donnemartin/interactive-coding-challenges) -- [模拟大公司的面试](http://www.gainlo.co/) +模拟面试: + +- [Gainlo.co:来自大公司的模拟面试官](http://www.gainlo.co/)──我使用了它,它帮助我减轻了电话屏幕和现场面试的压力 +- [Pramp:模拟来自/与同行的面试](https://www.pramp.com/)──点对点方式练习面试 +- [Refdash:模拟面试和加急面试](https://refdash.com/)──跳过与科技公司的多次面试,帮助求职者快速追踪 +- [interviewing.io:与高级工程师进行模拟面试](https://interviewing.io/)──与来自 FAANG(译者注:Facebook, Amazon, Apple, Netflix and Google) 的高级工程师进行匿名算法/系统设计面试。 ## 当你临近面试时 -- [ ] 搞定代码面试 (videos): +- 搞定代码面试──第二集 (视频): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - 全栈系列](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (Cracking the Coding Interview 的作者)](https://www.youtube.com/watch?v=1fqxMuPmGak) ## 你的简历 -- [10 条小贴士让你写出一份还算不错的简历](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- 这是搞定面试的第一个关键步骤 - +- 请参阅“破解编码面试”和“编程面试的背面”中的建立准备项。 ## 当面试来临的时候 - 随着下面列举的问题思考下你可能会遇到的 20 个面试问题 - 每个问题准备 2-3 种回答 - 准备点故事,不要只是摆一些你完成的事情的数据,相信我,人人都喜欢听故事 +随着下面列举的问题思考下你可能会遇到的 20 个面试问题,每个问题准备 2-3 种回答。准备点故事,不要只是摆一些你完成的事情的数据,相信我,人人都喜欢听故事。 - 你为什么想得到这份工作? - 你解决过的最有难度的问题是什么? - 面对过的最大挑战是什么? - 见过的最好或者最坏的设计是怎么样的? -- 对某项 Google 产品提出改进建议。 +- 对某个产品提出改进建议。 - 你作为一个个体同时也是团队的一员,如何达到最好的工作状态? -- 你的什么技能或者经验是你的角色中不可或缺的?为什么? +- 你的什么技能或者经验是你的角色中不可或缺的,为什么? - 你在某份工作或某个项目中最享受的是什么? - 你在某份工作或某个项目中面临过的最大挑战是什么? -- 你在某份工作或某个项目中遇到过的最蛋疼的 Bug 是什么样的? +- 你在某份工作或某个项目中遇到过的最硬的 Bug 是什么样的? - 你在某份工作或某个项目中学到了什么? - 你在某份工作或某个项目中哪些地方还可以做的更好? @@ -1249,52 +1293,110 @@ - 团队多大规模? - 开发周期是怎样的? 会使用瀑布流/极限编程/敏捷开发么? -- 经常会为 deadline 加班么? 或者是有弹性的? +- 经常会为截止日期(deadlines)加班么? 或者是有弹性的? - 团队里怎么做技术选型? - 每周平均开多少次会? - 你觉得工作环境有助于员工集中精力吗? - 目前正在做什么工作? - 喜欢这些事情吗? - 工作期限是怎么样的? +- 工作生活怎么平衡? ## 当你获得了梦想的职位 -我还能说些什么呢,恭喜你! - -- [我希望在 Google 的第一天就知道的 10 件事](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +恭喜你! -坚持继续学习。 +继续学习。 -得到这份工作只是一个开始。 +活到老,学到老。 --- ***************************************************************************************************** ***************************************************************************************************** - 下面的内容都是可选的。这些是我的推荐,不是 Google 的。 - 通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。 + 下面的内容都是可选的。 + 通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。你将会成为一个更全面的软件工程师。 ***************************************************************************************************** ***************************************************************************************************** --- -## 附加的学习 +## 额外书籍 + + 你可以从以下的书单挑选你有兴趣的主题来研读。 + +- [UNIX环境高级编程](https://www.amazon.com/dp/013937681X) + - 老,但却很棒 +- [Linux 命令行大全](https://www.amazon.com/dp/1593273894/) + - 现代选择 +- [TCP-IP详解系列](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First 设计模式](https://www.amazon.com/gp/product/0596007124/) + - 设计模式入门介绍 +- [设计模式:可复用面向对象软件的基础](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - 也被称为“四人帮”(Gang of Four(GOF)) + - 经典设计模式书籍 +- [Linux 和 UNIX 系统管理技术手册(第五版)](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [算法设计手冊(Skiena)](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) + - 作为复习以及问题辨别 + - 这本书中算法的部分难度已经超过面试会出现的 + - 本书分为两个部分: + - 数据结构和算法课本 + - 优点: + - 跟其他算法课本一样是个很棒的复习素材 + - 包含作者以往解决工业及学术上问题的经验的故事 + - 含C语言代码示例 + - 缺点: + - 某些地方跟《算法导论》(CLRS)一样艰深,但在某些主题,算法导论或许是更好的选择。 + - 第7、8、9章有点难以消化,因为某些地方并没有解释得很清楚,或者根本上我就是个学渣 + - 别会错意了,我很喜欢 Skiena 的教学方法以及他的风格。 + - 算法目录: + - 这个部分是买这本书的最大原因 + - 我即将着手进行这部分,一旦完成这部分我会再更新上来 + - 可以在 kindle 上租 + - 解答: + - [解答](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [解答](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [勘误表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) -- ### Unicode - - [ ] [每一个软件开发者的绝对最低限度,必须要知道的关于 Unicode 和字符集知识]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [关于处理文本需要的编码和字符集, 每个程序员绝对需要知道的知识](http://kunststube.net/encoding/) +- [编程卓越之道(第一卷):深入理解计算机](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + + - 该书于2004年出版,虽然有些过时,但是对于简单了解计算机而言,这是一个了不起的资源 + - 作者发明了[高阶组合语言 HLA](https://en.wikipedia.org/wiki/High_Level_Assembly),所以提到,并且举了一些HLA的例子。里面没有用到很多,但都是很棒的组合语言的例子。 + - 这些章节值得阅读,为你提供良好的基础: + - 第2章──数字表示 + - 第3章──二进制算术和位运算 + - 第4章──浮点表示 + - 第5章──字符表示 + - 第6章──内存组织和访问 + - 第7章──组合数据类型和内存对象 + - 第9章──CPU体系结构 + - 第10章──指令集架构 + - 第11章──内存体系结构和组织 + +- [算法导论](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **重要提示**:读这本书的价值有限。本书很好地回顾了算法和数据结构,但不会教你如何编写良好的代码。你必须能够有效地编写一个不错的解决方案 + - 又称 CLR,有时是 CLRS,因为 Stein 最后才加入 -- ### 字节顺序 - - [ ] [大、小端字节序](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [大端字节 Vs 小端字节(视频)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [大、小端字节序的里里外外(Big And Little Endian Inside/Out) (视频)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - 内核开发者的讨论非常技术性,如果大多数都超出了你的理解范围,不要太担心。 - - 前半段已经足够了。 +- [计算机体系结构:量化研究方法(第6版)](https://www.amazon.com/dp/0128119055) + - 更丰富、更新(2017年),但篇幅较长 +- [编程珠矶](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - 前几章介绍了解决编程问题(非常古老,甚至还用数据磁带)的巧妙解决方案,但这只是一个介绍。这是关于程序设计和体系结构的指南 + +## 附加学习 + + 我把它们加进来是为了让你成为更全方位的软件工程师,并且留意一些技术以及算法,让你拥有更大的工具箱。 + +- ### 编译器 + + - [编译器的工作方式,约1分钟(视频)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50-编译器(视频)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C ++(视频)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [了解编译器优化(C ++)(视频)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - Yegge 的建议,从一个很早以前的亚马逊招聘信息中而来:熟悉基于 unix 的代码编辑器 + - 熟悉基于 unix 的代码编辑器 - vi(m): - [使用 vim 进行编辑 01 - 安装, 设置和模式 (视频)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM 的冒险之旅](http://vim-adventures.com/) @@ -1315,335 +1417,463 @@ - [(或许) 深度组织模式:管理结构 (视频)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix 命令行工具 - - 下列内容中的优秀工具由的 Yegge 推荐,Yegge 目前致力于 Amazon 人事招聘处。 - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### 信息资源 (视频) - - [ ] [Khan Academy 可汗学院](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] 更多有关马尔可夫的内容: - - [ ] [Core Markov Text Generation马尔可夫内容生成](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation马尔可夫内容生成补充](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through一个马尔可夫内容生成器的项目](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - 关于更多信息,请参照下方 MIT 6.050J 信息和系统复杂度的内容. + - 下列内容包含优秀工具 + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### 信息论 (视频) + - [Khan Academy 可汗学院](https://www.khanacademy.org/computing/computer-science/informationtheory) + - 更多有关马尔可夫的内容: + - [马尔可夫内容生成(Core Markov Text Generation)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation马尔可夫内容生成实现](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [一个马尔可夫内容生成器的项目(Project = Markov Text Generation Walk Through)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - 关于更多信息,请参照下方 MIT 6.050J 信息和系统复杂度的内容。 - ### 奇偶校验位 & 汉明码 (视频) - - [ ] [入门](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [奇偶校验位](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] 汉明码(Hamming Code): + - [入门](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [奇偶校验位](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - 汉明码(Hamming Code): - [发现错误](https://www.youtube.com/watch?v=1A_NcXxdoCc) - [修正错误](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [检查错误](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [检查错误](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### 系统熵值(系统复杂度) +- ### 系统熵值(Entropy) - 请参考下方视频 - 观看之前,请先确定观看了信息论的视频 - - [ ] [信息理论, 克劳德·香农, 熵值, 系统冗余, 数据比特压缩 (视频)](https://youtu.be/JnJq3Py0dyM?t=176) + - [信息理论, 克劳德·香农, 熵值, 系统冗余, 数据比特压缩 (视频)](https://youtu.be/JnJq3Py0dyM?t=176) - ### 密码学 - 请参考下方视频 - 观看之前,请先确定观看了信息论的视频 - - [ ] [可汗学院](https://www.khanacademy.org/computing/computer-science/密码学) - - [ ] [密码学: 哈希函数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [密码学: 加密](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [可汗学院](https://www.khanacademy.org/computing/computer-science/密码学) + - [密码学: 哈希函数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [密码学: 加密](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### 压缩 - 观看之前,请先确定观看了信息论的视频 - - [ ] 压缩 (视频): - - [ ] [压缩](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [压缩熵值](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [由上而下的树 (霍夫曼编码树)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [额外比特 - 霍夫曼编码树](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [优雅的压缩数据 (无损数据压缩方法)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [数据压缩的艺术](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(可选) 谷歌开发者: GZIP 还差远了呢!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### 网络 (视频) - - [ ] [可汗学院](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [网络传输协议中的数据压缩](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP 和 OSI 模型解析!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [TCP/IP 教程:传输数据包.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL 和 HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [视频](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [子网络解密 - 第五部分 经典内部域名指向 CIDR 标记](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - Computerphile (视频): + - [压缩](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [压缩熵值](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [由上而下的树 (霍夫曼编码树)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [额外比特 - 霍夫曼编码树](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [优雅的压缩数据 (无损数据压缩方法)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [数据压缩的艺术](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(可选) 谷歌开发者:GZIP 还差远了呢!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### 计算机安全 - - [MIT](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [威胁模型:入门](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [控制攻击](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [缓冲数据注入和防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [优先权区分](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [能力](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [在沙盒中运行原生代码](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [网络安全模型](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [网络安全应用](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [标志化执行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [网络安全](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [网络协议](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [旁路攻击](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### 释放缓存 - - [ ] [Java 释放缓存; 片段化数据 (视频)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) - - [ ] [编译器 (视频)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [Python 释放缓存 (视频)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [深度解析:论释放缓存在 JAVA 中的重要性](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [深度解析:论释放缓存在 Python 中的重要性(视频)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### 并行/并发编程 + - [MIT(23个视频)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [威胁模型:入门](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [控制劫持攻击](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [缓冲区溢出漏洞攻击和防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [优先权区分](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [能力](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [在沙盒中运行原生代码](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [网络安全模型](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [网络安全应用](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [标志化执行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [网络安全](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [网络协议](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [旁路攻击](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### 垃圾回收 + - [ ] [Python 中的垃圾回收 (视频)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ ] [深度解析:论垃圾回收在 JAVA 中的重要性](https://www.infoq.com/presentations/garbage-collection-benefits) + - [ ] [深度解析:论垃圾回收在 Python 中的重要性(视频)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### 并行编程 - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [论并行/并发编程如何提高 Python 执行效率 (视频)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [ ] [用于高性能并行计算的高效Python(视频)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### 设计模式 - - [ ] [UML统一建模语言概览 (视频)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] 主要有如下的设计模式: - - [ ] s(strategy) - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [第六章 (第 1 部分 ) - 设计模式 (视频)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [第六章 (第 2 部分 ) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (视频)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [第六章 (第 3 部分 ) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [视频](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First 设计模型](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - 尽管这本书叫做设计模式:重复使用模块,但是我还是认为Head First是对于新手来说很不错的书。 - - [ ] [基于实际操作对于入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips) - -- ### 信息传输, 序列化,和队列化的系统 - - [ ] [Thrift](https://thrift.apache.org/) +- ### 消息传递,序列化和队列系统 + - [Thrift](https://thrift.apache.org/) - [教程](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [协议缓冲](https://developers.google.com/protocol-buffers/) + - [协议缓冲](https://developers.google.com/protocol-buffers/) - [教程](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) + - [gRPC](http://www.grpc.io/) - [gRPC 对于JAVA开发者的入门教程(视频)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [Redis](http://redis.io/) - [教程](http://try.redis.io/) - - [ ] [Amazon的 SQS 系统 (队列)](https://aws.amazon.com/sqs/) - - [ ] [Amazon的 SNS 系统 (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [Amazon的 SQS 系统 (队列)](https://aws.amazon.com/sqs/) + - [Amazon的 SNS 系统 (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) - [入门教程](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) + - [Celery](http://www.celeryproject.org/) - [Celery入门](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) + - [ZeroMQ](http://zeromq.org/) - [入门教程](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A*搜索算法 + + - [A 搜索算法](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* 路径搜索教程(教程)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* 路径搜索(E01:算法解释)(视频)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### 快速傅里叶变换 - - [ ] [什么是傅立叶变换?论傅立叶变换的用途](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [什么是傅立叶变换? (视频)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [关于 FFT 的不同观点 (视频)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [FTT 是什么](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [傅立叶变换的交互式指南](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [什么是傅立叶变换?论傅立叶变换的用途](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [什么是傅立叶变换? (视频)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [分而治之:FFT(视频)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [FTT 是什么](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### 布隆过滤器 - - 给一个布隆过滤器m比特和k个哈希函数,所有的注入和相关测试都会是通过。 - - [布隆过滤器](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [布隆过滤器 | 数据挖掘 | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - 给定布隆过滤器m比特位和k个哈希函数,插入和成员检测都会是 O(k)。 + - [布隆过滤器(视频)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [布隆过滤器 | 数据挖掘 | Stanford University(视频)](https://www.youtube.com/watch?v=qBTdukbzc78) - [教程](http://billmill.org/bloomfilter-tutorial/) - [如何写一个布隆过滤器应用](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) +- ### HyperLogLog + - [如何仅使用1.5KB内存计算十亿个不同的对象](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### 局部敏感哈希 + - 用于确定文件的相似性 + - MD5 或 SHA 的反义词,用于确定2个文档/字符串是否完全相同 + - [Simhashing(希望如此)变得简单](http://ferd.ca/simhashing-hopefully-made-simple.html) + - ### van Emde Boas 树 - - [ ] [争论: van Emde Boas 树 (视频)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT课堂笔记](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) + - [分而治之:van Emde Boas 树 (视频)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT课堂笔记](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) -- ### 更深入的数据结构 - - [ ] [CS 61B 第 39 课: 更深入的数据结构](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) +- ### 增强数据结构 + - [CS 61B 第 39 课: 增强数据结构](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) + +- ### 平衡查找树(Balanced search trees) + - 掌握至少一种平衡查找树(并懂得如何实现): + - “在各种平衡查找树当中,AVL 树和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。这种令人特别感兴趣的数据结构,亦称伸展树(splay tree)。它可以自我管理,且会使用轮换来移除任何访问过根节点的键。” —— Skiena + - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。虽然,通过我的阅读,我发现在面试中并不会被要求实现一棵平衡查找树。但是,为了胜人一筹,我们还是应该看看如何去实现。在阅读了大量关于红黑树的代码后,我才发现伸展树的实现确实会使得各方面更为高效。 + - 伸展树:插入、查找、删除函数的实现,而如果你最终实现了红黑树,那么请尝试一下: + - 跳过删除函数,直接实现搜索和插入功能 + - 我希望能阅读到更多关于 B 树的资料,因为它也被广泛地应用到大型的数据集当中。 + - [自平衡二叉查找树](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL 树** + - 实际中:我能告诉你的是,该种树并无太多的用途,但我能看到有用的地方在哪里:AVL 树是另一种平衡查找树结构。其可支持时间复杂度为 O(log n) 的查询、插入及删除。它比红黑树严格意义上更为平衡,从而导致插入和删除更慢,但遍历却更快。正因如此,才彰显其结构的魅力。只需要构建一次,就可以在不重新构造的情况下读取,适合于实现诸如语言字典(或程序字典,如一个汇编程序或解释程序的操作码)。 + - [MIT AVL 树 / AVL 树的排序(视频)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL 树(视频)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL 树的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [分离与合并](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **伸展树** + - 实际中:伸展树一般用于缓存、内存分配者、路由器、垃圾回收者、数据压缩、ropes(字符串的一种替代品,用于存储长串的文本字符)、Windows NT(虚拟内存、网络及文件系统)等的实现。 + - [CS 61B:伸展树(Splay trees)(视频)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + - MIT 教程:伸展树(Splay trees): + - 该教程会过于学术,但请观看到最后的10分钟以确保掌握。 + - [视频](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **红黑树** + - 这些是2-3棵树的翻译(请参见下文)。 + - 实际中:红黑树提供了在最坏情况下插入操作、删除操作和查找操作的时间保证。这些时间值的保障不仅对时间敏感型应用有用,例如实时应用,还对在其他数据结构中块的构建非常有用,而这些数据结构都提供了最坏情况下的保障;例如,许多用于计算几何学的数据结构都可以基于红黑树,而目前 Linux 内核所采用的完全公平调度器(the Completely Fair Scheduler)也使用到了该种树。在 Java 8中,Collection HashMap也从原本用Linked List实现,储存特定元素的哈希码,改为用红黑树实现。 + - [Aduni —— 算法 —— 课程4(该链接直接跳到开始部分)(视频)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni —— 算法 —— 课程5(视频)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [黑树(Black Tree)](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [二分查找及红黑树的介绍](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3查找树** + - 实际中:2-3树的元素插入非常快速,但却有着查询慢的代价(因为相比较 AVL 树来说,其高度更高)。 + - 你会很少用到2-3树。这是因为,其实现过程中涉及到不同类型的节点。因此,人们更多地会选择红黑树。 + - [2-3树的直感与定义(视频)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [2-3树的二元观点](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3树(学生叙述)(视频)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4树 (亦称2-4树)** + - 实际中:对于每一棵2-4树,都有着对应的红黑树来存储同样顺序的数据元素。在2-4树上进行插入及删除操作等同于在红黑树上进行颜色翻转及轮换。这使得2-4树成为一种用于掌握红黑树背后逻辑的重要工具。这就是为什么许多算法引导文章都会在介绍红黑树之前,先介绍2-4树,尽管**2-4树在实际中并不经常使用**。 + - [CS 61B Lecture 26:平衡查找树(视频)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [自底向上的2-4树(视频)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [自顶向下的2-4树(视频)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N 叉树(K 叉树、M 叉树)** + - 注意:N 或 K 指的是分支系数(即树的最大分支数): + - 二叉树是一种分支系数为2的树 + - 2-3树是一种分支系数为3的树 + - [K 叉树](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B 树** + - 有趣的是:为啥叫 B 仍然是一个神秘。因为 B 可代表波音(Boeing)、平衡(Balanced)或 Bayer(联合创造者) + - 实际中:B 树会被广泛适用于数据库中,而现代大多数的文件系统都会使用到这种树(或变种)。除了运用在数据库中,B 树也会被用于文件系统以快速访问一个文件的任意块。但存在着一个基本的问题,那就是如何将文件块 i 转换成一个硬盘块(或一个柱面-磁头-扇区)上的地址。 + - [B 树](https://en.wikipedia.org/wiki/B-tree) + - [B 树数据结构](http://btechsmartclass.com/data_structures/b-trees.html) + - [B 树的介绍(视频)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B 树的定义及其插入操作(视频)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B 树的删除操作(视频)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 —— 内存层次模块(Memory Hierarchy Models)(视频)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - 覆盖有高速缓存参数无关型(cache-oblivious)B 树和非常有趣的数据结构 + - 头37分钟讲述的很专业,或许可以跳过(B 指块的大小、即缓存行的大小) + +- ### k-D树 + - 非常适合在矩形或更高维度的对象中查找点数 + - 最适合k近邻 + - [Kd树(视频)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d树算法(视频)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### 跳表 - "有一种非常迷幻的数据类型" - Skiena - - [ ] [随机化: 跳表 (视频)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [更生动详细的解释](https://en.wikipedia.org/wiki/Skip_list) + - [随机化: 跳表 (视频)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [更生动详细的解释](https://en.wikipedia.org/wiki/Skip_list) - ### 网络流 - - [ ] [5分钟简析Ford-Fulkerson (视频)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson 算法 (视频)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [网络流 (视频)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [5分钟简析 Ford-Fulkerson──一步步示例 (视频)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Ford-Fulkerson 算法 (视频)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [网络流 (视频)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### 不相交集 & 联合查找 - - [ ] [不相交集](https://en.wikipedia.org/wiki/Disjoint-set_data_structure) - - [ ] [UCB 61B - 不相交集; 排序 & 选择(视频)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] Coursera (not needed since the above video explains it great): - - [ ] [概览](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [初级实践](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [树状结构](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [合并树状结构](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [路径压缩](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [分析选项](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- ### 快速处理数学 - - [ ] [整数运算, Karatsuba 乘法 (视频)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [中国剩余定理 (在密码学中的使用) (视频)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [UCB 61B - 不相交集;排序 & 选择(视频)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) + - [Sedgewick算法──Union-Find(6视频)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### 快速处理的数学 + - [整数运算, Karatsuba 乘法 (视频)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [中国剩余定理 (在密码学中的使用) (视频)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### 树堆 (Treap) - 一个二叉搜索树和一个堆的组合 - - [ ] [树堆](https://en.wikipedia.org/wiki/Treap) - - [ ] [数据结构:树堆的讲解(video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [集合操作的应用(Applications in set operations)](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [树堆](https://en.wikipedia.org/wiki/Treap) + - [数据结构:树堆的讲解(视频)](https://www.youtube.com/watch?v=6podLUYinH8) + - [集合操作的应用(Applications in set operations)](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### 线性规划(Linear Programming)(视频) - - [ ] [线性规划](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [寻找最小成本](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [寻找最大值](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [线性规划](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [寻找最小成本](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [寻找最大值](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [用 Python 解决线性方程式──单纯形算法](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### 几何:凸包(Geometry, Convex hull)(视频) - - [ ] [Graph Alg. IV: 几何算法介绍 - 第 9 课](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Graham & Jarvis: 几何算法 - 第 10 课](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: 凸包, 中值查找](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [Graph Alg. IV: 几何算法介绍 - 第 9 课](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Graham & Jarvis: 几何算法 - 第 10 课](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [分而治之: 凸包, 中值查找](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### 离散数学 - - 查看下面的视频:(这里没看到视频= =) + - 查看下面的视频 - ### 机器学习(Machine Learning) - - [ ] 为什么学习机器学习? - - [ ] [谷歌如何将自己改造成一家「机器学习优先」公司?](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [智能计算机系统的大规模深度学习 (视频)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Peter Norvig:深度学习和理解与软件工程和验证的对比](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [谷歌云机器学习工具(视频)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [谷歌开发者机器学习清单 (Scikit Learn 和 Tensorflow) (视频)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (视频)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow 教程](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Python 实现神经网络实例教程(使用 Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - 为什么学习机器学习? + - [谷歌如何将自己改造成一家「机器学习优先」公司?](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [智能计算机系统的大规模深度学习 (视频)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Peter Norvig:深度学习和理解与软件工程和验证的对比](https://www.youtube.com/watch?v=X769cyzBNVw) + - [谷歌云机器学习工具(视频)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [谷歌开发者机器学习清单 (Scikit Learn 和 Tensorflow) (视频)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (视频)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow 教程](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Python 实现神经网络实例教程(使用 Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - 课程: - - [ ] [很棒的初级课程:机器学习](https://www.coursera.org/learn/machine-learning) - - [视频教程](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - 看第 12-18 集复习线性代数(第 14 集和第 15 集是重复的) - - [ ] [机器学习中的神经网络](https://www.coursera.org/learn/neural-networks) - - [ ] [Google 深度学习微学位](https://www.udacity.com/course/deep-learning--ud730) - - [ ] [Google/Kaggle 机器学习工程师微学位](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [ ] [无人驾驶工程师微学位](https://www.udacity.com/drive) - - [ ] [Metis 在线课程 (两个月 99 美元)](http://www.thisismetis.com/explore-data-science) + - [很棒的初级课程:机器学习](https://www.coursera.org/learn/machine-learning) + - [视频教程](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - 看第 12-18 集复习线性代数(第 14 集和第 15 集是重复的) + - [机器学习中的神经网络](https://www.coursera.org/learn/neural-networks) + - [Google 深度学习微学位](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle 机器学习工程师微学位](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [无人驾驶工程师微学位](https://www.udacity.com/drive) + - [Metis 在线课程 (两个月 99 美元)](http://www.thisismetis.com/explore-data-science) - 资源: - - 书籍: Data Science from Scratch: First Principles with Python: https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X - - 网站: Data School: http://www.dataschool.io/ - -- ### Go 语言 - - [ ] 视频: - - [ ] [为什么学习 Go 语言?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go 语言编程](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [Go 语言之旅](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] 书籍: - - [ ] [Go 语言编程入门 (免费在线阅读)](https://www.golang-book.com/books/intro) - - [ ] [Go 语言圣经 (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - - [ ] [Go 语言新手训练营](https://www.golang-book.com/guides/bootcamp) + - 书籍: + - [Python 机器学习](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Python 机器学习简介](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [软件工程师的机器学习](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School:http://www.dataschool.io/ -- ## 一些主题的额外内容 - + 我为前面提到的某些主题增加了一些额外的内容,之所以没有直接添加到前面,是因为这样很容易导致某个主题内容过多。毕竟你想在本世纪找到一份工作,对吧? -- [ ] **动态规划的更多内容** (视频) - - [ ] [6.006: 动态规划 I: 斐波那契数列, 最短路径](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: 动态规划 II: 文本匹配, 二十一点/黑杰克](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: 动态规划 III: 最优加括号方式, 最小编辑距离, 背包问题](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: 动态规划 IV: 吉他指法,拓扑,超级马里奥.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: 动态规划: 动态规划进阶](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: 动态规划: 所有点对最短路径](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: 动态规划: 更多示例](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **图形处理进阶** (视频) - - [ ] [异步分布式算法: 对称性破缺,最小生成树](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [异步分布式算法: 最小生成树](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **概率论** (mathy, and go slowly, which is good for mathy things) (视频): - - [ ] [MIT 6.042J - 概率论概述](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 条件概率 Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 独立](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 随机变量](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - 期望 I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 期望 II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 大偏差](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 随机游走](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: 近似算法 (视频)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- SOLID + + - [ ] [Bob Martin SOLID面向对象和敏捷设计的原理(视频)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S ── [单一责任原则](http://www.oodesign.com/single-responsibility-principle.html) | [对每个对象的单一责任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [更多](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O ── [开放/封闭原则](http://www.oodesign.com/open-close-principle.html) | [在生产级别上,可以扩展对象,但不能修改对象](https://en.wikipedia.org/wiki/Open/closed_principle) + - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L ── [Liskov 替换原则](http://www.oodesign.com/liskov-s-substitution-principle.html) | [基本类别和派生类别遵循“IS A”原则](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I ── [接口隔离原理](http://www.oodesign.com/interface-segregation-principle.html) | 不应强迫客户端实现不使用的接口 + - [5分钟了解接口隔离原理(视频)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D ── [依赖倒置原理](http://www.oodesign.com/dependency-inversion-principle.html) | 减少对象组合中的依赖性。 + - [依赖倒置原理为何如此重要?](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- Union-Find + - [概览](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [初级实践](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [树状结构](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [合并树状结构](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [路径压缩](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [分析选项](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **动态规划的更多内容** (视频) + - [6.006: 动态规划 I: 斐波那契数列, 最短路径](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: 动态规划 II: 文本匹配, 二十一点/黑杰克](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: 动态规划 III: 最优加括号方式, 最小编辑距离, 背包问题](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: 动态规划 IV: 吉他指法,拓扑,超级马里奥.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: 动态规划: 动态规划进阶](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: 动态规划: 所有点对最短路径](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: 动态规划: 更多示例](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **图形处理进阶** (视频) + - [异步分布式算法: 对称性破缺,最小生成树](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [异步分布式算法: 最小生成树](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **概率论** (过于数学,进度缓慢,但这对于数学的东西却是必要之恶) (视频): + - [MIT 6.042J - 概率论概述](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - 条件概率 Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - 独立](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - 随机变量](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - 期望 I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - 期望 II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - 大偏差](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - 随机游走](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: 近似算法 (视频)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **字符串匹配** + + - Rabin-Karp(视频) + - [Rabin Karps 算法](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [预计算](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [优化:实施和分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [表翻倍,Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [滚动哈希,摊销分析](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [Knuth-Morris-Pratt(KMP)字符串匹配算法](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore 字符串搜索算法 + - [Boyer–Moore 字符串搜索算法](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [高级字符串搜索Boyer-Moore-Horspool算法(视频)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera:字符串算法](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - 刚开始时很棒,但是当它超过 KMP 时,它变得比需要复杂得多 + - 很好的字典树解释 + - 可以跳过 + +- **排序** + + - 斯坦福大学关于排序算法的视频: + - [课程 15 | 编程抽象(视频)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [课程 16 | 编程抽象(视频)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + + - Shai Simonson 视频,[Aduni.org](http://www.aduni.org/): + - [算法 - 排序 - 第二讲(视频)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [算法 - 排序2 - 第三讲(视频)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + + - Steven Skiena 关于排序的视频: + - [课程从 26:46 开始(视频)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [课程从 27:40 开始(视频)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [课程从 35:00 开始(视频)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [课程从 23:50 开始(视频)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## 视频系列 - 坐下来享受一下吧。"netflix and skill" :P + 坐下来享受一下吧。"netflix 和技能" :P + +- [个人的动态规划问题列表 (都是短视频)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [ ] [个人的动态规划问题列表 (都是短视频哟)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [x86 架构,汇编,应用程序 (11 个视频)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [x86 架构,汇编,应用程序 (11 个视频)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [MIT 18.06 线性代数,2005 年春季 (35 个视频)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] [MIT 18.06 线性代数,2005 年春季 (35 个视频)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [绝妙的 MIT 微积分:单变量微积分](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [绝妙的 MIT 微积分:单变量微积分](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [计算机科学 70, 001 - 2015 年春季 - 离散数学和概率理论](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) -- [ ] [计算机科学 70, 001 - 2015 年春季 - 离散数学和概率理论](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [离散数学 (19 个视频)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [ ] [离散数学 (19 个视频)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [离散数学(第一部分),Sarada Herke (5个视频)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- [ ] CSE373 - 算法分析 (25 个视频) +- CSE373 - 算法分析 (25 个视频) - [Skiena 的算法设计手册讲座](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [ ] [UC Berkeley 61B (2014 年春季): 数据结构 (25 个视频)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (2014 年春季): 数据结构 (25 个视频)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [UC Berkeley 61B (2006 年秋季): 数据结构 (39 个视频)]( https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (2006 年秋季): 数据结构 (39 个视频)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) -- [ ] [UC Berkeley 61C: 计算机结构 (26 个视频)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C:计算机结构 (26 个视频)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [OOSE: 使用 UML 和 Java 进行软件开发 (21 个视频)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE:使用 UML 和 Java 进行软件开发 (21 个视频)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] [UC Berkeley CS 152: 计算机结构和工程 (20 个视频)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- [UC Berkeley CS 152: 计算机结构和工程 (20 个视频)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) -- [ ] [MIT 6.004: 计算结构 (49 视频)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.004: 计算结构 (49 视频)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- [ ] [卡內基梅隆大学 - 计算机架构讲座 (39 个视频)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [卡內基梅隆大学 - 计算机架构讲座 (39 个视频)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT 6.006: 算法介绍 (47 个视频)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006:算法介绍 (47 个视频)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [ ] [MIT 6.033: 计算机系统工程 (22 个视频)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033:计算机系统工程 (22 个视频)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT 6.034 人工智能, 2010 年秋季 (30 个视频)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034:人工智能,2010 年秋季 (30 个视频)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT 6.042J: 计算机科学数学, 2010 年秋季 (25 个视频)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J:计算机科学数学, 2010 年秋季 (25 个视频)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.046: 算法设计与分析 (34 个视频)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046:算法设计与分析 (34 个视频)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT 6.050J: 信息和熵, 2008 年春季 (19 个视频)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J:信息和熵, 2008 年春季 (19 个视频)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [ ] [MIT 6.851: 高等数据结构 (22 个视频)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851:高等数据结构 (22 个视频)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.854: 高等算法, 2016 年春季 (24 个视频)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: 高等算法, 2016 年春季 (24 个视频)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [MIT 6.858计算机系统安全, 2014 年秋季](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [Harvard COMPSCI 224:高级算法(25个视频)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] 斯坦福: 编程范例 (17 个视频) - - [C 和 C++ 课程](https://www.youtube.com/watch?v=jTSvthW34GU&list=PLC0B8B318B7394B6F&nohtml5=False) +- [MIT 6.858:计算机系统安全, 2014 年秋季](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [密码学导论](https://www.youtube.com/watch?v=2aHkqB2-46k&feature=youtu.be) - - [本系列更多内容 (不分先后顺序)](https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg) +- [斯坦福: 编程范例 (27 个视频)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) -- [ ] [大数据 - 斯坦福大学 (94 个视频)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [密码学导论,Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [课程网站以及幻灯片和问题集](http://www.crypto-textbook.com/) + +- [大数据 - 斯坦福大学 (94 个视频)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [图论,Sarada Herke(67个视频)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## 计算机科学课程 -- [ 在线 CS 课程目录 ](https://github.com/open-source-society/computer-science) +- [在线 CS 课程目录](https://github.com/open-source-society/computer-science) - [CS 课程目录 (一些是在线讲座)](https://github.com/prakhar1989/awesome-courses) + +## 论文 + +- [喜欢经典的论文?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: 通信顺序处理](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go 实现](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google 文件系统](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 年被 Colossus 取代了 +- [2004: MapReduce: Simplified Data Processing on Large Clusters](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - 大多被云数据流取代了? +- [2006年:Bigtable:结构化数据的分布式存储系统](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [深入了解Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006年:针对松散耦合的分布式系统的Chubby Lock服务](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007年:Dynamo:亚马逊的高可用键值存储](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Dynamo论文启动了NoSQL革命 +- [2007: 每个程序员都应该知道的内存知识 (非常长,作者建议跳过某些章节来阅读)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010年:Dapper,一个大型分布式系统跟踪基础结构](https://research.google.com/pubs/archive/36356.pdf) +- [2010年:Dremel:Web规模数据集的交互式分析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google 的 Colossus](https://www.wired.com/2012/07/google-colossus/) + - 没有论文 +- 2012: AddressSanitizer: 快速的内存访问检查器: + - [论文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [视频](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google 的分布式数据库: + - [论文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [视频](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: 大规模高可用: 构建 Google Ads 的数据基础设施](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: 异构分布式系统上的大规模机器学习](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: 开发者应该如何搜索代码:用例学习](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + +## LICENSE + +[CC-BY-SA-4.0](https://github.com/jwasham/coding-interview-university/blob/master/LICENSE.txt) From f27e4edbc33225a3db79d3d25e9fc8285af134c2 Mon Sep 17 00:00:00 2001 From: qiwihui Date: Sat, 31 Oct 2020 01:09:51 +0800 Subject: [PATCH 169/857] dcos: fix some toc links in Chinese translation --- translations/README-cn.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index f3ccbd61a7..4b185f1851 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -79,8 +79,8 @@ - [字典树(Tries)](#字典树tries) - [浮点数](#浮点数) - [Unicode](#unicode) - - [字节顺序](#字节顺序) - - [网络](#网络) + - [字节顺序](#字节序Endianness) + - [网络](#网络视频) - [系统设计、可伸缩性、数据处理](#系统设计可伸缩性数据处理)(如果你有4+年经验) - [终面](#终面) - [编程问题练习](#编程问题练习) @@ -106,14 +106,14 @@ - [计算机安全](#计算机安全) - [垃圾回收](#垃圾回收) - [并行编程](#并行编程) - - [消息传递,序列化和队列化的系统](#消息传递-序列化和队列系统) - - [A*搜索算法](#A*搜索算法) + - [消息传递,序列化和队列化的系统](#消息传递序列化和队列系统) + - [A*搜索算法](#A搜索算法) - [快速傅里叶变换](#快速傅里叶变换) - [布隆过滤器](#布隆过滤器) - [HyperLogLog](#HyperLogLog) - [局部敏感哈希](#局部敏感哈希) - [van Emde Boas 树](#van-emde-boas-树) - - [更深入的数据结构](#更深入的数据结构) + - [增强数据结构](#增强数据结构) - [平衡查找树](#平衡查找树balanced-search-trees) - AVL 树 - 伸缩树(Splay tree) @@ -1015,7 +1015,7 @@ - 对于内核开发非常具有技术性,如果大多数的内容听不懂也没关系。 - 前半部就已经足够了。 -- ### 网络 (视频) +- ### 网络(视频) - **如果你具有网络经验或想成为可靠性工程师或运维工程师,期待你的问题** - 知道这些有益无害,多多益善! - [ ] [可汗学院](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) From bd0a82c3c8375c0d2d893148c3a17216250bce45 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 3 Nov 2020 06:02:41 -0600 Subject: [PATCH 170/857] Update README-kh.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translated ពត៌មានលំអិតបន្ថែមលើមុខវិជ្ជាមួយចំនួន --- translations/README-kh.md | 1074 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1074 insertions(+) diff --git a/translations/README-kh.md b/translations/README-kh.md index dcbee57472..f5146000d6 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -928,3 +928,1077 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [DP vs. recursive implementation (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [Global pairwise sequence alignment (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (វីដេអូ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (វីដេអូ)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] គោលការណ៍ SOLID OOP: [គោលការណ៍ SOLID (វីដេអូ)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Design patterns + - [ ] [ការពិនិត្យ Quick UML (វីដេអូ)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] រៀនគំរូទាំងនេះ: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [ជំពូកទី ៦ (ភាគ ១) - Patterns (វីដេអូ)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [ជំពូកទី ៦ (ភាគ ២) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (វីដេអូ)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [ជំពូកទី ៦ (ភាគ ៣) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [ស៊េរីវីដេអូ (២៧ វីដេអូ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - ខ្ញុំដឹងថាសៀវភៅបទបញ្ញត្តិគឺ“ លំនាំរចនា៖ ធាតុផ្សំនៃកម្មវិធីដែលអាចប្រើឡើងវិញបាន” ប៉ុន្តែក្បាលទីមួយគឺល្អសម្រាប់អ្នកចាប់ផ្តើមដំបូង Object-Oriented ។ + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns សម្រាប់មនុស្ស](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + +- ### Combinatorics (n choose k) & Probability + - [ ] [ជំនាញគណិតវិទ្យា៖ វិធីស្វែងរក Factorial, Permutation និង Combination (ជ្រើសរើស) (វីដេអូ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (វីដេអូ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: បន្ថែមលេី Probability និង Markov Chains (វីដេអូ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - ប្លង់វគ្គសិក្សា: + - [ ] [ទ្រឹស្តីប្រូបាបដំបូង](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - គ្រាន់តែវីដេអូ - ៤១ (វីដេអូនីមួយៗមានលក្ខណៈសាមញ្ញហើយវីដេអូនីមួយៗខ្លី)៖ + - [ ] [ពន្យល់អំពីប្រូបាប (វីដេអូ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - In an OS, how it works? + - Can be gleaned from Operating System videos + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for 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/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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 + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. + + +## Once you're closer to the interview + +- Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## Your Resume + +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed + + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book + - About to get to this part. Will update here once I've made my way through it + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - See videos below + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects +## ពត៌មានលំអិតបន្ថែមលើមុខវិជ្ជាមួយចំនួន + + ខ្ញុំបានបន្ថែមគំនិតទាំងនេះដើម្បីពង្រឹងគំនិតមួយចំនួនដែលបានបង្ហាញខាងលើប៉ុន្តែខ្ញុំមិនចង់បញ្ចូលវាខាងលើព្រោះវាច្រើនពេក។ វាងាយស្រួលក្នុងការធ្វើឱ្យវាហួសប្រមាណលើប្រធានបទ។ + អ្នកចង់ទទួលបានការងារនៅសតវត្សនេះមែនទេ? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (វីដេអូ)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [ប្រភេទផ្សេងទៀត](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [ប្រភេទផ្សេងទៀត](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [ប្រភេទផ្សេងទៀត](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [គោលការណ៍នៃ Interface Segregation ក្នុងរយៈពេល 5 នាទី (វីដេអូ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [ប្រភេទផ្សេងទៀត](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [ហេតុអ្វីបានជា The Dependency Inversion Principle និងហេតុអ្វីវាសំខាន់](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [ប្រភេទផ្សេងទៀត](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (វីដេអូ) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (វីដេអូ) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** ប្រូបាប (គណិតវិទ្យា បងៀនយឹតល្អ) (វីដេអូ): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (វីដេអូ): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (វីដេអូ)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms អំពី Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - ចាប់ផ្តើមល្អ ប៉ុន្តែដល់ពេលហួស KMP វាកាន់តែស្មុគស្មាញ + - ការពន្យល់ដ៏ល្អនៃការព្យាយាម + - អាចរំលងបាន + +- **Sorting** + + - Stanford lectures on sorting: + - [មេរៀនទី 15 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [មេរៀនទី 16 | Programming Abstractions (វីដេអូ)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - មេរៀនទី 2 (វីដេអូ)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - មេរៀនទី 3 (វីដេអូ)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - ការបង្រៀនរបស់ Steven Skiena អំពី sorting: + - [មេរៀនចាប់ផ្តេីមពី 26:46 (វីដេអូ)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [មេរៀនចាប់ផ្តេីមពី 27:40 (វីដេអូ)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [មេរៀនចាប់ផ្តេីមពី 35:00 (វីដេអូ)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [មេរៀនចាប់ផ្តេីមពី 23:50 (វីដេអូ)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series +## ស៊េរីវីដេអូ + +រីករាយជាមួយវិដេអូរខាងក្រោម + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 វីដេអូ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 វីដេអូ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + +- [Discrete Mathematics ដោយ Shai Simonson (19 វីដេអូ)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [Discrete Mathematics Part 1 by Sarada Herke (5 វីដេអូ)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- CSE373 - Analysis of Algorithms (25 វីដេអូ) + - [ការបង្រៀនរបស់ Skiena ពី Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 វីដេអូ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 វីដេអូ)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 វីដេអូ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 វីដេអូ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 វីដេអូ)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 វីដេអូ)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 វីដេអូ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 វីដេអូ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 វីដេអូ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 វីដេអូ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 វីដេអូ)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 វីដេអូ)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.851: Advanced Data Structures (22 វីដេអូ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 វីដេអូ)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 វីដេអូ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 វីដេអូ)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 វីដេអូ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 វីដេអូ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses +## វគ្គសិក្សាវិទ្យាសាស្ត្រកុំព្យូទ័រ + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (ភាគច្រើនជាមួយការបង្រៀនតាមអ៊ិនធរណេត)](https://github.com/prakhar1989/awesome-courses) + +## Papers +## អត្ថបទ + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - ជំនួសដោយ Colossus ក្នុងឆ្នាំ 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - ជំនួសដោយ Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - អត្ថបទ Dynamo ចាប់ផ្តេីមអោយមាន NoSQL +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - មិនមាន អត្ថបទ +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [អត្ថបទ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [វីដេអូ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [អត្ថបទ](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [វីដេអូ](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE +## សាលាកប័រត + +[CC-BY-SA-4.0](./LICENSE.txt) From 3c2d4ad1df9a0b764a1b69b3a35409acd173f81b Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 3 Nov 2020 07:07:37 -0600 Subject: [PATCH 171/857] Update README-kh.md Translated Processes and Threads --- translations/README-kh.md | 186 +++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 94 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index f5146000d6..2800f086ad 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -972,64 +972,63 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - គ្រាន់តែវីដេអូ - ៤១ (វីដេអូនីមួយៗមានលក្ខណៈសាមញ្ញហើយវីដេអូនីមួយៗខ្លី)៖ - [ ] [ពន្យល់អំពីប្រូបាប (វីដេអូ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) +- ### NP, NP-Complete និង Approximation Algorithms + - ដឹងពីបញ្ហាល្បីរបស់ NP-complete, ដូចជាអ្នកលក់ធ្វើដំណើរ និង បញ្ហា knapsack, ហើយអាចស្គាល់ពួកគេនៅពេលអ្នកសម្ភាសសួរអ្នកដោយក្លែងបន្លំ។. + - ដឹងថាអ្វីជា NP-complete. + - [ ] [Computational Complexity (វីដេអូ)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [Greedy Algs. II & Intro to NP Completeness (វីដេអូ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (វីដេអូ)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (វីដេអូ)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (វីដេអូ)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [ ] [CSE373 2012 - មេរៀនទី 23 - Introduction to NP-Completeness (វីដេអូ)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - មេរៀនទី 24 - NP-Completeness Proofs (វីដេអូ)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - មេរៀនទី 25 - NP-Completeness Challenge (វីដេអូ)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (វីដេអូ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (វីដេអូ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (វីដេអូ)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig ពិភាក្សាអំពីដំណោះស្រាយដែលល្អប្រសើរបំផុតចំពោះបញ្ហាអ្នកលក់ធ្វើដំណើរ៖ - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. + - ទំព័រ 1048 - 1140 ក្នុង CLRS ប្រសិនបើអ្នកមានវា. - ### Caches - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (វីដេអូ)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (វីដេអូ)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (វីដេអូ)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] [MIT 6.004 L15: The Memory Hierarchy (វីដេអូ)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (វីដេអូ)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: + - [ ] Computer Science 162 - Operating Systems (25 វីដេអូ): + - សំរាប់ processes និង threads សូមមេីល វីដេអូ 1-11 + - [Operating Systems and System Programming (វីដេអូ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [តេី Process និង Thread ខុសគ្នាដូចម្តេច?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - មាន: - Processes, Threads, Concurrency issues - - Difference between processes and threads + - តេី Process និង Thread ខុសគ្នាដូចម្តេច - Processes - Threads - Locks - Mutexes - Semaphores - Monitors - - How they work? + - តើពួកគេធ្វើការយ៉ាងដូចម្តេច? - Deadlock - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Paging, segmentation and virtual memory (វីដេអូ)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (វីដេអូ)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - How context switching is initiated by the operating system and underlying hardware? - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): + - [ ] [threads in C++ (series - 10 វីដេអូ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency ក្នុង Python (វីដេអូ): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -1696,114 +1695,113 @@ You're never really done. - **2-3 search trees** - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + 2-3 trees មានការបញ្ចូលលឿនជាងមុននៅក្នុងការចំណាយនៃការស្វែងរកយឺត (ដោយសារកំពស់ខ្ពស់ជាងបេីប្រៀបទៅ AVL trees). + - អ្នកអាចនឹងកំរប្រេី 2-3 tree ដោយសារតែការអនុវត្តរបស់វាទាក់ទងនឹងប្រភេទផ្សេងៗគ្នានៃថ្នាំង. ជំនួសវិញយេីងប្រេី Red Black trees. + - [23-Tree Intuition និង និយមន័យ (វីដេអូ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [2-3 Trees (student recitation) (វីដេអូ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - ក្នុងការអនុវត្ត៖ + សម្រាប់រាល់ 2-4 tree, វាមាន red–black trees ជាមួយ data elements ដែលមានលំដាប់ដូចគ្នា. ការបញ្ចូលនិងការលុប + ប្រតិបត្ដិការនៅលើដើមឈើ 2-4 គឺស្មើទៅនឹងត្រឡប់ពណ៌និងការបង្វិលនៅក្នុងដើមឈើខ្មៅក្រហម. នេះធ្វើឱ្យដើមឈើ 2-4 ដើម + ឧបករណ៍សំខាន់សម្រាប់ការស្វែងយល់ពីតក្កវិជ្ជានៅពីក្រោយដើមឈើក្រហម - ក្រហមហើយនេះជាមូលហេតុដែលអត្ថបទណែនាំជាច្រើននៃក្បួនដោះស្រាយណែនាំ + ដើមឈើ ២-៤ ដើមមុនដើមឈើក្រហម - ក្រហមទោះបី ** ដើមឈើ ២-៤ ក៏មិនត្រូវបានប្រើក្នុងការអនុវត្តជាក់ស្តែងដែរ ** ។ + - [CS 61B មេរៀនទី 26: Balanced Search Trees (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (វីដេអូ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (វីដេអូ)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary + - ចំណាំ: the N ឬ K ជា branching factor (max branches) + - binary trees គឺជា 2-ary tree មួយ, ដែលមាន branching factor = 2 + - 2-3 trees គឺជា 3-ary - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address + - ការពិត: វាជាអាថ៌កំបាំង, តែ B អាចជា Boeing, Balanced, ឬ Bayer (co-inventor). + - ក្នុងការអនុវត្ត: + B-Trees ត្រូវបានប្រើយ៉ាងទូលំទូលាយនៅក្នុង databases. filesystems ទំនើបបំផុតភាគច្រេីនប្រេី B-trees (ឬ Variants). បន្ថែមពីលើ + ការប្រើប្រាស់របស់វានៅក្នុង databases, B-tree ក៏ត្រូវបានប្រើនៅក្នុង filesystems ដើម្បីអនុញ្ញាតឱ្យចូលទៅកាន់ quick random access ទៅ arbitrary + block មួយ ក្នុងឯកសារជាក់លាក់មួយ. បញ្ហាមូលដ្ឋានគឺការប្រែក្លាយបណ្តុំឯកសារអាយទៅជាប្លុកឌីស (ឬ ប្រហែលជាអាសយដ្ឋាន cylinder-head-sector) - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [សេចក្តីផ្តើមទៅ B-Trees (វីដេអូ)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [និយមន័យ B-Tree និង Insertion (វីដេអូ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ការលុប B-Tree (វីដេអូ)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (វីដេអូ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - រៀនពី cache-oblivious B-Trees, data structures + - ៣៧ នាទីដំបូងគឺបច្ចេកទេសហើយប្រហែលជាអាចរំលងចោល (B is block size, cache line size) - ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object - - A good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - ល្អសម្រាប់ការស្វែងរកចំនួនចំនុចក្នុងចតុកោណកែងឬវត្ថុវិមាត្រខ្ពស់ + - ល្អសំរាប់ k-nearest neighbors + - [Kd Trees (វីដេអូ)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (វីដេអូ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - [Randomization: Skip Lists (វីដេអូ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [សម្រាប់ចលនានិងលម្អិតបន្ថែមទៀត](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (វីដេអូ)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (វីដេអូ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (វីដេអូ)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [UCB 61B - Disjoint Sets; Sorting & selection (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (វីដេអូ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (ប្រេីក្នុង cryptography) (វីដេអូ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - - Combination of a binary search tree and a heap + - ការរួមបញ្ចូលគ្នានៃ binary search tree និង a heap - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Data Structures: Treaps explained (វីដេអូ)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Linear Programming (វីដេអូ) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) - - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) +- ### Geometry, Convex hull (វីដេអូ) + - [Graph Alg. IV: Intro to geometric algorithms - មេរៀនទី 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - មេរៀនទី 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - See videos below + - សូមមើលវីដេអូខាងក្រោម - ### Machine Learning - - Why ML? - - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - ហេតុអ្វី ML? + - [Google ធ្វេីខ្លួនជាក្រុមហ៊ុន Machine Learning ](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (វីដេអូ)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification ដោយ Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (វីដេអូ)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (វីដេអូ)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (វីដេអូ)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - វគ្គសិក្សា: + - [វគ្គចាប់ផ្តើមដ៏អស្ចារ្យ: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [វីដេអូ](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - មេីលវីដេអូ 12-18 សំរាប់ linear algebra (14 និង 15 ដូចគ្នា) - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: + - [Metis Online Course ($99 សំរាប់ 2 ខែ)](http://www.thisismetis.com/explore-data-science) + - ធនធាន: + - សៀវភៅ: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - [Machine Learning សម្រាប់វិស្វករ Software](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - Data School: http://www.dataschool.io/ --- From ce5152cf4d62f0ad32dd1f15e10ef4b1e4155a8f Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Thu, 5 Nov 2020 06:47:53 -0600 Subject: [PATCH 172/857] Update README-kh.md Translated Scalability --- translations/README-kh.md | 150 +++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 77 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 2800f086ad..08dacebf83 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1039,56 +1039,55 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - ### Testing - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - តេី unit testing ដំណេីរការយ៉ាងដូចម្តេច ? + - អ្វីជា mock objects ? + - អ្វីជា integration testing ? + - អ្វីជា dependency injection ? + - [ ] [Agile Software Testing with James Bach (វីដេអូ)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (វីដេអូ)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (វីដេអូ)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [slides](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - In an OS, how it works? - - Can be gleaned from Operating System videos +- ### Scheduling (ការរៀបចំកាលវិភាគ) + - នៅក្នុង OS, តេីវាដំណេីរការយ៉ាងដូចម្តេច ? + - អាចប្រមូលបាន Operating System videos - ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [Sedgewick - Suffix Arrays (វីដេអូ)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (វីដេអូ)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [Search pattern in text (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + ប្រសិនបើអ្នកត្រូវការព័ត៌មានលម្អិតបន្ថែមលើប្រធានបទនេះសូមមើលផ្នែក [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path - - I read through code, but will not implement - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - ចំណាំ មានការ Tries ផ្សេងៗគ្នា។ អ្នកខ្លះមានprefixes អ្នកខ្លះមិនមាន ហើយអ្នកខ្លះប្រើstring ជំនួសឱ្យbits ដើម្បីតាមដានផ្លូវ + - ខ្ញុំបានអានកូដប៉ុន្តែនឹងមិនអនុវត្តឡើយ + - [ ] [Sedgewick - Tries (3 វីដេអូ)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] វីដេអូខ្លីៗ: + - [ ] [Introduction To Tries (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Stanford Lecture (real world use case) (វីដេអូ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (វីដេអូ)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (វីដេអូ - មានកំហុសក្នុងការគណនា - សូមមើលការពិពណ៌នាជាវីដេអូ)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (វីដេអូ)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) @@ -1096,36 +1095,35 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - ### Endianness - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. - -- ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - Otherwise, this is just good to know + - [ ] [Big Endian Vs Little Endian (វីដេអូ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (វីដេអូ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - និយាយបច្ចេកទេសខ្លាំងណាស់សម្រាប់ kernel devs. កុំបារម្ភប្រសិនបេីមិនយល់ទាំងស្រុង + - ពាក់កណ្តាលទីមួយគឺគ្រប់គ្រាន់ហើយ + +- ### Networking (បណ្តាញ) + - ** ប្រសិនបើអ្នកមានបទពិសោធបណ្តាញឬចង់ក្លាយជាវិស្វករដែលអាចជឿជាក់បានឬវិស្វករប្រតិបត្តិការរំពឹងថានឹងមានសំណួរ ** + - បើមិនដូច្នោះទេនេះគ្រាន់តែជាការល្អដើម្បីដឹង - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) - - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [UDP and TCP: Comparison of Transport Protocols (វីដេអូ)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (វីដេអូ)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (វីដេអូ)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (វីដេអូ)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (វីដេអូ)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (វីដេអូ)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (វីដេអូ)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 វីដេអូ) (វីដេអូ)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (វីដេអូ)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [ ] [Java - Sockets - Introduction (វីដេអូ)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (វីដេអូ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## System Design, Scalability, Data Handling -**You can expect system design questions if you have 4+ years of experience.** +** អ្នកអាចរំពឹងថានឹងមានសំណួររចនាប្រព័ន្ធប្រសិនបើអ្នកមានបទពិសោធ 4+ ឆ្នាំ។ ** -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: +- Scalability និង System Designគឺជាប្រធានបទដែលមានប្រធានបទជាច្រេីន និង ធនធានជាច្រើន ដោយសារវាត្រូវការគិតច្រេីនពេលបង្កេីតប្រព័ន្ធដែលល្អ + រំពឹងថានឹងចំណាយពេលបន្តិចលើរឿងនេះ +- ការពិចារណា: - Scalability - Distill large data sets to single values - Transform one data set to another @@ -1138,28 +1136,28 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - simplicity and robustness - tradeoffs - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] **ចាប់ផ្តើមនៅទីនេះ**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (វីដេអូ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Transactions Across Datacenters (វីដេអូ)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) - [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] Paxos - [Paxos Agreement - Computerphile (វីដេអូ)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (វីដេអូ)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] [Great overview (វីដេអូ)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) @@ -1169,19 +1167,19 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (វីដេអូ)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (វីដេអូ)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (វីដេអូ)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (វីដេអូ)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(វីដេអូ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (វីដេអូ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) @@ -1209,9 +1207,9 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (វីដេអូ)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section + - For even more, see "Mining Massive Datasets" video series in the [វីដេអូ](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) @@ -1679,22 +1677,20 @@ You're never really done. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - **Red/black trees** - - These are a translation of a 2-3 tree (see below). - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - នេះជាការពិពណ៌នាអំពីដេីមឈេី 2-3 (មើលខាងក្រោម). + - ក្នុងការអនុវត្ត ៖ + Red–black trees ផ្តល់ជូនការធានាករណីអាក្រក់បំផុតសម្រាប់ពេលវេលាបញ្ចូល ពេលវេលាលុប និង ពេលវេលាស្វែងរក។ + វាមិនត្រឹមតែធ្វើឱ្យពួកគេល្អនៅក្នុងកម្មវិធីដែលត្រូវការពេលវេលាប៉ុណ្ណោះទេ ដូចជាកម្មវិធីជាក់ស្តែង + ប៉ុន្តែវាធ្វើឱ្យពួកគេប្លុកមានតម្លៃនៅក្នុងរចនាសម្ព័ន្ធទិន្នន័យផ្សេងទៀតដែលផ្តល់នូវការធានាករណីអាក្រក់បំផុត។ + ឧទាហរណ៍រចនាសម្ព័ន្ធទិន្នន័យជាច្រើនដែលត្រូវបានប្រើក្នុងធរណីមាត្រគណនាអាចផ្អែកលើដើមឈើ red–black និង Completely Fair Scheduler ដែលប្រើនៅក្នុងខឺណែលលីនុចបច្ចុប្បន្នប្រើដើមឈើred–black ។ + នៅក្នុងកំណែ ៨ នៃចាវ៉ា ការប្រមូលHashMapត្រូវបានកែប្រែហើយដើមឈើ Red-Black ត្រូវបានប្រើ ជំនួសឱ្យការប្រើLinkedListដើម្បីផ្ទុកធាតុដូចគ្នាបេះបិទទៅនឹងhashcodes មិនល្អ + - [Aduni - Algorithms - Lecture 4 (តំណភ្ជាប់លោតទៅចំណុចចាប់ផ្តើម) (វីដេអូ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (វីដេអូ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - **2-3 search trees** - - In practice: + - ក្នុងការអនុវត្ត ៖ 2-3 trees មានការបញ្ចូលលឿនជាងមុននៅក្នុងការចំណាយនៃការស្វែងរកយឺត (ដោយសារកំពស់ខ្ពស់ជាងបេីប្រៀបទៅ AVL trees). - អ្នកអាចនឹងកំរប្រេី 2-3 tree ដោយសារតែការអនុវត្តរបស់វាទាក់ទងនឹងប្រភេទផ្សេងៗគ្នានៃថ្នាំង. ជំនួសវិញយេីងប្រេី Red Black trees. - [23-Tree Intuition និង និយមន័យ (វីដេអូ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) From 18c01dffe1d323d365bd953721dcc083c3b252ae Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Sat, 7 Nov 2020 06:50:15 -0600 Subject: [PATCH 173/857] Update README-kh.md Translated until Final Review --- translations/README-kh.md | 198 +++++++++++++++++++------------------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 08dacebf83..0bef120d05 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1156,9 +1156,9 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. + - អ្នកមិនត្រូវការរបស់ទាំងអស់នេះទេ។ គ្រាន់តែជ្រើសរើសយកចំណាប់អារម្មណ៍មួយចំនួនដែលអ្នកចាប់អារម្មណ៍។ - [ ] [Great overview (វីដេអូ)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: + - [ ] ស៊េរីខ្លីៗ: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) @@ -1176,7 +1176,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (វីដេអូ)](https://www.youtube.com/watch?v=oodS71YtkGU) - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(វីដេអូ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [វីដេអូ](https://www.youtube.com/watch?v=G-lGCC4KKok) - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (វីដេអូ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) @@ -1209,31 +1209,31 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (វីដេអូ)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [វីដេអូ](#video-series) section -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - មេីលបន្ធែម "Mining Massive Datasets" video series in the [វីដេអូ](#video-series) section +- [ ] ការអនុវត្តដំណើរការរចនាប្រព័ន្ធ៖ នេះគឺជាគំនិតមួយចំនួនដើម្បីព្យាយាមធ្វើការលើក្រដាសនីមួយៗដោយមានឯកសារមួយចំនួនស្តីពីវិធីដែលត្រូវបានដោះស្រាយនៅក្នុងពិភពពិត៖ + - ពិនិត្យឡើងវិញ: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - flow: - 1. Understand the problem and scope: - - Define the use cases, with interviewer's help - - Suggest additional features - - Remove items that interviewer deems out of scope - - Assume high availability is required, add as a use case - 2. Think about constraints: - - Ask how many requests per month - - Ask how many requests per second (they may volunteer it or make you do the math) - - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second - - Total storage required over 5 years - - How much data read per second - 3. Abstract design: - - Layers (service, data, caching) - - Infrastructure: load balancing, messaging - - Rough overview of any key algorithm that drives the service - - Consider bottlenecks and determine solutions - - Exercises: + 1. ស្វែងយល់ពីបញ្ហានិងវិសាលភាព + - កំណត់ករណីប្រើប្រាស់ដោយមានជំនួយពីអ្នកសម្ភាសន៍ + - ស្នើលក្ខណៈបន្ថែម + - ដកចេញលក្ខណៈដែលអ្នកសម្ភាសន៍គិតថាលើស + - សន្មតថាភាពអាចរកបានខ្ពស់ត្រូវបានទាមទារបន្ថែមជាករណីប្រើប្រាស់ + 2. គិតអំពីឧបសគ្គ៖ + - សួរថាតើមានប៉ុន្មានសំណើរប៉ុន្មានក្នុងមួយខែ + - សួរថាតើមានសំណូមពរប៉ុន្មានក្នុងមួយវិនាទី (ពួកគេអាចស្ម័គ្រចិត្តឬធ្វើឱ្យអ្នកធ្វើគណនា) + - ប៉ាន់ស្មានអាននឹងសរសេរជាភាគរយ + - ចងចាំបទបញ្ជា ៨០/២០ ក្នុងពេលធ្វើការប៉ាន់ស្មាន + - តើទិន្នន័យប៉ុន្មានត្រូវបានសរសេរក្នុងមួយវិនាទី + - ការផ្ទុកសរុបត្រូវការក្នុងរយៈពេល ៥ ឆ្នាំ + - តើទិន្នន័យត្រូវអានប៉ុន្មានដងក្នុងមួយវិនាទី + 3. ការរចនាអរូបី៖ + - ស្រទាប់ (សេវាកម្ម ទិន្នន័យ ឃ្លាំងសម្ងាត់ (cache) ) + - ហេដ្ឋារចនាសម្ព័ន្ធ៖ ផ្ទុកតុល្យភាព(load balacing), សារ + - ទិដ្ឋភាពទូទៅរដុបនៃក្បួនដោះស្រាយគន្លឹះណាមួយដែលជំរុញសេវាកម្ម + - ពិចារណាការរាំងស្ទះនិងកំណត់ដំណោះស្រាយ + - លំហាត់: - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) @@ -1480,34 +1480,34 @@ You're never really done. technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [How a Compiler Works in ~1 minute (វីដេអូ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (វីដេអូ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (វីដេអូ)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (វីដេអូ)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor + - រៀនពី unix-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With vim 01 - Installation, Setup, and The Modes (វីដេអូ)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - ឈុត ៤ (វីដេអូ): + - [The vi/vim editor - មេរៀន 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - មេរៀន 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - មេរៀន 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - មេរៀន 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - [Basics Emacs Tutorial (វីដេអូ)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - ឈុត ៣ (វីដេអូ): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (វីដេអូ)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [(maybe) Org Mode In Depth: Managing Structure (វីដេអូ)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - - I filled in the list below from good tools. + - ខ្ញុំបានបំពេញក្នុងបញ្ជីខាងក្រោមពីឧបករណ៍ល្អ ៗ. - bash - cat - grep @@ -1520,15 +1520,15 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Information theory (វីដេអូ) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - More about Markov processes: + - បន្ថែមទៀតអំពី Markov processes: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below + - សូមមើលបន្ថែមនៅ MIT 6.050J Information និង Entropy series -- ### Parity & Hamming Code (videos) +- ### Parity & Hamming Code (វីដេអូ) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - Hamming Code: @@ -1537,31 +1537,31 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see videos below - - Make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - សូមមើលវីដេអូខាងក្រោមផង + - ត្រូវប្រាកដថាមើលវីដេអូទ្រឹស្តីព័ត៌មានជាមុន + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (វីដេអូ)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see videos below - - Make sure to watch information theory videos first + - សូមមើលវីដេអូខាងក្រោមផង + - ត្រូវប្រាកដថាមើលវីដេអូទ្រឹស្តីព័ត៌មានជាមុន - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - Make sure to watch information theory videos first - - Computerphile (videos): + - ត្រូវប្រាកដថាមើលវីដេអូទ្រឹស្តីព័ត៌មានជាមុន + - Computerphile (វីដេអូ): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [វីដេអូ Compressor Head](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [MIT (23 វីដេអូ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) @@ -1576,29 +1576,29 @@ You're never really done. - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [GC in Python (វីដេអូ)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (វីដេអូ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (វីដេអូ)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [ការបង្រៀន](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [ការបង្រៀន](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 for Java Developers (វីដេអូ)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) + - [ការបង្រៀន](http://try.redis.io/) - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [ចាប់ផ្តើម](https://www.rabbitmq.com/getstarted.html) - [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ជំហានដំបូងជាមួយ Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - [ZeroMQ](http://zeromq.org/) - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - [ActiveMQ](http://activemq.apache.org/) @@ -1608,20 +1608,20 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A* Pathfinding Tutorial (វីដេអូ)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (វីដេអូ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [What is the Fourier Transform? (វីដេអូ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (វីដេអូ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - ចំពោះBloom filterមួយដែលមាន m bits និង មុខងារhasing k, ទាំងការបញ្ចូលនិងការធ្វើតេស្តសមាជិកភាពគឺO(k) - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (វីដេអូ)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1629,52 +1629,52 @@ You're never really done. - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - ប្រើដើម្បីកំណត់ភាពស្រដៀងគ្នានៃឯកសារ + - ការផ្ទុយមកពី MD5 ឬ SHA ដែលត្រូវបានប្រើដើម្បីកំណត់ថាតើឯកសារ ឬ ខ្សែអក្សរចំនួន ២ ពិតជាដូចគ្នា - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [Divide & Conquer: van Emde Boas Trees (វីដេអូ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [MIT Lecture Notes](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) - ### Augmented Data Structures - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code - - Splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - Search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets + - ស្គាល់យ៉ាងហោចណាស់មែកធាងគោលពីរដែលមានតុល្យភាព (balanced binary tree) (និងដឹងពីរបៀបដែលវាត្រូវបានអនុវត្ត)៖ + - “ ក្នុងចំណោមដើមឈើស្វែងរកដែលមានតុល្យភាពដើម (balanced binary tree) AVL និងដើមឈើ ២/៣មិនពេញនិយមទេ៕ red-black trees ហាក់ដូចជាមានប្រជាប្រិយភាពជាង។ + រចនាសម្ពន្ធ័ទិន្នន័យរៀបចំដោយខ្លួនឯងដែលគួរឱ្យចាប់អារម្មណ៍ជាពិសេសគឺមែកឈើsplay tree ដែលប្រើការបង្វិល + ដើម្បីផ្លាស់ទីកូនសោណាដែលបានចូលទៅកាន់ឬស។ "- ស្គីណា (Skiena) + - ក្នុងចំណោមទាំងនេះខ្ញុំបានជ្រើសរើសអនុវត្តមែកឈើ splay tree ។ ពីអ្វីដែលខ្ញុំបានអានអ្នកនឹងមិនអនុវត្តទេនៅមែកធាងស្វែងរកមានតុល្យភាពនៅក្នុងបទសម្ភាសន៍របស់អ្នក។ ប៉ុន្តែខ្ញុំចង់បង្ហាញលេខកូដ + ហើយប្រឈមមុខនឹងវា ។ ខ្ញុំបានអានលេខកូដred-black treeច្រើន + - Splay tree: បញ្ចូល, ស្វែងរក, លុប + ប្រសិនបើអ្នកអនុវត្តដើមឈើក្រហម / ខ្មៅសាកល្បងទាំងនេះ៖ + - មុខងារស្វែងរក និង ការបញ្ចូល ការរំលងលុប + - ខ្ញុំចង់រៀនបន្ថែមទៀតអំពី B-Tree ចាប់តាំងពីវាត្រូវបានគេប្រើយ៉ាងទូលំទូលាយជាមួយសំណុំទិន្នន័យធំ ៗ - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - ក្នុងការអនុវត្ត ៖ + តាមអ្វីដែលខ្ញុំអាចប្រាប់បាន អ្វីៗទាំងនេះមិនត្រូវបានគេប្រើច្រើនទេនៅក្នុងការអនុវត្តប៉ុន្តែខ្ញុំអាចមើលឃើញកន្លែងដែលពួកគេប្រីវា៖ + AVL Tree គឺជារចនាសម្ព័នមួយផ្សេងទៀតដែលគាំទ្រដល់ការស្វែងរក (បញ្ចូល n) ការបញ្ចូល និង ការដកយកចេញ។ វាកាន់តែម៉ឺងម៉ាត់ + មានតុល្យភាពជាងដើមឈើខ្មៅក្រហម (red-black tree) ដែលមានការបញ្ចូលយឺត និង ដកចេញយឺត ប៉ុន្តែការទាញមកវិញលឿនជាងមុន។ នេះធ្វើឱ្យវា + មានភាពទាក់ទាញសម្រាប់រចនាសម្ព័ន្ធទិន្នន័យដែលអាចត្រូវបានសាងសង់ម្តងហើយផ្ទុកដោយមិនមានការកសាងឡើងវិញដូចជាភាសា + វចនានុក្រម (ឬវចនានុក្រមកម្មវិធីដូចជា opcodes របស់ assembler ឬ interpreter) + + - [MIT AVL Trees / AVL Sort (វីដេអូ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - ក្នុងការអនុវត្ត ៖ + Splay trees ត្រូវបានប្រើជាធម្មតាក្នុងការអនុវត្ត caches, memory allocators, routers, garbage collectors, + data compression, ropes (ការជំនួស string ដែលប្រើសម្រាប់ long text strings), ក្នុង Windows NT (ក្នុង virtual memory, + networking និង file system code) ជាដេីម + - [CS 61B: Splay Trees (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + - វាមានគណិតច្រេីន តែអាចមេីល១០ នាទីចុងក្រោយបាន + - [វីដេអូ](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - **Red/black trees** - នេះជាការពិពណ៌នាអំពីដេីមឈេី 2-3 (មើលខាងក្រោម). From cd63058e5ed536ca8597943aced99cd8b5bc56fb Mon Sep 17 00:00:00 2001 From: Amr Hosni Date: Sat, 14 Nov 2020 02:11:29 +0200 Subject: [PATCH 174/857] adding algorithm implementation link --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 4518097fe0..db3269a365 100644 --- a/README.md +++ b/README.md @@ -1954,6 +1954,11 @@ Sit back and enjoy. "Netflix and skill" :P - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University)](https://algs4.cs.princeton.edu/code) + + ## Papers - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) From 10fb2e2e7b061ed2010f959dfa9df07b8b77b050 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Tue, 17 Nov 2020 10:57:52 -0600 Subject: [PATCH 175/857] Update README-kh.md finished the translation --- translations/README-kh.md | 208 ++++++++++++++++++-------------------- 1 file changed, 101 insertions(+), 107 deletions(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 0bef120d05..0b01c469d5 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1245,84 +1245,80 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ --- -## Final Review +## Final Review (ការពិនិត្យចុងក្រោយ) - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + ផ្នែកនេះនឹងមានវីដេអូខ្លីៗដែលអ្នកអាចមើលបានយ៉ាងរហ័សដើម្បីពិនិត្យឡើងវិញនូវគោលគំនិតសំខាន់ៗ។ វាល្អណាស់ប្រសិនបើអ្នកចង់ធ្វើឱ្យស្រស់ជាងមុន។ -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) + - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 វីដេអូ): + - [វីដេអូ](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [វីដេអូ Sedgewick - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- -## Coding Question Practice +## Coding Question Practice (ការអនុវត្តសំណួរសរសេរកូដ) -Now that you know all the computer science topics above, it's time to practice answering coding problems. +ឥឡូវអ្នកដឹងពីប្រធានបទវិទ្យាសាស្ត្រកុំព្យូទ័រទាំងអស់ខាងលើ វាដល់ពេលត្រូវអនុវត្តការឆ្លើយសំនួរបញ្ហា។ -**Coding question practice is not about memorizing answers to programming problems.** +**ការអនុវត្តសំណួរសរសេរកូដមិនមែនអំពីការទន្ទេញចម្លើយចំពោះបញ្ហាសរសេរកម្មវិធីទេ។** -Why you need to practice doing programming problems: -- Problem recognition, and where the right data structures and algorithms fit in -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for 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/) -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) -Supplemental: +បន្ថែម: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) -**Read and Do Programming Problems (in this order):** +**អាននិងធ្វើបញ្ហាកម្មវិធី (តាមលំដាប់លំដោយ):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java + - ចម្លើយជា C, C++ និង Java - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - ចម្លើយជា Java -See [Book List above](#book-list) +មេីលសៀភៅ [Book List above](#book-list) ## Coding exercises/challenges -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +នៅពេលដែលអ្នកបានរៀនខួរក្បាលរបស់អ្នកហើយ សូមដាក់ខួរក្បាលទាំងនោះឱ្យដំណើរការ។ +យកបញ្ហាប្រឈមនៃការសរសេរកូដជារៀងរាល់ថ្ងៃតាមដែលអ្នកអាចធ្វើបាន។ - [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/) -Coding Interview Question Videos: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +វីឌីអូសំភាសន៍ការសរសេរកូដ: +- [IDeserve (88 វីដេអូ)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [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-) - - Good explanations of solution and the code - - You can watch several in a short time +- [Nick White - LeetCode Solutions (187 វីដេអូ)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - ការពន្យល់ល្អអំពីដំណោះស្រាយនិងលេខកូដ + - អ្នកអាចមើលបានច្រើនក្នុងរយៈពេលដ៏ខ្លី - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) -Challenge sites: +គេហទំព័រប្រកួតប្រជែង: - [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 + - គេហទំព័របញ្ហាសរសេរកូដដែលខ្ញុំចូលចិត្តបំផុត។ វាមានតម្លៃសម្រាប់ការជាវប្រាក់សម្រាប់រយៈពេល 1-2 ខែដែលអ្នកទំនងជានឹងរៀបចំ - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - - See Nick White Videos above for short code-throughs + - សូមមើលវីដេអូស Nick ខាងលើសម្រាប់លេខកូដខ្លី - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) @@ -1331,7 +1327,7 @@ Challenge sites: - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) -Language-learning sites, with challenges: +គេហទំព័រសិក្សាភាសាដែលមានបញ្ហាប្រឈម៖ - [Codewars](http://www.codewars.com) - [Codility](https://codility.com/programmers/) - [HackerEarth](https://www.hackerearth.com/) @@ -1348,112 +1344,112 @@ Mock Interviews: - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. -## Once you're closer to the interview +## នៅពេលអ្នកជិតដល់ការសម្ភាសន៍ -- Cracking The Coding Interview Set 2 (videos): +- Cracking The Coding Interview Set 2 (វីដេអូ): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) -## Your Resume +## ប្រវត្តិរូបសង្ខេបរបស់អ្នក -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- មើលបន្តការរៀបចំរបស់នៅក្នុង Cracking The Coding Interview និង back of Programming Interviews Exposed -## Be thinking of for when the interview comes +## ត្រូវគិតអំពីពេលសម្ភាសន៍មកដល់ -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. +គិតអំពីសំណួរសំភាសន៍ចំនួន 20 ដែលអ្នកនឹងទទួលបានរួមជាមួយធាតុខាងក្រោម។ មានចម្លើយ ២-៣ សម្រាប់ចម្លើយនីមួយៗ។ +មានរឿងរ៉ាវមិនមែនគ្រាន់តែទិន្នន័យអំពីអ្វីដែលអ្នកបានសំរេចនោះទេ។ -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? +- ហេតុអ្វីបានជាអ្នកចង់បានការងារនេះ? +- តើអ្វីជាបញ្ហាដ៏លំបាកដែលអ្នកបានដោះស្រាយ? +- បញ្ហាធំ ៗ ដែលប្រឈមមុខ? +- ការរចនាម៉ូដណាដែលល្អបំផុត / អាក្រក់បំផុត? +- គំនិតសម្រាប់កែលម្អផលិតផលដែលមានស្រាប់ +- តើអ្នកធ្វើការបានល្អបំផុតដោយរបៀបណាក្នុងនាមជាបុគ្គលនិងជាក្រុម? +- ជំនាញឬបទពិសោធន៍ណាមួយរបស់អ្នកដែលជាទ្រព្យសម្បត្តិនៅក្នុងតួនាទីហើយហេតុអ្វី? +- តើអ្វីដែលអ្នកពេញចិត្តបំផុតនៅ [ការងារ x / គម្រោង y]? +- តើអ្វីជាបញ្ហាប្រឈមដ៏ធំបំផុតដែលអ្នកបានប្រឈមនៅ [ការងារ x / គម្រោង y]? +- តើអ្វីទៅជាកំហុសដ៏លំបាកបំផុតដែលអ្នកបានជួបប្រទះនៅ [ការងារ x / គម្រោង y]? +- តើអ្នកបានរៀនអ្វីខ្លះនៅ [ការងារ x / គំរោង y]? +តើអ្នកនឹងធ្វើអ្វីបានល្អជាងនៅ [ការងារ x / គំរោង y]? -## Have questions for the interviewer +## Have questions for the interviewer (មានសំណួរសម្រាប់អ្នកសម្ភាសន៍) - Some of mine (I already may know answer to but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is work/life balance? + សំនួរខ្លះរបស់ខ្ញុំ (ខ្ញុំប្រហែលជាដឹងចម្លើយរួចហើយប៉ុន្តែចង់បានយោបល់ឬទស្សនៈក្រុមរបស់ពួកគេ) + +- តើក្រុមរបស់អ្នកមានទំហំប៉ុនណា? +- តើវដ្ដ dev របស់អ្នកមើលទៅដូចអ្វី? តើអ្នកធ្វើទឹកជ្រោះទឹកពន្លក / ឆាប់រហ័សទេ? +- តើប្រញាប់ប្រញាល់ដល់ពេលវេលាកំណត់ទេ? ឬមានភាពបត់បែន? +- តើការសម្រេចចិត្តត្រូវបានធ្វើឡើងនៅក្នុងក្រុមរបស់អ្នកយ៉ាងដូចម្តេច? +- តើអ្នកមានការប្រជុំប៉ុន្មានដងក្នុងមួយសប្តាហ៍? +- តើអ្នកមានអារម្មណ៍ថាបរិយាកាសការងាររបស់អ្នកជួយអ្នកក្នុងការផ្តោតអារម្មណ៍ទេ? +- តើអ្នកកំពុងធ្វើអ្វី? +- តើអ្នកចូលចិត្តអ្វី? +- ជីវិតការងារដូចជាអ្វី? +- តើការងារ / ជីវិតមានតុល្យភាពយ៉ាងដូចម្តេច? -## Once You've Got The Job +## Once You've Got The Job (នៅពេលដែលអ្នកមានការងារធ្វើ) -Congratulations! +សូមអបអរសាទរ! -Keep learning. +បន្តរៀន។ -You're never really done. +រៀនមិនចេះចប់។ --- ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. + អ្វីគ្រប់យ៉ាងនៅខាងក្រោមចំណុចនេះគឺស្រេចចិត្តបេីចង់មេីល។ + តាមរយៈការសិក្សាទាំងនេះ អ្នកនឹងទទួលបានការយល់ដឹងកាន់តែច្រើនពីគំនិតវិទ្យាសាស្ត្រកុំព្យូទ័រ ហើយអ្នកនឹងត្រូវបានរៀបចំខ្លួនឱ្យកាន់តែប្រសើរ + ការងារវិស្វកម្មផ្នែកទន់ណាមួយ។ អ្នកនឹងក្លាយជាវិស្វករផ្នែកទន់ដែលមានចំេនះពេញលេញ។ ***************************************************************************************************** ***************************************************************************************************** --- -## Additional Books +## Additional Books (សៀវភៅបន្ថែម) - These are here so you can dive into a topic you find interesting. + ទាំងនេះគឺនៅទីនេះដូច្នេះអ្នកអាចចូលទៅក្នុងប្រធានបទដែលអ្នកចាប់អារម្មណ៍។ - [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - An oldie but a goodie + - ចាស់តែល្អ - [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - A modern option + - ជម្រើសទំនើប - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - A gentle introduction to design patterns + - ការណែនាំ design patterns - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - AKA the "Gang Of Four" book, or GOF - The canonical design patterns book - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview - - This book has 2 parts: - - Class textbook on data structures and algorithms - - Pros: - - Is a good review as any algorithms textbook would be - - Nice stories from his experiences solving problems in industry and academia - - Code examples in C - - Cons: + - ជាការពិនិត្យឡើងវិញនិងការទទួលស្គាល់បញ្ហា + - ផ្នែកកាតាឡុកក្បួនដោះស្រាយគឺហួសពីវិសាលភាពនៃការពិបាកដែលអ្នកនឹងជួបសម្ភាសន៍ + - សៀវភៅនេះមានពីរផ្នែក៖ + - សៀវភៅសិក្សាថ្នាក់ស្តីពីរចនាសម្ព័ន្ធទិន្នន័យនិងក្បួនដោះស្រាយ + - គុណសម្បត្តិ: + - គឺជាការពិនិត្យឡើងវិញដ៏ល្អមួយដែលជាសៀវភៅក្បួនដោះស្រាយណាមួយ + - រឿងល្អ ៗ ពីបទពិសោធន៍របស់គាត់ដោះស្រាយបញ្ហានៅក្នុងឧស្សាហកម្មនិងបណ្ឌិតសភា + - ឧទាហរណ៍កូដនៅក្នុង C + - គុណវិបត្តិ: - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - Algorithm catalog: - - This is the real reason you buy this book - - About to get to this part. Will update here once I've made my way through it - - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - នេះជាហេតុផលពិតប្រាកដដែលអ្នកទិញសៀវភៅនេះ + - ហៀបនឹងចូលដល់ផ្នែកនេះ។ នឹងធ្វើបច្ចុប្បន្នភាពនៅទីនេះនៅពេលដែលខ្ញុំបានឆ្លងកាត់វា + - អាចជួលវានៅលើ Kindle + - ចម្លើយ: + - [ដំណោះស្រាយ](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [ដំណោះស្រាយ](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - សៀវភៅនេះត្រូវបានបោះពុម្ពផ្សាយក្នុងឆ្នាំ ២០០៤ ហើយវាហួសសម័យបន្តិចប៉ុន្តែវាជាធនធានដ៏អស្ចារ្យសម្រាប់ការស្វែងយល់អំពីកុំព្យូទ័រដោយសង្ខេប - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like - - These chapters are worth the read to give you a nice foundation: + - ជំពូកទាំងនេះពិតជាមានប្រយោជន៍ក្នុងការអានដើម្បីផ្តល់ឱ្យអ្នកនូវគ្រឹះដ៏ល្អមួយ: - Chapter 2 - Numeric Representation - Chapter 3 - Binary Arithmetic and Bit Operations - Chapter 4 - Floating-Point Representation @@ -1464,20 +1460,18 @@ You're never really done. - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - **សំខាន់ៈ** ការអានសៀវភៅនេះនឹងមានតម្លៃតែប៉ុណ្ណោះ។ សៀវភៅនេះគឺជាការពិនិត្យឡើងវិញដ៏អស្ចារ្យនៃក្បួនដោះស្រាយនិងរចនាសម្ព័ន្ធទិន្នន័យប៉ុន្តែនឹងមិនបង្រៀនអ្នកពីរបៀបសរសេរកូដល្អទេ។ អ្នកត្រូវតែចេះសរសេរកូដដំណោះស្រាយប្រកបដោយប្រសិទ្ធភាព - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture + - ជំពូកដំបូង បង្ហាញនូវដំណោះស្រាយដ៏ឆ្លាតវៃចំពោះបញ្ហាសរសេរកម្មវិធី (ខ្លះចាស់ដោយប្រើខ្សែអាត់ទិន្នន័យ) ប៉ុន្តែនោះគ្រាន់តែជាការណែនាំប៉ុណ្ណោះ។ សៀវភៅណែនាំស្តីពីការរចនាកម្មវិធីនិងស្ថាបត្យកម្ម ## Additional Learning - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. + ខ្ញុំបានបន្ថែមពួកគេដើម្បីជួយអ្នកឱ្យក្លាយជាវិស្វករផ្នែកទន់ដែលមានមានចំេណះពេញលេញហើយត្រូវដឹងច្បាស់បច្ចេកវិទ្យានិងក្បួនដោះស្រាយដូច្នេះអ្នកនឹងមានប្រអប់ឧបករណ៍ធំជាងមុន។ - ### Compilers - [How a Compiler Works in ~1 minute (វីដេអូ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) From ffb9f9db3951dcfa6dbd8fefa47c5c836e5a8dd9 Mon Sep 17 00:00:00 2001 From: strNophix Date: Tue, 24 Nov 2020 12:53:53 +0100 Subject: [PATCH 176/857] Removed unavailable archive.org resources --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index db3269a365..bb131305e5 100644 --- a/README.md +++ b/README.md @@ -509,12 +509,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [Arrays (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) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (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://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -577,14 +573,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -611,10 +604,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) From f6d0a416f762cc3649e8ab2bc96a2683f37857cd Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 28 Nov 2020 10:14:24 -0800 Subject: [PATCH 177/857] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bb131305e5..92161f1b6a 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ - [Português Brasileiro](translations/README-ptbr.md) - [Polish](translations/README-pl.md) - [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) @@ -33,7 +35,6 @@ - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) @@ -42,7 +43,6 @@ - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) From ebfc5bdcb75f062f706a1088dd00e5f25814e1cf Mon Sep 17 00:00:00 2001 From: Williams Date: Thu, 10 Dec 2020 01:53:56 -0300 Subject: [PATCH 178/857] correct spelling mistake --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 0339e281e9..01eef11802 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -172,7 +172,7 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, Cuando comencé este proyecto, no sabía la diferencia entre un stack y un heap, no conocía la notación Big-O, nada acerca de árboles, ni cómo sacar la transversal de una gráfica. Si tenía que programar un algoritmo de clasificación, puedo decir que no hubiera sido muy bueno. Cada estructura de datos que había utilizado estaba incorporada al lenguaje, y yo no sabía cómo funcionaban realmente. Yo nunca tuve que manejar la memoria a menos que un proceso que yo estaba corriendo diera un error de “out of memory”, y tenía que encontrar una alternativa. He usado pocos arreglos de varias dimensiones en mi vida y miles de arreglos asociativos, pero nunca he creado estructuras de datos desde cero. -Pero después de pasar por todo este plan de estudios tengo mucha confianza de que seré contratado. Me toará meses. Si mucho de esto te resulta familiar entonces te tomará mucho menos tiempo. +Pero después de pasar por todo este plan de estudios tengo mucha confianza de que seré contratado. Me tomará meses. Si mucho de esto te resulta familiar entonces te tomará mucho menos tiempo. Es un plan largo, puede tome unos meses; pero si le resulta familiar mucho de esto le tomara mucho menos tiempo. From b4f8c5f6d55632b3b2daddb8b2ba99e7232a7111 Mon Sep 17 00:00:00 2001 From: Saksham Gupta Date: Sun, 13 Dec 2020 12:16:09 +0530 Subject: [PATCH 179/857] added links to C++ --- programming-language-resources.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index 957104b7a6..fa77b476b5 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -12,17 +12,17 @@ - C++ - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/Cpp_reference.pdf) - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) - - basics - - pointers - - class and object - - functions - - references - - templates + - [basics](https://www.tutorialspoint.com/cplusplus/cpp_basic_syntax.htm) + - [pointers](https://www.cprogramming.com/tutorial/lesson6.html) + - [class and object](https://www.cprogramming.com/tutorial/lesson12.html) + - [functions](https://www.cprogramming.com/tutorial/lesson4.html) + - [references](https://www.geeksforgeeks.org/references-in-c/) + - [templates](https://www.cprogramming.com/tutorial/templates.html) - compilation - - scope & linkage - - namespaces - - OOP - - STL + - [scope & linkage](https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/) + - [namespaces](https://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm) + - [OOP](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) + - [STL](https://www.hackerearth.com/practice/notes/standard-template-library/) - [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html) - [C++ at Google (video)](https://www.youtube.com/watch?v=NOCElcMcFik) - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) From 8661dc75cfc5689a1ce30514e177bb7ecb161bdd Mon Sep 17 00:00:00 2001 From: Saksham Gupta Date: Sun, 13 Dec 2020 13:03:25 +0530 Subject: [PATCH 180/857] updated compilation link --- programming-language-resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index fa77b476b5..532954444d 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -18,7 +18,7 @@ - [functions](https://www.cprogramming.com/tutorial/lesson4.html) - [references](https://www.geeksforgeeks.org/references-in-c/) - [templates](https://www.cprogramming.com/tutorial/templates.html) - - compilation + - [compilation](https://www.youtube.com/watch?v=ZTu0kf-7h08) - [scope & linkage](https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/) - [namespaces](https://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm) - [OOP](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) From 7531c4ff422ef4921be03e3f456f3263f91ca899 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Wed, 16 Dec 2020 20:36:03 +0100 Subject: [PATCH 181/857] Adding a link to JavaScript algorithms --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 532954444d..ad54e4cad1 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -71,6 +71,7 @@ - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) + - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) - Other Language 1 - Other Language 2 - etc From 287a8fb7768a380c2e46d2f76a2780554d3d46dc Mon Sep 17 00:00:00 2001 From: Pablo Cordero Romero Date: Fri, 18 Dec 2020 10:50:49 +0100 Subject: [PATCH 182/857] Fix link to the main article (English version) The link to the main article was broken in the Spanish translation. It redirected to a non-existent file. That it's because the link is for `translations/README.md` which doesn't exist. I've linked to the `README.md` of the previous folder (root folder). --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 01eef11802..0450b15984 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1,6 +1,6 @@ # Coding Interview University -- Versión original: [Inglés](README.md) +- Versión original: [Inglés](../README.md) > Originalmente creé esto como una lista corta de tópicos a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista puede apreciar actualmente. Después de pasar por este plan de estudios ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon!(Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) From 9babde379aa20c5cbe99828fa690f58dbdf4cb5e Mon Sep 17 00:00:00 2001 From: sidram05 <38928563+sidram05@users.noreply.github.com> Date: Sat, 26 Dec 2020 19:41:28 -0600 Subject: [PATCH 183/857] CAP Theorem link broken --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92161f1b6a..16f7d9d60d 100644 --- a/README.md +++ b/README.md @@ -1130,7 +1130,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) - [ ] Consensus Algorithms: - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) From 5536db7d8d43358d3459cafa0768d2b9c8cc0cbe Mon Sep 17 00:00:00 2001 From: Eihab Khan Date: Sun, 27 Dec 2020 17:55:16 +0100 Subject: [PATCH 184/857] Update README-ar.md - Improved existing translation - Translated Intro and Table of content --- translations/README-ar.md | 87 +++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 32 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 9a7fddde27..bbc3a80510 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1,37 +1,60 @@ -# الإعداد لجوجل - -الترجمه: -- [中文版本](README-cn.md) -- الترجمات تحت الاعداد: - - [Español](https://github.com/jwasham/coding-interview-university/issues/80) - - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - - [Vietnamese](https://github.com/jwasham/coding-interview-university/issues/92) - - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - - [French](https://github.com/jwasham/coding-interview-university/issues/89) - - [Russian](https://github.com/jwasham/coding-interview-university/issues/87) - - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - - [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113) - - [Korean](https://github.com/jwasham/coding-interview-university/issues/118) - - [Polish](https://github.com/jwasham/coding-interview-university/issues/122) +# الإعداد لمقابلة البرمجة + +> أنشأتها في المقام الأول كلائحة قصيرة من المواضيع الدراسية لكيف يصبح المرء مهندس برمجيات, و ولكن سرعان ما كبرت هذه القائمة الى ما تراه امامك اليوم. بعد خوض هذه الخطة الدراسية, +[تم توظيفي كمهندس تطوير برمجيات لدى أمازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! على الاغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود +هنا +> +> درست لمدة ٨-١٢ ساعة في اليوم, لعدة أشهر. هذه هي قصتي: [لماذا درست دواما كاملا لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> العناصر المذكورة في هذه اللائحة ستجهزك جيدا لمقابلة تقنية مع تقريبا أي شركة برمجية, حتى الشركات العملاقة: أمازون, فيسبوك, قوقل, و ميكروسوف +> +> بالتوفيق + +
+الترجمات: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - الفيتنامبة](translations/README-vi.md) +- [الإسبانية](translations/README-es.md) +- [(البرتغالية (البرازيلية](translations/README-ptbr.md) +- [البولندية](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [اليابانية (日本語)](translations/README-ja.md) +- [الروسية](translations/README-ru.md) + +
+ +
+ترجمات تحت الإعداد: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [الإندونيسية](https://github.com/jwasham/coding-interview-university/issues/101) +- [العربية](https://github.com/jwasham/coding-interview-university/issues/98) +- [التركية](https://github.com/jwasham/coding-interview-university/issues/90) +- [الفرنسية](https://github.com/jwasham/coding-interview-university/issues/89) +- [الأكرانية](https://github.com/jwasham/coding-interview-university/issues/106) +- [الكورية(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [أردو](https://github.com/jwasham/coding-interview-university/issues/140) +- [التايلندية](https://github.com/jwasham/coding-interview-university/issues/156) +- [اليونانية](https://github.com/jwasham/coding-interview-university/issues/166) +- [الإيطالية](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
## ماهذا؟ -هي خطة من عدة أشهر من مطور تطبيقات ويب (قائمة على التعليم الذاتي، ومبدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات بجوجل +هي خطتي متعددة الأشهر للوصول من مطور ويب (تعليم ذاتي، بدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات لشركة عملاقة -![HBO كتابة الكود علي السبورة - من وادي السيليكون](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -هذه القائمة الطويلة تم إعدادها من ملاحظات الإعداد لجوجل، لذلك هي الأشياء مطالب بمعرفتها. -هناك أشياء إضافية أضفتها في آخر القائمة التي ربما تأتي في المقابلة الشخصية أو تساعد في حل المشاكل البرمجية. كتيرا من العناصر من: كتاب ستيف ياج "[احصل على وظيفة بجوجل](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" ومن حين لآخر ملاحظات الإعداد لجوجل. -لقد قلصت ماستحتاجه من ملاحظات ياج. وقمت بتعديل متطلبات ياج. -من معلومات تم الحصول عليها من معارفي بجوجل. هذا يعني أنه من **من مهندسين برمجيات جدد** أو من الذين غيروا مسار العمل من تطوير الويب والبرمجيات إلى مهندس برمجيات(حيث علوم الحساب أمر أساسي). لو لديك كتير من سنوات الخبرة في هندسة البرمجيات توقع المقابلة الشخصية الأصعب. -[اقرأ المزيد](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). +تم إعدادها لمهنسي البرمجيات الجدد او أولئك المنتقلين من تطوير الويب إلى هندسة البرمجيات (حيث المعرفة بعلوم الحاسب ضرورية) إذا كان لديك العديد من سنوات الخبرة في بناء تطبيقات الويب أو البرمجيات، خذ في عين الإعتبار ان المقابلة ستكون اصعب -إذا كان لديك العديد من سنوات الخبرة في بناء تطبيقات الويب أو البرمجيات، لاحظ أن رؤية جوجل لهندسة البرمجيات تختلف عن منظور تطوير التطبيقات أو البرمجيات وتطلب معرفة بعلوم الحاسب. +إذا كانت لديك العديد من سنوات الخبرة في تطوير الويب, خذ في عين الإعتبار أن الشركات االبرمجية الضخمة مثل قوقل, فيسبوك, و ميكروسوفت ينظرون إلى هندسة البرمجيات بشكل مختلف عن تطوير البرمجيات/ويب, و تحتاج إلى معرفة علوم الحاسب -أذا كنت تريد أن تصبح مهندس أنظمة أو مهندس ++، اقرأ المزيد من القائمة الاختيارية عن(شبكات الحاسب، والحماية). +إذا اردت ان تصبح مهندس موثوقية أو مهندس عمليات, ادرس اكثر من القائمة الإختيارية (شبكات, امن) --- @@ -48,11 +71,11 @@ - [عن مصادر الفديو](#about-video-resources) - [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#interview-process--general-interview-prep) - [اختر لغة برمجية واحدة للمقابلة البرمجية](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) +- [لائحة الكتب](#book-list) +- [قبل أن تبدأ](#before-you-get-started) +- [ما لن تجده هنا](#what-you-wont-see-covered) +- [معرفة مسبقة](#prerequisite-knowledge) +- [الخطة اليومية](#the-daily-plan) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) From b4ca3b6b6c5b8f0998d519cdfed1fc432beaad09 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 28 Dec 2020 17:37:15 -0800 Subject: [PATCH 185/857] Updates link to programming language resources. Fixes: https://github.com/jwasham/coding-interview-university/issues/707 --- translations/README-ptbr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 70cbfe83c4..b34ff50f2b 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -316,7 +316,7 @@ Se você tem mais tempo (eu quero esse livro): Se você ler um desses, você deverá ter todo conhecimento de estrutura de dados e algoritmos que precisará para começar a resolver problemas de programação. **Você pode pular todas as aulas em vídeo nesse projeto**, a não ser que você queira uma revisão. -[Recursos adicionais específicos a cada linguagem aqui.](programming-language-resources.md) +[Recursos adicionais específicos a cada linguagem aqui.](/jwasham/coding-interview-university/blob/master/programming-language-resources.md) ### C++ From 3581530024b9721a51355880a37e35af2d4fa3a1 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 28 Dec 2020 17:40:59 -0800 Subject: [PATCH 186/857] Updates link to programming language resources. --- translations/README-ptbr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index b34ff50f2b..bc77960747 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -316,7 +316,7 @@ Se você tem mais tempo (eu quero esse livro): Se você ler um desses, você deverá ter todo conhecimento de estrutura de dados e algoritmos que precisará para começar a resolver problemas de programação. **Você pode pular todas as aulas em vídeo nesse projeto**, a não ser que você queira uma revisão. -[Recursos adicionais específicos a cada linguagem aqui.](/jwasham/coding-interview-university/blob/master/programming-language-resources.md) +[Recursos adicionais específicos a cada linguagem aqui.](../programming-language-resources.md) ### C++ From 8a23d94d6ce0a25d3e79bfb5699dd69a4b36feaf Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 31 Dec 2020 18:24:36 -0800 Subject: [PATCH 187/857] Added link to German translation. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 16f7d9d60d..0e95605ad3 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ - [繁體中文](translations/README-tw.md) - [Japanese (日本語)](translations/README-ja.md) - [Russian](translations/README-ru.md) +- [German](translations/README-de.md) From 8904c067ef80f1b90022f6c18180f23721f6dc77 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 15:05:02 +0700 Subject: [PATCH 188/857] Update Indonesian translations --- translations/README-id.md | 515 +++++++++++++++++++++----------------- 1 file changed, 286 insertions(+), 229 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index c04bf123a1..fcd6afeb3f 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -84,8 +84,8 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Latihan Pertanyaan Pemrograman](#latihan-pertanyaan-pemrograman) - [Soal-soal Pemrograman](#soal-soal-pemrograman) - [Menjelang Proses Interview](#menjelang-proses-interview) -- [CV Anda](#cv-anda) -- [Perkirakan Pertanyaan Yang Akan Diajukan](#perkirakan-pertanyaan-yang-akan-diajukan) +- [Resume Anda](#resume-anda) +- [Pikirkan saat wawancara datang](#pikirkan-saat-wawancara-datang) - [Bertanyalah Pada Pewawancara](#bertanyalah-pada-pewawancara) - [Saat Anda Berhasil Mendapatkan Pekerjaannya](#saat-anda-berhasil-mendapatkan-pekerjaannya) @@ -95,21 +95,22 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Materi Tambahan](#materi-tambahan) - [Pemrograman Dinamis](#pemrograman-dinamis) - [Kompilator](#kompilator) - - [Bilangan Titik Mengambang](#bilangan-titik-mengambang) + - [Angka Titik Mengambang](#angka-titik-mengambang) - [Unicode](#unicode) - [Endianness](#endianness) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - - [Teori Informasi](#teori-informasi) + - [Teori Informasi](#teori-informasi-video) - [Pariti & Kode Hamming](#pariti--kode-hamming) - [Entropi](#entropi) - [Kriptografi](#kriptografi) - [Kompresi](#kompresi) - [Jaringan](#jaringan) (bersiaplah mendapatkan pertanyaan jaringan apabila anda ingin menjadi system engineer) - - [Sekuritas Komputer](#sekuritas-komputer) + - [Keamanan komputer](#keamanan-komputer) - [Garbage collection](#garbage-collection) - [Pemrograman Paralel](#pemrograman-paralel) - [Pengiriman Pesan, Serialisasi, dan Sistem Queueing](#pengiriman-pesan-serialisasi-dan-sistem-queueing) + - [A*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) @@ -137,9 +138,11 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Matematika Diskrit](#matematika-diskrit) - [Pembelajaran Mesin](#pembelajaran-mesin) - [Go](#go) -- [Detil Tambahan pada Beberapa Subjek](#detil-tambahan-pada-beberapa-subjek) +- [Detail Tambahan tentang Beberapa Subjek](#detail-tambahan-tentang-beberapa-subjek) - [Seri Video](#seri-video) - [Kursus Ilmu Komputer](#kursus-ilmu-komputer) +- [Implementasi Algoritma](#implementasi-algoritma) +- [Dokumen](#dokumen) --- @@ -1102,15 +1105,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos +- ### Penjadwalan + - di OS, cara kerjanya + - dapat diperoleh dari video Sistem Operasi -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - can you implement them? +- ### Implementasi Rutinitas Sistem + - memahami apa yang ada di bawah API pemrograman yang Anda gunakan + - bisakah kamu menerapkannya? -- ### String searching & manipulations +- ### Pencarian String & Manipulasi - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) @@ -1120,29 +1123,27 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + Jika Anda membutuhkan detail lebih lanjut tentang subjek ini, lihat bagian "String Matching" di [Detail Tambahan pada Beberapa Subjek](#additional-detail-on-some-subjects) --- -## System Design, Scalability, Data Handling -- **You can expect system design questions if you have 4+ years of experience.** -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations from Yegge: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +## Perancangan Sistem, Skalabilitas, Penganganan Data +- **Anda dapat mengharapkan pertanyaan desain sistem jika Anda memiliki pengalaman 4+ tahun.** +- Skalabilitas dan Desain Sistem adalah topik yang sangat besar dengan banyak topik dan sumber daya, karena ada banyak hal yang perlu dipertimbangkan saat merancang sistem perangkat lunak / perangkat keras yang dapat diskalakan. Berharap untuk meluangkan sedikit waktu untuk ini. +- Pertimbangan dari Yegge: + - skalabilitas + - Saring kumpulan data besar menjadi nilai tunggal + - Ubah satu kumpulan data ke kumpulan lainnya + - Menangani data dalam jumlah yang sangat besar + - desain sistem (system design) + - set fitur (features sets) + - antarmuka (interfaces) + - hierarki kelas (class hierarchies) + - merancang sistem di bawah batasan tertentu + - kesederhanaan dan ketahanan + - pengorbanan (tradeoffs) + - analisis dan pengoptimalan kinerja +- [ ] **MULAI DI SINI**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) @@ -1159,7 +1160,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: +- [ ] Skalabilitas: - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1215,29 +1216,29 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the Video Series section. -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - Untuk informasi lebih lanjut, lihat seri video "Menambang Kumpulan Data Besar-besaran (Mining Massive Datasets)" di bagian Seri Video. +- [ ] Mempraktikkan proses desain sistem: Berikut adalah beberapa ide untuk dicoba di atas kertas, masing-masing dengan beberapa dokumentasi tentang bagaimana hal itu ditangani di dunia nyata: + - ulasan: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions + - aliran: + 1. Pahami masalah dan cakupannya: + - tentukan kasus penggunaan, dengan bantuan pewawancara + - menyarankan fitur tambahan + - hapus item yang dianggap pewawancara di luar jangkauan + - asumsikan ketersediaan tinggi diperlukan, tambahkan sebagai kasus penggunaan + 2. Pikirkan tentang kendala: + - tanyakan berapa permintaan per bulan + - tanyakan berapa banyak permintaan per detik (mereka mungkin mengajukannya secara sukarela atau meminta Anda menghitungnya) + - memperkirakan persentase membaca vs menulis + - ingat aturan 80/20 saat membuat estimasi + - berapa banyak data yang ditulis per detik + - total penyimpanan yang dibutuhkan selama 5 tahun + - berapa banyak data yang dibaca per detik + 3. Desain abstrak: + - lapisan (layanan, data, caching) + - infrastruktur: load balancing, perpesanan + - gambaran kasar dari setiap algoritma kunci yang menggerakkan layanan + - pertimbangkan kemacetan dan tentukan solusinya - Exercises: - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) @@ -1250,10 +1251,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th --- -## Final Review +## Ulasan Akhir - This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + Bagian ini akan memiliki video pendek yang dapat Anda tonton dengan cukup cepat untuk meninjau sebagian besar konsep penting. + Sangat menyenangkan jika Anda sering ingin penyegaran. - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) @@ -1288,57 +1289,56 @@ You'll get more graph practice in Skiena's book (see Books section below) and th --- -## Coding Question Practice +## [Latihan Pertanyaan Pemrograman -Now that you know all the computer science topics above, it's time to practice answering coding problems. +Sekarang setelah kamu mengetahui semua topik ilmu komputer di atas, sekarang saatnya berlatih menjawab soal coding. -**Coding question practice is not about memorizing answers to programming problems.** +**Latihan pertanyaan coding bukan tentang menghafal jawaban atas masalah pemrograman.** -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for your solutions -- testing your solutions +Mengapa Anda perlu berlatih mengerjakan soal pemrograman: +- pengenalan masalah, dan di mana struktur data dan algoritme yang tepat cocok +- mengumpulkan persyaratan untuk masalah tersebut +- berbicara melalui masalah seperti yang akan Anda lakukan dalam wawancara +- coding di papan tulis atau kertas, bukan di komputer +- hadir dengan kerumitan ruang dan waktu untuk solusi Anda +- menguji solusi Anda -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: +Ada pengantar yang bagus untuk pemecahan masalah metodis dan komunikatif dalam sebuah wawancara. Anda akan mendapatkan ini dari buku wawancara pemrograman juga, tapi saya menemukan ini luar biasa: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) [My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. +Tidak ada papan tulis di rumah? Itu masuk akal. Saya orang aneh dan memiliki papan tulis besar. Alih-alih papan tulis, pilih file +papan gambar besar dari toko seni. Anda bisa duduk di sofa dan berlatih. Ini adalah "papan tulis sofa" saya. +Saya menambahkan pena di foto untuk skala. Jika Anda menggunakan pena, Anda pasti berharap dapat menghapusnya. Cepat berantakan. ![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) -Supplemental: +Tambahan: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) -**Read and Do Programming Problems (in this order):** +**Baca dan Lakukan Masalah Pemrograman (dalam urutan ini):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - answers in C, C++ and Java - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - answers in Java -See [Book List above](#book-list) +Lihat [Daftar Buku di atas](#book-list) -## Coding exercises/challenges +## Soal-soal Pemrograman -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +Setelah Anda mempelajari otak Anda, gunakan otak itu untuk bekerja. +Ambil tantangan pengkodean setiap hari, sebanyak yang Anda bisa. - [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -Challenge sites: +Situs tantangan: - [LeetCode](https://leetcode.com/) - [TopCoder](https://www.topcoder.com/) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) @@ -1352,52 +1352,52 @@ Challenge sites: Maybe: - [Mock interviewers from big companies](http://www.gainlo.co/) -## Once you're closer to the interview +## Menjelang Proses Interview -- [ ] Cracking The Coding Interview Set 2 (videos): +- [ ] Cracking The Coding Interview Set 2 (video): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) -## Your Resume +## Resume Anda - [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- Lihat Lanjutkan item persiapan di Cracking The Coding Interview dan bagian belakang Wawancara Pemrograman Terkena -## Be thinking of for when the interview comes +## Pikirkan saat wawancara datang -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. +Pikirkan sekitar 20 pertanyaan wawancara yang akan Anda dapatkan, bersama dengan baris item di bawah ini. Miliki 2-3 jawaban untuk masing-masing. +Memiliki cerita, bukan hanya data, tentang sesuatu yang Anda capai. -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing Google product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? +- Mengapa Anda menginginkan pekerjaan ini? +- Apa masalah sulit yang telah Anda selesaikan? +- Tantangan terbesar yang dihadapi? +- Desain terbaik / terburuk terlihat? +- Ide untuk meningkatkan produk Google yang sudah ada. +- Bagaimana Anda bekerja dengan baik, sebagai individu dan sebagai bagian dari tim? +- Keterampilan atau pengalaman mana yang akan menjadi aset dalam peran tersebut dan mengapa? +- Apa yang paling Anda nikmati di [job x / project y]? +- Apa tantangan terbesar yang Anda hadapi di [pekerjaan x / proyek y]? +- Bug tersulit apa yang Anda hadapi di [pekerjaan x / proyek y]? +- Apa yang Anda pelajari di [pekerjaan x / proyek y]? +- Apa yang akan Anda lakukan lebih baik di [pekerjaan x / proyek y]? -## Have questions for the interviewer +## Bertanyalah Pada Pewawancara - Some of mine (I already may know answer to but want their opinion or team perspective): + Beberapa milik saya (saya mungkin sudah tahu jawaban tetapi ingin pendapat atau perspektif tim mereka): -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? +- Seberapa besar tim Anda? +- Seperti apa siklus pengembang Anda? Apakah Anda melakukan waterfall / sprint / agile? +- Apakah terburu-buru ke tenggat waktu biasa terjadi? Atau apakah ada fleksibilitas? +- Bagaimana keputusan dibuat dalam tim Anda? +- Berapa banyak pertemuan yang Anda lakukan per minggu? +- Apakah Anda merasa lingkungan kerja membantu Anda berkonsentrasi? +- Apa yang sedang kamu kerjakan? +- Apa yang Anda suka tentang itu? +- Seperti apa kehidupan kerja? -## Once You've Got The Job +## Saat Anda Berhasil Mendapatkan Pekerjaannya Congratulations! @@ -1421,7 +1421,7 @@ You're never really done. --- -## Additional Books +## Buku Tambahan - [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - an oldie but a goodie @@ -1437,11 +1437,11 @@ You're never really done. - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) -## Additional Learning +## Materi Tambahan -- ### Dynamic Programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. +- ### Pemrograman Dinamis + - Subjek ini bisa jadi sangat sulit, karena setiap masalah yang dapat diselesaikan dalam Pemrograman Dinamis harus didefinisikan sebagai relasi rekursi, dan menyelesaikannya bisa rumit. + - Saya sarankan untuk melihat banyak contoh masalah Pemrograman Dinamis sampai Anda memiliki pemahaman yang kuat tentang pola yang terlibat. - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) @@ -1470,7 +1470,7 @@ You're never really done. - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) -- ### Floating Point Numbers +- ### Angka Titik Mengambang - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) @@ -1520,7 +1520,7 @@ You're never really done. - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Teori informasi (video) - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - [ ] more about Markov processes: - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) @@ -1528,7 +1528,7 @@ You're never really done. - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below. -- ### Parity & Hamming Code (videos) +- ### Pariti & Kode Hamming - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - [ ] Hamming Code: @@ -1536,20 +1536,20 @@ You're never really done. - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### Entropy - - also see videos below - - make sure to watch information theory videos first +- ### Entropi + - lihat juga video di bawah ini + - pastikan untuk menonton video teori informasi terlebih dahulu - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography - - also see videos below - - make sure to watch information theory videos first +- ### Kriptografi + - lihat juga video di bawah ini + - pastikan untuk menonton video teori informasi terlebih dahulu - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression - - make sure to watch information theory videos first +- ### Kompresi + - pastikan untuk menonton video teori informasi terlebih dahulu - [ ] Computerphile (videos): - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) @@ -1560,8 +1560,8 @@ You're never really done. - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Networking - - **if you have networking experience or want to be a systems engineer, expect questions** +- ### Jaringan + - **jika Anda memiliki pengalaman jaringan atau ingin menjadi insinyur sistem, tunggu pertanyaan** - otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) @@ -1574,7 +1574,7 @@ You're never really done. - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) -- ### Computer Security +- ### - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) @@ -1595,11 +1595,11 @@ You're never really done. - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ### Parallel Programming +- ### Pemrograman Paralel - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### Messaging, Serialization, and Queueing Systems +- ### Pengiriman Pesan, Serialisasi, dan Sistem Queueing - [ ] [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) @@ -1842,141 +1842,198 @@ You're never really done. -- -## Additional Detail on Some Subjects +## Detail Tambahan tentang Beberapa Subjek + + Saya menambahkan ini untuk memperkuat beberapa ide yang sudah disajikan di atas, tetapi tidak ingin memasukkannya di atas karena terlalu banyak. Sangat mudah untuk melakukannya secara berlebihan pada suatu subjek. + Anda ingin dipekerjakan di abad ini, bukan? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle (Prinsip Tanggung Jawab Tunggal)](http://www.oodesign.com/single-responsibility-principle.html) | [Tanggung jawab tunggal untuk setiap Objek](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [lebih banyak rasa](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle (Prinsip Terbuka / Tertutup)](http://www.oodesign.com/open-close-principle.html) | [Pada tingkat produksi, Objek siap untuk ekstensi tetapi tidak untuk modifikasi](https://en.wikipedia.org/wiki/Open/closed_principle) + - [lebih banyak rasa](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle (Prinsip Substitusi Liskov)](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Class Dasar dan Class Turunan mengikuti prinsip 'IS A'](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [lebih banyak rasa](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle (Prinsip pemisahan antarmuka)](http://www.oodesign.com/interface-segregation-principle.html) | klien tidak boleh dipaksa untuk mengimplementasikan antarmuka yang tidak mereka gunakan + - [Prinsip Pemisahan Antarmuka dalam 5 menit (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [lebih banyak rasa](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D - [Dependency Inversion principle (Prinsip Ketergantungan Inversi)](http://www.oodesign.com/dependency-inversion-principle.html) | Kurangi dependency dalam komposisi objek. + - [Mengapa Prinsip Pembalikan Ketergantungan Dan Mengapa Itu Penting](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [lebih banyak rasa](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? -- [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) +- **Union-Find** + - [Gambaran](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Implementasi yang Naif](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Pohon](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union Berdasarkan Pangkat](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Kompresi Jalur](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Opsi Analisis](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) +- **Lebih banyak Pemrograman Dinamis** (videos) + - [6.006: Pemrograman Dinamis I: Fibonacci, Jalur Terpendek](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Pemrograman Dinamis II: Justifikasi Teks, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Tanda kurung, Edit Jarak, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Pemrograman Dinamis & DP Lanjutan](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Pemrograman Dinamis: Jalur Terpendek Semua Pasangan](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Pemrograman Dinamis (pengkajian siswa)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) +- **Pemrosesan Graph Lanjutan** (video) + - [Algoritma Terdistribusi Sinkron: Pemutusan Simetri. Jalur Terpendek yang Merentangkan Pohon](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Algoritma Terdistribusi Asynchronous: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) +- MIT **Probabilitas** (matematika, dan lakukan perlahan, yang bagus untuk hal-hal matematika) (video): + - [MIT 6.042J - Pengenalan Probabilitas](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Probabilitas Bersyarat](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [DENGAN 6.042J - Kemerdekaan](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Variabel Acak](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Harapan I.](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Harapan II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Penyimpangan Besar](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Jalan Acak](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- [Simonson: Algoritma Perkiraan (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) -- [ ] **String Matching** - - [ ] Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP): - - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer–Moore string search algorithm - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped +- **Pencocokan String** + - Rabin-Karp (videos): + - [Algoritma Rabin Karps](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Prekomputasi](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimasi: Implementasi dan Analisis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Penggandaan Meja, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Analisis Amortisasi](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [Algoritma Pencocokan String Knuth-Morris-Pratt (KMP)](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Algoritma pencarian string Boyer – Moore + - [Algoritma Pencarian String Boyer-Moore](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Algoritma Boyer-Moore-Horspool Pencarian String Lanjutan (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algoritma pada String](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - dimulai dengan baik, tetapi pada saat melewati KMP, hal itu menjadi lebih rumit dari yang seharusnya + - penjelasan yang bagus tentang percobaan + - bisa dilewati -- [ ] **Sorting** +- **Penyortiran** - - [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - Kuliah Stanford tentang penyortiran: + - [Kuliah 15 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Kuliah 16 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algoritma - Sortasi - Kuliah 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algoritma - Sorting II - Kuliah 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena memberi kuliah tentang penyortiran: + - [kuliah dimulai pada 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [kuliah dimulai pada 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [kuliah dimulai pada 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [kuliah dimulai pada 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## Seri Video -Sit back and enjoy. "Netflix and skill" :P +Duduk dan nikmati. "Netflix dan keterampilan": P -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [Daftar masalah Pemrograman Dinamis individu (masing-masing pendek)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Arsitektur, Perakitan, Aplikasi (11 video)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Aljabar, Musim Semi 2005 (35 video)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [Luar Biasa - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [Ilmu Komputer 70, 001 - Musim Semi 2015 - Matematika Diskrit dan Teori Probabilitas](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [Matematika Diskrit oleh Shai Simonson (19 video)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [Matematika Diskrit Bagian 1 oleh Sarada Herke (5 video)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- [ ] CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- CSE373 - Analysis of Algorithms (25 videos) + - [Kuliah Skiena dari Algoritma Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Musim Semi 2014): Struktur Data (25 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Musim Gugur 2006): Struktur Data (39 video)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Struktur Mesin (26 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Menggunakan UML dan Java (21 video)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- ~~ [UC Berkeley CS 152: Arsitektur dan Teknik Komputer (20 video)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.004: Struktur Komputasi (49 video)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Kuliah Arsitektur Komputer (39 video)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Pengantar Algoritma (47 video)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Teknik Sistem Komputer (22 video)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Matematika untuk Ilmu Komputer, Musim Gugur 2010 (25 video)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Desain dan Analisis Algoritma (34 video)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 video)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Struktur Data Lanjutan (22 video)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Algoritma Lanjutan, Musim Semi 2016 (24 video)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Algoritma Lanjutan (25 video)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [MIT 6.858 Computer Systems Security, Musim Gugur 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Paradigma Pemrograman (27 video)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) +- [Pengantar Kriptografi oleh Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Situs Kursus bersama dengan Slide dan Kumpulan Soal](http://www.crypto-textbook.com/) -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Menambang Kumpulan Data Besar-besaran - Universitas Stanford (94 video)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Teori Grafik oleh Sarada Herke (67 video)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## Kursus Ilmu Komputer -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Direktori Kursus CS Online](https://github.com/open-source-society/computer-science) +- [Direktori Kursus CS (banyak dengan kuliah online)](https://github.com/prakhar1989/awesome-courses) + +## Implementasi Algoritma + +- [Implementasi Berbagai Algoritma oleh Princeton University)](https://algs4.cs.princeton.edu/code) + +## Dokumen + +- [Suka makalah klasik?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Mengkomunikasikan Proses Berurutan](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implementasi di Go](https://godoc.org/github.com/thomas11/csp) +- [2003: Sistem Berkas Google](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - digantikan oleh Colossus pada tahun 2012 +- [2004: MapReduce: Pemrosesan Data yang Disederhanakan pada Kluster Besar](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - kebanyakan digantikan oleh Cloud Dataflow? +- [2006: Bigtable: Sistem Penyimpanan Terdistribusi untuk Data Terstruktur](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [Melihat ke dalam Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: Layanan Chubby Lock untuk Sistem Terdistribusi yang Dirangkai Secara Longgar](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Toko Nilai Kunci Amazon yang Sangat Tersedia](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Makalah Dynamo memulai revolusi NoSQL +- [2007: Yang Harus Diketahui Setiap Programmer Tentang Memori (sangat panjang, dan penulis mendorong untuk melewatkan beberapa bagian)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, Infrastruktur Pelacakan Sistem Terdistribusi Skala Besar](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Analisis Interaktif Kumpulan Data Skala Web](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Colossus Google](https://www.wired.com/2012/07/google-colossus/) + - kertas tidak tersedia +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [kertas](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [kertas](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Pembelajaran Mesin: Kartu Kredit Berbunga Tinggi dari Hutang Teknis](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines di Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Ketersediaan Tinggi dalam Skala Besar: Membangun Infrastruktur Data Google untuk Iklan](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Machine Learning Skala Besar pada Sistem Terdistribusi Heterogen](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: Bagaimana Pengembang Menelusuri Kode: Studi Kasus](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, dan Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + +## LICENSE + +[CC-BY-SA-4.0](../LICENSE.txt) + +Terjemahan Bahasa Indonesia oleh @[hexatester](https://github.com/hexatester), @[santosomichael](https://github.com/santosomichael), @[dikiaap](https://github.com/dikiaap), @[rvlewerissa](https://github.com/rvlewerissa), @[ziishaned](https://github.com/ziishaned), @[rimonmostafiz](https://github.com/rimonmostafiz), @[hwhung0111](https://github.com/hwhung0111), @[fahminlb33](https://github.com/fahminlb33), @[davidsetyanugraha](https://github.com/davidsetyanugraha) From a98cd9081e5fa0c1b6dbaa4c733ba6efe5ab0b9d Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 16:28:31 +0700 Subject: [PATCH 189/857] Update Additional Learning Indonesian translation --- translations/README-id.md | 635 ++++++++++++++++---------------------- 1 file changed, 274 insertions(+), 361 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index fcd6afeb3f..9decd3b72f 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -92,12 +92,8 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany ---------------- Semua dibawah ini bersifat opsional ---------------- - [Buku Tambahan](#buku-tambahan) -- [Materi Tambahan](#materi-tambahan) - - [Pemrograman Dinamis](#pemrograman-dinamis) +- [Pembelajaran Tambahan](#pembelajaran-tambahan) - [Kompilator](#kompilator) - - [Angka Titik Mengambang](#angka-titik-mengambang) - - [Unicode](#unicode) - - [Endianness](#endianness) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - [Teori Informasi](#teori-informasi-video) @@ -107,11 +103,11 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Kompresi](#kompresi) - [Jaringan](#jaringan) (bersiaplah mendapatkan pertanyaan jaringan apabila anda ingin menjadi system engineer) - [Keamanan komputer](#keamanan-komputer) - - [Garbage collection](#garbage-collection) + - [Pengumpulan sampah (Garbage collection)](#pengumpulan-sampah) - [Pemrograman Paralel](#pemrograman-paralel) - [Pengiriman Pesan, Serialisasi, dan Sistem Queueing](#pengiriman-pesan-serialisasi-dan-sistem-queueing) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) + - [Transformasi Fourier Cepat](#transformasi-fourier-cepat) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) @@ -129,15 +125,14 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - B-Trees - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) + - [Aliran Jaringan](#aliran-jaringan) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Matematika untuk Pemrosesan Cepat](#matematika-untuk-pemrosesan-cepat) - [Treap](#treap) - - [Pemrograman Linear](#pemrograman-linear) - - [Geometri, Convex hull](#geometri-convex-hull) + - [Pemrograman Linear](#pemrograman-linear-video) + - [Geometri, Convex hull](#geometri-convex-hull-video) - [Matematika Diskrit](#matematika-diskrit) - - [Pembelajaran Mesin](#pembelajaran-mesin) - - [Go](#go) + - [Pembelajaran Mesin](#pembelajaran-mesin-machine-learning) - [Detail Tambahan tentang Beberapa Subjek](#detail-tambahan-tentang-beberapa-subjek) - [Seri Video](#seri-video) - [Kursus Ilmu Komputer](#kursus-ilmu-komputer) @@ -1437,409 +1432,327 @@ You're never really done. - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) -## Materi Tambahan +## Pembelajaran Tambahan + + Saya menambahkannya untuk membantu Anda menjadi insinyur perangkat lunak yang berpengetahuan luas, + dan untuk mengetahui teknologi dan algoritme tertentu, sehingga Anda akan memiliki kotak peralatan yang lebih besar. -- ### Pemrograman Dinamis - - Subjek ini bisa jadi sangat sulit, karena setiap masalah yang dapat diselesaikan dalam Pemrograman Dinamis harus didefinisikan sebagai relasi rekursi, dan menyelesaikannya bisa rumit. - - Saya sarankan untuk melihat banyak contoh masalah Pemrograman Dinamis sampai Anda memiliki pemahaman yang kuat tentang pola yang terlibat. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Compilers - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- ### Angka Titik Mengambang - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - -- ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. +- ### Kompilator + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor + - Biasakan diri Anda dengan editor kode berbasis unix - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) + - [Mengedit Dengan vim 01 - Instalasi, Setup, dan The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Petualangan VIM](http://vim-adventures.com/) - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - [Editor vi / vim - Pelajaran 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [Editor vi / vim - Pelajaran 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [Editor vi / vim - Pelajaran 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [Editor vi / vim - Pelajaran 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Menggunakan Vi, bukan Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - [Tutorial Dasar Emacs (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - set of 3 (videos): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [Tutorial Emacs (Pemula) -Bagian 1- Perintah file, potong / salin / tempel, perintah kursor](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Tutorial Emacs (Pemula) -Bagian 2- Manajemen buffer, pencarian, mode M-x grep dan rgrep](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Tutorial Emacs (Pemula) -Bagian 3- Ekspresi, Pernyataan, ~ / .emacs file dan paket](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Mode Jahat: Atau, Bagaimana Saya Belajar untuk Berhenti Khawatir dan Cinta Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Menulis Program C Dengan Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(mungkin) Mode Organisasi Secara Mendalam: Mengelola Struktur (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### Teori informasi (video) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - Saya mengisi daftar di bawah ini dari alat yang bagus. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Teori Informasi (video) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - Lebih lanjut tentang proses Markov: + - [Pembuatan Teks Markov Inti](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Inti Penerapan Pembuatan Teks Markov](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Proyek = Panduan Pembuatan Teks Markov](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - Lihat lebih lanjut dalam seri Informasi dan Entropi MIT 6.050J di bawah ini - ### Pariti & Kode Hamming - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### Entropi - - lihat juga video di bawah ini - - pastikan untuk menonton video teori informasi terlebih dahulu - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Keseimbangan (Parity)](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Deteksi kesalahan](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Koreksi kesalahan](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Lihat juga video di bawah ini + - Pastikan untuk menonton video teori informasi terlebih dahulu + - [Teori Informasi, Claude Shannon, Entropi, Redundansi, Kompresi Data & Bit (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Kriptografi - - lihat juga video di bawah ini - - pastikan untuk menonton video teori informasi terlebih dahulu - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Lihat juga video di bawah ini + - Pastikan untuk menonton video teori informasi terlebih dahulu + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Kriptografi: Funsgi Hash](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Kriptografi: Enkripsi](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Kompresi - - pastikan untuk menonton video teori informasi terlebih dahulu - - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### Jaringan - - **jika Anda memiliki pengalaman jaringan atau ingin menjadi insinyur sistem, tunggu pertanyaan** - - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - -- ### - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### Garbage collection - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - Pastikan untuk menonton video teori informasi terlebih dahulu + - Computerphile (video): + - [Kompresi](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropi dalam Kompresi](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Pohon Terbalik (Pohon Huffman)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS / TRITS - Pohon Huffman](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Kompresi Elegan dalam Teks (Metode LZ 77)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Kompresi Teks Memenuhi Probabilitas](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Video Kepala Kompresor](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(opsional) Google Developers Live: GZIP saja tidak cukup!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Keamanan komputer + - [MIT (23 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Pengumpulan sampah + - [GC dalam Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Pengumpulan Sampah itu Baik!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Pengumpulan Sampah di CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Pemrograman Paralel - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Python Efisien untuk Komputasi Paralel Berkinerja Tinggi (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Pengiriman Pesan, Serialisasi, dan Sistem Queueing - - [ ] [Thrift](https://thrift.apache.org/) + - [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 untuk Pengembang Java (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) - -- ### Fast Fourier Transform - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Memulai](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [Langkah Awal dengan Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Baca Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [Algoritma Pencarian](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A * Tutorial Pathfinding (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A * Pathfinding (E01: penjelasan algoritma) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Transformasi Fourier Cepat + - [Panduan Interaktif Untuk Transformasi Fourier](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Apa itu Transformasi Fourier? Untuk apa itu digunakan?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Apa itu Transformasi Fourier? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Bagilah & Taklukkan: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Memahami FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Filter Bloom (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Filter Bloom | Penambangan Kumpulan Data Besar-besaran | Universitas Stanford (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - [Cara Menulis Aplikasi Bloom Filter](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [Cara Menghitung Miliaran Objek Berbeda Hanya Menggunakan Memori 1.5KB](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + - Digunakan untuk menentukan kesamaan dokumen + - Kebalikan dari MD5 atau SHA yang digunakan untuk menentukan apakah 2 dokumen / string sama persis + - [Simhashing (semoga) menjadi sederhana](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) + - [Bagilah & Taklukkan: Pohon van Emde Boas (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [Catatan Kuliah MIT](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) - ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [CS 61B Kuliah 39: Augmented Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - Know least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - [ ] **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - [ ] **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. + - Ketahui setidaknya satu jenis pohon biner yang seimbang (dan ketahui bagaimana implementasinya): + - "Di antara pohon pencarian seimbang, AVL dan 2/3 trees sekarang sudah ketinggalan zaman, dan red-black trees tampaknya lebih populer. Struktur data pengorganisasian mandiri yang sangat menarik adalah splay trees, yang menggunakan rotasi untuk memindahkan kunci apa pun yang diakses ke root." - Skiena + - Dari jumlah tersebut, saya memilih untuk menerapkan splay tree. + Dari apa yang saya baca, Anda tidak akan menerapkan pohon pencarian seimbang (balanced search tree) dalam wawancara Anda. + Tapi saya ingin eksposur ke pengkodean satu dan hadapi saja, splay trees adalah lutut lebah. + Saya memang membaca banyak kode red-black tree code + - Splay tree: menyisipkan, mencari, menghapus fungsi + Jika Anda akhirnya menerapkan pohon merah / hitam coba ini saja: + - Fungsi pencarian dan penyisipan, melewatkan penghapusan + - Saya ingin mempelajari lebih lanjut tentang B-Tree karena digunakan secara luas dengan kumpulan data yang sangat besar + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - Dalam praktek: + Dari apa yang saya tahu, ini tidak banyak digunakan dalam praktiknya, tetapi saya bisa melihat di mana mereka akan berada: + AVL trees (Pohon AVL) adalah struktur lain yang mendukung pencarian, penyisipan, dan penghapusan O(log n). + Ini lebih seimbang daripada red-black trees, menyebabkan penyisipan dan pemindahan lebih lambat tetapi pengambilan lebih cepat. + Ini membuatnya menarik untuk struktur data yang dapat dibangun sekali dan dimuat tanpa rekonstruksi, seperti kamus bahasa (atau kamus program, seperti opcode assembler atau interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [Implementasi AVL Tree (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split Dan Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - Dalam praktek: + Splay trees (pohon bentang) biasanya digunakan dalam implementasi cache, pengalokasi memori, router, pengumpul sampah, kompresi data, tali (pengganti string yang digunakan untuk string teks panjang), di Windows NT (dalam memori virtual, jaringan, dan kode sistem file) dll. + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - Kuliah MIT: Splay Trees: + - Menjadi sangat matematis, tetapi perhatikan 10 menit terakhir dengan pasti. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - [ ] **Red/black trees** - - these are a translation of a 2-3 tree (see below) - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - - [ ] **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - [ ] **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - [ ] **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - - [ ] **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - **Red/black trees** + - Ini adalah terjemahan dari sebuah 2-3 tree (lihat dibawah). + - Dalam praktek: + Red/black trees (Pohon merah / hitam) menawarkan jaminan kasus terburuk untuk waktu penyisipan, waktu penghapusan, dan waktu pencarian. + Hal ini tidak hanya membuatnya berharga dalam aplikasi yang sensitif terhadap waktu seperti aplikasi waktu nyata, tetapi juga menjadikannya sebagai blok bangunan yang berharga dalam struktur data lain yang memberikan jaminan kasus terburuk; + sebagai contoh, banyak struktur data yang digunakan dalam geometri komputasi dapat didasarkan pada red/black trees, dan Penjadwal yang Benar-Benar Adil yang digunakan dalam kernel Linux saat ini menggunakan red/black trees. + Di Java versi 8, Collection HashMap telah dimodifikasi sedemikian rupa sehingga alih-alih menggunakan LinkedList untuk menyimpan elemen identik dengan kode hash yang buruk, red/black trees digunakan + - [Aduni - Algoritma - Kuliah 4 (link lompat ke titik awal) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algoritma - Kuliah 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [Pengantar Pencarian Biner Dan Red-Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - Dalam praktek: + 2-3 trees memiliki penyisipan yang lebih cepat dengan mengorbankan pencarian yang lebih lambat (karena ketinggian lebih banyak dibandingkan dengan AVL trees). + - Anda akan sangat jarang menggunakan 2-3 trees karena implementasinya melibatkan berbagai jenis node. Sebaliknya, orang menggunakan red–black trees. + - [Intuisi dan Definisi 23-Trees (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Tampilan Biner dari 23-Trees](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (pengajian siswa) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - Dalam praktek: + Untuk setiap 2-4 trees, ada red–black trees yang sesuai dengan elemen data dalam urutan yang sama. + Operasi penyisipan dan penghapusan pada 2-4 trees juga setara dengan pembalikan warna dan rotasi pada red–black trees. + Hal ini membuat 2-4 trees menjadi alat penting untuk memahami logika di balik red–black trees, dan inilah mengapa banyak teks algoritme pengantar memperkenalkan 2-4 trees tepat sebelum red–black trees, meskipun **2-4 trees tidak sering digunakan dalam praktik**. + - [CS 61B Kuliah 26: Pohon Pencarian Seimbang (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bawah Atas 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Atas Bawah 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - catatan: N atau K adalah faktor percabangan (cabang maks) + - pohon biner adalah pohon 2-ary, dengan faktor percabangan = 2 + - 2-3 pohon adalah 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fakta menyenangkan: ini adalah misteri, tetapi B bisa berarti Boeing, Balanced, atau Bayer (co-inventor). + - Dalam praktek: + B-Trees banyak digunakan dalam database. Kebanyakan filesystem modern menggunakan B-tree (atau Variants). Sebagai tambahannya + penggunaannya dalam database, B-tree juga digunakan dalam sistem file untuk memungkinkan akses acak cepat ke sembarang + blokir di file tertentu. Masalah dasarnya adalah mengubah alamat file blok i menjadi blok disk + (atau mungkin ke alamat sektor kepala silinder) + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [Struktur Data B-Tree](http://btechsmartclass.com/data_structures/b-trees.html) + - [Pengantar B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [Definisi dan Penyisipan B-Tree (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Penghapusan B-Tree (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Model Hirarki Memori (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - Bagus untuk menemukan jumlah titik dalam persegi panjang atau objek berdimensi lebih tinggi + - Cocok untuk tetangga terdekat + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [Algoritma kNN K-d tree (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + -"Ini adalah semacam struktur data kultus" - Skiena + - [Pengacakan: Skip lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Untuk animasi dan sedikit lebih detail](https://en.wikipedia.org/wiki/Skip_list) -- ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) +- ### Aliran Jaringan + - [Ford-Fulkerson dalam 5 menit - Contoh langkah demi langkah (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Algoritma Ford-Fulkerson (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Aliran Jaringan (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [UCB 61B - Set Pemutusan; Penyortiran & pemilihan (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Algoritma Sedgewick - Union-Find (6 video)](https://www.coursera.org/learn/algorithms-part1/home/week/1) -- ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) +- ### Matematika untuk Pemrosesan Cepat + - [Aritmatika Integer, Perkalian Karatsuba (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [Teorema Sisa Cina (digunakan dalam kriptografi) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - -- ### Linear Programming (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - -- ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - -- ### Discrete math - - see videos below - -- ### Machine Learning - - [ ] Why ML? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Struktur Data: Penjelasan hierarki (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Aplikasi dalam operasi set](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Pemrograman Linear (video) + - [Pemrograman Linear](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Menemukan biaya minimum](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Menemukan nilai maksimum](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Memecahkan Persamaan Linear dengan Python - Algoritma Simpleks](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (video) + - [Grafik Alg. IV: Pengantar algoritma geometris - Kuliah 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Algoritma Geometris: Graham & Jarvis - Kuliah 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Bagilah & Taklukkan: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Matematika diskrit + - lihat video di bawah ini + +- ### Pembelajaran Mesin (Machine Learning) + - Kenapa ML? + - [Bagaimana Google Mengubah Dirinya Sebagai Perusahaan Machine Learning First](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Pembelajaran Mendalam Skala Besar untuk Sistem Komputer Cerdas (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Pembelajaran Mendalam dan Dapat Dipahami versus Rekayasa Perangkat Lunak dan Verifikasi oleh Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Alat pembelajaran Mesin Cloud Google (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Resep Pembelajaran Mesin Google Developers (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tutorial Tensorflow](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Panduan Praktis untuk mengimplementasikan Jaringan Neural dengan Python (menggunakan Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Kursus: + - [Kursus pemula yang bagus: Pembelajaran Mesin](https://www.coursera.org/learn/machine-learning) + - [video saja](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - lihat video 12-18 untuk review aljabar linier (14 dan 15 adalah duplikat) + - [Jaringan Neural untuk Pembelajaran Mesin](https://www.coursera.org/learn/neural-networks) + - [Nanodegree Deep Learning Google](https://www.udacity.com/course/deep-learning--ud730) + - [Nanodegree Machine Learning Engineer Google / Kaggle](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Nanodegree, Insinyur Mobil Mengemudi Mandiri](https://www.udacity.com/drive) + - [Kursus Online Metis ($99 selama 2 bulan)](http://www.thisismetis.com/explore-data-science) + - Sumber: + - Buku: + - [Pembelajaran Mesin Python](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Ilmu Data dari Awal: Prinsip Pertama dengan Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Pengantar Machine Learning dengan Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Pembelajaran Mesin untuk Insinyur Perangkat Lunak](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - Data School: http://www.dataschool.io/ -- ### Go - - [ ] Videos: - - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] Books: - - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) - - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) - -- ## Detail Tambahan tentang Beberapa Subjek From e2536425f08ffa4494fc9ad0ef1dac39c0df61e5 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 16:38:50 +0700 Subject: [PATCH 190/857] Update Additional Books Indonesian translation --- translations/README-id.md | 70 +++++++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 9decd3b72f..b3ee36739c 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1418,19 +1418,63 @@ You're never really done. ## Buku Tambahan -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - an oldie but a goodie -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book -- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) + Ini ada di sini sehingga Anda dapat menyelami topik yang menurut Anda menarik. + +- [Lingkungan Pemrograman Unix](https://www.amazon.com/dp/013937681X) + - Tua tapi bagus +- [Baris Perintah Linux: Pengantar Lengkap](https://www.amazon.com/dp/1593273894/) + - Pilihan modern +- [Seri Ilustrasi TCP / IP](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Pola Desain Kepala Pertama](https://www.amazon.com/gp/product/0596007124/) + - Pengenalan lembut untuk pola desain +- [Pola Desain: Elemen Perangkat Lunak Object-Oriente yang Dapat Digunakan Kembali](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - Alias buku "Gang Of Four", atau GOF + - Buku pola desain kanonik +- [Buku Pegangan Administrasi Sistem UNIX dan Linux, Edisi ke-5](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Manual Desain Algoritma](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - Sebagai review dan pengenalan masalah + - Porsi katalog algoritme jauh di luar cakupan kesulitan yang akan Anda dapatkan dalam wawancara + - Buku ini memiliki 2 bagian: + - Kelas buku teks tentang struktur data dan algoritma + - Kelebihan: + - Merupakan review yang bagus seperti buku teks algoritma apapun + - Cerita bagus dari pengalamannya memecahkan masalah di industri dan akademisi + - Contoh kode di C + - Kekurangan: + - Bisa padat atau tidak bisa ditembus seperti CLRS, dan dalam beberapa kasus, CLRS mungkin menjadi alternatif yang lebih baik untuk beberapa mata pelajaran + - Bab 7, 8, 9 bisa menyakitkan untuk dicoba diikuti, karena beberapa item tidak dijelaskan dengan baik atau membutuhkan lebih banyak otak daripada yang saya miliki + - Jangan salah paham: Saya suka Skiena, gaya mengajarnya, dan tingkah lakunya, tapi saya mungkin bukan materi Stony Brook + - Katalog algoritma: + - Inilah alasan sebenarnya Anda membeli buku ini + - Akan sampai ke bagian ini. Akan memperbarui di sini setelah saya berhasil melewatinya + - Bisa menyewanya di kindle + - jawaban: + - [Solusi](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solusi](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Tulis Kode Hebat: Volume 1: Memahami Mesin](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Buku itu diterbitkan pada tahun 2004, dan agak ketinggalan jaman, tetapi merupakan sumber yang hebat untuk memahami komputer secara singkat + - Penulis menemukan [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), jadi ambillah sebutan dan contoh di HLA dengan sedikit garam. Tidak banyak digunakan, tetapi contoh yang layak tentang seperti apa perakitan itu + - Bab-bab ini layak dibaca untuk memberi Anda dasar yang bagus: + - Bab 2 - Representasi Numerik + - Bab 3 - Aritmatika Biner dan Operasi Bit + - Bab 4 - Representasi Titik Mengambang + - Bab 5 - Representasi Karakter + - Bab 6 - Organisasi Memori dan Akses + - Bab 7 - Tipe Data Komposit dan Objek Memori + - Bab 9 - Arsitektur CPU + - Bab 10 - Arsitektur Set Instruksi + - Bab 11 - Arsitektur dan Organisasi Memori +- [Pengantar Algoritma](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Penting:** Membaca buku ini hanya akan memiliki nilai yang terbatas. Buku ini adalah ulasan yang bagus tentang algoritme dan struktur data, tetapi tidak akan mengajari Anda cara menulis kode yang baik. Anda harus dapat membuat kode solusi yang layak secara efisien + - Alias CLR, terkadang CLRS, karena Stein terlambat ke permainan + +- [Arsitektur Komputer, Edisi Keenam: Pendekatan Kuantitatif](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Pemrograman Mutiara](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - Beberapa bab pertama menyajikan solusi cerdas untuk masalah pemrograman (beberapa sangat lama menggunakan pita data) + tetapi itu hanya intro. Ini adalah buku panduan tentang desain dan arsitektur program ## Pembelajaran Tambahan From 9c1deb60c3685af376900cea924588b934c5ddbe Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 16:46:43 +0700 Subject: [PATCH 191/857] Update Once You've Got The Job id translation --- translations/README-id.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index b3ee36739c..a90e2f8614 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1394,22 +1394,21 @@ Memiliki cerita, bukan hanya data, tentang sesuatu yang Anda capai. ## Saat Anda Berhasil Mendapatkan Pekerjaannya -Congratulations! +Selamat! -- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +Terus belajar. -Keep learning. - -You're never really done. +Anda tidak pernah benar-benar selesai. --- ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. These are my recommendations, not Google's. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. + Segala sesuatu di bawah poin ini bersifat opsional. Ini adalah rekomendasi saya, bukan Google. + Dengan mempelajari ini, Anda akan mendapatkan eksposur yang lebih besar ke lebih banyak konsep CS, + dan akan lebih siap untuk pekerjaan rekayasa perangkat lunak apa pun. + Anda akan menjadi insinyur perangkat lunak yang jauh lebih berpengalaman. ***************************************************************************************************** ***************************************************************************************************** From e473b47826d1ea5ac821b87dcfd260acc0c72de4 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 16:54:27 +0700 Subject: [PATCH 192/857] Update Coding exercises/challenges bellow for id --- translations/README-id.md | 53 +++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index a90e2f8614..e585a3a220 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -82,7 +82,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Perancangan Sistem, Skalabilitas, Penganganan Data](#perancangan-sistem-skalabilitas-penanganan-data) (jika anda memiliki pengalaman 4 tahun lebih) - [Ulasan Akhir](#ulasan-akhir) - [Latihan Pertanyaan Pemrograman](#latihan-pertanyaan-pemrograman) -- [Soal-soal Pemrograman](#soal-soal-pemrograman) +- [Latihan / tantangan coding](#latihan--tantangan-coding) - [Menjelang Proses Interview](#menjelang-proses-interview) - [Resume Anda](#resume-anda) - [Pikirkan saat wawancara datang](#pikirkan-saat-wawancara-datang) @@ -1325,41 +1325,62 @@ Tambahan: Lihat [Daftar Buku di atas](#book-list) -## Soal-soal Pemrograman +## Latihan / tantangan coding Setelah Anda mempelajari otak Anda, gunakan otak itu untuk bekerja. Ambil tantangan pengkodean setiap hari, sebanyak yang Anda bisa. -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [Bagaimana Menemukan Solusi](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) +- [Cara Membedah Pernyataan Masalah Topcoder](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) + +Video Pertanyaan Wawancara Coding: +- [IDeserve (88 video)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 playlist)](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 Video)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - Solusi LeetCode](https://youtube.com/FisherCoder) Situs tantangan: - [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) +- [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Situs pembelajaran bahasa, dengan tantangan: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) + +Repo tantangan: +- [Tantangan Interview Coding Interaktif dengan Python](https://github.com/donnemartin/interactive-coding-challenges) -Maybe: -- [Mock interviewers from big companies](http://www.gainlo.co/) +Wawancara Mock: +- [Gainlo.co: Mock pewawancara dari perusahaan besar](http://www.gainlo.co/) - Saya menggunakan ini dan itu membantu saya bersantai untuk layar ponsel dan wawancara di tempat +- [Pramp: Wawancara mengejek dari / dengan teman sebaya](https://www.pramp.com/) - model wawancara praktik peer-to-peer +- [Refdash: Wawancara tiruan dan wawancara yang dipercepat](https://refdash.com/) - juga membantu kandidat mempercepat dengan melewatkan beberapa wawancara dengan perusahaan teknologi +- [interviewing.io: Berlatih wawancara tiruan dengan insinyur senior](https://interviewing.io) - wawancara desain algoritme / sistem tanpa nama dengan insinyur senior dari FAANG secara anonim. ## Menjelang Proses Interview -- [ ] Cracking The Coding Interview Set 2 (video): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) +- Memecahkan Wawancara Coding 2 Set (video): + - [Memecahkan Wawancara Coding](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Memecahkan Wawancara Coding - Seri Speaker Fullstack](https://www.youtube.com/watch?v=Eg5-tdAwclo) ## Resume Anda -- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - Lihat Lanjutkan item persiapan di Cracking The Coding Interview dan bagian belakang Wawancara Pemrograman Terkena - ## Pikirkan saat wawancara datang Pikirkan sekitar 20 pertanyaan wawancara yang akan Anda dapatkan, bersama dengan baris item di bawah ini. Miliki 2-3 jawaban untuk masing-masing. From eedc462575beb3dc56227b6a9e5c3d39a90f9e56 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 16:59:20 +0700 Subject: [PATCH 193/857] Update Coding Question Practice for id translation --- translations/README-id.md | 44 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index e585a3a220..7f8d417d88 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1284,44 +1284,42 @@ You'll get more graph practice in Skiena's book (see Books section below) and th --- -## [Latihan Pertanyaan Pemrograman +## Latihan Pertanyaan Pemrograman Sekarang setelah kamu mengetahui semua topik ilmu komputer di atas, sekarang saatnya berlatih menjawab soal coding. **Latihan pertanyaan coding bukan tentang menghafal jawaban atas masalah pemrograman.** Mengapa Anda perlu berlatih mengerjakan soal pemrograman: -- pengenalan masalah, dan di mana struktur data dan algoritme yang tepat cocok -- mengumpulkan persyaratan untuk masalah tersebut -- berbicara melalui masalah seperti yang akan Anda lakukan dalam wawancara -- coding di papan tulis atau kertas, bukan di komputer -- hadir dengan kerumitan ruang dan waktu untuk solusi Anda -- menguji solusi Anda +- Pengenalan masalah, dan di mana struktur data dan algoritme yang tepat cocok +- Mengumpulkan persyaratan untuk masalah tersebut +- Berbicara tentang masalah seperti yang akan Anda lakukan dalam wawancara +- Coding di papan tulis atau kertas, bukan di komputer +- Hadir dengan kerumitan ruang dan waktu untuk solusi Anda +- Menguji solusi Anda -Ada pengantar yang bagus untuk pemecahan masalah metodis dan komunikatif dalam sebuah wawancara. Anda akan mendapatkan ini dari buku wawancara pemrograman juga, tapi saya menemukan ini luar biasa: -[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) +Ada pengantar yang bagus untuk pemecahan masalah metodis dan komunikatif dalam sebuah wawancara. +Anda juga akan mendapatkan ini dari buku wawancara pemrograman, tetapi menurut saya ini luar biasa: +[Kanvas desain algoritme](http://www.hiredintech.com/algorithm-design/) -[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) +Tidak ada papan tulis di rumah? Itu masuk akal. Saya orang aneh dan memiliki papan tulis besar. Alih-alih papan tulis, belilah papan gambar besar dari toko seni. Anda bisa duduk di sofa dan berlatih. Ini adalah "papan tulis sofa" saya. +Saya menambahkan pena di foto untuk skala. Jika Anda menggunakan pena, Anda pasti berharap dapat menghapusnya. Cepat berantakan. Saya menggunakan pensil dan penghapus. -Tidak ada papan tulis di rumah? Itu masuk akal. Saya orang aneh dan memiliki papan tulis besar. Alih-alih papan tulis, pilih file -papan gambar besar dari toko seni. Anda bisa duduk di sofa dan berlatih. Ini adalah "papan tulis sofa" saya. -Saya menambahkan pena di foto untuk skala. Jika Anda menggunakan pena, Anda pasti berharap dapat menghapusnya. Cepat berantakan. - -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![papan tulis sofa saya](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) Tambahan: -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) +- [Matematika untuk Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Pemrograman Dinamis - Dari Pemula hingga Mahir](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [Materi Wawancara MIT](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Latihan untuk menjadi lebih baik pada bahasa tertentu](http://exercism.io/languages) **Baca dan Lakukan Masalah Pemrograman (dalam urutan ini):** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +- [ ] [Wawancara Pemrograman Terkena: Rahasia Mendaratkan Pekerjaan Berikutnya Anda, Edisi ke-2](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - jawaban di C, C++ dan Java +- [ ] [Cracking the Coding Interview, Edisi ke-6](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - jawaban di Java Lihat [Daftar Buku di atas](#book-list) From 537a591bc5d94f605da213bf086cb4e962437543 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 17:01:18 +0700 Subject: [PATCH 194/857] Update Final Review of id translation --- translations/README-id.md | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 7f8d417d88..1a0027570a 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1251,36 +1251,12 @@ You'll get more graph practice in Skiena's book (see Books section below) and th Bagian ini akan memiliki video pendek yang dapat Anda tonton dengan cukup cepat untuk meninjau sebagian besar konsep penting. Sangat menyenangkan jika Anda sering ingin penyegaran. -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) +- [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) + - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (18 video): + - [Video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Video Sedgewick - Algoritma II](https://www.coursera.org/learn/algorithms-part2) --- From 0bf41b684e72e42e4e47c9578653d5721effe641 Mon Sep 17 00:00:00 2001 From: hexatester Date: Fri, 1 Jan 2021 17:27:35 +0700 Subject: [PATCH 195/857] Update System Design, ... id translations --- translations/README-id.md | 209 +++++++++++++++++++------------------- 1 file changed, 107 insertions(+), 102 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 1a0027570a..9103cfcbbb 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -79,7 +79,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Penjadwalan](#penjadwalan) - [Implementasi Rutinitas Sistem](#implementasi-rutinitas-sistem) - [Pencarian String & Manipulasi](#pencarian-string--manipulasi) -- [Perancangan Sistem, Skalabilitas, Penganganan Data](#perancangan-sistem-skalabilitas-penanganan-data) (jika anda memiliki pengalaman 4 tahun lebih) +- [Perancangan Sistem, Skalabilitas, Penganganan Data](#Perancangan-Sistem,-Skalabilitas,-Penganganan-Data) (jika anda memiliki pengalaman 4 tahun lebih) - [Ulasan Akhir](#ulasan-akhir) - [Latihan Pertanyaan Pemrograman](#latihan-pertanyaan-pemrograman) - [Latihan / tantangan coding](#latihan--tantangan-coding) @@ -1123,126 +1123,131 @@ You'll get more graph practice in Skiena's book (see Books section below) and th --- ## Perancangan Sistem, Skalabilitas, Penganganan Data -- **Anda dapat mengharapkan pertanyaan desain sistem jika Anda memiliki pengalaman 4+ tahun.** -- Skalabilitas dan Desain Sistem adalah topik yang sangat besar dengan banyak topik dan sumber daya, karena ada banyak hal yang perlu dipertimbangkan saat merancang sistem perangkat lunak / perangkat keras yang dapat diskalakan. Berharap untuk meluangkan sedikit waktu untuk ini. -- Pertimbangan dari Yegge: - - skalabilitas + +**Anda dapat mengharapkan pertanyaan desain sistem jika Anda memiliki pengalaman 4+ tahun.** + +- Skalabilitas dan Desain Sistem adalah topik yang sangat besar dengan banyak topik dan sumber daya, + karena ada banyak hal yang perlu dipertimbangkan saat merancang sistem perangkat lunak / perangkat keras yang dapat diskalakan. + Berharap untuk meluangkan sedikit waktu untuk ini +- Pertimbangan: + - Skalabilitas (Scalability) - Saring kumpulan data besar menjadi nilai tunggal - Ubah satu kumpulan data ke kumpulan lainnya - Menangani data dalam jumlah yang sangat besar - - desain sistem (system design) + - Desain sistem (System design) - set fitur (features sets) - antarmuka (interfaces) - hierarki kelas (class hierarchies) - merancang sistem di bawah batasan tertentu - - kesederhanaan dan ketahanan + - kesederhanaan dan ketahanan (simplicity and robustness) - pengorbanan (tradeoffs) - analisis dan pengoptimalan kinerja -- [ ] **MULAI DI SINI**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] **MULAI DI SINI**: [Primer Desain Sistem](https://github.com/donnemartin/system-design-primer) +- [ ] [Desain Sistem dari HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [Bagaimana Saya Mempersiapkan Untuk Menjawab Pertanyaan Desain Secara Teknis?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Hal Yang Perlu Diketahui Sebelum Wawancara Desain Sistem](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Desain algoritme](http://www.hiredintech.com/algorithm-design/) +- [ ] [Normalisasi Basis Data - 1NF, 2NF, 3NF dan 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Wawancara Desain Sistem](https://github.com/checkcheckzz/system-design-interview) - Ada banyak sumber daya yang satu ini. Lihat artikel dan contoh. Saya taruh beberapa di bawah ini +- [ ] [Bagaimana menjadi ace wawancara desain sistem](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Nomor yang Harus Diketahui Setiap Orang](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [Berapa lama waktu yang dibutuhkan untuk membuat pengalih konteks?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transaksi di Seluruh Pusat Data (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Pengantar bahasa Inggris sederhana untuk Teorema CAP](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] Algoritma Konsensus: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [Pengantar Algoritma Konsensus Terdistribusi Rakit (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Kertas yang mudah dibaca](https://raft.github.io/) + - [ ] [Infografis](http://thesecretlivesofdata.com/raft/) +- [ ] [Hashing yang Konsisten](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [Pola NoSQL](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Skalabilitas: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - Anda tidak membutuhkan semua ini. Pilih saja beberapa yang menarik bagi Anda. + - [ ] [Tinjauan bagus (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Seri pendek: + - [Klon (Clones)](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database (Database)](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache (Cache)](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asinkronisme (Asynchronism)](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Arsitektur Web yang Skalabel dan Sistem Terdistribusi](http://www.aosabook.org/en/distsys.html) + - [ ] [Kekeliruan Komputasi Terdistribusi Dijelaskan](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Teknik Pemrograman Pragmatis](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [ekstra: Pemrosesan Grafik Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Membangun Sistem Perangkat Lunak di Google dan Pelajaran yang Dipetik (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Pengantar Sistem Arsitek untuk Skala](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Menskalakan game seluler ke audiens global menggunakan App Engine dan Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Bagaimana Google Melakukan Rekayasa Skala Planet untuk Infra Skala Planet (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Pentingnya Algoritma](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [ ] [Scale at Facebook (2012), "Building for a Million Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Teknik untuk Permainan Panjang - Astrid Atkinson Keynote (video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Tahun Pelajaran Skalabilitas YouTube Dalam 30 Menit](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Bagaimana PayPal Mengukur Miliaran Transaksi Setiap Hari Hanya Dengan Menggunakan 8VM](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [Cara Menghapus Duplikat dalam Kumpulan Data Besar](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [Sekilas tentang skala dan budaya teknik Etsy dengan Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Apa yang Membawa Amazon ke Arsitektur Layanan Mikro Sendiri](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [Untuk Mengompresi Atau Tidak Mengompresi, Itu Pertanyaan Uber](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Masuk Antrian](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [Kapan Perkiraan Pemrosesan Kueri Digunakan?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Transisi Google Dari Pusat Data Tunggal, Ke Failover, Ke Arsitektur Native Multihomed](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Kunci pas](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Pemrograman Didorong Pembelajaran Mesin: Pemrograman Baru Untuk Dunia Baru](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [Teknologi Pengoptimalan Gambar Yang Melayani Jutaan Permintaan Per Hari](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] [Tinder: Bagaimana Salah Satu Mesin Rekomendasi Terbesar Memutuskan Siapa yang Akan Anda Lihat Selanjutnya?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Desain Cache Modern](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Streaming Video Langsung Pada Skala Facebook](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [Panduan Pemula Untuk Menskalakan Lebih dari 11 Juta Pengguna di Amazon AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [Bagaimana Penggunaan Latensi Efek Docker?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [Tampilan 360 Derajat Dari Seluruh Tumpukan Netflix](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latensi Ada Di Mana-Mana Dan Itu Membebani Penjualan Anda - Cara Menghancurkannya](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (sangat lama, hanya perlu intinya)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Ratusan Instans, Lusinan Teknologi](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Arsitektur Cinchcast - Menghasilkan 1.500 Jam Audio Setiap Hari](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Arsitektur Penyiaran Video Langsung Justin.Tv](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Arsitektur Permainan Sosial Playfish - 50 Juta Pengguna Bulanan Dan Berkembang](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [Arsitektur TripAdvisor - 40 Juta Pengunjung, 200 Juta Tampilan Halaman Dinamis, 30 TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [Arsitektur PlentyOfFish](http://highscalability.com/plentyoffish-architecture) + - [ ] [Arsitektur Salesforce - Bagaimana Mereka Menangani 1,3 Miliar Transaksi Sehari](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [Arsitektur ESPN Dalam Skala - Beroperasi pada 100.000 Duh Nuh Nuhs Per Detik](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] Lihat cara "Sistem Perpesanan, Serialisasi, dan Antrean" di bawah ini untuk info tentang beberapa teknologi yang dapat merekatkan layanan - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - Untuk informasi lebih lanjut, lihat seri video "Menambang Kumpulan Data Besar-besaran (Mining Massive Datasets)" di bagian Seri Video. + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Data Besar dan Kecil di @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Garis Waktu dalam Skala](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - Untuk informasi lebih lanjut, lihat serial video "Menambang Kumpulan Data Besar-besaran" di bagian [Seri Video](#seri-video) - [ ] Mempraktikkan proses desain sistem: Berikut adalah beberapa ide untuk dicoba di atas kertas, masing-masing dengan beberapa dokumentasi tentang bagaimana hal itu ditangani di dunia nyata: - - ulasan: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - review: [Primer Desain Sistem](https://github.com/donnemartin/system-design-primer) + - [Desain Sistem dari HiredInTech](http://www.hiredintech.com/system-design/) + - [contekan (cheat sheet)](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) - aliran: 1. Pahami masalah dan cakupannya: - - tentukan kasus penggunaan, dengan bantuan pewawancara - - menyarankan fitur tambahan - - hapus item yang dianggap pewawancara di luar jangkauan - - asumsikan ketersediaan tinggi diperlukan, tambahkan sebagai kasus penggunaan + - Tentukan kasus penggunaan, dengan bantuan pewawancara + - Sarankan fitur tambahan + - Hapus item yang dianggap pewawancara di luar jangkauan + - Asumsikan ketersediaan tinggi diperlukan, tambahkan sebagai kasus penggunaan 2. Pikirkan tentang kendala: - - tanyakan berapa permintaan per bulan - - tanyakan berapa banyak permintaan per detik (mereka mungkin mengajukannya secara sukarela atau meminta Anda menghitungnya) - - memperkirakan persentase membaca vs menulis - - ingat aturan 80/20 saat membuat estimasi - - berapa banyak data yang ditulis per detik - - total penyimpanan yang dibutuhkan selama 5 tahun - - berapa banyak data yang dibaca per detik + - Tanyakan berapa banyak permintaan per bulan + - Tanyakan berapa banyak permintaan per detik (mereka mungkin menawarkannya secara sukarela atau meminta Anda menghitungnya) + - Perkirakan persentase membaca vs. menulis + - Ingat aturan 80/20 saat memperkirakan + - Berapa banyak data yang ditulis per detik + - Total penyimpanan yang dibutuhkan selama 5 tahun + - Berapa banyak data yang dibaca per detik 3. Desain abstrak: - - lapisan (layanan, data, caching) - - infrastruktur: load balancing, perpesanan - - gambaran kasar dari setiap algoritma kunci yang menggerakkan layanan - - pertimbangkan kemacetan dan tentukan solusinya - - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - Lapisan (layanan, data, caching) + - Infrastruktur: load balancing, perpesanan + - Gambaran kasar tentang algoritme kunci apa pun yang menggerakkan layanan + - Pertimbangkan kemacetan dan tentukan solusinya + - Latihan: + - [Desain jaringan CDN: artikel lama](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) + - [Rancang sistem pembuatan ID unik secara acak](https://blog.twitter.com/2010/announcing-snowflake) + - [Rancang permainan kartu multipemain daring](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Mendesain database nilai kunci](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Rancang sistem berbagi gambar](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Rancang sistem rekomendasi](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Rancang sistem penyingkat URL: disalin dari atas](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Rancang sistem cache](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) --- From a027d8dab55161ff6fef84d65f5d42b2084745b8 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 12:58:40 +0700 Subject: [PATCH 196/857] Update Even More Knowledge for id translation --- translations/README-id.md | 387 ++++++++++++++++++++------------------ 1 file changed, 205 insertions(+), 182 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 9103cfcbbb..0e7491b41c 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -66,19 +66,23 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - adjacency matrix - adjacency list - traversals: BFS, DFS -- [Pengetahuan Tambahan Lainnya](#pengetahuan-tambahan-lainnya) - - [Rekursi](#rekursi) - - [Pemrograman Berbasis Objek](#pemrograman-berbasis-objek) - - [Pola Desain](#pola-desain) - - [Kombinatorik (n pilih k) & Probabilitas](#kombinatorik-n-pilih-k--probabilitas) - - [NP, NP-Lengkap dan Algoritma Aproksimasi](#np-np-lengkap-dan-algoritma-aproksimasi) - - [Caches](#caches) - - [Proses dan Threads](#proses-dan-threads) - - [Tesis](#tesis) +- [Bahkan Lebih Banyak Pengetahuan](#bahkan-lebih-banyak-pengetahuan) + - [Pengulangan (Recursion)](#pengulangan-(recursion)) + - [Pemrograman Dinamis](#pemrograman-dinamis) + - [Pemrograman Berorientasi Objek](#pemrograman-berorientasi-objek) + - [Pola desain (Design patterns)](#pola-desain-(design-patterns)) + - [Kombinatorik (n pilih k) & Probabilitas](#kombinatorik-(n-pilih-k)-&-probabilitas) + - [Algoritma NP, NP-Complete dan Approximation](#algoritma-np,-np-complete-dan-approximation) + - [Cache](#cache) + - [Proses dan Thread](#proses-dan-thread) - [Testing](#testing) - [Penjadwalan](#penjadwalan) - - [Implementasi Rutinitas Sistem](#implementasi-rutinitas-sistem) - - [Pencarian String & Manipulasi](#pencarian-string--manipulasi) + - [Pencarian & manipulasi string](#pencarian-&-manipulasi-string) + - [Tries](#tries) + - [Angka Floating Point](#angka-floating-point) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Jaringan](#jaringan) - [Perancangan Sistem, Skalabilitas, Penganganan Data](#Perancangan-Sistem,-Skalabilitas,-Penganganan-Data) (jika anda memiliki pengalaman 4 tahun lebih) - [Ulasan Akhir](#ulasan-akhir) - [Latihan Pertanyaan Pemrograman](#latihan-pertanyaan-pemrograman) @@ -913,44 +917,52 @@ Graphs can be used to represent many problems in computer science, so this secti You'll get more graph practice in Skiena's book (see Books section below) and the interview books -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: +## Bahkan Lebih Banyak Pengetahuan + +- ### Pengulangan (Recursion) + - [ ] Kuliah Stanford tentang rekursi dan backtracking: + - [ ] [Kuliah 8 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Kuliah 9 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Kuliah 10 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Kuliah 11 | Abstraksi Pemrograman (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Kapan saat yang tepat untuk menggunakannya? + - Bagaimana rekursi ekor lebih baik daripada tidak? + - [ ] [Apa Itu Rekursi Ekor Mengapa Sangat Buruk?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Rekursi Ekor (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Pemrograman Dinamis + - Anda mungkin tidak akan melihat masalah pemrograman dinamis dalam wawancara Anda, tetapi ada baiknya mengenali masalah sebagai kandidat untuk pemrograman dinamis (Dynamic Programming). + - Subjek ini bisa sangat sulit, karena setiap masalah pemecahan masalah pemrograman dinamis harus didefinisikan sebagai relasi rekursi, dan menyelesaikannya bisa rumit. + - Saya sarankan untuk melihat banyak contoh masalah pemrograman dinamis sampai Anda memiliki pemahaman yang kuat tentang pola yang terlibat. + - [ ] Video: + - video Skiena mungkin sulit untuk diikuti karena terkadang dia menggunakan papan tulis, yang terlalu kecil untuk dilihat + - [ ] [Skiena: CSE373 2012 - Kuliah 19 - Pengantar Pemrograman Dinamis (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Kuliah 20 - Edit Jarak (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Kuliah 21 - Contoh Pemrograman Dinamis (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Kuliah 22 - Aplikasi Pemrograman Dinamis (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Pemrograman Dinamis 0 (dimulai pada 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Pemrograman Dinamis I - Kuliah 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Pemrograman dinamis II - Kuliah 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Daftar masalah individu Pemrograman Dinamis (masing-masing pendek): + [Pemrograman Dinamis (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Catatan Kuliah Yale: + - [ ] [Pemrograman Dinamis](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [Masalah struktur sekunder RNA (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [Algoritma pemrograman dinamis (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Mengilustrasikan algoritma DP (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Waktu berjalan dari algoritma DP (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. implementasi rekursif (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Pemrograman Berorientasi Objek + - [ ] [Optional: UML 2.0 seri (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] Prinsip SOLID OOP: [Prinsip SOLID (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Pola desain (Design patterns) + - [ ] [Ulasan UML cepat(video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Pelajari pola-pola ini: - [ ] strategy - [ ] singleton - [ ] adapter @@ -968,159 +980,170 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Bab 6 (Bagian 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Bab 6 (Bagian 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Bab 6 (Bagian 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Serial video (27 video)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - Saya tahu buku kanoniknya adalah "Design Patterns: Elements of Reusable Object-Oriented Software", tapi Head First sangat bagus untuk pemula hingga OO. + - [ ] [Referensi praktis: 101 Pola Desain & Tip untuk Pengembang](https://sourcemaking.com/design-patterns-and-tips) + -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) +- ### Kombinatorik (n pilih k) & Probabilitas + - [ ] [Keterampilan Matematika: Bagaimana menemukan Faktorial, Permutasi dan Kombinasi (Pilih) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Jadikan Sekolah: Probabilitas (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Jadikan Sekolah: Lebih Banyak Kemungkinan dan Rantai Markov (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - Tata letak kursus: + - [ ] [Probabilitas Teoritis Dasar](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Hanya videonya - 41 (masing-masing sederhana dan masing-masing pendek): + - [ ] [Probabilitas Dijelaskan (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### Algoritma NP, NP-Complete dan Approximation + - Ketahui tentang kelas paling terkenal dari masalah NP-complete, seperti travelling salesman dan knapsack problem, + dan kenali mereka saat pewawancara meminta Anda secara tidak langsung. + - Ketahui arti NP-complete. + - [ ] [Kompleksitas Komputasi (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [Algoritme Serakah. II & Pengantar tentang NP-Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [ ] [CSE373 2012 - Kuliah 23 - Pengantar NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Kuliah 24 - Bukti NP-Completeness (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Kuliah 25 - Tantangan NP-Completeness (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Kompleksitas: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Kompleksitas: Algoritma Perkiraan (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Kompleksitas: Algoritma Parameter Tetap (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Ppeter Norvig membahas solusi yang hampir optimal untuk masalah penjual keliling: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. + - Halaman 1048 - 1140 di CLRS jika Anda memilikinya. -- ### Caches +- ### Cache - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [Keajaiban Cache LRU (100 Hari Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Menerapkan LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### Papers - - These are Google papers and well-known papers. - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + - [ ] [MIT 6.004 L15: Hirarki Memori (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Masalah Cache (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Proses dan Thread + - [ ] Ilmu Komputer 162 - Sistem Operasi (25 video): + - untuk proses dan thread lihat video 1-11 + - [Sistem Operasi dan Pemrograman Sistem (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [Apa Perbedaan Antara Proses dan Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Meliputi: + - Masalah Processes, Threads, Concurrency + - Perbedaan antara proses dan thread + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - Bagaimana cara kerjanya? + - Deadlock + - Livelock + - Aktivitas CPU, interupsi, pengalihan konteks + - Konstruksi konkurensi modern dengan prosesor multi inti + - [Paging, segmentasi, dan memori virtual (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Kebutuhan resource proses (memori: kode, penyimpanan statis, stack, heap, dan juga deskriptor file, i /o) + - Kebutuhan sumber daya thread (berbagi di atas (dikurangi stack) dengan thread lain dalam proses yang sama tetapi masing-masing memiliki pc, penghitung stack, register, dan stacknya sendiri) + - Forking benar-benar menyalin saat menulis (hanya baca) hingga proses baru menulis ke memori, lalu menyalin penuh. + - Peralihan konteks + - Bagaimana peralihan konteks dimulai oleh sistem operasi dan perangkat keras yang mendasarinya? + - [ ] [thread di C ++ (seri - 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] konkurensi dengan Python (video): + - [ ] [Serial pendek tentang thread](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Thread Python](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Memahami Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [referensi](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency Dari Dasar Ke Atas: LANGSUNG! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topik Menarik (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex dengan Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - Meliputi: + - bagaimana unit testing bekerja + - apa itu objek tiruan (mock objects) + - apa itu pengujian integrasi (integration testing) + - apa itu dependency injection + - [ ] [Pengujian Perangkat Lunak Agile dengan James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Kuliah Terbuka oleh James Bach tentang Pengujian Perangkat Lunak (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Pengembangan Berbasis Test (bukan itu yang kami maksudkan) (video)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ ] [Tao dari Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [Bagaimana menulis tes](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Penjadwalan - - di OS, cara kerjanya - - dapat diperoleh dari video Sistem Operasi - -- ### Implementasi Rutinitas Sistem - - memahami apa yang ada di bawah API pemrograman yang Anda gunakan - - bisakah kamu menerapkannya? - -- ### Pencarian String & Manipulasi - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - Jika Anda membutuhkan detail lebih lanjut tentang subjek ini, lihat bagian "String Matching" di [Detail Tambahan pada Beberapa Subjek](#additional-detail-on-some-subjects) - ---- + - Di OS, bagaimana cara kerjanya? + - Dapat diperoleh dari video Sistem Operasi + +- ### Pencarian & manipulasi string + - [ ] [Sedgewick - Suffix Array (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Pencarian Substring (video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Pengantar Pencarian Substring](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Pencarian Substring Brute-Force](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Pola pencarian dalam teks (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + Jika Anda membutuhkan detail lebih lanjut tentang subjek ini, lihat bagian "String Matching" di [Detail Tambahan tentang Beberapa Subjek](#detail-tambahan-tentang-beberapa-subjek). + +- ### Tries + - Perhatikan bahwa ada berbagai jenis percobaan. Beberapa memiliki prefiks, beberapa tidak, dan beberapa menggunakan bit untuk melacak jalur + - Saya membaca kode, tetapi tidak akan menerapkan + - [ ] [Sedgewick - Tries (3 video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Operasi Berbasis Karakter](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Catatan tentang Struktur Data dan Teknik Pemrograman](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Video kursus singkat: + - [ ] [Pengantar Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Menerapkan A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [Trie: Sebuah Struktur Data Terabaikan](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Menggunakan Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Kuliah Stanford (kasus penggunaan dunia nyata) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (bisa sangat tidak jelas sekitar setengahnya) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Angka Floating Point + - [ ] simple 8-bit: [Representasi Angka Floating Point - 1 (video - ada kesalahan dalam penghitungan - lihat deskripsi video)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point biner (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [Minimum Mutlak Setiap Pengembang Perangkat Lunak Sepenuhnya, Secara Positif Harus Tahu Tentang Unicode dan Kumpulan Karakter](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [Apa Yang Setiap Programmer Benar-benar, Secara Positif Perlu Diketahui Tentang Unicode Dan Kumpulan Karakter Untuk Bekerja Dengan Teks](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Endian Besar Dan Kecil](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Endian Besar Vs Endian Kecil (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Endian Big And Kecil Dalam/Luar (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Pembicaraan yang sangat teknis untuk pengembang kernel. Jangan khawatir jika sebagian besar di atas kepala Anda. + - Paruh pertama sudah cukup. + +- ### Jaringan + - **jika Anda memiliki pengalaman jaringan atau ingin menjadi insinyur keandalan (reliability engineer) atau insinyur operasi (operations engineer), tunggu pertanyaan** + - Jika tidak, ini bagus untuk diketahui + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP dan TCP: Perbandingan Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP / IP dan Model OSI Dijelaskan! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Transmisi Paket melalui Internet. Tutorial Jaringan & TCP / IP. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL dan HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL / TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Seri Video (21 video) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Bagian 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Pengenalan (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Pemrograman Socket (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## Perancangan Sistem, Skalabilitas, Penganganan Data From f4a4710c7ce4aebfeedd7e961fd6a22ab55e55bf Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 13:11:40 +0700 Subject: [PATCH 197/857] Update Graphs for id translation --- translations/README-id.md | 110 ++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 57 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 0e7491b41c..1bf50cd273 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -855,67 +855,63 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Graphs -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes from Yegge: - - There are three basic ways to represent a graph in memory: - - objects and pointers - - matrix - - adjacency list - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) +Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu komputer, jadi bagian ini panjang, seperti pohon dan penyortiran. + +- Catatan: + - Ada 4 cara dasar untuk merepresentasikan Graf dalam memori: + - objek dan pointer + - matriks kedekatan (adjacency matrix) + - daftar kedekatan (adjacency list) + - peta kedekatan (adjacency map) + - Biasakan diri Anda dengan setiap representasi beserta pro & kontranya + - BFS dan DFS - mengetahui kompleksitas komputasi mereka, trade off mereka, dan bagaimana menerapkannya dalam kode nyata + - Saat ditanya pertanyaan, cari solusi berbasis Graf terlebih dahulu, lalu lanjutkan jika tidak ada + +- [ ] MIT (video): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Kuliah Skiena - pengantar yang bagus: + - [ ] [CSE373 2012 - Lecture 11 - Graphs Struktur Data (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 13 - Algoritma Graph (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Algoritma Graph (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Algoritma Graph (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Algoritma Graph (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Graphs (review and more): +- [ ] Graphs (ulasan dan lainnya): - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Masalah Jalur Terpendek Sumber Tunggal (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- Yegge: If you get a chance, try to study up on fancier algorithms: - - [ ] Dijkstra's algorithm - see above - 6.006 - - [ ] A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books + - [ ] [6.006 Mempercepat Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Algoritma Graphs I - Sortasi Topologi, Pohon Rentang Minimum, Algoritma Prim - Kuliah 6 (video)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Algoritma Graphs II - DFS, BFS, Algoritma Kruskal, Struktur Data Union Find - Kuliah 7 (video)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Algoritma Graphs III: Jalur Terpendek - Kuliah 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Algoritma Graphs IV: Pengantar algoritma geometris - Kuliah 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (mulai dari 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Graphs berbobot (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Algoritma Serakah: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Komponen yang Sangat Terhubung Algoritma Graphs Algoritma Kosaraju (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Kursus Coursera Penuh: + - [ ] [Algoritma pada Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Saya akan menerapkan: + - [ ] DFS dengan daftar kedekatan (rekursif) + - [ ] DFS dengan daftar adjacency (iteratif dengan stack) + - [ ] DFS dengan matriks adjacency (rekursif) + - [ ] DFS dengan matriks adjacency (iteratif dengan stack) + - [ ] BFS dengan daftar kedekatan + - [ ] BFS dengan matriks adjacency + - [ ] jalur terpendek sumber tunggal (Dijkstra) + - [ ] pohon rentang minimum + - Algoritme berbasis DFS (lihat video Aduni di atas): + - [ ] periksa siklus (diperlukan untuk pengurutan topologi, karena kami akan memeriksa siklus sebelum memulai) + - [ ] sortir topologi + - [ ] menghitung komponen yang terhubung dalam graf + - [ ] daftar komponen yang sangat terhubung + - [ ] periksa graf bipartit ## Bahkan Lebih Banyak Pengetahuan @@ -1195,7 +1191,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Arsitektur Web yang Skalabel dan Sistem Terdistribusi](http://www.aosabook.org/en/distsys.html) - [ ] [Kekeliruan Komputasi Terdistribusi Dijelaskan](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - [ ] [Teknik Pemrograman Pragmatis](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [ekstra: Pemrosesan Grafik Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ekstra: Pemrosesan Graph Google Pregel](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - [ ] [Jeff Dean - Membangun Sistem Perangkat Lunak di Google dan Pelajaran yang Dipetik (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Pengantar Sistem Arsitek untuk Skala](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Menskalakan game seluler ke audiens global menggunakan App Engine dan Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) From 86d371438efe16892717252802dbfa26a1969723 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 14:29:14 +0700 Subject: [PATCH 198/857] Update Sorting for id translation --- translations/README-id.md | 137 +++++++++++++++++++------------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 1bf50cd273..1c233aeb53 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -54,7 +54,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - balanced search trees (konsep dasar, tidak mendalam) - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) +- [Penyortiran](#penyortiran) - selection - insertion - heapsort @@ -779,79 +779,80 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. - -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) +## Penyortiran + +- [ ] Catatan: + - Terapkan sort & ketahui kasus terbaik / kasus terburuk, kompleksitas rata-rata masing-masing: + - tidak ada bubble sort - ini mengerikan - O(n^2), kecuali jika n<=16 + - [ ] Stabilitas dalam algoritme pengurutan ("Apakah Quicksort stabil?") + - [Stabilitas Algoritma Penyortiran](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stabilitas Dalam Mengurutkan Algoritma](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stabilitas Dalam Mengurutkan Algoritma](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Algoritma Pengurutan - Stabilitas](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Algoritme mana yang dapat digunakan pada linked lists? Yang mana pada array? Yang mana pada keduanya? + - Saya tidak akan merekomendasikan pengurutan linked lists, tetapi penggabungan semacam bisa dilakukan. + - [Merge Sort Untuk Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Untuk heapsort, lihat struktur data Heap di atas. Jenis heap bagus, tapi tidak stabil + +- [ ] [Sedgewick - Mergesort (5 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Penggabungan](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Mergesort dari bawah ke atas](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Kompleksitas Sortir](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Pembanding](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stabilitas](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Seleksi](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Kunci Duplikat](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Kuliah 29: Penyortiran I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Kuliah 30: Penyortiran II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Kuliah 32: Penyortiran III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Kuliah 33: Penyortiran V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Menganalisis Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Sortir Penyisipan, Sortir Gabung (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Sortir Penyisipan (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) - [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) - [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. - -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [ ] [Sortir Pilihan (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Kode Merge sort: + - [ ] [Menggunakan keluaran array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Menggunakan keluaran array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [Di tempat (C ++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Kode Quick sort: + - [ ] [Implementasi (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementasi (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementasi (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implementasi: + - [ ] Mergesort: O(n log n) rata-rata dan kasus terburuk + - [ ] Quicksort: O(n log n) kasus rata-rata + - Sortir seleksi dan sortir penyisipan keduanya merupakan kasus rata-rata O (n ^ 2) dan terburuk + - Untuk heapsort, lihat struktur data Heap di atas + +- [ ] Tidak wajib, tetapi saya merekomendasikan mereka: + - [ ] [Sedgewick - Radix Sorts (6 video)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. String di Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Penghitungan Indeks Kunci](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Urutan Radix String Pertama Digit Signifikan Terkecil](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Urutan Radix String Pertama Digit Paling Signifikan](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. Radix Quicksort 3 Arah](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Array Suffix](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sortir Radix](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Sortir Radix (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Sortir Radix, Sortir Counting (waktu linier diberikan batasan) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Pengacakan: Penggandaan Matriks, Quicksort, Algoritma Freivalds (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Menyortir dalam Waktu Linear (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Sebagai ringkasan, berikut adalah representasi visual dari [15 algoritma pengurutan](https://www.youtube.com/watch?v=kPRA0W1kECg). +Jika Anda membutuhkan detail lebih lanjut tentang subjek ini, lihat bagian "Menyortir" di [Detail Tambahan tentang Beberapa Subjek](#detail-tambahan-tentang-beberapa-subjek) ## Graphs From c8a62d8559cdbd641a6170e91d1352fd867d2f7e Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 14:33:44 +0700 Subject: [PATCH 199/857] Update Trees for id translation --- translations/README-id.md | 130 +++++++++++++++++++------------------- 1 file changed, 64 insertions(+), 66 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 1c233aeb53..9948d1f7ba 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -51,9 +51,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Trees](#trees) - [Trees - Catatan & Latar Belakang](#trees---catatan--latar-belakang) - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (konsep dasar, tidak mendalam) - - traversals: preorder, inorder, postorder, BFS, DFS + - [Heap / Prioritas Antrian / Biner Heap](#heap-/-prioritas-antrian-/-biner-heap) - [Penyortiran](#penyortiran) - selection - insertion @@ -699,85 +697,85 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s ## Trees -- ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction +- ### Trees - Catatan & Latar Belakang + - [ ] [Seri: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - konstruksi pohon dasar - traversal - - manipulation algorithms - - BFS (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) + - algoritma manipulasi + - [ ] [BFS(breadth-first search) dan DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - Catatan BFS: + - level order (BFS, menggunakan queue) + - kompleksitas waktu: O(n) + - kompleksitas ruang: + terbaik: O(1) + terburuk: O(n/2)=O(n) + - Catatan DFS: + - kompleksitas waktu: O(n) + - kompleksitas ruang: + terbaik: O(log n) - rata-rata. ketinggian tree + terburuk: O(n) + - dalam urutan (DFS: kiri, sendiri, kanan) + - pasca urutan (DFS: kiri, kanan, sendiri) + - pra urutan (DFS: sendiri, kiri, kanan) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - [ ] [Ulasan Binary Search Tree (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Serial (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [Pendahuluan (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary search tree - Implementasi di C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [Implementasi BST - alokasi memori di stack dan heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Temukan min dan max elemen dalam binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Temukan ketinggian pohon biner (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - strategi luas-pertama dan mendalam-pertama (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Pohon biner: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Periksa apakah pohon biner adalah binary search tree atau bukan (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Hapus node dari Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Penerus Berurutan di binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max + - [ ] insert // masukkan nilai ke dalam pohon + - [ ] get_node_count // dapatkan hitungan nilai yang disimpan + - [ ] print_values // mencetak nilai di pohon, dari min hingga maks - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_in_tree // mengembalikan nilai true jika nilai yang diberikan ada di pohon + - [ ] get_height // mengembalikan tinggi dalam node (tinggi node tunggal adalah 1) + - [ ] get_min // mengembalikan nilai minimum yang disimpan di pohon + - [ ] get_max // mengembalikan nilai maksimum yang disimpan di pohon - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] get_successor // mengembalikan nilai tertinggi berikutnya di pohon setelah nilai yang diberikan, -1 jika none -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) +- ### Heap / Prioritas Antrian / Biner Heap + - Heap (tumpykan) + - divisualisasikan sebagai pohon, tetapi biasanya linier dalam penyimpanan (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pendahuluan (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Penerapan Naif (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Pohon Biner (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Keterangan Tinggi Pohon (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Operasi Dasar (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Pohon Biner Lengkap (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Urutan Heap - lompat untuk memulai (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Urutan Heap (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Membangun heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps dan Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Kuliah 24: Antrian Prioritas (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: + - [ ] Menerapkan sebuah max-heap: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] sift_up - dibutuhkan untuk memasukkan + - [ ] get_max - mengembalikan item maksimal, tanpa menghapusnya + - [ ] get_size() - mengembalikan jumlah elemen yang disimpan + - [ ] is_empty() - mengembalikan nilai true jika heap tidak berisi elemen + - [ ] extract_max - mengembalikan item maksimal, menghapusnya + - [ ] sift_down - dibutuhkan untuk extract_max + - [ ] remove(i) - menghapus item pada indeks i + - [ ] heapify - membuat heap dari larik elemen, dibutuhkan untuk heap_sort + - [ ] heap_sort() - mengambil array yang tidak disortir dan mengubahnya menjadi array yang diurutkan di tempat menggunakan heap maks atau heap min ## Penyortiran From 14fb001a1559383a581a8720a7768647307852dd Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 14:42:52 +0700 Subject: [PATCH 200/857] Update More Knowledge for id translation --- translations/README-id.md | 68 +++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 9948d1f7ba..84dce6dc02 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -45,8 +45,8 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Stack](#stack) - [Queue](#queue) - [Hash table](#hash-table) -- [Pengetahauan Tambahan](#pengetahuan-tambahan) - - [Binary search](#binary-search) +- [Lebih Banyak Pengetahuan](#lebih-banyak-pengetahuan) + - [Pencarian Biner](#pencarian-biner) - [Operasi Bitwise](#operasi-bitwise) - [Trees](#trees) - [Trees - Catatan & Latar Belakang](#trees---catatan--latar-belakang) @@ -658,42 +658,42 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - get(key) - remove(key) -## More Knowledge +## Lebih Banyak Pengetahuan -- ### Binary search - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion +- ### Pencarian Biner + - [ ] [Pencarian Biner (video)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Pencarian Biner (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/) + - [ ] Implementkan: + - pencarian biner (pada susunan bilangan bulat yang diurutkan) + - pencarian biner menggunakan rekursi -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) +- ### Operasi Bitwise + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Anda harus mengetahui banyak pangkat 2 dari (2^1 hingga 2^16 dan 2^32) + - [ ] Dapatkan pemahaman yang sangat baik tentang memanipulasi bit dengan: &, |, ^, ~, >>, << + - [ ] [kata-kata](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: - - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + - [ ] [C Tutorial Pemrograman 2-10: Operator Bitwise (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Manipulasi Bit](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Operasi Bitwise](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithack](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Operasi Praktek](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] Pelengkap 2s dan 1s + - [Biner: Plus & Minus (Mengapa Kami Menggunakan Pelengkap Dua) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [Pelengkap 1s](https://en.wikipedia.org/wiki/Ones%27_complement) + - [Pelengkap 2s](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Hitung bit set + - [4 cara untuk menghitung bit dalam satu byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Hitung Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [Bagaimana Menghitung Jumlah Set Bits Dalam Integer 32 Bit](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Tukar nilai: + - [Tukar](https://bits.stephan-brumme.com/swap.html) + - [ ] Nilai mutlak: + - [Integer Mutlak](https://bits.stephan-brumme.com/absInteger.html) ## Trees From d6ae228530f28f4b4fe98753e6a9f8b122fd35ab Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 14:57:50 +0700 Subject: [PATCH 201/857] Update Data Structures for id translation --- translations/README-id.md | 198 ++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 103 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 84dce6dc02..da8a9de7fa 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -535,125 +535,117 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s ## Struktur Data - ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold + - Menerapkan vektor yang mengubah ukuran secara otomatis. + - [ ] Deskripsi: + - [Array (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Array Linear dan Multi-Dim (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Mulailah menonton dari 15m 32s) + - [Array Dinamis (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Array Bergerigi (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Menerapkan vektor (array yang bisa berubah dengan ukuran otomatis): + - [ ] Berlatih coding menggunakan array dan pointer, dan matematika pointer untuk melompat ke indeks daripada menggunakan pengindeksan. + - [ ] Array data mentah baru dengan memori yang dialokasikan + - dapat mengalokasikan array int di bawah tenda, hanya saja tidak menggunakan fitur-fiturnya + - start dengan 16, atau jika angka awal lebih besar, gunakan pangkat 2 - 16, 32, 64, 128 + - [ ] size() - jumlah item + - [ ] capacity() - jumlah barang yang bisa ditampungnya - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] at(index) - mengembalikan item pada indeks tertentu, meledak jika indeks di luar batas - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + - [ ] insert(index, item) - menyisipkan item pada indeks, menggeser nilai indeks dan elemen tambahan ke kanan + - [ ] prepend(item) - dapat menggunakan sisipan di atas pada indeks 0 + - [ ] pop() - hapus dari akhir, nilai kembali + - [ ] delete(index) - hapus item pada indeks, menggeser semua elemen tertinggal ke kiri + - [ ] remove(item) - mencari nilai dan menghapus indeks yang menahannya (meskipun di banyak tempat) + - [ ] find(item) - mencari nilai dan mengembalikan indeks pertama dengan nilai itu, -1 jika tidak ditemukan + - [ ] resize(new_capacity) // fungsi pribadi + - saat Anda mencapai kapasitas, ubah ukurannya menjadi dua kali lipat + - saat memunculkan item, jika ukurannya 1/4 dari kapasitas, ubah ukurannya menjadi setengah + - [ ] Waktu + - O(1) untuk menambah/menghapus di akhir (diamortisasi untuk alokasi untuk lebih banyak ruang), indeks, atau pembaruan + - O(n) untuk memasukkan/menghapus di tempat lain + - [ ] Ruang + - berdekatan dalam memori, jadi kedekatan membantu kinerja + - ruang yang dibutuhkan = (kapasitas array, yaitu >= n)*ukuran item, tetapi meskipun 2n, tetap O(n) - ### Linked Lists - - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. - - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Deskripsi: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [Kode C (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - bukan keseluruhan video, hanya bagian tentang struct Node dan alokasi memori + - [ ] Linked List vs Array: + - [Daftar Tertaut Inti Vs Array (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Di Dunia Nyata Linked List Vs Array (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [mengapa Anda harus menghindari linked list (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: Anda perlu pengetahuan pointer ke pointer: + (untuk saat Anda meneruskan pointer ke fungsi yang dapat mengubah alamat tempat pointer itu menunjuk) + Halaman ini hanya untuk memahami pointer ke pointer. Saya tidak merekomendasikan gaya traversal daftar ini. Keterbacaan dan pemeliharaan menderita karena kepintaran. + - [Pointer ke Pointer](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implementasikan (saya lakukan dengan tail pointer & tanpa): + - [ ] size() - mengembalikan jumlah elemen data dalam daftar + - [ ] empty() - bool mengembalikan nilai true jika kosong + - [ ] value_at(index) - mengembalikan nilai item ke-n (mulai dari 0 untuk yang pertama) + - [ ] push_front(value) - menambahkan item ke depan daftar + - [ ] pop_front() - hapus item depan dan kembalikan nilainya + - [ ] push_back(value) - menambahkan item di akhir + - [ ] pop_back() - menghapus item akhir dan mengembalikan nilainya + - [ ] front() - dapatkan nilai barang depan + - [ ] back() - dapatkan nilai item akhir + - [ ] insert(index, value) - masukkan nilai pada indeks, maka item saat ini pada indeks tersebut ditunjuk oleh item baru pada indeks + - [ ] erase(index) - menghapus node pada indeks tertentu + - [ ] value_n_from_end(n) - mengembalikan nilai node pada posisi ke-n dari akhir daftar + - [ ] reverse() - membalikkan daftar + - [ ] remove_value(value) - menghapus item pertama dalam daftar dengan nilai ini - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement + - [Deskripsi (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Tidak perlu diimplementasikan - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] [Stack (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Tidak akan diterapkan. Menerapkan dengan array itu sepele - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - Queue (Antrean) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) + - [ ] Implementasikan menggunakan linked-list, dengan tail pointer: + - enqueue(value) - menambah nilai pada posisi di ekor + - dequeue() - mengembalikan nilai dan menghapus elemen yang paling baru ditambahkan (depan) - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element + - [ ] Menerapkan menggunakan array berukuran tetap: + - enqueue(value) - menambahkan item di akhir penyimpanan yang tersedia + - dequeue() - mengembalikan nilai dan menghapus elemen yang paling baru ditambahkan - empty() - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) + - [ ] Biaya: + - implementasi yang buruk menggunakan daftar tertaut di mana Anda mengantre di bagian depan + dan antrean di bagian ekor akan menjadi O(n) karena Anda memerlukan elemen di sebelah terakhir, + menyebabkan traversal penuh setiap dequeue + - enqueue: O(1) (diamortisasi, daftar tertaut dan larik [probing]) + - dequeue: O(1) (daftar dan larik tertaut) + - empty: O(1) (daftar dan larik tertaut) - ### Hash table - - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] Video: + - [ ] [Hashing dengan Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Penggandaan Table, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Hashing Kriptografi (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - [ ] [(Lanjutan) Pengacakan: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Lanjutan) Hash sempurna (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Kursus Online: + - [ ] [Tabel Hash Inti (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Struktur Data (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Masalah Buku Telepon (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] tabel hash terdistribusi: + - [Unggahan Instan dan Pengoptimalan Penyimpanan Di Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Tabel Hash Terdistribusi (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implementasikan dengan array menggunakan probing linier + - hash(k, m) - m adalah ukuran tabel hash + - add(key, value) - jika kunci sudah ada, perbarui nilai - exists(key) - get(key) - remove(key) From 59a5273b6836dabbb0da229e5271d9c5b578f69f Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 14:59:52 +0700 Subject: [PATCH 202/857] Update Algorithmic complexity ... for id translation --- translations/README-id.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index da8a9de7fa..114f32a531 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -509,29 +509,28 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) ## Kompleksitas Algoritma / Big-O / Analisis Asimptotik -- tidak ada untuk dilaksanakan -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) + +- Tidak ada yang bisa diterapkan +- Ada banyak video di sini. Cukup tonton sampai Anda memahaminya. Anda selalu dapat kembali dan mengulas +- Jika beberapa kuliah terlalu matematis, Anda dapat melompat ke bawah dan menonton video matematika diskrit untuk mendapatkan pengetahuan latar belakang +- [ ] [Harvard CS50 - Notasi Asimtotik (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Notasi Big O (tutorial singkat umum) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Notasi Big O (dan Omega dan Theta) - penjelasan matematika terbaik (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) + - [slide](https://archive.org/details/lecture2_202008) +- [ ] [Pengantar Lembut untuk Analisis Kompleksitas Algoritma](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asimtotik (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Analisis Amortisasi (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Mengilustrasikan "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - - Jika beberapa ceramah terlalu membingunkan, anda dapat melompatinya kebawah dan - tonton the discrete mathematics videos untuk mendapatkan latar belakang pengetahuan. - ## Struktur Data - ### Arrays From 5d3a11cbfb13ed77e4f6ff2ed4e849bc13739574 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:01:03 +0700 Subject: [PATCH 203/857] Update The Daily Plan for id translation --- translations/README-id.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 114f32a531..d62e773f26 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -497,16 +497,18 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s ## Ilmu Prasyarat -- [ ] **Belajar C** - - C ada dimana-mana. Anda akan melihat contoh di buku, perkuliahan, video, *dimanapun* ketika kamu belajar. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Ini adalah sebuah buku yang pendek, tapi itu akan memberikanmu sebuah pegangan yang kuat di bahasa C dan Anda akan melakukan latihan kecil - dengan secara singkat dan cakap. Memahami C akan membantu anda memahami bagaimana program dan memori itu bekerja. - - [answers to questions](https://github.com/lekkas/c-algorithms) - -- [ ] **Bagaimana komputer memproses sebuah program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +- [ ] **belajar C** + - C ada dimana-mana. Anda akan melihat contoh di buku, lecture, video, *di mana-mana* saat Anda belajar + - [ ] [Bahasa Pemrograman C, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Ini adalah buku singkat, tetapi akan memberi Anda pemahaman yang baik tentang bahasa C dan jika Anda mempraktikkannya sedikit, Anda akan segera menjadi mahir. Memahami C membantu Anda memahami bagaimana program dan memori bekerja + - [Jawaban atas pertanyaan](https://github.com/lekkas/c-algorithms) + +- [ ] **Bagaimana komputer memproses program:** + - [ ] [Bagaimana CPU menjalankan program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [Bagaimana komputer menghitung - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers dan RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instruksi dan Program (video)](https://youtu.be/zltgXvg6r3k) ## Kompleksitas Algoritma / Big-O / Analisis Asimptotik From aeda1cb72b65c369c334c91d03527f6d7c6a1668 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:07:27 +0700 Subject: [PATCH 204/857] Fix broken links --- translations/README-id.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index d62e773f26..a1f39725b2 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -487,9 +487,9 @@ Mengapa meng-kode di semua ini? Saya mungkin tidak punya waktu untuk melakukan semua ini untuk setiap mata pelajaran, tapi saya akan mencobanya. Anda dapat melihat kode saya di sini: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) Anda tidak perlu susah payah menghafal setiap algoritma. From cf21f7453f42aaf1c9a7e1b5a41c45ece5d89726 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:09:22 +0700 Subject: [PATCH 205/857] Update What you Won't See Covered for id translation --- translations/README-id.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index a1f39725b2..95b55bb266 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -458,8 +458,7 @@ Disana ada banyak gangguan yang dapat menyita waktu yang berharga. Fokus dan kos ## Apa yang Tidak Akan Dibahas -Daftar besar ini semua dimulai sebagai daftar to-do pribadi yang dibuat dari catatan Google interview coaching. Ini adalah -teknologi lazim mereka tetapi tidak disebutkan dalam catatan itu: +Ini adalah teknologi yang lazim tetapi bukan bagian dari rencana studi ini: - SQL - Javascript From 41c2de8961b4b8f2fed89f71af965229a9ddce0b Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:09:57 +0700 Subject: [PATCH 206/857] Update Before you Get Started for id translation --- translations/README-id.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 95b55bb266..f853b4e8b1 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -411,11 +411,11 @@ OR: ## Sebelum Anda Mulai -Daftar ini tumbuh selama berbulan-bulan, dan ya, itu jenis keluaran dari tangan. +Daftar ini tumbuh selama berbulan-bulan, dan ya, menjadi sulit untuk diatur. Berikut adalah beberapa kesalahan yang saya buat sehingga anda akan memiliki pengalaman yang lebih baik. -### 1. Kamu Tidak Akan Mengingat Semuanya +### 1. Anda Tidak Akan Mengingat Semuanya Saya menonton video berjam-jam dan mengambil catatan yang berlebihan, dan beberapa bulan kemudian disana ada banyak yang tidak saya ingat. Saya menghabiskan 3 hari melalui catatan saya dan membuat flashcards sehingga saya bisa meninjaunya dengan lebih cepat. @@ -423,6 +423,8 @@ Tolong baca sehingga anda tidak akan membuat kesalahan seperti saya: [Menguasai Pengetahuan Ilmu Komputer](https://googleyasheck.com/retaining-computer-science-knowledge/) +Sebuah kursus yang direkomendasikan kepada saya (belum pernah saya ambil): [Belajar cara Belajar](https://www.coursera.org/learn/learning-how-to-learn). + ### 2. Menggunakan Flashcards Untuk mengatasi masalah tersebut, saya membuat situs flashcards kecil di mana saya bisa menambahkan flashcards dari 2 jenis: umum dan code. Setiap kartu memiliki format yang berbeda. @@ -446,15 +448,23 @@ Ini user-friendly, yang tersedia di semua platform dan memiliki sebuah sistem cl Database flashcard saya di format Anki: https://ankiweb.net/shared/info/25173560 (terimakasih [@xiewenya](https://github.com/xiewenya)) -### 3. Review, review, review +### 3. Start doing coding interview questions while you're learning data structures and algorithms + +Anda perlu menerapkan apa yang Anda pelajari untuk memecahkan masalah, atau Anda akan lupa. Saya melakukan kesalahan ini. Setelah Anda mempelajari suatu topik, dan merasa nyaman dengannya, seperti daftar tertaut, buka salah satu buku wawancara pengkodean dan lakukan beberapa pertanyaan tentang daftar tertaut. +Kemudian lanjutkan ke topik pembelajaran berikutnya. Kemudian, kembali dan lakukan masalah daftar tertaut lainnya, +atau masalah rekursi, atau apa pun. Tapi tetaplah mengerjakan soal sambil belajar. +Anda tidak dipekerjakan karena pengetahuan, tetapi bagaimana Anda menerapkan pengetahuan itu. +Ada beberapa buku dan situs yang saya rekomendasikan. Lihat di sini untuk lebih lanjut: [Latihan Pertanyaan Pemrograman](#latihan-pertanyaan-pemrograman). + +### 4. Review, review, review -Aku menyimpan satu set cheat sheet pada ASCII, OSI stack, Big-O notasi, dan banyak lagi. Saya mempelajari mereka ketika saya memiliki beberapa waktu luang. +Aku menyimpan satu set cheat sheet pada ASCII, OSI stack, Big-O notasi, dan banyak lagi. Saya mempelajarinya ketika saya memiliki waktu luang. Mengambil istirahat dari masalah pemgrogramman selama setengah jam dan pergi melalui flashcards anda. -### 4. Fokus +### 5. Fokus -Disana ada banyak gangguan yang dapat menyita waktu yang berharga. Fokus dan kosentrasi adalah hal yang sulit. +Ada banyak gangguan yang dapat menghabiskan waktu yang berharga. Fokus dan konsentrasi sulit. Nyalakan musik tanpa lirik dan Anda akan dapat fokus dengan baik. ## Apa yang Tidak Akan Dibahas From d44a4a3ec98625e647db17b5ba7ad3104a3ecdf5 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:13:57 +0700 Subject: [PATCH 207/857] Update Book List for id translation --- translations/README-id.md | 109 ++++++++------------------------------ 1 file changed, 22 insertions(+), 87 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index f853b4e8b1..5aee5aba49 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -280,7 +280,7 @@ Anda akan melihat beberapa C, C++, dan Python di cantumkan di link dibawah, kare Ini adalah daftar pendek yang saya gunakan. Ini disingkat untuk menghemat waktu Anda. -### Interview Prep +### Persiapan Interview - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - jawaban di C++ and Java @@ -289,46 +289,25 @@ Ini adalah daftar pendek yang saya gunakan. Ini disingkat untuk menghemat waktu - tidak terlalu sulit, kebanyakan masalah mungkin lebih mudah daripada apa yang akan anda lihat dalam sebuah wawancara (dari apa yang saya baca) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - jawaban in Java - - direkomendasikan di the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - Jika kamu melihat orang-orang mereferensikan "The Google Resume", itu adalah sebuah buku yang diganti oleh "Cracking the Coding Interview". -Jika anda memiliki banyak waktu: +### Jika anda memiliki banyak waktu: -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - semua kode adalah di C++, sangat bagus jika anda menggunakan C++ di wawancara anda. - - sebuah buku yang bagus mengenai pemecahan masalah secara umum. +- [ ] [Elements of Programming Interviews (versi C++)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -### Computer Architecture +### Bahasa Spesifik -Jika kekurangan waktu: +**Anda harus memilih sebuah bahasa pemgrograman untuk wawancara (lihat diatas).** -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - Buku ini dirilis pada tahun 2004, dan agak ketinggalan jaman, tetapi dengan sumber daya yang hebat bisa untuk memahami komputer secara singkat. - - Penulis menemukan HLA, sehingga menyebutkan dan memberi contoh di HLA dengan sebutir garam. Tidak banyak digunakan, tapi contoh yang baik seperti apa assembly itu. - - Bab-bab ini patut dibaca untuk memberikan dasar yang baik: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -Jika anda punya banyak waktu (Saya ingin buku ini): - -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - Untuk orang kaya, lebih up-to-date (2011), tapi dengan pemeliharaan jangka panjang - -### Language Specific - -**Anda harus memilih sebuah bahasa pemgrograman untuk wawancara (lihat diatas).** Berikut adalah rekomendasi bahasa dari saya. Saya tidak memiliki sumber daya untuk semua bahasa. Saya menyambut penambahan. +Berikut adalah rekomendasi bahasa dari saya. Saya tidak memiliki sumber daya untuk semua bahasa. Saya menyambut penambahan. Jika meskipun anda membaca salah satu dari ini, anda harus memiliki semua pengetahuan struktur data dan algoritma, anda harus mulai melakukan pemecahan masalah koding. **Anda dapat melewati semua video ceramah di proyek ini**, kecuali jika anda ingin sebuah review. -[Additional language-specific resources here.](programming-language-resources.md) +[Sumber daya khusus bahasa tambahan di sini.](../programming-language-resources.md) ### C++ @@ -336,78 +315,34 @@ Saya belum membaca keduanya. tapi mereka dinilai sangat bagus dan ditulis oleh S - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - Kumpulan Struktur dan Algoritma Data yang kaya dan terperinci + - Bagus untuk pemula Jika anda memiliki rekomendasi yang lebih baik untuk C++, tolong beritahu saya. Mencari sumber daya yang komprehensif. ### Java -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - video dengan buku (dan Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) +- [ ] [Algoritma (Sedgewick dan Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - video dengan konten buku (dan Sedgewick!) di coursera: + - [Algoritma I](https://www.coursera.org/learn/algorithms-part1) + - [Algoritma II](https://www.coursera.org/learn/algorithms-part2) -OR: +Atau: -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- [ ] [Struktur Data dan Algoritma di Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - oleh Goodrich, Tamassia, Goldwasser - digunakan sebagai teks opsional untuk kursus pengenalan CS di UC Berkeley - lihat laporan buku saya pada versi Python dibawah. Buku ini mencakup topik-topik yang sama. ### Python -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) +- [ ] [Struktur Data dan Algoritma dengan Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - oleh Goodrich, Tamassia, Goldwasser - Saya mencintai buku ini. Mencakup segala hal dan lainnya. - kode Pythonic - laporan buku saya: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ - - -### Optional Books - -**Beberapa orang merekomendasikan ini, tapi saya pikir itu akan berlebihan, kecuali jika anda punya pengalaman di software engineering bertahun-tahun dan mengharapkan sebuah wawancara yang jauh lebih sulit** - -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - Sebagai sebuah review dan pengenalan masalah - - Bagian katalog algoritma adalah luar lingkup yang baik saat anda mendapatkan kesulitan di wawancara - - Buku ini mempunyai 2 bagian: - - class textbook on data structures and algorithms - - pros: - - adalah sebuah review yang bagus sebagai buku algoritma - - cerita bagus dari pengalamannya memecahkan masalah dalam industri dan akademisi - - contoh kode di C - - cons: - - dapat secara penuh dan tak tertembus sebagai CLRS, dan dalam beberapa kasus, CLRS mungkin menjadi alternatif yang lebih baik untuk beberapa mata pelajaran - - bab 7, 8, 9 bisa menyakitkan untuk mencoba mengikutinya, karena beberapa item yang tidak dijelaskan dengan baik atau membutuhkan kinerja otak yang lebih daripada yang saya miliki - - jangan salah paham: Saya suka Skiena, gaya mengajarnya, dan kelakuannya, tapi aku mungkin tidak akan seperti bahan Stony Brook. - - algorithm catalog: - - ini adalah alasan nyata kamu membeli buku ini - - tentang untuk mendapatkan bagian ini. Akan diperbarui disini suatu waktu setelah saya membuat jalan melewati itu. - - Mengutip Yegge: "More than any other book it helped me understand just how astonishingly commonplace - (and important) graph problems are – they should be part of every working programmer's toolkit. The book also - covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half - of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve - them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a - great way to learn how to identify hundreds of problem types." - - Dapat menyewa di kindle - - Half.com adalah sumber daya yang besar untuk buku dengan harga yang baik. - - Jawaban: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Penting:** Membaca buku ini hanya akan memiliki nilai yang terbatas. Buku ini adalah review besar algoritma dan struktur data, tetapi akan mengajarkan cara menulis kode yang baik. Anda harus dapat mengkode yang layak secara efisien. - - Mengutip Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." - - Half.com adalah sumber daya yang besar untuk buku dengan harga yang baik. - - aka CLR, terkadang CLRS, karena Stein terlambat untuk permainan. - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - Pasangan pertama dari bab yang menyajikan solusi cerdas untuk masalah pemrogramman (beberapa sangat tua saat menggunakan tipe data) tapi itu hanya sebuah intro. Ini sebuah buku panduan tentang program desain dan arsitektur, seperti Code Complete, tapi jauh lebih pendek. - -- ~~"Algorithms and Programming: Problems and Solutions" oleh Shen~~ - - Sebuah buku yang baik, tapi setelah bekerja melalui masalah pada halaman, saya frustasi dengan Pascal, do while loops, 1-indexed arrays, dan hasil post-condition yang tidak jelas. - - Lebih suka menghabiskan waktu di masalah coding dari buku lain atau masalah coding online. - +- [ ] [Struktur Data Terbuka di Python](https://opendatastructures.org/ods-python.pdf) ## Sebelum Anda Mulai From 274ed18fb4a2ea8f022f4d0db8ef24e0bf455e60 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:17:17 +0700 Subject: [PATCH 208/857] Update Pick One Language ... for id translation --- translations/README-id.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 5aee5aba49..e8161f56dd 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -252,29 +252,28 @@ Terkadang suatu saat kelas yang ada tidak dapat diikuti untuk sementara, dan har ## Pilih Satu Bahasa Pemrograman untuk Wawancara -Saya menulis artikel pendek tentang topik hal tersebut: [Penting:Pilih Satu Bahasa Pemrograman untuk wawancara dengan Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) (Penting: Pilih Satu Bahasa Pemrograman untuk wawancara dengan Google) - -Anda dapat menggunakan sebuah bahasa pemrograman yang nyaman bagi anda untuk melaksanakan salah satu bagian wawancara yaitu sesi mengkoding, tapi bagi Google, berikut adalah beberapa pilihan: +Anda dapat menggunakan bahasa yang Anda sukai untuk melakukan bagian pengkodean dalam wawancara, tetapi untuk perusahaan besar, ini adalah pilihan yang tepat: - C++ - Java - Python -Anda juga dapat menggunakan beberapa bahasa pemrograman berikut, tapi cari informasi dahulu tentang hal ini, karena mungkin ada kualifikasi khusus: +Anda juga bisa menggunakan ini, tapi bacalah dulu. Mungkin ada peringatan: - JavaScript - Ruby -Anda harus sangat nyaman dan memahami bahasa yang akan digunakan untuk wawancara tersebut. +Berikut adalah artikel yang saya tulis tentang memilih bahasa untuk wawancara: [Pilih Satu Bahasa untuk Wawancara Coding](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). + +Anda harus sangat nyaman dalam bahasa tersebut dan berpengetahuan luas. -Baca lebih banyak tentang pilihan: +Baca lebih lanjut tentang pilihan: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview -[Lihat beberapa sumber bahasa pemrograman disini](programming-language-resources.md) +[Lihat sumber bahasa di sini](../programming-language-resources.md) -Anda akan melihat beberapa C, C++, dan Python di cantumkan di link dibawah, karena saya juga sedang belajar. Ada beberapa buku juga diikutkan dalam list dibawah ini, lihat bagian bawah. +Anda akan melihat beberapa pembelajaran C, C++, dan Python yang disertakan di bawah ini, karena saya sedang belajar. Ada beberapa buku yang terlibat, lihat bagian bawah. ## Daftar Buku From 4e937bfc74178e1349c25ea9d3c2672cb72414c9 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:35:29 +0700 Subject: [PATCH 209/857] Update Interview Process ... for id translation --- translations/README-id.md | 52 +++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index e8161f56dd..e78a52172c 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -219,36 +219,28 @@ Terkadang suatu saat kelas yang ada tidak dapat diikuti untuk sementara, dan har ## Proses Interview dan Preparasi Wawancara Secara Umum -- [ ] Video: - - [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8) - -- [ ] Artikel: - - [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - semua hal-hal yang dia sebutkan itu sudah terdaftar dibawah dan kamu harus tahu - - [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - -- [ ] Materi kelas untuk persiapan: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - -- [ ] Tambahan (tidak disarankan oleh Google tapi saya tambahkan sendiri): - - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - - [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - - [ ] How to Get a Job at the Big 4: - - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/) +- [ ] [ABC: Selalu Menjadi Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [Papan tulis (Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Memperlihatkan Perekrutan Teknologi](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Cara Mendapatkan Pekerjaan di Big 4: + - [ ] [Cara Mendapatkan Pekerjaan di Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] Memecahkan Set Wawancara Coding 1: + - [ ] [Gayle L McDowell - Memecahkan The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Memecahkan Wawancara Coding dengan Penulis Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Memecahkan Wawancara Coding Facebook: + - [ ] [Pendekatan](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Panduan Masalah](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Kursus Persiapan: + - [ ] [Wawancara Insinyur Perangkat Lunak Unleashed (kursus berbayar)](https://www.udemy.com/software-engineer-interview-unleashed): + - Pelajari cara mempersiapkan diri Anda untuk wawancara insinyur perangkat lunak dari mantan pewawancara Google. + - [ ] [Python untuk Struktur Data, Algoritma, dan Wawancara (kursus berbayar)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Kursus persiapan wawancara sentris Python yang mencakup struktur data, algoritma, wawancara tiruan, dan banyak lagi. + - [ ] [Pengantar Struktur Data dan Algoritma menggunakan Python (kursus gratis Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Kursus algoritme dan struktur data sentris Python gratis. + - [ ] [Struktur Data dan Algoritma Nanodegree! (Nanodegree berbayar Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Dapatkan praktik langsung dengan lebih dari 100 struktur data dan latihan algoritme serta panduan dari mentor yang berdedikasi untuk membantu mempersiapkan Anda untuk wawancara dan skenario di tempat kerja. + - [ ] [Grokking the Behavioral Interview (Kursus gratis edukatif)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Sering kali, bukan kompetensi teknis Anda yang menahan Anda untuk mendapatkan pekerjaan impian Anda, melainkan bagaimana Anda melakukan wawancara perilaku. ## Pilih Satu Bahasa Pemrograman untuk Wawancara From b01ee19917e50a68e6269740696d61e879852aef Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:38:08 +0700 Subject: [PATCH 210/857] Update About Video Resources for id translation --- translations/README-id.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index e78a52172c..431ac25029 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -211,11 +211,11 @@ Print satu atau beberapa foto dari "[future Googler](https://github.com/jwasham/ ## Tentang Sumber Video -Beberapa video hanya dapat diakses dengan mengikuti kelas di [Coursera](https://www.coursera.org/), [Edx](https://www.edx.org/), atau [Lynda.com](https://www.lynda.com/). Beberapa link tersebut biasa disebut MOOC (massive open online course) atau belajar online, seperti layaknya anda berkuliah biasa namun bedanya ini online dan diikuti oleh banyak orang dari seluruh dunia. -Terkadang suatu saat kelas yang ada tidak dapat diikuti untuk sementara, dan harus menunggu beberapa bulan. Karena kelas tersebut ada waktunya dalam pembelajaran, dan ada waktunya untuk mendaftar, layaknya anda berkuliah. Khusus untuk Lynda.com merupakan situs yang berbayar untuk mengakses materinya. - - Selain saya membagikan ilmu kepada kalian semua, saya juga mengapresiasi bantuan anda untuk menambahkan sumber pembelajaran yang gratis dan selalu terbuka untuk umum, seperti video di youtube untuk sebagai selingan dari kuliah online dari website yang disebutkan diatas. - Saya suka menggunakan media pembelajaran berbasiskan universitas. +Beberapa video hanya tersedia dengan mendaftar di kelas Coursera atau EdX. Ini disebut MOOC. +Terkadang kelas tidak dalam sesi jadi Anda harus menunggu beberapa bulan, jadi Anda tidak memiliki akses. + + Saya menghargai bantuan Anda untuk menambahkan sumber publik yang gratis dan selalu tersedia, seperti video YouTube untuk menyertai video kursus online. + Saya suka menggunakan kuliah universitas. ## Proses Interview dan Preparasi Wawancara Secara Umum From 64b011b3fa22b3ba7035d1f305abb96599426ce6 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:45:24 +0700 Subject: [PATCH 211/857] Prepare to finalize Indonesian translation --- translations/README-id.md | 49 +++++++-------------------------------- 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index 431ac25029..c922353976 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1,24 +1,19 @@ # Coding Interview University -Version original: [Bahasa Inggris](README.md) +Versi asli: [Bahasa Inggris](../README.md) ## Ringkasan apa ini? -Ini adalah ringkasan studi saya selama beberapa bulan dari web developer (otodidak, tanpa gelar sarjana informatika) hingga menjadi *software engineer Google*. +Ini adalah rencana studi multi-bulan saya untuk beralih dari pengembang web (otodidak, tanpa gelar Ilmu Komputer) menjadi insinyur perangkat lunak untuk perusahaan besar. ![Menulis kode di papan tulis - dikutip dari serial TV Silicon Valley oleh HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Saya telah mengupas catatan **Google's Coaching Note** dan berikut adalah hal-hal penting dari catatan tersebut. Ada beberapa poin yang saya tambahkan pada bagian akhir yang mungkin muncul dalam wawancara atau dapat berguna dalam proses penyelesaian masalah. -Banyak poin berasal dari artikel Steve Yegge "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" yang berisi poin-poin dari **Google's Coaching Note**. +Ini dimaksudkan untuk **teknisi perangkat lunak baru** atau mereka yang beralih dari pengembangan perangkat lunak/web ke rekayasa perangkat lunak (yang memerlukan pengetahuan ilmu komputer). +Jika Anda memiliki pengalaman bertahun-tahun dan mengklaim pengalaman rekayasa perangkat lunak bertahun-tahun, nantikan wawancara yang lebih sulit. -Saya sudah meringkas poin-poin penting menurut saran dari Yegge. Saya juga mengubah beberapa rekomendasinya berdasarkan informasi yang saya dapatkan dari kontak saya di Google. Pedoman ini ditujukan untuk *software engineer* baru dan mereka yang ingin beralih profesi dari *web developer* menjadi *software engineer* (dimana ilmu komputer diperlukan). +Jika Anda memiliki pengalaman pengembangan perangkat lunak/web selama bertahun-tahun, perhatikan bahwa perusahaan perangkat lunak besar seperti Google, Amazon, Facebook, dan Microsoft memandang rekayasa perangkat lunak berbeda dari pengembangan perangkat lunak/web, dan mereka memerlukan pengetahuan ilmu komputer. -Jika Anda mengaku memiliki pengalaman bertahun-tahun dalam rekayasa perangkat lunak, bersiaplah untuk wawncara yang jauh lebih sulit. -[Baca lebih lanjut](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). - -Jika Anda memiliki pengalaman sebagai developer software/web, catat bahwa Google memandang *software engineer* berbeda dari *developer software/web* karena *software engineer* menggunakan ilmu komputer. - -Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih banyak pelajari pada bagian tambahan (jaringan, keamanan). +Jika Anda ingin menjadi insinyur keandalan atau insinyur operasi, pelajari lebih lanjut dari daftar opsional (jaringan, keamanan). --- @@ -27,9 +22,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany - [Apa ini?](#ringkasan-apa-ini) - [Mengapa menggunakan ini?](#mengapa-menggunakan-ini) - [Bagaimana cara menggunakannya](#bagaimana-cara-menggunakannya) -- [Masuk ke Mode Googley](#masuk-ke-mode-googley) - [Jangan merasa anda kurang pintar](#jangan-merasa-anda-kurang-pintar) -- [Tentang Google](#tentang-google) - [Tentang Sumber Video](#tentang-sumber-video) - [Proses Interview dan Preparasi Wawancara Secara Umum](#proses-interview-dan-preparasi-wawancara-secara-umum) - [Pilih Satu Bahasa Pemrograman untuk Wawancara](#pilih-satu-bahasa-pemrograman-untuk-wawancara) @@ -147,10 +140,7 @@ Jika Anda ingin menjadi teknisi ketahanan sistem atau teknisi sistem, lebih bany Saya mengikuti rencana ini untuk mempersiapkan saya dalam menghadapi wawancara kerja Google. Sejak 1997, saya telah menciptakan berbagai situs, servis, dan mendirikan startup. Saya memiliki gelar ekonomi, bukan gelar ilmu komputer. Saya telah meraih kesuksesan dalam karir saya, tapi saya ingin bekerja di Google. Saya ingin masuk ke sistem yang lebih besar dan mempunyai pemahaman mendalam tentang sistem komputer, efesiensi algoritma, performa struktur data, bahasa tingkat rendah, dan bagaimana semuanya bekerja. Jika anda tidak mengetahui satu pun, Google tidak akan mempekerjakan anda. -Ketika saya memulai proyek ini, saya tidak tahu tentang stack dari sebuah heap, tidak tahu tentang notasi Big-O apapun, begitupula dengan struktur data trees, atau bagaimana menyusuri sebuah graph. Jika saya harus menulis algoritma penyortiran, saya bisa katakan pada anda bahwa hasilnya tidak akan memuaskan. -Setiap struktur data yang saya pernah pakai sudah tertanam dalam bahasa yang saya gunakan, dan saya tidak tahu bagaimana mereka bekerja secara riil. Saya tidak pernah diharuskan untuk mengatur penggunaan memori kecuali proses yang saya jalankan akan memberikan error 'memori tidak cukup', sehingga saya harus mencari jalan keluarnya. Saya pernah menggunakan beberapa array multidimensi dalam hidup saya dan ribuan array asosiatif, tapi saya tidak pernah menciptakan struktur data dari nol. - -Tetapi setelah menjalani rencana studi ini saya memiliki kepercayaan diri yang tinggi bahwa saya akan diterima. Ini adalah rencana yang panjang. Ini akan menyita waktu saya selama berbulan-bulan. Tetapi jika anda sudah tidak asing lagi dengan materi yang dibutuhkan, hal ini akan membutuhkan waktu jauh lebih sedikit. +Itu rencana yang panjang. Mungkin butuh waktu berbulan-bulan. Jika Anda sudah terbiasa dengan hal ini, Anda akan membutuhkan lebih sedikit waktu. ## Bagaimana cara menggunakannya? @@ -173,7 +163,7 @@ Saya menggunakan markdown spesial dari Github, termasuk daftar tugas untuk menge `git add . ` -`git commit -m "Marked x" ` +`git commit -m "Tandai x" ` `git rebase jwasham/master ` @@ -181,34 +171,11 @@ Saya menggunakan markdown spesial dari Github, termasuk daftar tugas untuk menge [Lebih jauh tentang markdown Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Masuk ke Mode Googley - -Print satu atau beberapa foto dari "[future Googler](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf)" (untuk ditempel tentunya) sebagai reminder anda apa hasil usaha yang anda akan dapatkan. - -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf) - ## Jangan merasa anda kurang pintar - Para engineers/programmer di google adalah orang-orang pintar, tapi banyak dari mereka berpikir bahwa mereka tidak cukup pintar, walaupun mereka bekerja di Google. - [Mitos dari programmer yang jenius](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Hal yang berbahaya untuk pergi sendirian: Bertarung dengan monster yang tidak kelihatan di dunia teknologi](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## Tentang Google - -- [ ] Untuk pelajar - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) -- [ ] Bagaimana Pencari Bekerja: - - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - - [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) - - [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) -- [ ] Seri: - - [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) - - [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) - - [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) - - [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) -- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) -- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) - ## Tentang Sumber Video Beberapa video hanya tersedia dengan mendaftar di kelas Coursera atau EdX. Ini disebut MOOC. From 6cd79736cdb4a9a1b6eeb8eeeb118569a3cbeed7 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sat, 2 Jan 2021 15:56:30 +0700 Subject: [PATCH 212/857] Finalize Indonesian translation --- translations/README-id.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index c922353976..d26a53d2c9 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -206,7 +206,7 @@ Terkadang kelas tidak dalam sesi jadi Anda harus menunggu beberapa bulan, jadi A - Kursus algoritme dan struktur data sentris Python gratis. - [ ] [Struktur Data dan Algoritma Nanodegree! (Nanodegree berbayar Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Dapatkan praktik langsung dengan lebih dari 100 struktur data dan latihan algoritme serta panduan dari mentor yang berdedikasi untuk membantu mempersiapkan Anda untuk wawancara dan skenario di tempat kerja. - - [ ] [Grokking the Behavioral Interview (Kursus gratis edukatif)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - [ ] [Grokking Interview Perilaku (Kursus gratis edukatif)](https://www.educative.io/courses/grokking-the-behavioral-interview): - Sering kali, bukan kompetensi teknis Anda yang menahan Anda untuk mendapatkan pekerjaan impian Anda, melainkan bagaimana Anda melakukan wawancara perilaku. ## Pilih Satu Bahasa Pemrograman untuk Wawancara @@ -478,7 +478,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Kode C (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - bukan keseluruhan video, hanya bagian tentang struct Node dan alokasi memori - [ ] Linked List vs Array: - - [Daftar Tertaut Inti Vs Array (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Daftar Linked List Vs Array (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [Di Dunia Nyata Linked List Vs Array (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [mengapa Anda harus menghindari linked list (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: Anda perlu pengetahuan pointer ke pointer: @@ -506,7 +506,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - ### Stack - [ ] [Stack (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Tidak akan diterapkan. Menerapkan dengan array itu sepele + - [ ] Tidak akan diterapkan. Implementasi dengan array itu sepele - ### Queue - Queue (Antrean) @@ -535,7 +535,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Penggandaan Table, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing, Hashing Kriptografi (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Lanjutan) Pengacakan: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Lanjutan) Pengacakan: Universal & Hashing Sempurna (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Lanjutan) Hash sempurna (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Kursus Online: @@ -609,9 +609,9 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - kompleksitas ruang: terbaik: O(log n) - rata-rata. ketinggian tree terburuk: O(n) - - dalam urutan (DFS: kiri, sendiri, kanan) - - pasca urutan (DFS: kiri, kanan, sendiri) - - pra urutan (DFS: sendiri, kiri, kanan) + - dalam urutan (DFS: kiri, sendiri/self, kanan) + - pasca urutan (DFS: kiri, kanan, sendiri/self) + - pra urutan (DFS: sendiri/self, kiri, kanan) - ### Binary search trees: BSTs - [ ] [Ulasan Binary Search Tree (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -630,7 +630,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Periksa apakah pohon biner adalah binary search tree atau bukan (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Hapus node dari Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Penerus Berurutan di binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: + - [ ] Implementasikan: - [ ] insert // masukkan nilai ke dalam pohon - [ ] get_node_count // dapatkan hitungan nilai yang disimpan - [ ] print_values // mencetak nilai di pohon, dari min hingga maks @@ -644,7 +644,9 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] get_successor // mengembalikan nilai tertinggi berikutnya di pohon setelah nilai yang diberikan, -1 jika none - ### Heap / Prioritas Antrian / Biner Heap - - Heap (tumpykan) + - Heap (tumpukan) + - Priority Queue (Prioritas Antrian) + - Binary Heap (Biner Heap) - divisualisasikan sebagai pohon, tetapi biasanya linier dalam penyimpanan (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Pendahuluan (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) @@ -946,7 +948,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - Peralihan konteks - Bagaimana peralihan konteks dimulai oleh sistem operasi dan perangkat keras yang mendasarinya? - [ ] [thread di C ++ (seri - 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] konkurensi dengan Python (video): + - [ ] Konkurensi (Concurrency) dengan Python (video): - [ ] [Serial pendek tentang thread](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Thread Python](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Memahami Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -1031,7 +1033,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - [ ] [Seri Video (21 video) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - [ ] [Subnetting Demystified - Bagian 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] Sockets: + - [ ] Socket: - [ ] [Java - Sockets - Pengenalan (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Pemrograman Socket (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) @@ -1215,7 +1217,7 @@ Tambahan: - [ ] [Cracking the Coding Interview, Edisi ke-6](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - jawaban di Java -Lihat [Daftar Buku di atas](#book-list) +Lihat [Daftar Buku di atas](#daftar-buku) ## Latihan / tantangan coding From 93a5fd22740be665d8eef8544d478d44ebc0342a Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 2 Jan 2021 10:30:26 -0800 Subject: [PATCH 213/857] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0e95605ad3..8a27f03fa0 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) From 4ff1758b8893bea3e57067532aea23bfd860191f Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 2 Jan 2021 10:34:02 -0800 Subject: [PATCH 214/857] Updates link to Urdu translation request issue. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a27f03fa0..bf211a3770 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) From 480abe32007e58d930eaee50aec80b6fec3456b5 Mon Sep 17 00:00:00 2001 From: hexatester Date: Sun, 3 Jan 2021 10:10:40 +0700 Subject: [PATCH 215/857] Update Indonesian translation --- translations/README-id.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index d26a53d2c9..cf1fdbd76e 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -341,7 +341,7 @@ Ini user-friendly, yang tersedia di semua platform dan memiliki sebuah sistem cl Database flashcard saya di format Anki: https://ankiweb.net/shared/info/25173560 (terimakasih [@xiewenya](https://github.com/xiewenya)) -### 3. Start doing coding interview questions while you're learning data structures and algorithms +### 3. Mulailah membuat pertanyaan wawancara coding saat Anda mempelajari struktur data dan algoritme Anda perlu menerapkan apa yang Anda pelajari untuk memecahkan masalah, atau Anda akan lupa. Saya melakukan kesalahan ini. Setelah Anda mempelajari suatu topik, dan merasa nyaman dengannya, seperti daftar tertaut, buka salah satu buku wawancara pengkodean dan lakukan beberapa pertanyaan tentang daftar tertaut. Kemudian lanjutkan ke topik pembelajaran berikutnya. Kemudian, kembali dan lakukan masalah daftar tertaut lainnya, @@ -1903,8 +1903,18 @@ Duduk dan nikmati. "Netflix dan keterampilan": P - [2015: Bagaimana Pengembang Menelusuri Kode: Studi Kasus](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [2016: Borg, Omega, dan Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) -## LICENSE +## LISENSI [CC-BY-SA-4.0](../LICENSE.txt) -Terjemahan Bahasa Indonesia oleh @[hexatester](https://github.com/hexatester), @[santosomichael](https://github.com/santosomichael), @[dikiaap](https://github.com/dikiaap), @[rvlewerissa](https://github.com/rvlewerissa), @[ziishaned](https://github.com/ziishaned), @[rimonmostafiz](https://github.com/rimonmostafiz), @[hwhung0111](https://github.com/hwhung0111), @[fahminlb33](https://github.com/fahminlb33), @[davidsetyanugraha](https://github.com/davidsetyanugraha) +Terjemahan Bahasa Indonesia dipersembahkan oleh + +- @[hexatester](https://github.com/hexatester) +- @[santosomichael](https://github.com/santosomichael) +- @[dikiaap](https://github.com/dikiaap) +- @[rvlewerissa](https://github.com/rvlewerissa) +- @[ziishaned](https://github.com/ziishaned) +- @[rimonmostafiz](https://github.com/rimonmostafiz) +- @[hwhung0111](https://github.com/hwhung0111) +- @[fahminlb33](https://github.com/fahminlb33) +- @[davidsetyanugraha](https://github.com/davidsetyanugraha) From af20557bc94915e1c50ca5c4f57e4d68bded6ceb Mon Sep 17 00:00:00 2001 From: hexatester Date: Sun, 3 Jan 2021 10:11:29 +0700 Subject: [PATCH 216/857] Added link to Indonesian translation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bf211a3770..133b9313a1 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ - [Japanese (日本語)](translations/README-ja.md) - [Russian](translations/README-ru.md) - [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) From cb6336586e4824f3f5a31859df16169d7aabdc10 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 3 Jan 2021 09:22:38 -0800 Subject: [PATCH 217/857] Reorders two content items. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 133b9313a1..0b248dfec4 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,8 @@ If you want to be a reliability engineer or operations engineer, study more from - [Book List](#book-list) - [Before you Get Started](#before-you-get-started) - [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) - [The Daily Plan](#the-daily-plan) +- [Prerequisite Knowledge](#prerequisite-knowledge) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) From 764e2869e1ff38e81ebd82ffa2fba357496afdd1 Mon Sep 17 00:00:00 2001 From: Sachin Diwate Date: Tue, 12 Jan 2021 00:07:33 +0530 Subject: [PATCH 218/857] Add new updated blog for interview preparation. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b248dfec4..6f49387d7b 100644 --- a/README.md +++ b/README.md @@ -248,7 +248,7 @@ Sometimes the classes are not in session so you have to wait a couple of months, ## Interview Process & General Interview Prep -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: From 407deeff84d59cc07fe2141254f724fe0f706e01 Mon Sep 17 00:00:00 2001 From: Sachin Diwate Date: Thu, 14 Jan 2021 09:13:00 +0530 Subject: [PATCH 219/857] Remove Broken link --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 6f49387d7b..914a301db4 100644 --- a/README.md +++ b/README.md @@ -678,9 +678,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - preorder (DFS: self, left, right) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: From f88e488c3e343ba01a4f41257b427e863e5ef804 Mon Sep 17 00:00:00 2001 From: Sachin Diwate Date: Sun, 17 Jan 2021 18:23:14 +0530 Subject: [PATCH 220/857] Update link with follow up video The old link was 4 years old and the author has made a video on the same topic as follow-up. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 914a301db4..84b7481be4 100644 --- a/README.md +++ b/README.md @@ -252,7 +252,7 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) From b68832506792e0b0915f5212edb77215ce2d0d02 Mon Sep 17 00:00:00 2001 From: Sachin Diwate Date: Mon, 18 Jan 2021 22:33:15 +0530 Subject: [PATCH 221/857] Follow up video for How to get job at big 4 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 84b7481be4..dc1f754f64 100644 --- a/README.md +++ b/README.md @@ -252,7 +252,8 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) From caef61d6e3ae427fe5015950f4dcbec60f187efc Mon Sep 17 00:00:00 2001 From: Isaac Moore Date: Tue, 9 Feb 2021 21:53:37 -0600 Subject: [PATCH 222/857] Fix incorrect references to master branch --- README.md | 10 +++++----- programming-language-resources.md | 8 ++++---- translations/README-ar.md | 14 +++++++------- translations/README-bn.md | Bin 285542 -> 285524 bytes translations/README-cn.md | 14 +++++++------- translations/README-de.md | 10 +++++----- translations/README-es.md | 10 +++++----- translations/README-fr.md | 12 ++++++------ translations/README-he.md | 12 ++++++------ translations/README-hi.md | 8 ++++---- translations/README-id.md | 10 +++++----- translations/README-ja.md | 10 +++++----- translations/README-kh.md | 10 +++++----- translations/README-ko.md | 10 +++++----- translations/README-pl.md | 10 +++++----- translations/README-ptbr.md | 12 ++++++------ translations/README-ru.md | 6 +++--- translations/README-th.md | 10 +++++----- translations/README-tw.md | 10 +++++----- translations/README-uk.md | 10 +++++----- translations/README-vi.md | 4 ++-- 21 files changed, 100 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index dc1f754f64..5a9e2d7870 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ Fork the GitHub repo https://github.com/jwasham/coding-interview-university by c `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --set-upstream origin progress` @@ -393,8 +393,8 @@ I made a mobile-first website, so I could review on my phone and tablet, whereve Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. @@ -631,7 +631,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1196,7 +1196,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - Define the use cases, with interviewer's help diff --git a/programming-language-resources.md b/programming-language-resources.md index ad54e4cad1..633c3409b2 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -1,7 +1,7 @@ ## Programming Language Resources - C - - [ANSI C Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/C%20Reference%20Card%20(ANSI)%202.2.pdf) + - [ANSI C Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/C%20Reference%20Card%20(ANSI)%202.2.pdf) - K&R C book (ANSI C) - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) - GDB: @@ -10,8 +10,8 @@ - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) - C++ - - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/Cpp_reference.pdf) - - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) + - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) + - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) - [basics](https://www.tutorialspoint.com/cplusplus/cpp_basic_syntax.htm) - [pointers](https://www.cprogramming.com/tutorial/lesson6.html) - [class and object](https://www.cprogramming.com/tutorial/lesson12.html) @@ -32,7 +32,7 @@ - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) - Python - - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) + - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) - [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) - [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA) diff --git a/translations/README-ar.md b/translations/README-ar.md index bbc3a80510..7868ac0e65 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -212,7 +212,7 @@ `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -220,9 +220,9 @@ ## الدخول في مزاج جوجلي -Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. +Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf) +[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf) ## هل حصلت على الوظيفة بجوجل؟ @@ -503,8 +503,8 @@ OR: اصنع واحدا منها لك مجانا: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. @@ -740,7 +740,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1314,7 +1314,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-bn.md b/translations/README-bn.md index b1b8d07111108e8c06a3ba0ff9d054b9904f9e66..1bd4d55666b17672ba03ce10a90b076f97450f2f 100644 GIT binary patch delta 84 zcmaF1P4LP#!3_q1%$W>%llKRRZuSY>B}j{X~(I-Iay+%#`IY&j9i;d z7Vt2FS(8l`NNrA77}NshweL`6+`dDVDPks=I~~Z?nI5u_Nvb_&KhyS@{megR0|16b BCD#A| diff --git a/translations/README-cn.md b/translations/README-cn.md index 4b185f1851..0d1e0394d9 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -171,7 +171,7 @@ `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --set-upstream origin progress` @@ -274,7 +274,7 @@ 如果你通读其中之一,你应该具备了开始解决编程问题所需的所有数据结构和算法知识。除非你需要复习,否则**你可以跳过此项目中的所有视频讲座**。 -[额外编程语言的精选资源](https://github.com/jwasham/coding-interview-university/blob/master/programming-language-resources.md) +[额外编程语言的精选资源](https://github.com/jwasham/coding-interview-university/blob/main/programming-language-resources.md) ### C++ @@ -336,8 +336,8 @@ 你也可以免费制作属于你自己的抽认卡网站: - [抽认卡页面的代码仓库](https://github.com/jwasham/computer-science-flash-cards) -- [我的抽认卡数据库 ── 旧 1200 张](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db) -- [我的抽认卡数据库 ── 新 1800 张](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db) +- [我的抽认卡数据库 ── 旧 1200 张](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db) +- [我的抽认卡数据库 ── 新 1800 张](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db) 有一点需要记住的是,我做事有点过头,以至于卡片都覆盖到所有的东西上,从汇编语言和 Python 的细枝末节,到机器学习和统计都被覆盖到卡片上。而这种做法,对于要求来说是多余的。 @@ -569,7 +569,7 @@ - 迭代式二分查找 - ### 按位运算(Bitwise operations) - - [ ] [Bits 速查表](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) ── 你需要知道大量2的幂数值(从2^1 到 2^16 及 2^32) + - [ ] [Bits 速查表](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) ── 你需要知道大量2的幂数值(从2^1 到 2^16 及 2^32) - [ ] 好好理解位操作符的含义:&、|、^、~、>>、<< - [ ] [字码(words)](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] 好的介绍: @@ -1128,7 +1128,7 @@ - [ ] 系统设计问题练习:下面有一些指导原则,每一个都有相关文档以及在现实中该如何处理。 - 复习: [系统设计入门](https://github.com/donnemartin/system-design-primer) - [HiredInTech 的系统设计](http://www.hiredintech.com/system-design/) - - [备忘单](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [备忘单](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - 流程: 1. 理解问题和范围: - 在面试官的帮助下定义用例 @@ -1876,4 +1876,4 @@ ## LICENSE -[CC-BY-SA-4.0](https://github.com/jwasham/coding-interview-university/blob/master/LICENSE.txt) +[CC-BY-SA-4.0](https://github.com/jwasham/coding-interview-university/blob/main/LICENSE.txt) diff --git a/translations/README-de.md b/translations/README-de.md index 62c46eba20..68594c8b6a 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -225,7 +225,7 @@ Ich benutze GitHub's spezielle Version von Markdown, das beinhält Aufgabenliste `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --force` @@ -433,8 +433,8 @@ Ich habe eine mobile-first Webseite gemacht, damit ich auf meinen Smartphone ode Erstell kostenlos deine eigenen Lernkarten: - [Lernkarten-Webseiten Repo](https://github.com/jwasham/computer-science-flash-cards) -- [Meine Lernkarten Databank (alt - 1200 Karten)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [Meine Lernkarten Databank (neu - 1800 Karten)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [Meine Lernkarten Databank (alt - 1200 Karten)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Meine Lernkarten Databank (neu - 1800 Karten)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Achtung, ich habe es übertrieben und Lernkarten über alles erstellt, von Assembly und Python Trivia bis hin zu Machine Learning und Statistik. Das ist viel mehr als eigentlich notwendig. @@ -693,7 +693,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - Binärsuche mittels Rekursion - ### Bitweise Operationen - - [ ] [Bits Spickzettel](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - man sollte viele der Zweierpotenzen kennen (von 2^1 über 2^16 und 2^32) + - [ ] [Bits Spickzettel](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - man sollte viele der Zweierpotenzen kennen (von 2^1 über 2^16 und 2^32) - [ ] Erhalte sehr gutes Verständnis Bits zu manipulieren mit: &, |, ^, ~, >>, << - [ ] [Wörter](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Gute Einführung: @@ -1308,7 +1308,7 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Übe den Prozess des Systementwurfs: Hier sind ein paar Ideen, die man auf Papier durchspielen kann, jede mit einer Dokumentation wie es in der echten Welt umgesetzt wurde: - Review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [Spickzettel](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [Spickzettel](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - Ablauf: 1. Verstehe das Problem und den Umfang: - definiere den Anwendungsfall, was dem Interviewer helfen wird diff --git a/translations/README-es.md b/translations/README-es.md index 0450b15984..7952272134 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -199,7 +199,7 @@ Estoy usando el tema especial de markdown de Github, incluyendo listas de tareas `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -406,8 +406,8 @@ Hice un sitio adaptado a moviles para revisarlo en mi celular y en mi Tablet, do Haga el suyo gratis: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Tenga en cuenta que empecé desde abajo y hay tarjetas que cubren todo, desde el lenguaje ensamblador y la trivia Python al Machine Learning y estadísticas. Es demasiado para lo que se requiere. @@ -636,7 +636,7 @@ Escriba código en un pizarrón o en papel no en la computadora. Pruebe con algu - Búsqueda binaria usando recursión - ### Operaciones bit a bit - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) - [ ] Obtenga un buen entendimiento de la manipulación de bits con: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Buena introducción: @@ -1254,7 +1254,7 @@ Obtendrá más práctica de grafos en el libro de Skiena (vea Sección de libros - [ ] Practicando el proceso de diseño del sistema: Aquí hay algunas ideas para tratar de trabajar en papel, cada una con cierta documentación sobre cómo se manejó en el mundo real: - Revisión: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - Flujo: 1. Comprender el problema y el alcance: - Definir los casos de uso, con ayuda del entrevistador diff --git a/translations/README-fr.md b/translations/README-fr.md index 1ba9e80734..b9791ec262 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -188,7 +188,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -196,9 +196,9 @@ I'm using Github's special markdown flavor, including tasks lists to check progr ## Get in a Googley Mood -Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. +Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf) +[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf) ## Did I Get the Job? @@ -469,7 +469,7 @@ I made a mobile-first website so I could review on my phone and tablet, wherever Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. +- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. **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 @@ -703,7 +703,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1247,7 +1247,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-he.md b/translations/README-he.md index 4254182f31..435303f5d9 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -182,7 +182,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -190,9 +190,9 @@ I'm using Github's special markdown flavor, including tasks lists to check progr ## Get in a Googley Mood -Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. +Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/master/extras/future-googler.pdf) +[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf) ## האם קיבלתי את העבודה? @@ -463,7 +463,7 @@ I made a mobile-first website so I could review on my phone and tablet, wherever Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. +- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. **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 @@ -697,7 +697,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1241,7 +1241,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-hi.md b/translations/README-hi.md index 8393a15ccc..3dc2ce8986 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -312,8 +312,8 @@ memory" का एरर न दे, और तब मुझे कोई वै अपना खुद का मुफ्त बनाएं: - [फ़्लैशकार्ड साइट रेपो] (https://github.com/jwasham/computer-science-flash-cards) - - [मेरे फ़्लैश कार्ड डेटाबेस (पुराने - 1200 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db) - - [मेरा फ़्लैश कार्ड डेटाबेस (नया - 1800 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db) + - [मेरे फ़्लैश कार्ड डेटाबेस (पुराने - 1200 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db) + - [मेरा फ़्लैश कार्ड डेटाबेस (नया - 1800 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db) ध्यान रखें मैं जहाज़ के ऊपर गया और विधानसभा भाषा और पायथन तुल्यता से लेकर मशीन सीखने और आंकड़ों तक सब कुछ कवर करने वाले कार्ड हैं। इसकी आवश्यकता के लिए यह बहुत अधिक है @@ -548,7 +548,7 @@ memory" का एरर न दे, और तब मुझे कोई वै - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1120,7 +1120,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-id.md b/translations/README-id.md index cf1fdbd76e..1b23877da7 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -165,7 +165,7 @@ Saya menggunakan markdown spesial dari Github, termasuk daftar tugas untuk menge `git commit -m "Tandai x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -327,8 +327,8 @@ Saya membuat sebuah mobile-first website jadi saya bisa mereview di telepon dan Membuat punya anda sendiri secara gratis: - [Repo website flashcards](https://github.com/jwasham/computer-science-flash-cards) -- [Database flashcards saya (lama - 1200 kartu)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [Database flashcards saya (baru - 1800 kartu)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [Database flashcards saya (lama - 1200 kartu)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Database flashcards saya (baru - 1800 kartu)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Perlu diingat aku pergi keluar kapal dan memiliki kartu meliputi segala sesuatu dari bahasa assembly dan Python trivia untuk pembelajaran machine learning dan statistik. Ini terlalu banyak untuk apa yang diminta oleh Google. @@ -564,7 +564,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - pencarian biner menggunakan rekursi - ### Operasi Bitwise - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Anda harus mengetahui banyak pangkat 2 dari (2^1 hingga 2^16 dan 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Anda harus mengetahui banyak pangkat 2 dari (2^1 hingga 2^16 dan 2^32) - [ ] Dapatkan pemahaman yang sangat baik tentang memanipulasi bit dengan: &, |, ^, ~, >>, << - [ ] [kata-kata](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1134,7 +1134,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Mempraktikkan proses desain sistem: Berikut adalah beberapa ide untuk dicoba di atas kertas, masing-masing dengan beberapa dokumentasi tentang bagaimana hal itu ditangani di dunia nyata: - review: [Primer Desain Sistem](https://github.com/donnemartin/system-design-primer) - [Desain Sistem dari HiredInTech](http://www.hiredintech.com/system-design/) - - [contekan (cheat sheet)](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [contekan (cheat sheet)](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - aliran: 1. Pahami masalah dan cakupannya: - Tentukan kasus penggunaan, dengan bantuan pewawancara diff --git a/translations/README-ja.md b/translations/README-ja.md index 20a39550f0..d90882f810 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -201,7 +201,7 @@ SREまたはシステムエンジニアになりたい場合は、オプショ `git commit -m "マークされたx"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --force` @@ -419,8 +419,8 @@ OR: あなた自身を無料で作る: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [マイフラッシュカードデータベース(旧1200カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [マイフラッシュカードデータベース(新1800カード)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [マイフラッシュカードデータベース(旧1200カード)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [マイフラッシュカードデータベース(新1800カード)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): 覚えておいてほしいのですが,私はやりすぎてしまい、アセンブリ言語,機械学習のためのPythonのトリビア,統計に至るまですべてのカードをカバーしています。 何が必要なのかはあまりにも大変です。 @@ -661,7 +661,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - 再帰を利用した二分探索 - ###ビット演算 - - [ ] [ビットチートシート- 2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗の多くを知るべきです](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) + - [ ] [ビットチートシート- 2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗の多くを知るべきです](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-cheet.pdf) - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ]  [良いイントロ:ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) @@ -1287,7 +1287,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように処理されたかについてのいくつかの文書があります。 - レビュー:[システム設計入門](https://github.com/donnemartin/system-design-primer) - [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) - - [チートシート](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [チートシート](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - 流れ: 1. 問題と範囲を理解する:             - 面接官の助けを借りてユースケースを定義する diff --git a/translations/README-kh.md b/translations/README-kh.md index 0b01c469d5..31c32f90e5 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -174,7 +174,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --force` @@ -369,8 +369,8 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ អ្នកអាចបង្កេីតដោយឥតគិតថ្លៃ៖ - [បណ្តាញឃ្លាំងផ្ទុកកាតឡើងវិញ](https://github.com/jwasham/computer-science-flash-cards) -- [មូលដ្ឋានទិន្នន័យកាតរបស់ខ្ញុំ (កាតចាស់ - ១២០០ កាត)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db)៖ -- [ប្រព័ន្ធទិន្នន័យកាតរបស់ខ្ញុំ (កាតថ្មី - ១៨០០)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db)៖ +- [មូលដ្ឋានទិន្នន័យកាតរបស់ខ្ញុំ (កាតចាស់ - ១២០០ កាត)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db)៖ +- [ប្រព័ន្ធទិន្នន័យកាតរបស់ខ្ញុំ (កាតថ្មី - ១៨០០)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db)៖ សូមចងចាំថាខ្ញុំបានឡើងលើក្តារហើយមានកាតគ្របដណ្តប់លើអ្វីៗទាំងអស់ចាប់ពីភាសាការជួបប្រជុំគ្នា និង សំនួរទាក់ទងនឹង Python រហូតដល់ការរៀនម៉ាស៊ីននិងស្ថិតិ។ វាជាវិធីច្រើនពេកសម្រាប់អ្វីដែលត្រូវការ។ @@ -639,7 +639,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - Binary search ដោយប្រើការហៅខ្លួនឯង - ### ប្រតិបតិ្តការ Bitwise - - [ ] [សន្លឹកជំនួយ Bits](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - [ ] [សន្លឹកជំនួយ Bits](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - អ្នកគួរតែស្គាល់ អំណាច ២ ពី (២ ^ ១ ដល់ ២ ^ ១៦ និង ២ ^ ៣២) - [ ] ទទួលបានការយល់ដឹងដ៏ល្អអំពីការរៀបចំBitsជាមួយ៖ &, |, ^, ~, >>, << - [ ] [ពាក្យ](https://en.wikipedia.org/wiki/Word_ (computer_architecture)) @@ -1213,7 +1213,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] ការអនុវត្តដំណើរការរចនាប្រព័ន្ធ៖ នេះគឺជាគំនិតមួយចំនួនដើម្បីព្យាយាមធ្វើការលើក្រដាសនីមួយៗដោយមានឯកសារមួយចំនួនស្តីពីវិធីដែលត្រូវបានដោះស្រាយនៅក្នុងពិភពពិត៖ - ពិនិត្យឡើងវិញ: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. ស្វែងយល់ពីបញ្ហានិងវិសាលភាព - កំណត់ករណីប្រើប្រាស់ដោយមានជំនួយពីអ្នកសម្ភាសន៍ diff --git a/translations/README-ko.md b/translations/README-ko.md index f8a72b5414..20555b8ee0 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -219,7 +219,7 @@ `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --set-upstream origin progress` @@ -382,8 +382,8 @@ C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적 당신만의 카드를 무료로 만들어보자: - [Flashcard 사이트 repo](https://github.com/jwasham/computer-science-flash-cards) -- [내 flashcard 데이터베이스 (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [내 flashcard 데이터베이스 (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [내 flashcard 데이터베이스 (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [내 flashcard 데이터베이스 (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): 앞에서도 언급했듯이 나는 불필요하게 많은 것을 공부하려고 했고, 내 카드의 내용들은 어셈블리 언어와 Python의 자잘한 지식들부터 기계 학습과 통계학까지 넘나들게 되었다. 결국 기업이 요구하는 것보다 훨씬 멀리 가버리고 말았다. @@ -628,7 +628,7 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - 재귀를 사용한 이진 탐색 - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] 비트 연산자(&, |, ^, ~, >>, <<) 제대로 이해하기 - [ ] [워드](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] 시작하기 좋은 곳: @@ -1199,7 +1199,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-pl.md b/translations/README-pl.md index 3e439e1294..62d578254d 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -208,7 +208,7 @@ Używam specjalnej odmiany Markdown GitHub, w tym list zadań do sprawdzania pos `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --force` @@ -372,8 +372,8 @@ Stworzyłem witrynę mobilną, aby móc przeglądać na moim telefonie i tableci Stwórz własną za darmo: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Pamiętaj, że poszedłem ostro i mam karty obejmujące wszystko, od języka asemblera i ciekawostek Python po uczenie maszynowe i statystyki. To o wiele za dużo na to, w stosunku do tego co jest wymagane. @@ -617,7 +617,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - binary search using recursion - ### Operacje bitowe - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Dobrze zrozum manipulowanie bitami korzystając z: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1186,7 +1186,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Zrozumienie problemu i zakresu: - zdefiniowanie przypadków użycia, z pomocą rekrutera diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index bc77960747..8e9ac04587 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -10,7 +10,7 @@ > > *Boa sorte para todos vocês!* -**Original**: [Inglês](https://github.com/jwasham/coding-interview-university/blob/master/README.md) +**Original**: [Inglês](https://github.com/jwasham/coding-interview-university/blob/main/README.md) - [Acompanhe o progresso da tradução aqui!](https://github.com/jwasham/coding-interview-university/pull/115) @@ -205,7 +205,7 @@ Eu estou usando a sintaxe de markdown especial do Github, incluindo listas de ta `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -415,8 +415,8 @@ Eu fiz um website focado em mobile para que eu pudesse rever no meu celular, tab Faça o seu próprio, grátis: - [Repositório de flashcards](https://github.com/jwasham/computer-science-flash-cards) -- [Minha base de dados de flashcards (antigo - 1200 cartões)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [Minha base de dados de flashcards (novo - 1800 cartões)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [Minha base de dados de flashcards (antigo - 1200 cartões)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Minha base de dados de flashcards (novo - 1800 cartões)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Tenha em mente que eu exagerei e tenho cartões abrangendo desde linguagem assembly e trivialidades de Python até aprendizado de máquina e estatísticas. É demais para o que é requerido.  @@ -650,7 +650,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - busca binária usando recursividade - ### Lógica binária - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) (Folha de consultas sobre Bits) - você deve conhecer várias das potências de 2 de (2^1 até 2^16 e 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) (Folha de consultas sobre Bits) - você deve conhecer várias das potências de 2 de (2^1 até 2^16 e 2^32) - [ ] Consiga um bom entendimento sobre manipulação de bits com: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) (palavras) - [ ] Boa introdução: @@ -1274,7 +1274,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Praticando o processo de design de sistema: Aqui estão algumas ideias para tentar trabalhar no papel, cada uma com documentação sobre como ela foi tratada no mundo real: - revisão: [The System Design Primer](https://github.com/donnemartin/system-design-primer) (A Base de Design de Sistema) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) (Design de Sistema, por HiredInTech) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) (folha de consultas) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) (folha de consultas) - fluxo: 1. Compreenda o problema e seu escopo: - defina os casos de uso, com a ajuda do entrevistador diff --git a/translations/README-ru.md b/translations/README-ru.md index b643245456..0a1a95f62c 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -193,7 +193,7 @@ Google не возьмёт тебя на работу. `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -477,7 +477,7 @@ Google не возьмёт тебя на работу. Сделай свой собственный бесплатно: - [Репозиторий сайта Flashcards](https://github.com/jwasham/computer-science-flash-cards) -- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Имейте в виду, я сделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. +- [Моя база данных с карточками](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): Имейте в виду, я сделал больше чем требуется в Google, описав все начиная с assembler и заканчивая Python с машиным обучением и статистикой. **Заметка о карточках:** в первый раз вы сразу вспомните ответ, но не помечайте эту карточку как изученную. Нужно просмотреть много раз карточку и ответить правильно прежде чем вы действительно ее запомните. Повторение позволяет мозгу надолго @@ -712,7 +712,7 @@ Google не возьмёт тебя на работу. - бинарный поиск с использованием рекурсии - ### Побитовые операции - - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - ты должен знать сколько степеней двойки от (2^1 до 2^16 и 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - ты должен знать сколько степеней двойки от (2^1 до 2^16 и 2^32) - [ ] Даст отличное понимание манипуляций битами с помощью: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Хорошее введение: diff --git a/translations/README-th.md b/translations/README-th.md index 45e0d26cdf..39358c3486 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -186,7 +186,7 @@ `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -392,8 +392,8 @@ Here are some mistakes I made so you'll have a better experience. คุณสามารถทำได้แบบฟรีๆ: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [คลัง flash card ของผม (เก่า - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [คลัง flash cards ของผม (ใหม่- 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [คลัง flash card ของผม (เก่า - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [คลัง flash cards ของผม (ใหม่- 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): คลังการ์ดของผมนั้น เนื้อหาจะครอบคลุมเกินเนื้อหาหลัก ตั้งแต่ภาษา assembly และ Python จนไปถึง machine learning และ สถิติ ซึ่งมันก็เกินกว่าที่เราต้องการ @@ -628,7 +628,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1247,7 +1247,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-tw.md b/translations/README-tw.md index 821b363758..7a96a45600 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -207,7 +207,7 @@ `git commit -m "Marked x"` -`git rebase jwasham/master` +`git rebase jwasham/main` `git push --force` @@ -365,8 +365,8 @@ 製作屬於自己的免費小字卡: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): 我的小字卡資料庫中包含了組合語言、Python的小知識、機器學習以及統計。這些內容已經超出了原本他的預設。 @@ -597,7 +597,7 @@ - 用遞迴(recursion)的方法實作二分搜尋法 - ### 位元運算(Bitwise operations) - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 你應該能背出一些2的指數(從2^1到2^16以及2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 你應該能背出一些2的指數(從2^1到2^16以及2^32) - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1159,7 +1159,7 @@ - [ ] 練習系統設計的過程:以下是在紙上練習的一些方法,每個都有他們如何運用在現實中的說明文件: - 複習: [系統設計入門](https://github.com/donnemartin/system-design-primer) - [HiredInTech系統設計](http://www.hiredintech.com/system-design/) - - [提示](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [提示](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - 流程: 1. 了解問題與其範圍: - 在面試官的幫助下定義使用情況 diff --git a/translations/README-uk.md b/translations/README-uk.md index 190939d854..d7f452ca1c 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -181,7 +181,7 @@ Original: [англійською](README.md) `git commit -m "Marked x" ` -`git rebase jwasham/master ` +`git rebase jwasham/main ` `git push --force ` @@ -390,8 +390,8 @@ I made a mobile-first website so I could review on my phone and tablet, wherever Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. @@ -626,7 +626,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1248,7 +1248,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - For even more, see "Mining Massive Datasets" video series in the Video Series section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help diff --git a/translations/README-vi.md b/translations/README-vi.md index 0bea8598e5..c9836db7eb 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -207,7 +207,7 @@ Ok, bây giờ bạn có thể bắt đầu: - Check các phần đã hoàn thành bằng cách thêm `x` vào giữa cặp ngoặc vuông (`[ ]`), như thế này: `[x]`. - Chạy `git add .` để bắt đầu lưu lại các thay đổi. - Chạy `git commit -m "commit message" `. Thay `commit message` với ghi chú của bạn cho sự thay đổi đó. -- Đồng bộ thay đổi với bản fork trên Github của bạn bằng `git push origin master`. +- Đồng bộ thay đổi với bản fork trên Github của bạn bằng `git push origin main`. ## Đừng nghĩ rằng bạn không đủ thông minh @@ -429,7 +429,7 @@ Tôi đã làm một trang mobile-first (lấy mobile là trọng tâm phát tri Tự tạo cho mình hoàn toàn miễn phí: - [Repo của trang thẻ ghi nhớ](https://github.com/jwasham/computer-science-flash-cards) -- [Cơ sở dữ liệu thẻ ghi nhớ của tôi](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): Lưu ý là tôi có đi hơi xa và các thẻ ghi nhớ có thể bao gồm cả hợp ngữ (ngôn ngữ máy) và Python cho đến cả máy học (machine learning) và thống kê. Như thế là quá nhiều cho các yêu cầu từ Google. +- [Cơ sở dữ liệu thẻ ghi nhớ của tôi](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): Lưu ý là tôi có đi hơi xa và các thẻ ghi nhớ có thể bao gồm cả hợp ngữ (ngôn ngữ máy) và Python cho đến cả máy học (machine learning) và thống kê. Như thế là quá nhiều cho các yêu cầu từ Google. **Ghi chú dành cho các thẻ ghi nhớ:** Lần đầu tiên bạn nhận ra bạn biết câu trả lời, đừng đánh dấu là đã biết.Bạn phải xem thẻ tương tự và đưa ra câu trả lời chính xác vài lần trước khi bạn thực sự khẳng định đã nắm được vấn đề. Lặp đi lặp lại việc này sẽ giúp kiến thức được khắc sâu vào não bạn. From 0a40c479f701fdb4bb70ecce980ca2abde87df30 Mon Sep 17 00:00:00 2001 From: Mohammed Ahmed Date: Wed, 10 Feb 2021 09:47:05 +0200 Subject: [PATCH 223/857] Update README-ar.md Correcting Arabic typos, there are still some not done yet --- translations/README-ar.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 7868ac0e65..ba05c7fbc2 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1,12 +1,12 @@ # الإعداد لمقابلة البرمجة -> أنشأتها في المقام الأول كلائحة قصيرة من المواضيع الدراسية لكيف يصبح المرء مهندس برمجيات, و ولكن سرعان ما كبرت هذه القائمة الى ما تراه امامك اليوم. بعد خوض هذه الخطة الدراسية, -[تم توظيفي كمهندس تطوير برمجيات لدى أمازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! على الاغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود +> أنشأتها في المقام الأول كلائحة قصيرة من المواضيع الدراسية لكيف يصبح المرء مهندس برمجيات، ولكن سرعان ما كبرت هذه القائمة إلى ما تراه أمامك اليوم. بعد خوض هذه الخطة الدراسية, +[تم توظيفي كمهندس تطوير برمجيات لدى أمازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! على الأغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود هنا > > درست لمدة ٨-١٢ ساعة في اليوم, لعدة أشهر. هذه هي قصتي: [لماذا درست دواما كاملا لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> العناصر المذكورة في هذه اللائحة ستجهزك جيدا لمقابلة تقنية مع تقريبا أي شركة برمجية, حتى الشركات العملاقة: أمازون, فيسبوك, قوقل, و ميكروسوف +> العناصر المذكورة في هذه اللائحة ستجهزك جيدا لمقابلة تقنية مع تقريبا أي شركة برمجية, حتى الشركات العملاقة: أمازون، فيسبوك، قوقل، وميكروسوفت > > بالتوفيق @@ -44,13 +44,13 @@ -## ماهذا؟ +## ما هذا؟ هي خطتي متعددة الأشهر للوصول من مطور ويب (تعليم ذاتي، بدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات لشركة عملاقة ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -تم إعدادها لمهنسي البرمجيات الجدد او أولئك المنتقلين من تطوير الويب إلى هندسة البرمجيات (حيث المعرفة بعلوم الحاسب ضرورية) إذا كان لديك العديد من سنوات الخبرة في بناء تطبيقات الويب أو البرمجيات، خذ في عين الإعتبار ان المقابلة ستكون اصعب +تم إعدادها لمهنسي البرمجيات الجدد أو أولئك المنتقلين من تطوير الويب إلى هندسة البرمجيات (حيث المعرفة بعلوم الحاسب ضرورية) إذا كان لديك العديد من سنوات الخبرة في بناء تطبيقات الويب أو البرمجيات، خذ في عين الإعتبار ان المقابلة ستكون اصعب إذا كانت لديك العديد من سنوات الخبرة في تطوير الويب, خذ في عين الإعتبار أن الشركات االبرمجية الضخمة مثل قوقل, فيسبوك, و ميكروسوفت ينظرون إلى هندسة البرمجيات بشكل مختلف عن تطوير البرمجيات/ويب, و تحتاج إلى معرفة علوم الحاسب From d120bae5667da6451c4cf9850375c0dd9b99c3e6 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Sun, 14 Feb 2021 04:47:01 -0600 Subject: [PATCH 224/857] Add Khmer to Translations section --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 98d35a171f..aefc403151 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) - [Polish](translations/README-pl.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) From 3b8c336609b410b6705a82302e031757c2d9893c Mon Sep 17 00:00:00 2001 From: Pranav Malvawala <42204892+pranavmalvawala@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:12:11 +0530 Subject: [PATCH 225/857] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4765f3d812..77adc82c0f 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ It's a long plan. It may take you months. If you are familiar with a lot of this Everything below is an outline, and you should tackle the items in order from top to bottom. -I'm using Github's special markdown flavor, including tasks lists to check progress. +I'm using Github's special markdown flavor, including tasks lists to track progress. **Create a new branch so you can check items like this, just put an x in the brackets: [x]** From e97e8ddfb84ff9f1a5ae9bb6c869281a7e9b89cd Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Sun, 28 Mar 2021 17:29:05 +0900 Subject: [PATCH 226/857] modified invalid titles --- translations/README-ja.md | 52 +++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index d90882f810..44cf504dd1 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1,4 +1,4 @@ -#コーディング面接の大学 +# コーディング面接の大学 >私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、 >今日それは大きなリストに成長しました。この調査計画を経て、[私はAmazonで @@ -207,14 +207,14 @@ SREまたはシステムエンジニアになりたい場合は、オプショ [Github風マークダウンの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -##あなたは十分にスマートではないと感じないでください +## あなたは十分にスマートではないと感じないでください - 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 - [Geniusプログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) - [一人で行くのは危険だ:テクノロジーの見えない魔物と戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) --- -##ビデオリソースについて +## ビデオリソースについて 一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 これらはMOOCと呼ばれています。 @@ -242,7 +242,7 @@ Lynda.comコースは無料ではありません。 - [ ] [データ構造、アルゴリズム、面接のためのPython! (有料コース)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - データ構造、アルゴリズム、模擬面接などを扱うPython中心の面接の準備コース。 -##面接のための1つの言語を選ぶ +## 面接のための1つの言語を選ぶ 面接のコーディングの部分に慣れ親しんだ言語を使用することはできますが、大企業にとってはこれらの選択肢が確実です。 @@ -350,7 +350,7 @@ OR: - 私の輝く本のレポート:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -###オプションの書籍 +### オプションの書籍 **ソフトウェア工学の長年の経験があり、もっと面白い面接を期待しない限り、これらのことをお勧めする人もいます。** @@ -448,7 +448,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. 貴重な時間を費やす可能性のある注意散漫がたくさんあります。集中と集中が難しい。 -##カバーされていないもの +## カバーされていないもの これらは一般的な技術ですが、この調査計画の一部ではありません: @@ -456,7 +456,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - Javascript - HTML、CSS、およびその他のフロントエンド技術 -##日々の計画 +## 日々の計画 一部の科目は1日を要し、いくつかは複数日を要する。 いくつかは、何も実装することなく学習しているだけです。 @@ -487,7 +487,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. コンピューターではなく、ホワイトボードや紙にコードを書く。いくつかのサンプル入力でテストします。次に、コンピュータでテストします。 -##前提知識 +## 前提知識 - [ ] **Cを学ぶ** - Cはどこにでもあります。あなたは勉強している間、書籍、講義、ビデオ、*どこにでも*見ることができます。 @@ -500,7 +500,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [CPUがプログラム(ビデオ)をどのように実行するか](https://www.youtube.com/watch?v=42KTvGYQYnA) - [ ] [マシンコード命令(ビデオ)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) -##アルゴリズムの複雑さ/ Big-O / Asymptotic解析 +## アルゴリズムの複雑さ/ Big-O / Asymptotic解析 - 実装するものは何もない - [ ] [Harvard CS50 - 漸近表記(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [BigO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) @@ -526,7 +526,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. ## データ構造 -- ###配列 +- ### 配列 - 自動的にサイズ変更ベクトルを実装する。 - [ ] 説明: - [配列(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) @@ -660,7 +660,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - 二分探索(ソートされた整数の配列) - 再帰を利用した二分探索 -- ###ビット演算 +- ### ビット演算 - [ ] [ビットチートシート- 2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗の多くを知るべきです](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-cheet.pdf) - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) @@ -844,7 +844,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. まとめとして、ここには[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現があります。 このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects) -##グラフ +## グラフ グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。 @@ -902,7 +902,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. Skienaの本(下記の書籍の節を参照)と面接の書籍 -##さらに多くの知識 +## さらに多くの知識 - ###再帰 - [ ] 再帰とバックトラックに関するスタンフォードの講義: @@ -1187,7 +1187,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Java - Sockets - Introduction(video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [ソケットプログラミング(ビデオ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) -##システム設計、スケーラビリティ、データ処理 +## システム設計、スケーラビリティ、データ処理 - **4年以上の経験があれば、システム設計の質問を期待できます。** - スケーラビリティとシステム設計は、多くのトピックとリソースを持つ非常に大きなトピックです。       スケーラビリティ(拡張可能)なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。 @@ -1319,7 +1319,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 --- -##最終レビュー +## 最終レビュー     このセクションでは、重要な概念のほとんどを見直すためにかなり短いビデオを見ることができます。     あなたが頻繁に再学習をしたいならいいですね。 @@ -1357,7 +1357,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 --- -##コーディングの質問練習 +## コーディングの質問練習 上のすべてのコンピュータサイエンスのトピックを知ったので、コーディングの問題に答える練習をしましょう。 @@ -1396,7 +1396,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 [上記のブックリスト](#ブックリスト)を参照してください -##コード演習/挑戦 +## コード演習/挑戦 あなたの脳を学んだら、脳を働かせてください。 できるだけ多く、毎日コーディングの課題に取り組んでください。 @@ -1429,7 +1429,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Pramp:仲間との面接](https://www.pramp.com/) - [Refdash:疑似面接](https://refdash.com/) -##面接に近づいたら +## 面接に近づいたら - [ ] クラッキングコーディング面接セット2(ビデオ): - [コード面接をクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) @@ -1440,7 +1440,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - クラッキングでの準備項目の再開を参照してください。コーディング面接とプログラミング面接の公開 -##面接が来たときに考えてください +## 面接が来たときに考えてください あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。 それぞれ2-3の答えがあります。 @@ -1459,7 +1459,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [job x / project y]で何を学びましたか? - あなたは[job x / project y]で何を良くしていますか? -##面接官に質問があります +## 面接官に質問があります     私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です): @@ -1473,7 +1473,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - それについて何が好きですか? - 仕事の生活はどうですか? -##一度あなたは仕事を得た +## 一度あなたは仕事を得た おめでとう! @@ -1496,7 +1496,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 --- -##その他の書籍 +## その他の書籍 - [ ] [Unixプログラミング環境](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=情報) - 古き良き時代 @@ -1510,7 +1510,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - 正式なデザインパターンの本 - [ ] [UNIXおよびLinuxシステム管理ハンドブック、第4版](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) -##その他の学習 +## その他の学習 これらの話題は面接では出てこないかもしれませんが、 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 @@ -1842,7 +1842,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - -##追加科目の詳細 +## 追加科目の詳細     私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした     それはちょうどあまりにも多くのためです。それは科目にそれを過ごすのは簡単です。 @@ -1913,7 +1913,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [講演は23:50から始まります(ビデオ)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -##ビデオシリーズ +## ビデオシリーズ 座って楽しんでください。 「ネットフリックスとスキル」:P @@ -1977,7 +1977,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] グラフ理論(Sarada Herke)(67ビデオ)(https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -##コンピュータサイエンスコース +## コンピュータサイエンスコース - [オンラインCSコースのディレクトリ](https://github.com/open-source-society/computer-science) - [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) \ No newline at end of file From 627f63af62aeb003f28a3e9fac52f6793911fd67 Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Sun, 28 Mar 2021 17:45:48 +0900 Subject: [PATCH 227/857] modified invalid titles --- translations/README-ja.md | 83 ++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 44cf504dd1..a106d8c7f0 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -38,7 +38,8 @@ これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 -![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) +![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + これは、 **新人ソフトウェアエンジニア** 、またはソフトウェア/ Webエンジニアからソフトウェアエンジニア(CSの知識が必要な場合)に転職する人を対象にしています。 長年のソフトウェアエ開発経験をお持ちの場合は、より面白い面接を期待してください。 @@ -50,7 +51,7 @@ SREまたはシステムエンジニアになりたい場合は、オプショ ## 目次 -- [これは何?](#何のことなの?) +- [これは何?](#これは何?) - [なぜこれを使うの?](#why-use-it) - [使い方](#使い方) - [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) @@ -904,7 +905,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 ## さらに多くの知識 -- ###再帰 +- ### 再帰 - [ ] 再帰とバックトラックに関するスタンフォードの講義: - [ ] [講義8 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [講義9 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) @@ -915,7 +916,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [テール再帰とは何かなぜそれが悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [テール再帰(ビデオ)](https://www.youtube.com/watch?v=L1jjXGfxozc) -- ###動的プログラミング +- ### 動的プログラミング - この問題はかなり難しいかもしれません。なぜなら、それぞれのDP可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 - [ ] 動画: @@ -991,7 +992,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [人間のデザインパターン](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -- ###組み合わせ(nCk)と確率 +- ### 組み合わせ(nCk)と確率 - [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(ビデオ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [学校を作る:確率(ビデオ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [学校を作る:確率とマルコフ連鎖(ビデオ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) @@ -1021,7 +1022,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [JupyterNotebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - あなたが持っているなら、CLRSの1048 - 1140ページ。 -- ###キャッシュ +- ### キャッシュ - [ ] LRUキャッシュ: - [ ] [LRUキャッシュの魔法(Google Devの100日間)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [LRU(ビデオ)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) @@ -1030,7 +1031,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [MIT 6.004 L15:メモリ階層(ビデオ)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16:キャッシュの問題(動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ###プロセスとスレッド +- ### プロセスとスレッド - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): - プロセスとスレッドのためのビデオ表示1-11 - [オペレーティングシステムとシステムプログラミング(ビデオ)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) @@ -1067,7 +1068,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [基調講演David Beazley - 興味のあるトピック(Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Pythonのミューテックス](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ###論文 +- ### 論文 - 完全に理解した上ですべてを読むことは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。 - [古典的な論文を愛する?](https://www.cs.cmu.edu/~crary/819-f09/) - [ ] [1978:順次プロセスの通信](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) @@ -1099,7 +1100,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [2015年:開発者がコードを検索する方法:ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [ ] [2016:Borg、Omega、Kubernetes](http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44843.pdf) -- ###テスト +- ### テスト - カバーするために: - ユニット(単体)テストの仕組み - モックオブジェクトとは何ですか? @@ -1118,15 +1119,15 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [テストのタオ](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ###スケジューリング +- ### スケジューリング - OSで、どのように動作するか - オペレーティングシステムのビデオから収集できます -- ###システムルーチンを実装する +- ### システムルーチンを実装する - 使用するプログラミングAPIの下にあるものを理解する     あなたはそれらを実装できますか? -- ###文字列の検索と操作 +- ### 文字列の検索と操作 - [ ] [Sedgewick - 接尾辞配列(ビデオ)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - [ ] [Sedgewick - サブストリング(文字列の一部)検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - [ ] [1. サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) @@ -1138,7 +1139,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍     このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects) -- ###トライ木 +- ### トライ木 - さまざまなトライ木があることに注意してください。いくつかは接頭辞を持ち、あるものはパスを追跡するビットの代わりに文字列を使用します。 - 私はコードを読んだが、実装しないだろう。 - [ ] [Sedgewick - 試してみる(3ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) @@ -1155,7 +1156,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [スタンフォード講演(現実世界のユースケース)(ビデオ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ###浮動小数点数 +- ### 浮動小数点数 - [ ] 単純な8ビット:[浮動小数点数の表現 - 1(ビデオ - 計算にエラーがあります - ビデオの説明を参照)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] 32ビット:[IEEE754 32ビット浮動小数点バイナリ(ビデオ)](https://www.youtube.com/watch?v=50ZYcZebIec) @@ -1163,14 +1164,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること](http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [すべてのプログラマーが、エンコーディングと文字セットについて知る必要があることは間違いない](http://kunststube.net/encoding/) -- ###バイト順(エンディアン) +- ### バイト順(エンディアン) - [ ] [ビッグエンディアンとリトルエンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [ビッグエンディアン Vs リトルエンディアン(ビデオ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(ビデオ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。 - 前半で十分です。 -- ###ネットワーキング +- ### ネットワーキング - **ネットワーク経験がある、またはシステムエンジニアになりたい場合は、質問を期待してください** - そうでなければ、これは知っているだけでいいです - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) @@ -1515,7 +1516,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 これらの話題は面接では出てこないかもしれませんが、 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 -- ###コンパイラ +- ### コンパイラ - [ ] [1分でコンパイラがどのように動作するか(ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [ ] [Harvard CS50 - コンパイラ(ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [ ] [C ++(video)](https://www.youtube.com/watch?v=twodd1KFfGk) @@ -1556,7 +1557,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ###情報理論(ビデオ) +- ### 情報理論(ビデオ) - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - [ ] Markovプロセスの詳細: - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) @@ -1564,7 +1565,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [プロジェクト=マルコフテキスト生成ウォークスルー](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs) - 下記のMIT 6.050J Information and Entropyシリーズを参照してください。 -- ###パリティ&ハミングコード(ビデオ) +- ### パリティ&ハミングコード(ビデオ) - [ ] [イントロ](https://www.youtube.com/watch?v=q-3BctoUpHE) - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - [ ] ハミングコード: @@ -1572,19 +1573,19 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ###エントロピー +- ## #エントロピー - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) -- ###暗号化 +- ### 暗号化 - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [ ] [暗号化:ハッシュ関数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [ ] [暗号化:暗号化](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ###圧縮 +- ### 圧縮 - 最初に情報理論ビデオを見てください - [ ] Computerphile(ビデオ): - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) @@ -1596,7 +1597,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [ ] [(オプション)Google Developers Live:GZIPでは不十分です!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ###コンピュータセキュリティ +- ### コンピュータセキュリティ - [MIT(23ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [はじめに、脅威モデル](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [ハイジャック攻撃の制御](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) @@ -1611,18 +1612,18 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [ネットワークプロトコル](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ ] [サイドチャネル攻撃](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- ###ガベージコレクション +- ### ガベージコレクション - [ ] [ガベージコレクション(Java);データの拡張(動画)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) - [ ] [コンパイラ(ビデオ)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - [ ] [GC in Python(video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [ ] [ディープダイブJava:ガーベッジコレクションは良いです!](https://www.infoq.com/presentations/garbage-collection-benefits) - [ ] [Deep Dive Python:CPythonでのガベージコレクション(ビデオ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ###パラレルプログラミング +- ### パラレルプログラミング - [ ] [Coursera(Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - [ ] [高性能並列計算のための効率的なPython(ビデオ)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ###メッセージング、シリアライゼーション、およびキューイングシステム +- ### メッセージング、シリアライゼーション、およびキューイングシステム - [ ] [Thrift](https://thrift.apache.org/) - [チュートリアル](http://thrift-tutorial.readthedocs.io/ja/latest/intro.html) - [ ] [プロトコルバッファ](https://developers.google.com/protocol-buffers/) @@ -1649,14 +1650,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [A * Pathfinding Tutorial(video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [ ] [A *経路探索(E01:アルゴリズムの説明)(ビデオ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) -- ###高速フーリエ変換 +- ### 高速フーリエ変換 - [ ] [フーリエ変換のインタラクティブガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [ ] [フーリエ変換とは何ですか?それは何のために使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - [ ] [フーリエ変換とは何ですか? (ビデオ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - [ ] [Divide&Conquer:FFT(ビデオ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [ ] [FFTの理解](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) -- ###ブルームフィルター +- ### ブルームフィルター - mビットとkハッシュ関数を持つBloomフィルタが与えられた場合、挿入とメンバーシップの両方のテストはO(k) - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [ブルームフィルター|大規模なデータセットのマイニング|スタンフォード大学](https://www.youtube.com/watch?v=qBTdukbzc78) @@ -1666,19 +1667,19 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### HyperLogLog - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -objects-us.html) -- ###局所性に敏感なハッシング +- ### 局所性に敏感なハッシング - ドキュメントの類似性を判断するために使用されます。 - 2つの文書/文字列がまったく同じかどうかを判断するために使用されるMD5またはSHAの反対。 - [Simhashing(うまくいけば)シンプルに](http://ferd.ca/simhashing-hopefully-made-simple.html) -- ###ヴァンEmde Boasの木 +- ### ヴァンEmde Boasの木 - [Divide&Conquer:van Emde Boas Trees(ビデオ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [ ] [MIT講義ノート](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) -- ###拡張データ構造 +- ### 拡張データ構造 - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) -- ###バランスの取れた検索木 +- ### バランスの取れた検索木 - 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている): - "バランスの取れた探索木の​​中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。         特に興味深い自己組織化データ構造は、スプレイ木であり、回転を使用します @@ -1775,45 +1776,45 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Kd Trees(ビデオ)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [ ] [kNN K-d木アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) -- ###リストをスキップする +- ### リストをスキップする - 「これは多少のカルトデータ構造です」 - Skiena - [ ] [ランダム化:リストをスキップ(ビデオ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [アニメーションともう少し詳しく](https://en.wikipedia.org/wiki/Skip_list) -- ###ネットワークの流れ +- ### ネットワークの流れ - [ ] [Ford-Fulkerson(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Ford-Fulkersonアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ###分離集合と連合検索 +- ### 分離集合と連合検索 - [ ] [UCB 61B - ばらばらのセット;並べ替えと選択(動画)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - [ ] [Sedgewickアルゴリズム - Union-Find(6ビデオ)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) -- ###高速処理のための数学 +- ### 高速処理のための数学 - [ ] [整数演算、Karatsuba倍数(ビデオ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- ### +- ### - 二分探索木とヒープの組み合わせ - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ###リニアプログラミング(ビデオ) +- ### リニアプログラミング(ビデオ) - [ ] [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [ ] [最小費用の見積もり](https://www.youtube.com/watch?v=2ACJ9EWUC6U) - [ ] [最大値の検索](https://www.youtube.com/watch?v=8AA_81xI3ik) - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ###幾何学、凸包(ビデオ) +- ### 幾何学、凸包(ビデオ) - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9(https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ###離散数学 +- ### 離散数学 - 下のビデオを見る -- ###機械学習 +- ### 機械学習 - [ ] なぜMLですか? - [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [ ] [知的コンピュータシステムのための大規模な深い学習(ビデオ)](https://www.youtube.com/watch?v=QSaZGT4-6EY) From b851430e7ce19fcc86a8c809155d6a4176bb9ed4 Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Sun, 28 Mar 2021 17:48:26 +0900 Subject: [PATCH 228/857] add missing title --- translations/README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index a106d8c7f0..1cfb0fa269 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1794,7 +1794,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [整数演算、Karatsuba倍数(ビデオ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- ### +- ### Treap - 二分探索木とヒープの組み合わせ - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) From 9e11758434eb96899e25f9ec2343a51d0708953b Mon Sep 17 00:00:00 2001 From: IamLucif3r Date: Thu, 1 Apr 2021 09:26:43 +0530 Subject: [PATCH 229/857] Added Assembly Language Cheat Sheet --- extras/cheat sheets/IntelCodeTable.pdf | Bin 0 -> 150424 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/cheat sheets/IntelCodeTable.pdf diff --git a/extras/cheat sheets/IntelCodeTable.pdf b/extras/cheat sheets/IntelCodeTable.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a9022968cecb1b47a633165260ff33414f854602 GIT binary patch literal 150424 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≤WUni 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 T5M4d^ylbY_lR z84X4jp@`EP4Y%Ax7d%zgDL}l6GQ(kwsA@OBag4xs33L4n|Q0cxix!_r=3+ ze~4Y=^m?nqfs`;o@bjTzx_HK`k4x4Dzfa@f`2-Ie%KE^M#17x9kWv~Phaq$W20`z< z3>b$CVy6Cv&jP6oz(JHD4@3%+y%IhsY#R-}&?^=kDlnv91%}YWyBWnw^DfRZ5gba1 z!$@3H4#**_hZi%DTxA(XpldF`BM__@8>%skIVuK-yowh;@j53ZOY;n~DNE3dz_vcq zQ}+!@b8Fh2N%I^{BtUXowL3Qx6r&DKkTb~FPZEpw5m1j{Y=yk<^z{@-4%Hnz&@$`o zMpClGbr`>4r87zffx9_S%u^)yGtIRt>iNnQ6n{R{ii*cfL6ed(P1GsONmNo(HAWm) zvCUywS7FNSSH=~@%T2Qn-Ir9-bM2u7)7CuM12YhvZk^fI(!3hC5p91X+LEQlz(iA3 z2XKM68gpXVmi*^;hM}7no!rm`(Forc)jMNNai#u?(({VjSzRvM>wZkKO(`bF7WLhN z+jFpSdC?(seP@QS#sy2wZ#=&4JJ-S)ScWKE7b-yyep6xG@Mcj+lsT;Rotsax z6f>RWS*BTLO%ldsp3Zsvzdz`Co%@>T^KC6iX<9CuR#e%Jd93P`Er$5Qn#QH0W!Ly& zXurEIeXv|tCE2#=n|mg6#-q{9i7eLa6L5nDnB!jr#ISh$VKq4inVqBIcUQ>*m zHU4u-=%{NtM5Oz|!!=sBDf2+YE{g|uTQXm0P_&(6nsQ&MSTrTk=a-lc@k{a6FbnL@ zm{SgN3!#iL$r1iNV^C$x$<{dM0tc5U4El{Z)HQ~>2ORf?Z4I(_cgF4&!Q+&1P4p5i z=PnK$*jjWU7&0|QsO%l4PT`?qGHOYD_e3QCkD@9OW)UG^M6?Wx0jo(ZiUF1ov+WcS zvpR{)(k&BaG_xE0EO~&zrICcF&{8C0Pz_2inRIa1Vi}N3XbBB8h`Sq;D@aVSu<<7H z-5%4d4QO$-h)5+0#$%LLEr>2Jp4A^AVtj~Euu?_G_X{J{YNwCUdP*Inw&7&yH$##= zu`B629;3Q#2MG2_AjtsD7fWhEET%&zxmLEwv~`QJk}S#f)VXC$hnFqEL&`l!%^@v28w}|xR{$e zCv#tI2(B(qC0#ukx)F^>dUns30^L&rSfA>ifX`Fd)6eY%jO|W@DOn>z=bZO zco~9D6g=JJV!E-HWq!uHD?h$9D}OK^=G{=;)Mpj`B-W%sI|Z!4dK)=2EtMZ0xRDKK^5?W+bk9zALU->nFFtpHCdWBFP6O@5fQU*SXlLRebR54~W$J!VAWsJlxu(p2N!V)WJV9Y%_ z#n&lN;zEr>6zoy4+% zu4E~3QT@gnKHU_Ddqb{=`d0e*@ zG~kqQ(q@k}o-mMr(VHw6v|rR13U$%j0sxX5i9lxzp~w(c*HG$%%er@v3eUiorEe;Z z)pGU;<&e9Y@7^7-C+7j;l0r;M9_^PV7H$qMOV3`)-q3%Bl$+W@luQ8ta}J@HGX{{x z8bdDfx5U?k=+F8IQdy3)Qv z>w~gJ3GdnQCuvfQ=3#bqe8D^FH(}k(t|QF|!sq4}jeY7nFXRnBPw#;3-c_I;8Aat1 z(p>RM6*TziJ=(D{So2;B70VwCvsbrw#@c((cg1Iny(<<}YLNK(KH9TXTJO|qL)XZE zMMO4Vx%AN+(tJtguJuP+?|%VN{J&@0{bZq5-lcl0uX#s3$7uP~Z&v*uESJ_!wED{D z&aNs$_Wo+BVqd50drCmJe=l}oTHoe)^@EtI&)e`n!E})O!o4f=7J8OHQ~Vf-YQQV^ zzLAL-JKsJ*g%*2Yz5DhixxYUH^QP$c5TpS-NsqJx`3ApXJIUz91U4)h>3fmyy>BEf4(mEp0${2M`H zhc%1$LQE*X(qTfQNkB_BL8*m7;%=MtEF4Qer4$&!LrJzuo{#7lGNH*fc+^e9S-LA`OEC`vnIp(<0=r>X7EKoQB z>Fl1_?yRGVEYwDhFsLNUjT~!r0gO8;iT8BGr%M(=)ORLKbv=w9N5eNHOB=^LZ86g#z3g_ML~a5Rx+fGG!e9~^npjow8u1+$V>mf+>^h<|FcAy!hv+aRF}wVm8Ovj zNqadK13Ek`pUC-fCiI9E(r~faZMH0;Nnt{|$j85gESY-$O1y;1$q2_}H4SvGoJ@Pl z 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
)^2N}4oXt;D+ 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 z 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

t&c{5)2{9L*io3$WHRJn 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 z�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 b#}LA3acx;mt(aISXBxPQ4o6OYuHk Date: Thu, 1 Apr 2021 12:39:48 +0530 Subject: [PATCH 230/857] Add Codeforces under Language-learning sites --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 77adc82c0f..1fe4deb4da 100644 --- a/README.md +++ b/README.md @@ -1321,6 +1321,7 @@ Language-learning sites, with challenges: - [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) From 6f24512b004e093b3e6496cf76134e118581bee6 Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Fri, 2 Apr 2021 12:46:58 +0900 Subject: [PATCH 231/857] modify table of content in README.md and README-ja.md(using lint) --- README.md | 209 ++++++++++++++++++-------------------- translations/README-ja.md | 194 +++++++++++++++-------------------- 2 files changed, 182 insertions(+), 221 deletions(-) diff --git a/README.md b/README.md index 77adc82c0f..39d4e6d6a2 100644 --- a/README.md +++ b/README.md @@ -67,120 +67,111 @@ If you want to be a reliability engineer or operations engineer, study more from ## Table of Contents -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [The Daily Plan](#the-daily-plan) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [Additional Resources](#additional-resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [About Video Resources](#about-video-resources) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Pick One Language for the Interview](#pick-one-language-for-the-interview) + - [Book List](#book-list) + - [Interview Prep](#interview-prep) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Language Specific](#language-specific) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [Before you Get Started](#before-you-get-started) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) + - [4. Review, review, review](#4-review-review-review) + - [5. Focus](#5-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Prerequisite Knowledge](#prerequisite-knowledge) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Final Review](#final-review) + - [Coding Question Practice](#coding-question-practice) + - [Coding exercises/challenges](#coding-exerciseschallenges) + - [Once you're closer to the interview](#once-youre-closer-to-the-interview) + - [Your Resume](#your-resume) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) ---------------- Everything below this point is optional ---------------- ## Additional Resources -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [Additional Resources](#additional-resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [About Video Resources](#about-video-resources) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Pick One Language for the Interview](#pick-one-language-for-the-interview) + - [Book List](#book-list) + - [Interview Prep](#interview-prep) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Language Specific](#language-specific) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [Before you Get Started](#before-you-get-started) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) + - [4. Review, review, review](#4-review-review-review) + - [5. Focus](#5-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Prerequisite Knowledge](#prerequisite-knowledge) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Final Review](#final-review) + - [Coding Question Practice](#coding-question-practice) + - [Coding exercises/challenges](#coding-exerciseschallenges) + - [Once you're closer to the interview](#once-youre-closer-to-the-interview) + - [Your Resume](#your-resume) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) --- diff --git a/translations/README-ja.md b/translations/README-ja.md index 1cfb0fa269..3f21e7c35f 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -36,7 +36,7 @@ ## これは何? -これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 +これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の数か月の学習計画です。 ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) @@ -50,122 +50,92 @@ SREまたはシステムエンジニアになりたい場合は、オプショ --- ## 目次 - -- [これは何?](#これは何?) -- [なぜこれを使うの?](#why-use-it) -- [使い方](#使い方) -- [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) -- [ビデオリソースについて](#about-video-resources) -- [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備) -- [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する) -- [ブックリスト](#ブックリスト) -- [始める前に](始める前に#) -- あなたがカバーしていないもの(何があなたには見えません) -- [前提知識](#前提条件知識) -- [日々の計画](日々の計画) -- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析) -- [データ構造](#データ構造) - - [配列](#配列) - - [連結リスト](#連結リスト) - - [スタック](#スタック) - - [キュー](#キュー) - - [ハッシュテーブル](#ハッシュテーブル) -- [その他の知識](#more-knowledge) - - [二分探索](#二分探索) - - [ビット演算](#ビット演算) -- [木構造](#木) - - [木構造 - ノートと背景](#木---ノート--背景) - - [二分探索木:BST](#binary-search-trees-bsts) - - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ--優先度キュー--バイナリヒープ) - - 平衡探索木(詳細ではなく一般概念) - - 木の走査(traversal):行きがけ順(pre-order)、通りがかり順(in-order)、帰りがけ順(postorder)、深さ優先探索(BFS)、幅優先探索(DFS) -- [ソート](#ソート) - - 選択ソート - - 挿入ソート - - ヒープソート - - クイックソート - - マージソート -- [グラフ](#グラフ) - - 有向グラフ - - 無向グラフ - - 隣接行列 - - 隣接リスト - - トラバーサル:BFS、DFS -- [さらに多くの知識](#偶数知識) - - [再帰](#再帰) - - [動的プログラミング](#動的プログラミング) - - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング) - - [デザインパターン](#デザインパターン) - - [組み合わせと確率](#combinatorics-n-choose-k--確率) - - [NP、NP完全/近似アルゴリズム](#np-np-complete-and-approximation-algorithms) - - [キャッシュ](#キャッシュ) - - [プロセスとスレッド](#processes-and-threads) - - [論文](#論文) - - [テスト](#テスト) - - [スケジューリング](#スケジューリング) - - [システムルーチンを実装する](#implement-system-routines) - - [文字列検索と操作](#文字列検索--操作) - - [試行](#試行) - - [浮動小数点数](浮動小数点数) - - [ユニコード](#ユニコード) - - [バイト順(エンディアン)](#エンディアン) -- [ネットワーキング](#ネットワーキング) -- [システム設計、スケーラビリティ、データ処理](#システム設計--スケーラビリティなデータ処理)(4年以上の経験がある場合) -- [最終審査](#最終審査) -- [コーディング質問練習](#コーディング質問練習) -- [コーディング練習問題/挑戦](#コーディング演習問題) -- [面接に近づいたら](面接に一度近づいて) -- [履歴書](あなたの履歴書) -- [面接が来たときに考える](面接のときに考えている) -- [面接官に質問があります](#面接のための質問があります) -- [一度あなたは仕事を得た](一度あなたが仕事をしたこと) +- [コーディング面接の大学](#コーディング面接の大学) + - [これは何?](#これは何) + - [目次](#目次) + - [なぜそれを使用するのですか?](#なぜそれを使用するのですか) + - [それの使い方](#それの使い方) + - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) + - [ビデオリソースについて](#ビデオリソースについて) + - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) + - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) + - [ブックリスト](#ブックリスト) + - [面接の準備](#面接の準備) + - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) + - [言語固有](#言語固有) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [オプションの書籍](#オプションの書籍) + - [始める前に](#始める前に) + - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) + - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) + - [3.レビュー、レビュー、評価](#3レビューレビュー評価) + - [4.フォーカス](#4フォーカス) + - [カバーされていないもの](#カバーされていないもの) + - [日々の計画](#日々の計画) + - [前提知識](#前提知識) + - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) + - [データ構造](#データ構造) + - [その他の知識](#その他の知識) + - [木](#木) + - [ソート](#ソート) + - [グラフ](#グラフ) + - [さらに多くの知識](#さらに多くの知識) + - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) + - [最終レビュー](#最終レビュー) + - [コーディングの質問練習](#コーディングの質問練習) + - [コード演習/挑戦](#コード演習挑戦) + - [面接に近づいたら](#面接に近づいたら) + - [あなたの履歴書](#あなたの履歴書) + - [面接が来たときに考えてください](#面接が来たときに考えてください) + - [面接官に質問があります](#面接官に質問があります) + - [一度あなたは仕事を得た](#一度あなたは仕事を得た) + - [その他の書籍](#その他の書籍) + - [その他の学習](#その他の学習) + - [追加科目の詳細](#追加科目の詳細) + - [ビデオシリーズ](#ビデオシリーズ) + - [コンピュータサイエンスコース](#コンピュータサイエンスコース) ----------------この時点より下のものはすべてオプションです---------------- -- [追加の書籍](追加の書籍数) -- [追加の学習](追加学習) - - [コンパイラ](#コンパイラ) - - [Emacsとvi(m)](#emacs-and-vim) - - [Unixコマンドラインツール](#unix-command-line-tools) - - [情報理論](#情報理論) - - [パリティとハミング符号](#パリティ--ハミングコード) - - [情報量(エントロピー)](#エントロピー) - - [暗号化](#暗号化) - - [圧縮](#圧縮) - - [コンピュータセキュリティ](#コンピュータセキュリティ) - - [ガベージコレクション](#ガベージコレクション) - - [並列計算](#パラレルプログラミング) - - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) - - [A *](#a) - - [高速フーリエ変換](#高速フーリエ変換) - - [ブルームフィルタ](#ブルームフィルタ) - - [HyperLogLog](#hyperloglog) - - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング) - - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木) - - [拡張データ構造](#拡張データ構造) - - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) - - [平衡探索木](#バランス検索木) - - AVL木 - - スプレー木 - - 赤黒木 - - 2-3木 - - 2-3-4木(別名2-4木) - - 多分木(N-ary,K-ary,M-ary木) - - B木 - - [kd木](#k-d-trees) - - [スキップリスト](#スキップリスト) - - [ネットワークのフロー](#ネットワークフロー) - - [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find) - - [高速処理のための数学](#数学のための高速処理) - - [Treap](#treap) - - [線形計画法](#線形計画法) - - [ジオメトリ、凸包](#ジオメトリ--凸包) - - [離散数学](離散数学) - - [機械学習](機械学習) -- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目) +- [その他の書籍](#その他の書籍) +- [その他の学習](#その他の学習) + - [コンパイラ](#コンパイラ) + - [Emacsとvi(m)](#Emacsとvi(m)) + - [Unixコマンドラインツール](#Unixコマンドラインツール) + - [情報理論(ビデオ)](#情報理論(ビデオ)) + - [パリティ&ハミングコード(ビデオ)](#パリティ&ハミングコード(ビデオ)) + - [エントロピー](#エントロピー) + - [暗号化](#暗号化) + - [圧縮](#圧縮) + - [コンピュータセキュリティ](#コンピュータセキュリティ) + - [ガベージコレクション](#ガベージコレクション) + - [パラレルプログラミング](#パラレルプログラミング) + - [メッセージング、シリアライゼーション、およびキューイングシステム](#メッセージング、シリアライゼーション、およびキューイングシステム) + - [A *](#A *) + - [高速フーリエ変換](#高速フーリエ変換) + - [ブルームフィルター](#ブルームフィルター) + - [HyperLogLog](#HyperLogLog) + - [局所性に敏感なハッシング](#局所性に敏感なハッシング) + - [ヴァンEmde Boasの木](#ヴァンEmde Boasの木) + - [拡張データ構造](#拡張データ構造) + - [バランスの取れた検索木](#バランスの取れた検索木) + - [kD木](#kD木) + - [リストをスキップする](#リストをスキップする) + - [ネットワークの流れ](#ネットワークの流れ) + - [分離集合と連合検索](#分離集合と連合検索) + - [高速処理のための数学](#高速処理のための数学) + - [Treap](#Treap) + - [リニアプログラミング(ビデオ)](#リニアプログラミング(ビデオ)) + - [幾何学、凸包(ビデオ)](#幾何学、凸包(ビデオ)) + - [離散数学](#離散数学) + - [機械学習](#機械学習) +- [追加科目の詳細](#追加科目の詳細) - [ビデオシリーズ](#ビデオシリーズ) - [コンピュータサイエンスコース](#コンピュータサイエンスコース) + ## なぜそれを使用するのですか? 私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 @@ -1573,7 +1543,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ## #エントロピー +- ### エントロピー - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) From c75d34160f80107147179344c0e4ed8578a53342 Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Fri, 2 Apr 2021 13:03:48 +0900 Subject: [PATCH 232/857] revert --- README.md | 209 ++++++++++++++++++++------------------ translations/README-ja.md | 194 ++++++++++++++++++++--------------- 2 files changed, 221 insertions(+), 182 deletions(-) diff --git a/README.md b/README.md index 39d4e6d6a2..77adc82c0f 100644 --- a/README.md +++ b/README.md @@ -67,111 +67,120 @@ If you want to be a reliability engineer or operations engineer, study more from ## Table of Contents -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [Additional Resources](#additional-resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [About Video Resources](#about-video-resources) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Pick One Language for the Interview](#pick-one-language-for-the-interview) - - [Book List](#book-list) - - [Interview Prep](#interview-prep) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Language Specific](#language-specific) - - [C++](#c) - - [Java](#java) - - [Python](#python) - - [Before you Get Started](#before-you-get-started) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) - - [4. Review, review, review](#4-review-review-review) - - [5. Focus](#5-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Prerequisite Knowledge](#prerequisite-knowledge) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Final Review](#final-review) - - [Coding Question Practice](#coding-question-practice) - - [Coding exercises/challenges](#coding-exerciseschallenges) - - [Once you're closer to the interview](#once-youre-closer-to-the-interview) - - [Your Resume](#your-resume) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [The Daily Plan](#the-daily-plan) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) ---------------- Everything below this point is optional ---------------- ## Additional Resources -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [Additional Resources](#additional-resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [About Video Resources](#about-video-resources) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Pick One Language for the Interview](#pick-one-language-for-the-interview) - - [Book List](#book-list) - - [Interview Prep](#interview-prep) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Language Specific](#language-specific) - - [C++](#c) - - [Java](#java) - - [Python](#python) - - [Before you Get Started](#before-you-get-started) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) - - [4. Review, review, review](#4-review-review-review) - - [5. Focus](#5-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Prerequisite Knowledge](#prerequisite-knowledge) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Final Review](#final-review) - - [Coding Question Practice](#coding-question-practice) - - [Coding exercises/challenges](#coding-exerciseschallenges) - - [Once you're closer to the interview](#once-youre-closer-to-the-interview) - - [Your Resume](#your-resume) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) --- diff --git a/translations/README-ja.md b/translations/README-ja.md index 3f21e7c35f..1cfb0fa269 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -36,7 +36,7 @@ ## これは何? -これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の数か月の学習計画です。 +これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) @@ -50,92 +50,122 @@ SREまたはシステムエンジニアになりたい場合は、オプショ --- ## 目次 -- [コーディング面接の大学](#コーディング面接の大学) - - [これは何?](#これは何) - - [目次](#目次) - - [なぜそれを使用するのですか?](#なぜそれを使用するのですか) - - [それの使い方](#それの使い方) - - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) - - [ビデオリソースについて](#ビデオリソースについて) - - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) - - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) - - [ブックリスト](#ブックリスト) - - [面接の準備](#面接の準備) - - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) - - [言語固有](#言語固有) - - [C++](#c) - - [Java](#java) - - [Python](#python) - - [オプションの書籍](#オプションの書籍) - - [始める前に](#始める前に) - - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) - - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) - - [3.レビュー、レビュー、評価](#3レビューレビュー評価) - - [4.フォーカス](#4フォーカス) - - [カバーされていないもの](#カバーされていないもの) - - [日々の計画](#日々の計画) - - [前提知識](#前提知識) - - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) - - [データ構造](#データ構造) - - [その他の知識](#その他の知識) - - [木](#木) - - [ソート](#ソート) - - [グラフ](#グラフ) - - [さらに多くの知識](#さらに多くの知識) - - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) - - [最終レビュー](#最終レビュー) - - [コーディングの質問練習](#コーディングの質問練習) - - [コード演習/挑戦](#コード演習挑戦) - - [面接に近づいたら](#面接に近づいたら) - - [あなたの履歴書](#あなたの履歴書) - - [面接が来たときに考えてください](#面接が来たときに考えてください) - - [面接官に質問があります](#面接官に質問があります) - - [一度あなたは仕事を得た](#一度あなたは仕事を得た) - - [その他の書籍](#その他の書籍) - - [その他の学習](#その他の学習) - - [追加科目の詳細](#追加科目の詳細) - - [ビデオシリーズ](#ビデオシリーズ) - - [コンピュータサイエンスコース](#コンピュータサイエンスコース) + +- [これは何?](#これは何?) +- [なぜこれを使うの?](#why-use-it) +- [使い方](#使い方) +- [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) +- [ビデオリソースについて](#about-video-resources) +- [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備) +- [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する) +- [ブックリスト](#ブックリスト) +- [始める前に](始める前に#) +- あなたがカバーしていないもの(何があなたには見えません) +- [前提知識](#前提条件知識) +- [日々の計画](日々の計画) +- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析) +- [データ構造](#データ構造) + - [配列](#配列) + - [連結リスト](#連結リスト) + - [スタック](#スタック) + - [キュー](#キュー) + - [ハッシュテーブル](#ハッシュテーブル) +- [その他の知識](#more-knowledge) + - [二分探索](#二分探索) + - [ビット演算](#ビット演算) +- [木構造](#木) + - [木構造 - ノートと背景](#木---ノート--背景) + - [二分探索木:BST](#binary-search-trees-bsts) + - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ--優先度キュー--バイナリヒープ) + - 平衡探索木(詳細ではなく一般概念) + - 木の走査(traversal):行きがけ順(pre-order)、通りがかり順(in-order)、帰りがけ順(postorder)、深さ優先探索(BFS)、幅優先探索(DFS) +- [ソート](#ソート) + - 選択ソート + - 挿入ソート + - ヒープソート + - クイックソート + - マージソート +- [グラフ](#グラフ) + - 有向グラフ + - 無向グラフ + - 隣接行列 + - 隣接リスト + - トラバーサル:BFS、DFS +- [さらに多くの知識](#偶数知識) + - [再帰](#再帰) + - [動的プログラミング](#動的プログラミング) + - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング) + - [デザインパターン](#デザインパターン) + - [組み合わせと確率](#combinatorics-n-choose-k--確率) + - [NP、NP完全/近似アルゴリズム](#np-np-complete-and-approximation-algorithms) + - [キャッシュ](#キャッシュ) + - [プロセスとスレッド](#processes-and-threads) + - [論文](#論文) + - [テスト](#テスト) + - [スケジューリング](#スケジューリング) + - [システムルーチンを実装する](#implement-system-routines) + - [文字列検索と操作](#文字列検索--操作) + - [試行](#試行) + - [浮動小数点数](浮動小数点数) + - [ユニコード](#ユニコード) + - [バイト順(エンディアン)](#エンディアン) +- [ネットワーキング](#ネットワーキング) +- [システム設計、スケーラビリティ、データ処理](#システム設計--スケーラビリティなデータ処理)(4年以上の経験がある場合) +- [最終審査](#最終審査) +- [コーディング質問練習](#コーディング質問練習) +- [コーディング練習問題/挑戦](#コーディング演習問題) +- [面接に近づいたら](面接に一度近づいて) +- [履歴書](あなたの履歴書) +- [面接が来たときに考える](面接のときに考えている) +- [面接官に質問があります](#面接のための質問があります) +- [一度あなたは仕事を得た](一度あなたが仕事をしたこと) ----------------この時点より下のものはすべてオプションです---------------- -- [その他の書籍](#その他の書籍) -- [その他の学習](#その他の学習) - - [コンパイラ](#コンパイラ) - - [Emacsとvi(m)](#Emacsとvi(m)) - - [Unixコマンドラインツール](#Unixコマンドラインツール) - - [情報理論(ビデオ)](#情報理論(ビデオ)) - - [パリティ&ハミングコード(ビデオ)](#パリティ&ハミングコード(ビデオ)) - - [エントロピー](#エントロピー) - - [暗号化](#暗号化) - - [圧縮](#圧縮) - - [コンピュータセキュリティ](#コンピュータセキュリティ) - - [ガベージコレクション](#ガベージコレクション) - - [パラレルプログラミング](#パラレルプログラミング) - - [メッセージング、シリアライゼーション、およびキューイングシステム](#メッセージング、シリアライゼーション、およびキューイングシステム) - - [A *](#A *) - - [高速フーリエ変換](#高速フーリエ変換) - - [ブルームフィルター](#ブルームフィルター) - - [HyperLogLog](#HyperLogLog) - - [局所性に敏感なハッシング](#局所性に敏感なハッシング) - - [ヴァンEmde Boasの木](#ヴァンEmde Boasの木) - - [拡張データ構造](#拡張データ構造) - - [バランスの取れた検索木](#バランスの取れた検索木) - - [kD木](#kD木) - - [リストをスキップする](#リストをスキップする) - - [ネットワークの流れ](#ネットワークの流れ) - - [分離集合と連合検索](#分離集合と連合検索) - - [高速処理のための数学](#高速処理のための数学) - - [Treap](#Treap) - - [リニアプログラミング(ビデオ)](#リニアプログラミング(ビデオ)) - - [幾何学、凸包(ビデオ)](#幾何学、凸包(ビデオ)) - - [離散数学](#離散数学) - - [機械学習](#機械学習) -- [追加科目の詳細](#追加科目の詳細) +- [追加の書籍](追加の書籍数) +- [追加の学習](追加学習) + - [コンパイラ](#コンパイラ) + - [Emacsとvi(m)](#emacs-and-vim) + - [Unixコマンドラインツール](#unix-command-line-tools) + - [情報理論](#情報理論) + - [パリティとハミング符号](#パリティ--ハミングコード) + - [情報量(エントロピー)](#エントロピー) + - [暗号化](#暗号化) + - [圧縮](#圧縮) + - [コンピュータセキュリティ](#コンピュータセキュリティ) + - [ガベージコレクション](#ガベージコレクション) + - [並列計算](#パラレルプログラミング) + - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) + - [A *](#a) + - [高速フーリエ変換](#高速フーリエ変換) + - [ブルームフィルタ](#ブルームフィルタ) + - [HyperLogLog](#hyperloglog) + - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング) + - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木) + - [拡張データ構造](#拡張データ構造) + - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) + - [平衡探索木](#バランス検索木) + - AVL木 + - スプレー木 + - 赤黒木 + - 2-3木 + - 2-3-4木(別名2-4木) + - 多分木(N-ary,K-ary,M-ary木) + - B木 + - [kd木](#k-d-trees) + - [スキップリスト](#スキップリスト) + - [ネットワークのフロー](#ネットワークフロー) + - [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find) + - [高速処理のための数学](#数学のための高速処理) + - [Treap](#treap) + - [線形計画法](#線形計画法) + - [ジオメトリ、凸包](#ジオメトリ--凸包) + - [離散数学](離散数学) + - [機械学習](機械学習) +- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目) - [ビデオシリーズ](#ビデオシリーズ) - [コンピュータサイエンスコース](#コンピュータサイエンスコース) - ## なぜそれを使用するのですか? 私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 @@ -1543,7 +1573,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### エントロピー +- ## #エントロピー - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) From 3f6212abbe42686d89130e332322e67ecf6f57da Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Fri, 2 Apr 2021 13:08:16 +0900 Subject: [PATCH 233/857] modify table of content in README-ja by using lint --- translations/README-ja.md | 162 +++++++++++--------------------------- 1 file changed, 48 insertions(+), 114 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 1cfb0fa269..55c45d655e 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -51,120 +51,54 @@ SREまたはシステムエンジニアになりたい場合は、オプショ ## 目次 -- [これは何?](#これは何?) -- [なぜこれを使うの?](#why-use-it) -- [使い方](#使い方) -- [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) -- [ビデオリソースについて](#about-video-resources) -- [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備) -- [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する) -- [ブックリスト](#ブックリスト) -- [始める前に](始める前に#) -- あなたがカバーしていないもの(何があなたには見えません) -- [前提知識](#前提条件知識) -- [日々の計画](日々の計画) -- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析) -- [データ構造](#データ構造) - - [配列](#配列) - - [連結リスト](#連結リスト) - - [スタック](#スタック) - - [キュー](#キュー) - - [ハッシュテーブル](#ハッシュテーブル) -- [その他の知識](#more-knowledge) - - [二分探索](#二分探索) - - [ビット演算](#ビット演算) -- [木構造](#木) - - [木構造 - ノートと背景](#木---ノート--背景) - - [二分探索木:BST](#binary-search-trees-bsts) - - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ--優先度キュー--バイナリヒープ) - - 平衡探索木(詳細ではなく一般概念) - - 木の走査(traversal):行きがけ順(pre-order)、通りがかり順(in-order)、帰りがけ順(postorder)、深さ優先探索(BFS)、幅優先探索(DFS) -- [ソート](#ソート) - - 選択ソート - - 挿入ソート - - ヒープソート - - クイックソート - - マージソート -- [グラフ](#グラフ) - - 有向グラフ - - 無向グラフ - - 隣接行列 - - 隣接リスト - - トラバーサル:BFS、DFS -- [さらに多くの知識](#偶数知識) - - [再帰](#再帰) - - [動的プログラミング](#動的プログラミング) - - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング) - - [デザインパターン](#デザインパターン) - - [組み合わせと確率](#combinatorics-n-choose-k--確率) - - [NP、NP完全/近似アルゴリズム](#np-np-complete-and-approximation-algorithms) - - [キャッシュ](#キャッシュ) - - [プロセスとスレッド](#processes-and-threads) - - [論文](#論文) - - [テスト](#テスト) - - [スケジューリング](#スケジューリング) - - [システムルーチンを実装する](#implement-system-routines) - - [文字列検索と操作](#文字列検索--操作) - - [試行](#試行) - - [浮動小数点数](浮動小数点数) - - [ユニコード](#ユニコード) - - [バイト順(エンディアン)](#エンディアン) -- [ネットワーキング](#ネットワーキング) -- [システム設計、スケーラビリティ、データ処理](#システム設計--スケーラビリティなデータ処理)(4年以上の経験がある場合) -- [最終審査](#最終審査) -- [コーディング質問練習](#コーディング質問練習) -- [コーディング練習問題/挑戦](#コーディング演習問題) -- [面接に近づいたら](面接に一度近づいて) -- [履歴書](あなたの履歴書) -- [面接が来たときに考える](面接のときに考えている) -- [面接官に質問があります](#面接のための質問があります) -- [一度あなたは仕事を得た](一度あなたが仕事をしたこと) - -----------------この時点より下のものはすべてオプションです---------------- - -- [追加の書籍](追加の書籍数) -- [追加の学習](追加学習) - - [コンパイラ](#コンパイラ) - - [Emacsとvi(m)](#emacs-and-vim) - - [Unixコマンドラインツール](#unix-command-line-tools) - - [情報理論](#情報理論) - - [パリティとハミング符号](#パリティ--ハミングコード) - - [情報量(エントロピー)](#エントロピー) - - [暗号化](#暗号化) - - [圧縮](#圧縮) - - [コンピュータセキュリティ](#コンピュータセキュリティ) - - [ガベージコレクション](#ガベージコレクション) - - [並列計算](#パラレルプログラミング) - - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) - - [A *](#a) - - [高速フーリエ変換](#高速フーリエ変換) - - [ブルームフィルタ](#ブルームフィルタ) - - [HyperLogLog](#hyperloglog) - - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング) - - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木) - - [拡張データ構造](#拡張データ構造) - - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) - - [平衡探索木](#バランス検索木) - - AVL木 - - スプレー木 - - 赤黒木 - - 2-3木 - - 2-3-4木(別名2-4木) - - 多分木(N-ary,K-ary,M-ary木) - - B木 - - [kd木](#k-d-trees) - - [スキップリスト](#スキップリスト) - - [ネットワークのフロー](#ネットワークフロー) - - [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find) - - [高速処理のための数学](#数学のための高速処理) - - [Treap](#treap) - - [線形計画法](#線形計画法) - - [ジオメトリ、凸包](#ジオメトリ--凸包) - - [離散数学](離散数学) - - [機械学習](機械学習) -- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目) -- [ビデオシリーズ](#ビデオシリーズ) -- [コンピュータサイエンスコース](#コンピュータサイエンスコース) + + +- [コーディング面接の大学](#コーディング面接の大学) + - [これは何?](#これは何) + - [目次](#目次) + - [なぜそれを使用するのですか?](#なぜそれを使用するのですか) + - [それの使い方](#それの使い方) + - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) + - [ビデオリソースについて](#ビデオリソースについて) + - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) + - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) + - [ブックリスト](#ブックリスト) + - [面接の準備](#面接の準備) + - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) + - [言語固有](#言語固有) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [オプションの書籍](#オプションの書籍) + - [始める前に](#始める前に) + - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) + - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) + - [3.レビュー、レビュー、評価](#3レビューレビュー評価) + - [4.フォーカス](#4フォーカス) + - [カバーされていないもの](#カバーされていないもの) + - [日々の計画](#日々の計画) + - [前提知識](#前提知識) + - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) + - [データ構造](#データ構造) + - [その他の知識](#その他の知識) + - [木](#木) + - [ソート](#ソート) + - [グラフ](#グラフ) + - [さらに多くの知識](#さらに多くの知識) + - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) + - [最終レビュー](#最終レビュー) + - [コーディングの質問練習](#コーディングの質問練習) + - [コード演習/挑戦](#コード演習挑戦) + - [面接に近づいたら](#面接に近づいたら) + - [あなたの履歴書](#あなたの履歴書) + - [面接が来たときに考えてください](#面接が来たときに考えてください) + - [面接官に質問があります](#面接官に質問があります) + - [一度あなたは仕事を得た](#一度あなたは仕事を得た) + - [その他の書籍](#その他の書籍) + - [その他の学習](#その他の学習) + - [追加科目の詳細](#追加科目の詳細) + - [ビデオシリーズ](#ビデオシリーズ) + - [コンピュータサイエンスコース](#コンピュータサイエンスコース) ## なぜそれを使用するのですか? From 09392964c36993a259b396e172dd5275c06ca869 Mon Sep 17 00:00:00 2001 From: ka_ueno Date: Fri, 2 Apr 2021 14:48:13 +0900 Subject: [PATCH 234/857] add japanese resources --- translations/README-ja.md | 111 +++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 55c45d655e..dfee95f598 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -56,7 +56,7 @@ SREまたはシステムエンジニアになりたい場合は、オプショ - [コーディング面接の大学](#コーディング面接の大学) - [これは何?](#これは何) - [目次](#目次) - - [なぜそれを使用するのですか?](#なぜそれを使用するのですか) + - [なぜこれを使用するのか](#なぜこれを使用するのか) - [それの使い方](#それの使い方) - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) - [ビデオリソースについて](#ビデオリソースについて) @@ -69,7 +69,6 @@ SREまたはシステムエンジニアになりたい場合は、オプショ - [C++](#c) - [Java](#java) - [Python](#python) - - [オプションの書籍](#オプションの書籍) - [始める前に](#始める前に) - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) @@ -100,9 +99,9 @@ SREまたはシステムエンジニアになりたい場合は、オプショ - [ビデオシリーズ](#ビデオシリーズ) - [コンピュータサイエンスコース](#コンピュータサイエンスコース) -## なぜそれを使用するのですか? +## なぜこれを使用するのか -私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 +私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-O とは何か、木構造に関すること、グラフをたどる方法を知らなかったのです。 ソートアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 これまで使用してきたすべてのデータ構造は言語に組み込まれていて、どのようにしてそれらがどのようにして動作するのか分かりませんでした。 私が実行していたプロセスが "メモリ不足"エラーを出さない限り、メモリを管理する必要はありませんでしたが、回避策を見つけなければなりません。 @@ -144,7 +143,7 @@ SREまたはシステムエンジニアになりたい場合は、オプショ ## あなたは十分にスマートではないと感じないでください - 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 -- [Geniusプログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [天才プログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) - [一人で行くのは危険だ:テクノロジーの見えない魔物と戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) --- @@ -154,10 +153,10 @@ SREまたはシステムエンジニアになりたい場合は、オプショ 一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 これらはMOOCと呼ばれています。 時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 -Lynda.comコースは無料ではありません。 +Lynda.comコースは有料です。 -    オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 -    私は大学の講義を使うのが好きです。 +オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 +私は大学の講義を使うのが好きです。 ## 面接のプロセスと一般的な面接の準備 @@ -212,6 +211,7 @@ Lynda.comコースは無料ではありません。 - コーディング面接をクラッキングするためのウォームアップが良い - あまりにも難しくない、ほとんどの問題はあなたが面接で(私が読んだことから)見ることよりも簡単かもしれない - [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) +- [ ] [日本語版(世界で闘うプログラミング力を鍛える本)](https://www.amazon.co.jp/dp/4839960100/ref=cm_sw_r_tw_dp_6TFC3Y2R6TQTDEFFFPKZ) - Javaでの回答 もし余分な時間があれば: @@ -223,26 +223,28 @@ Lynda.comコースは無料ではありません。 ### コンピュータアーキテクチャ -短い時間: +短期: - [ ] [グレートコードの作成:第1巻:マシンの理解](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) +- [ ] [日本語版:Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く](https://www.amazon.co.jp/dp/4839918201/ref=cm_sw_r_tw_dp_69724M3EHRJ8E7A14JNC) - この本は2004年に出版され、幾分古いですが、コンピュータを簡単に理解するには素晴らしいリソースです。 - 作者はHLAを発明したので、塩の穀物でHLAの言及と例を取り上げます。広く使われているわけではありませんが、どのようなアセンブリのように見えますか? - これらの章はあなたに素敵な基礎を与えるために読む価値があります: - - 第2章 - 数値表現 -        - 第3章 - 2進算術とビット演算 + - 第2章 - 数値表現 + - 第3章 - 2進算術とビット演算 - 第4章 - 浮動小数点表現 - 第5章 - キャラクター表現 - 第6章 - メモリ構成とアクセス -        - 第7章 - 複合データ型とメモリオブジェクト -        - 第9章 - CPUアーキテクチャ + - 第7章 - 複合データ型とメモリオブジェクト + - 第9章 - CPUアーキテクチャ - 第10章 - 命令セットのアーキテクチャ - 第11章 - メモリのアーキテクチャと構成 もっと時間があれば(私はこの本が欲しい): - [ ] [Computer Architecture、第5版:定量的アプローチ](https://www.amazon.com/dp/012383872X/) - - より豊かで最新の(2011年)、より長い治療のために +- [ ] [日本語最新版:コンピュータアーキテクチャ[第6版]定量的アプローチ](https://www.amazon.co.jp/dp/4434264001/) + - お金がある人向け、より最新(2017(日本語版は2019))かつ歴史も長い ### 言語固有 @@ -285,47 +287,6 @@ OR: - 私の輝く本のレポート:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -### オプションの書籍 - -**ソフトウェア工学の長年の経験があり、もっと面白い面接を期待しない限り、これらのことをお勧めする人もいます。** - -- [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) - - レビューと問題認識として - - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 - - この本は2つの部分を持っています: - - データ構造とアルゴリズムに関する教科書 - - 長所: - - アルゴリズムの教科書はどんなものでも良いレビューです - - 業界および学界の問題を解決した経験から得た素敵な話 - - Cのコード例 - - 短所: - - Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります - - 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります - - 誤解しないで:私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。 - - アルゴリズムカタログ: - - これがあなたがこの本を買う本当の理由です。 - - この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。 - - Kindleで読むことが出来ます - - Half.comは教科書のための良いリソースです。 - - 回答: - - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [アルゴリズムの紹介](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 - - Half.comは、良い価格で教科書のための素晴らしいリソースです。 - - スタインはゲームに遅れていたので、別名CLR、ときにはCLRS - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 -      これはプログラムの設計とアーキテクチャに関するガイドブックです。 - これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 - -- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ - - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 - - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう - ## 始める前に @@ -1450,6 +1411,46 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 これらの話題は面接では出てこないかもしれませんが、 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 +- [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) +- [ ] [日本語版:アルゴリズム設計マニュアル](https://www.amazon.co.jp/dp/4621085107) + - レビューと問題認識として + - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 + - この本は2パートに分かれます: + - データ構造とアルゴリズムに関する教科書 + - 長所: + - アルゴリズムの教科書はどんなものでも良いレビューです + - 業界および学界の問題を解決した経験から得た素敵な話 + - Cのコード例 + - 短所: + - Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります + - 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります + - 誤解しないで:私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。 + - アルゴリズムカタログ: + - これがあなたがこの本を買う本当の理由です。 + - この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。 + - Kindleで読むことが出来ます + - Half.comは教科書のための良いリソースです。 + - 回答: + - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [ ] [アルゴリズムイントロダクション](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) +- [ ] [日本語版:アルゴリズムイントロダクション](https://www.amazon.co.jp/dp/B078WPYHGN/) + - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 + - Half.comは、良い価格で教科書のための素晴らしいリソースです。 + - スタインはゲームに遅れていたので、別名CLR、ときにはCLRSと呼ばれている + +- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 +      これはプログラムの設計とアーキテクチャに関するガイドブックです。 + これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 + +- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ + - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 + - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう + + - ### コンパイラ - [ ] [1分でコンパイラがどのように動作するか(ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [ ] [Harvard CS50 - コンパイラ(ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) From 53746a5c4f946342c883f1377b3e025969f6edde Mon Sep 17 00:00:00 2001 From: rnazmo Date: Wed, 7 Apr 2021 10:47:02 +0900 Subject: [PATCH 235/857] Github -> GitHub --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1fe4deb4da..701dc0f429 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ It's a long plan. It may take you months. If you are familiar with a lot of this Everything below is an outline, and you should tackle the items in order from top to bottom. -I'm using Github's special markdown flavor, including tasks lists to track progress. +I'm using GitHub's special markdown flavor, including tasks lists to track progress. **Create a new branch so you can check items like this, just put an x in the brackets: [x]** @@ -229,7 +229,7 @@ Fork the GitHub repo https://github.com/jwasham/coding-interview-university by c `git push --force` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ## Don't feel you aren't smart enough From 5b53566367758be3bc71dab77bb4c1f386fdcaa3 Mon Sep 17 00:00:00 2001 From: Raj <46242040+SRX9@users.noreply.github.com> Date: Wed, 7 Apr 2021 10:44:06 +0530 Subject: [PATCH 236/857] Added information related to ATS Resume Updated Resume Section and added information about ATS Complaint Resume. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1fe4deb4da..b0e2b983bd 100644 --- a/README.md +++ b/README.md @@ -1342,7 +1342,8 @@ Mock Interviews: ## Your Resume - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - +- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Complaint. +- [How to Create or Check if your Resume is ATS Complaint](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) ## Be thinking of for when the interview comes From 0e6e5a6105ffba48a1b36b15600b2e261d929e72 Mon Sep 17 00:00:00 2001 From: Jack Kim <82230389+JackAwesomeKim@users.noreply.github.com> Date: Sun, 11 Apr 2021 22:13:22 +0900 Subject: [PATCH 237/857] Update README-ko.md changed : 1. some ## subjects, 2. Addtional Learning - B-Trees, 3. Additional Detail on Some Subjects -> introduction paragraph --- translations/README-ko.md | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/translations/README-ko.md b/translations/README-ko.md index 20555b8ee0..ac52114ac0 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1621,7 +1621,7 @@ Challenge repos: - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): + - 적어도 하나의 타입의 균형 이진 트리에 대하여 알고 계시는 게 좋습니다 (그리고 어떻게 적용되는지까지요): - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena @@ -1696,12 +1696,11 @@ Challenge repos: - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - 재밌는 사실: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. + B-트리는 데이터베이스에 광범위하게 사용됩니다. 가장 현대적인 파일시스템은 B-트리를 씁니다 (or Variants). + 데이터베이스에 사용될 뿐만 아니라, B-트리는 특정한 파일의 임의의 블록에 '빠른 무작위 탐색'을 가능하게 합니다. + 기본적인 문제는 파일블록 주소 i를 하나의 디스크 블록(또는 아마도 실린더-헤드-섹터) 주소로 바꾸는 것입니다. - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1752,11 +1751,11 @@ Challenge repos: - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math +- ### 이산수학 - 아래에 있는 영상을 확인하세요. -- ### Machine Learning - - Why ML? +- ### 기계학습 + - 왜 기계학습이 중요하죠? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) @@ -1765,7 +1764,7 @@ Challenge repos: - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: + - 강의들: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) @@ -1774,7 +1773,7 @@ Challenge repos: - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: + - 자료들: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) @@ -1786,9 +1785,10 @@ Challenge repos: ## 몇몇 주제에 대한 세부사항 - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? + 이미 언급한 몇몇의 개념에 대한 설명을 좀 더 보강하기 위해서 적었습니다. + 하지만 더하길 원하지 않았어요. 왜냐면 그 양이 너무나 방대하기 때문이지요. + 하나의 주제에 대하여 지나치게 깊게 파고드는 것은 쉬운 일입니다. + 이번 세기에 직장을 구하고 싶으시잖아요, 맞죠? - **SOLID** - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) @@ -1939,12 +1939,7 @@ Challenge repos: - [컴퓨터 과학 온라인 강의들](https://github.com/open-source-society/computer-science) - [(많은 온라인 강의가 있는) 컴퓨터 과학 강의들](https://github.com/prakhar1989/awesome-courses) -## Computer Science Courses - -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) - -## Papers +## 학술 자료들 - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [implemented in Go](https://godoc.org/github.com/thomas11/csp) From 2d7fc3bb9afc9260fb95f6fbba76dc2c1fd1bd5f Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 11 Apr 2021 10:35:08 -0700 Subject: [PATCH 238/857] Updates dead links in PTBR --- translations/README-ptbr.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 8e9ac04587..ff5c0dba78 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1132,17 +1132,17 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - Note que há tipos diferentes de tries. Alguns tem prefixos, alguns não, e alguns usam string ao invés de bits para rastrear o caminho. - Eu li todo o código, mas não irei implementar. - - [ ] [Sedgewick - Tries (3 vídeos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. Tries R-Way](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) (Tries de Busca Ternária) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) (Operações Baseadas Em Caracteres) + - [ ] [Sedgewick - Tries (3 vídeos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Tries R-Way](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) (Tries de Busca Ternária) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) (Operações Baseadas Em Caracteres) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) (Anotações sobre Estruturas de Dados e Técnicas de Programação) - [ ] Vídeos de cursos curtos: - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) (Introdução À Tries - vídeo) - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) (Desempenho De Tries - vídeo) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) (Implementando Uma Trie - vídeo) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) (A Trie: Uma Estrutura de Dados Negligenciada) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) (TopCoder - Usando Tries) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries) (TopCoder - Usando Tries) - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) (Aula de Stanfort (caso de uso no mundo real) - vídeo) - [ ] [MIT, Advanced Data Structures, Strings (pode ficar bem obscuro pela metade)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) (MIT, Estruturas De Dados Avançadas, Strings) @@ -1963,4 +1963,4 @@ Sente-se e aproveite. "Netflix e habilidade" :P ## Cursos de Ciência da Computação - [Diretório de Cursos Online de Ciência da Computação](https://github.com/open-source-society/computer-science) -- [Diretório de Cursos Online de Ciência da Computação (muitos com aulas online)](https://github.com/prakhar1989/awesome-courses) +- [Diretório de Cursos Online de Ciência da Computação (muitos com aulas online)](https://github.com/prakhar1989/awesome-courses) \ No newline at end of file From 79236c1e80e4941b40677e551bf99f5f10574357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20De=20Freitas?= <37962411+JoseDeFreitas@users.noreply.github.com> Date: Thu, 22 Apr 2021 13:57:52 -0500 Subject: [PATCH 239/857] Fix details tags

tags at the bottom of the file, at "Translations" and "Translations in progress". --- translations/README-es.md | 52 ++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 7952272134..ce721d5182 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -11,28 +11,40 @@ > > *¡La mejor de las suertes!* -Traducciones: +
+Traducciones: + - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) -- translations in progress: - - [Español](https://github.com/jwasham/coding-interview-university/issues/80) - - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - - [French](https://github.com/jwasham/coding-interview-university/issues/89) - - [Russian](https://github.com/jwasham/coding-interview-university/issues/87) - - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) - - [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113) - - [Korean](https://github.com/jwasham/coding-interview-university/issues/118) - - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - - [Polish](https://github.com/jwasham/coding-interview-university/issues/122) - - [German](https://github.com/jwasham/coding-interview-university/issues/135) - - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) + +
+ +
+Traducciones en progreso: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
## ¿Qué es esto? From 2c54818348e5b1cb10019455cf41c8e5bc0fae23 Mon Sep 17 00:00:00 2001 From: Kamalc Date: Sun, 25 Apr 2021 08:36:20 +0200 Subject: [PATCH 240/857] Update REDAME-ar.md till line 305 Update REDAME-ar.md tell line 305 --- translations/README-ar.md | 171 ++++++++++++++------------------------ 1 file changed, 61 insertions(+), 110 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index ba05c7fbc2..aecc69b3b8 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -60,22 +60,18 @@ ## الفهرس -- [ماهذا؟](#what-is-it) -- [لماذا استخدمه؟](#why-use-it) -- [كيفية استخدامها](#how-to-use-it) -- [الدخول في مزاج جوجلي](#get-in-a-googley-mood) -- [هل حصلت علي الوظيفه؟](#did-i-get-the-job) -- [تابعني باستمرار](#follow-along-with-me) -- [هل تشعر أنك لست بالذكاء الكافي](#dont-feel-you-arent-smart-enough) -- [عن جوجل](#about-google) -- [عن مصادر الفديو](#about-video-resources) -- [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#interview-process--general-interview-prep) -- [اختر لغة برمجية واحدة للمقابلة البرمجية](#pick-one-language-for-the-interview) -- [لائحة الكتب](#book-list) -- [قبل أن تبدأ](#before-you-get-started) -- [ما لن تجده هنا](#what-you-wont-see-covered) -- [معرفة مسبقة](#prerequisite-knowledge) -- [الخطة اليومية](#the-daily-plan) +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [The Daily Plan](#the-daily-plan) +- [Prerequisite Knowledge](#prerequisite-knowledge) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) @@ -113,11 +109,14 @@ - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [Caches](#caches) - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - [Testing](#testing) - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Final Review](#final-review) - [Coding Question Practice](#coding-question-practice) @@ -130,32 +129,29 @@ ---------------- Everything below this point is optional ---------------- +## Additional Resources + - [Additional Books](#additional-books) - [Additional Learning](#additional-learning) - [Compilers](#compilers) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory) - - [Parity & Hamming Code](#parity--hamming-code) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) - [Entropy](#entropy) - [Cryptography](#cryptography) - [Compression](#compression) - - [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions) - [Computer Security](#computer-security) - [Garbage collection](#garbage-collection) - [Parallel Programming](#parallel-programming) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [van Emde Boas Trees](#van-emde-boas-trees) - [Augmented Data Structures](#augmented-data-structures) - - [Tries](#tries) - - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - [Balanced search trees](#balanced-search-trees) - AVL trees - Splay trees @@ -170,16 +166,17 @@ - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming) - - [Geometry, Convex hull](#geometry-convex-hull) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) - [Discrete math](#discrete-math) - [Machine Learning](#machine-learning) - - [Go](#go) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Video Series](#video-series) - [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) --- + ## لماذا استخدمه؟ أقوم بمتابعة هذه الخطة لتحضير إلى المقابلة الشخصية بجوجل. لقد قمت بناء مواقع ويب، وتقديم خدمات ذات صلة، وبناء شركات ناشئة منذ 1997. لدي درجة علمية في الاقتصاد، وليس في علوم الحاسب. أنا شخص ناجح في مجال عملي، ولكنني أريد أن أعمل بجوجل. أريد أن أعمل على أنظمة كبيرة والحصول على فهم كبير في أنظمة الحاسوب، كفاءة الخوارزميات، كقاءة الهياكل البيانية، اللغات الأقرب إلى الآلة وكيفية عملها. وإذ لم تعرف أين منها لن تعينك جوجل. @@ -200,6 +197,10 @@ احصل على نسخة خاصة "fork" بك واتبع هذه الأوامر + Clone to your local repo + +`git clone git@github.com:/coding-interview-university.git` + `git checkout -b progress` `git remote add jwasham https://github.com/jwasham/coding-interview-university` @@ -208,46 +209,19 @@ دون بعلامة X بعد الإنتهاء من دراسة العنصر -`git add . ` - -`git commit -m "Marked x" ` - -`git rebase jwasham/main ` - -`git push --force ` - -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -## الدخول في مزاج جوجلي - -Print out a "[future Googler](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize. - -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf) - - -## هل حصلت على الوظيفة بجوجل؟ - -أنا في قائمة الانتظار الآن. على أمل أن أذهب للمقابلة الشخصية قريبا. +`git add .` - الشكر لل JP +`git commit -m "Marked x"` +`git rebase jwasham/main` -## تابعني باستمرار +`git push --set-upstream origin progress` -قصتي: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) - -I'm on the journey, too. Follow along: - - -- **المدونة**: [GoogleyAsHeck.com](https://googleyasheck.com) -- تويتر: [@googleyasheck](https://twitter.com/googleyasheck) -- تويتر: [@StartupNextDoor](https://twitter.com/StartupNextDoor) -- جوجل بلس+: [+Googleyasheck](https://plus.google.com/+Googleyasheck) -- لينكدإن: [johnawasham](https://www.linkedin.com/in/johnawasham) +`git push --force` +[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -![John Washam - Coding Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) ## هل تشعر أنك لست بالذكاء الكافي - مهندسوا جوجل أذكياء، وربما لديهم عدم الأمان لأنهم ليسوا بالذكاء الكافي، حتى وهي في جوجل @@ -255,22 +229,6 @@ I'm on the journey, too. Follow along: - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## عن جوجل - -- [ ] لطلبه - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html) -- [ ] كيف يعمل محرك البحث: - - [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4) - - [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/) - - [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/) - - [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs) - - [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q) -- [ ] Series: - - [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9) - - [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf) - - [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523) - - [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a) -- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344) -- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI) ## عن مصادر الفديو @@ -282,40 +240,32 @@ I'm on the journey, too. Follow along: أفضل استخدام مصادر الجامعات. - ## مراحل المقابلة الشخصية & الإستعداد العام للمقابلة -- [ ] Videos: - - [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8) - -- [ ] Articles: - - [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - درب نفسك كيفية الإستعداد للمقابلة الشخصية من ممثلين بشركة جوجل. - - [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - -- [ ] Prep Courses: +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Prep Course: - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - -- [ ] Additional (not suggested by Google but I added): - - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - - [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - - [ ] How to Get a Job at the Big 4: - - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/) - + - تعرف على كيفية الاستعداد لمقابلات مهندس البرمجيات من محاور سابق في جوجل + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - دورة الإعدادية للمقابلات التي تتمحور حول لغة بايثون والتي تغطي هياكل البيانات والخوارزميات والمقابلات التدريبية وغير ذلك الكثير + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - دورة مجانية في هياكل البيانات والخوارزميات المتمركزة في بايثون + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - احصل على تدريب عملي مع أكثر من 100 بنية بيانات وتمارين خوارزمية وإرشادات من مرشد متخصص للمساعدة في إعدادك + للمقابلات والسيناريوهات أثناء العمل + - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - في كثير من الأحيان ، ليست كفاءتك الفنية هي التي تمنعك من الحصول على وظيفة أحلامك ، بل هي الطريقة التي تؤدي بها في المقابلة السلوكية ## اختر لغة برمجية واحدة للمقابلة البرمجية @@ -332,12 +282,13 @@ I'm on the journey, too. Follow along: - الجافا سكربت "JavaScript" -الروبي "Ruby" +هذا مقال كتبته عن اختيار لغة المقابلة: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). + ستحتاج أن تشعر بارتياح للغة والإلمام بها اقرأ المزيد عم الاختيارات: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview [شاهد مصادر اللغات من هنا](programming-language-resources.md) From 5d617484e03fd101cca9e19c3ca6959d10f3754f Mon Sep 17 00:00:00 2001 From: Kamalc Date: Sun, 25 Apr 2021 08:50:44 +0200 Subject: [PATCH 241/857] Update README-ar.md --- translations/README-ar.md | 1379 ++++++++++++++++++------------------- 1 file changed, 680 insertions(+), 699 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index aecc69b3b8..24d5f01b0d 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -301,45 +301,24 @@ You'll see some C, C++, and Python learning included below, because I'm learning ### التحضير للمقابلة الشخصية -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - answers in C++ and Java - - recommended in Google candidate coaching - this is a good warm-up for Cracking the Coding Interview - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - answers in Java - - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". -If you have tons of extra time: -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - all code is in C++, very good if you're looking to use C++ in your interview - - a good book on problem solving in general. +### اذا كان لديك الكثير من الوقت -### بنية الحاسوب - -If short on time: - -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -If you have more time (I want this book): - -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment +اختر واحدة: +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) ### تحديد اللغة @@ -356,15 +335,18 @@ I haven't read these two, but they are highly rated and written by Sedgewick. He - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - Rich and detailed collection of Data Structures and Algorithms + - Great for first-timers If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. ### Java - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) + - videos with book content (and Sedgewick!) on coursera: + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) OR: @@ -377,57 +359,11 @@ OR: - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. + - I loved this book. It covered everything and more - Pythonic code - - my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ - + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) -### Optional Books - -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** - -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace - (and important) graph problems are – they should be part of every working programmer's toolkit. The book also - covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half - of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve - them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a - great way to learn how to identify hundreds of problem types." - - Can rent it on kindle - - Half.com is a great resource for textbooks at good prices. - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." - - Half.com is a great resource for textbooks at good prices. - - aka CLR, sometimes CLRS, because Stein was late to the game - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. - -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - - Would rather spend time on coding problems from another book or online coding problems. ## قبل البدء @@ -457,7 +393,7 @@ OR: - [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): - [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google. +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. **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 @@ -466,22 +402,31 @@ your brain. An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -### 3. Review, review, review +### 3. 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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding +linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, +or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, +but how you apply the knowledge. There are several books and sites I recommend. +See here for more: [Coding Question Practice](#coding-question-practice). + +### 4. Review, review, review I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. Take a break from programming problems for a half hour and go through your flashcards. -### 4. Focus +### 5. Focus -There are a lot of distractions that can take up valuable time. Focus and concentration are hard. +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 -This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent -technologies but were not mentioned in those notes: +These are prevalent technologies but not part of this study plan: - SQL - Javascript @@ -492,26 +437,26 @@ technologies but were not mentioned in those notes: Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. +- C - using structs and functions that take a struct * and something else as args - C++ - without using built-in types - C++ - using built-in types, like STL's std::list for a linked list - Python - using built-in types (to keep practicing Python) - and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +- You may do Java or something else, this is just my thing You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). Why code in all of these? - Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) +- Make use of built-in types, so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) I may not have time to do all of these for every subject, but I'll try. You can see my code here: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) You don't need to memorize the guts of every algorithm. @@ -520,56 +465,54 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input ## Prerequisite Knowledge - [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying + - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) + you'll quickly get proficient. Understanding C helps you understand how programs and memory work + - [Answers to questions](https://github.com/lekkas/c-algorithms) - [ ] **How computers process a program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) ## Algorithmic complexity / Big-O / Asymptotic analysis -- nothing to implement + +- Nothing to implement +- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review +- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) + - [slides](https://archive.org/details/lecture2_202008) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - - If some of the lectures are too mathy, you can jump down to the bottom and - watch the discrete mathematics videos to get the background knowledge. - ## Data Structures - ### Arrays - Implement an automatically resizing vector. - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Arrays (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) + - [Dynamic Arrays (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://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 - [ ] size() - number of items @@ -595,19 +538,20 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Linked Lists - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. + - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): + - [ ] Implement (I did with tail pointer & without): - [ ] size() - returns number of data elements in list - [ ] empty() - bool returns true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) @@ -623,19 +567,16 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - No need to implement - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Will not implement. Implementing with array is trivial - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -662,18 +603,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] implement with array using linear probing + - [ ] Implement with array using linear probing - hash(k, m) - m is size of hash table - add(key, value) - if key already exists, update value - exists(key) @@ -685,7 +622,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Binary search - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -700,50 +637,46 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits + - [ ] Count set bits - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: - - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## Trees - ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - basic tree construction - traversal - manipulation algorithms - - BFS (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: best: O(log n) - avg. height of tree worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: @@ -784,7 +717,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] Implement a max-heap: - [ ] insert @@ -796,15 +729,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] sift_down - needed for extract_max - [ ] remove(i) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap ## Sorting - [ ] Notes: - Implement sorts & know best case/worst case, average complexity of each: - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) @@ -813,26 +745,26 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. +- For heapsort, see Heap data structure above. Heap sort is great, but not stable -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) @@ -855,36 +787,42 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. + - For heapsort, see Heap data structure above - [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) ## Graphs Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. -- Notes from Yegge: - - There are three basic ways to represent a graph in memory: +- Notes: + - There are 4 basic ways to represent a graph in memory: - objects and pointers - - matrix + - adjacency matrix - adjacency list + - adjacency map - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - [ ] Skiena Lectures - great intro: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) @@ -904,21 +842,14 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- Yegge: If you get a chance, try to study up on fancier algorithms: - - [ ] Dijkstra's algorithm - see above - 6.006 - - [ ] A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - - I'll implement: - [ ] DFS with adjacency list (recursive) - [ ] DFS with adjacency list (iterative with stack) @@ -935,8 +866,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph -You'll get more graph practice in Skiena's book (see Books section below) and the interview books - ## Even More Knowledge - ### Recursion @@ -945,13 +874,13 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? + - When it is appropriate to use it? + - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) - ### Dynamic Programming - - **NOTE:** DP is a valuable technique, but it is not mentioned on any of the prep material Google provides. But you could get a problem where DP provides an optimal solution. So I'm including it. + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: @@ -978,24 +907,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - ### Object-Oriented Programming - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - ### Design patterns - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) @@ -1024,6 +936,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + - ### Combinatorics (n choose k) & Probability - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) @@ -1068,27 +982,29 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - ### Processes and Threads - [ ] Computer Science 162 - Operating Systems (25 videos): - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Covers: - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - - How context switching is initiated by the operating system and underlying hardware + - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] concurrency in Python (videos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) @@ -1099,37 +1015,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Papers - - These are Google papers and well-known papers. - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - - ### Testing - To cover: - how unit testing works @@ -1140,48 +1025,90 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos - -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - can you implement them? + - In an OS, how it works? + - Can be gleaned from Operating System videos - ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). ---- +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## System Design, Scalability, Data Handling -- **You can expect system design questions if you have 4+ years of experience.** + +**You can expect system design questions if you have 4+ years of experience.** + - Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. -- Considerations from Yegge: - - scalability + Expect to spend quite a bit of time on this +- Considerations: + - Scalability - Distill large data sets to single values - Transform one data set to another - Handling obscenely large amounts of data - - system design + - System design - features sets - interfaces - class hierarchies @@ -1189,24 +1116,27 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - simplicity and robustness - tradeoffs - performance analysis and optimization -- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1221,9 +1151,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) @@ -1237,7 +1166,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) @@ -1246,7 +1174,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) @@ -1262,31 +1189,32 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the Video Series section. + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) @@ -1306,32 +1234,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- @@ -1342,29 +1246,28 @@ Now that you know all the computer science topics above, it's time to practice a **Coding question practice is not about memorizing answers to programming problems.** Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for your solutions -- testing your solutions +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for 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/) -[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/) - No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. +I added the pen in the photo 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://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) Supplemental: -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) @@ -1377,40 +1280,66 @@ Supplemental: See [Book List above](#book-list) + ## Coding exercises/challenges Once you've learned your brains out, put those brains to work. Take coding challenges every day, as many as you can. -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: - [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) +- [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) - [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. -Maybe: -- [Mock interviewers from big companies](http://www.gainlo.co/) ## Once you're closer to the interview -- [ ] Cracking The Coding Interview Set 2 (videos): +- Cracking The Coding Interview Set 2 (videos): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) ## Your Resume -- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - +- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Complaint. +- [How to Create or Check if your Resume is ATS Complaint](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) ## Be thinking of for when the interview comes @@ -1421,7 +1350,7 @@ Have a story, not just data, about something you accomplished. - What's a tough problem you've solved? - Biggest challenges faced? - Best/worst designs seen? -- Ideas for improving an existing Google product. +- Ideas for improving an existing product - How do you work best, as an individual and as part of a team? - Which of your skills or experiences would be assets in the role and why? - What did you most enjoy at [job x / project y]? @@ -1443,13 +1372,12 @@ Have a story, not just data, about something you accomplished. - What are you working on? - What do you like about it? - What is the work life like? +- How is work/life balance? ## Once You've Got The Job Congratulations! -- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) - Keep learning. You're never really done. @@ -1459,7 +1387,7 @@ You're never really done. ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. These are my recommendations, not Google's. + Everything below this point is optional. By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. @@ -1470,45 +1398,77 @@ You're never really done. ## Additional Books -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - an oldie but a goodie -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book -- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book + - About to get to this part. Will update here once I've made my way through it + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game -## Additional Learning +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment -- ### Compilers - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) +## Additional Learning -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. -- ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor + - Familiarize yourself with a unix-based code editor - vi(m): - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) @@ -1529,131 +1489,121 @@ You're never really done. - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Information theory (videos) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below - ### Parity & Hamming Code (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - also see videos below - - make sure to watch information theory videos first - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - also see videos below - - make sure to watch information theory videos first - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - make sure to watch information theory videos first - - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### Networking - - **if you have networking experience or want to be a systems engineer, expect questions** - - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) + - [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) + - [gRPC](http://www.grpc.io/) - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) + - [Celery](http://www.celeryproject.org/) - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) + - [ZeroMQ](http://zeromq.org/) - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1661,73 +1611,55 @@ You're never really done. - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) - ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - Know least one type of balanced binary tree (and know how it's implemented): + - Know at least one type of balanced binary tree (and know how it's implemented): - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena - Of these, I chose to implement a splay tree. From what I've read, you won't implement a balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - [ ] **AVL trees** + - **AVL trees** - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - [ ] **Splay trees** + - **Splay trees** - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT Lecture: Splay Trees: + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - [ ] **Red/black trees** - - these are a translation of a 2-3 tree (see below) + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, @@ -1735,106 +1667,107 @@ You're never really done. for example, many data structures used in computational geometry can be based on red–black trees, and the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - [ ] **2-3 search trees** + - **2-3 search trees** - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] **2-3-4 Trees (aka 2-4 trees)** + - **2-3-4 Trees (aka 2-4 trees)** - In practice: For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - [ ] **N-ary (K-ary, M-ary) trees** + - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) - binary trees are a 2-ary tree, with branching factor = 2 - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - [ ] **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Linear Programming (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - see videos below + - See videos below - ### Machine Learning - - [ ] Why ML? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Courses: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) @@ -1852,17 +1785,7 @@ You're never really done. - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - Data School: http://www.dataschool.io/ -- ### Go - - [ ] Videos: - - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] Books: - - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) - - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) - --- +--- ## Additional Detail on Some Subjects @@ -1870,135 +1793,193 @@ You're never really done. above because it's just too much. It's easy to overdo it on a subject. You want to get hired in this century, right? -- [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -- [ ] **String Matching** - - [ ] Rabin-Karp (videos): +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP): + - Knuth-Morris-Pratt (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer–Moore string search algorithm + - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - nice explanation of tries - can be skipped -- [ ] **Sorting** +- **Sorting** - - [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## Video Series Sit back and enjoy. "Netflix and skill" :P -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- [ ] CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Analysis of Algorithms (25 videos) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Computer Science Courses - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University)](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From 7619ce0449cc656aac3a7f7f8d39f6d426edcba3 Mon Sep 17 00:00:00 2001 From: Kamalc Date: Sun, 25 Apr 2021 09:01:09 +0200 Subject: [PATCH 242/857] Update README-ar.md --- translations/README-ar.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 24d5f01b0d..6856abe9d5 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -60,18 +60,17 @@ ## الفهرس -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [The Daily Plan](#the-daily-plan) -- [Prerequisite Knowledge](#prerequisite-knowledge) +- [كيفية استخدامها](#how-to-use-it) +- [لماذا استخدمه؟](#why-use-it) +- [كيفية استخدامها](#how-to-use-it) +- [عن مصادر مقاطع الفديو](#about-video-resources) +- [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#interview-process--general-interview-prep) +- [اختر لغة برمجية واحدة للمقابلة البرمجية](#pick-one-language-for-the-interview) +- [لائحة الكتب](#book-list) +- [قبل أن تبدأ](#before-you-get-started) +- [ما لن تجده هنا](#what-you-wont-see-covered) +- [الخطة اليومية](#the-daily-plan) +- [معرفة مسبقة](#prerequisite-knowledge) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) From d6b64a7db3308ca92405e374d0e7106690cea3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20De=20Freitas?= <37962411+JoseDeFreitas@users.noreply.github.com> Date: Sun, 25 Apr 2021 16:08:00 -0500 Subject: [PATCH 243/857] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f898ccf7d6..42bef209e5 100644 --- a/README.md +++ b/README.md @@ -1122,7 +1122,7 @@ Graphs can be used to represent many problems in computer science, so this secti - performance analysis and optimization - [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) From 73f90afac92ea4245c25c58aabcbc32747480325 Mon Sep 17 00:00:00 2001 From: Prasanthpadp <76952704+Prasanthpadp@users.noreply.github.com> Date: Thu, 6 May 2021 10:30:20 +0530 Subject: [PATCH 244/857] New Resources Added To Challenge Sites The added resource is a platform to practice coding and progress with the coding skills online. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 42bef209e5..9528c5065b 100644 --- a/README.md +++ b/README.md @@ -1314,6 +1314,7 @@ Challenge sites: - [InterviewBit](https://www.interviewbit.com/invite/icjf) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) +- [InterviewBit](https://www.interviewbit.com/) Language-learning sites, with challenges: - [Codewars](http://www.codewars.com) From 6b70782c1d304b518ad0f4865ce5fa37d54b8795 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 6 May 2021 08:28:15 -0700 Subject: [PATCH 245/857] Removes invite code from InterviewBit link. --- README.md | 3 +-- translations/README-ar.md | 2 +- translations/README-bn.md | Bin 285524 -> 285500 bytes translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-vi.md | 2 +- 20 files changed, 19 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 9528c5065b..a745c5954e 100644 --- a/README.md +++ b/README.md @@ -1311,10 +1311,9 @@ Challenge sites: - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com/) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) -- [InterviewBit](https://www.interviewbit.com/) Language-learning sites, with challenges: - [Codewars](http://www.codewars.com) diff --git a/translations/README-ar.md b/translations/README-ar.md index ba05c7fbc2..753230cd6a 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1443,7 +1443,7 @@ Challenge sites: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) Maybe: - [Mock interviewers from big companies](http://www.gainlo.co/) diff --git a/translations/README-bn.md b/translations/README-bn.md index 1bd4d55666b17672ba03ce10a90b076f97450f2f..0efb1d74b1181589dcc258bae95e152d660b9d63 100644 GIT binary patch delta 28 kcmcbzO>oaP!G;#bElevuPWO7x#MOT4Bh&U%ADO!{0m;=3`v3p{ delta 47 zcmdn9P4LP#!G;#bElevuit96EGUPFo0m%}ER0a?)nIVfIt$q1NrtQl=GEdC}0FHbR Aga7~l diff --git a/translations/README-cn.md b/translations/README-cn.md index 0d1e0394d9..1bbc56a384 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1237,7 +1237,7 @@ - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [http://www.geeksforgeeks.org/](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Project Euler (数学方向为主)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com/) diff --git a/translations/README-de.md b/translations/README-de.md index 68594c8b6a..07c6092237 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1432,7 +1432,7 @@ Wettbewerbsseiten: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) diff --git a/translations/README-es.md b/translations/README-es.md index ce721d5182..d8d70c838b 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1393,7 +1393,7 @@ Sitios de desafíos: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) Repos de desafíos: diff --git a/translations/README-fr.md b/translations/README-fr.md index b9791ec262..7b2af55c86 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1377,7 +1377,7 @@ Challenge sites: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) Maybe: - [Mock interviewers from big companies](http://www.gainlo.co/) diff --git a/translations/README-he.md b/translations/README-he.md index 435303f5d9..d9ffb353f5 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1371,7 +1371,7 @@ See [Book List above](#book-list) - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) ראיונות דמה: - [Pramp - להתאמן בראיונות קידוד עם אחרים, בחינם](https://www.pramp.com/) diff --git a/translations/README-hi.md b/translations/README-hi.md index 3dc2ce8986..8ea409c10b 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1374,7 +1374,7 @@ Take coding challenges every day, as many as you can. - [हैकररैंक](https://www.hackerrank.com/) - [कोदिलिटी](https://codility.com/programmers/) - [इंटरव्यूकेक](https://www.interviewcake.com/) - - [इंटरव्यूबिट](https://www.interviewbit.com/invite/icjf) + - [इंटरव्यूबिट](https://www.interviewbit.com) - [प्रोग्रामिंग लैंग्वेज में सुधार करने के लिए](http://exercism.io/languages) diff --git a/translations/README-id.md b/translations/README-id.md index 1b23877da7..98920ce862 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1245,7 +1245,7 @@ Situs tantangan: - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) diff --git a/translations/README-ja.md b/translations/README-ja.md index dfee95f598..226f94a688 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1314,7 +1314,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere(Sphere)](http://www.spoj.com/) チャレンジレポ: diff --git a/translations/README-kh.md b/translations/README-kh.md index 31c32f90e5..52961515fd 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1323,7 +1323,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) diff --git a/translations/README-ko.md b/translations/README-ko.md index ac52114ac0..ad3b2a7328 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1308,7 +1308,7 @@ Challenge sites: - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) diff --git a/translations/README-pl.md b/translations/README-pl.md index 62d578254d..27dc4c9eb0 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1298,7 +1298,7 @@ Challenge sites: - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) Language-learning sites, with challenges: diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index ff5c0dba78..c3870103e4 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1406,7 +1406,7 @@ Websites de desafios: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) Repositórios de desafios: diff --git a/translations/README-ru.md b/translations/README-ru.md index 0a1a95f62c..aa9cd87705 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1378,7 +1378,7 @@ Google не возьмёт тебя на работу. - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) Возможно: - [Тестовые интервьюверы из больших компаний](http://www.gainlo.co/) diff --git a/translations/README-th.md b/translations/README-th.md index 39358c3486..05e4ff96bd 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1378,7 +1378,7 @@ Challenge sites: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) Mock Interviews: diff --git a/translations/README-tw.md b/translations/README-tw.md index 7a96a45600..cd354a5a68 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1266,7 +1266,7 @@ Coding面試題目影片: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) diff --git a/translations/README-uk.md b/translations/README-uk.md index d7f452ca1c..074a5fd310 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1379,7 +1379,7 @@ Challenge sites: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) - [Sphere Online Judge (spoj)](http://www.spoj.com/) Mock Interviews: diff --git a/translations/README-vi.md b/translations/README-vi.md index c9836db7eb..20779c6b4d 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1412,7 +1412,7 @@ Các trang giải toán lập trình: - [Codility](https://codility.com/programmers/) - [InterviewCake](https://www.interviewcake.com/) - [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [InterviewBit](https://www.interviewbit.com) Xem thêm: - [Phỏng vấn thử nghiệm](http://www.gainlo.co/) From a9933149711a257fb963441b91aa5d23a948afbc Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 20 May 2021 08:30:19 -0700 Subject: [PATCH 246/857] Small correction in pt-br translation. --- translations/README-ptbr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index c3870103e4..ef840eb2db 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -399,7 +399,7 @@ Essa lista cresceu por longos meses, e sim, ela meio que saiu do controle! ### 1. Você não se lembrará de tudo -Assisti a horas de vídeos e fiz anotações e meses depois havia muito que eu não lembrava. Eu passei 3 dias revisando minhas anotaçes e fazendo flashcards para que eu pudesse relembrar. +Assisti a horas de vídeos e fiz anotações e meses depois havia muito que eu não lembrava. Eu passei 3 dias revisando minhas anotações e fazendo flashcards para que eu pudesse relembrar. Por favor, leia para que você não cometa os meus erros: From b116c614ec7574d06ec7f793297a08f76777e74b Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 29 May 2021 17:12:53 -0700 Subject: [PATCH 247/857] Moved discrete math videos from Video Series to Discrete Math section. --- README.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a745c5954e..7b4486f9ff 100644 --- a/README.md +++ b/README.md @@ -1760,7 +1760,9 @@ You're never really done. - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - See videos below + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - ### Machine Learning - Why ML? @@ -1879,7 +1881,7 @@ You're never really done. ## Video Series -Sit back and enjoy. "Netflix and skill" :P +Sit back and enjoy. - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1889,12 +1891,6 @@ Sit back and enjoy. "Netflix and skill" :P - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - -- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) - -- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - - CSE373 - Analysis of Algorithms (25 videos) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) From 1b26a969841d397111c10afeebfe30645a407d78 Mon Sep 17 00:00:00 2001 From: Raj <46242040+SRX9@users.noreply.github.com> Date: Fri, 4 Jun 2021 10:08:40 +0530 Subject: [PATCH 248/857] General Interview question guide added Added link to a guide of general interview questions and their sample answer, for those who are not able to come up with good answers --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 7b4486f9ff..7c03b30069 100644 --- a/README.md +++ b/README.md @@ -1363,6 +1363,11 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? + +- If you find hard to come up with good answers of this type interview questions, you can refer below link for some answer templates and have some idea. +- [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + + ## Have questions for the interviewer Some of mine (I already may know answer to but want their opinion or team perspective): @@ -1378,6 +1383,7 @@ Have a story, not just data, about something you accomplished. - What is the work life like? - How is work/life balance? + ## Once You've Got The Job Congratulations! From 9fd9ba0544140d86b11c6192d1cc5cf684a41506 Mon Sep 17 00:00:00 2001 From: Vladyslav Krylasov Date: Tue, 8 Jun 2021 18:01:23 +0100 Subject: [PATCH 249/857] =?UTF-8?q?=F0=9F=93=9D=20Update=20the=20intro=20t?= =?UTF-8?q?o=20be=20in=20sync=20with=20HEAD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- translations/README-uk.md | 90 ++++++++++++++++++++++++++++++--------- 2 files changed, 71 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 7c03b30069..8c46dcde4b 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) diff --git a/translations/README-uk.md b/translations/README-uk.md index 074a5fd310..ba79d84675 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1,34 +1,84 @@ # Coding Interview University -Original: [англійською](README.md) +Original in [English](README.md) + +> Спочатку я створив це як короткий список завдань для вивчення тем, щоб стати +інженером-програмістом, але він збільшився до великого списку, який ви бачите +сьогодні. Пройшовши цей навчальний план, +[мене найняли розробником програмного забезпечення в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> +> Я навчався приблизно 8-12 годин на день, протягом декількох місяців. Це моя +історія: +[Чому я навчався очно протягом 8 місяців для інтерв’ю в Google](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13). +> +> Перелічені тут ресурси добре підготують вас до технічної співбесіди практично +в будь-якій компанії, включаючи гігантів: Amazon, Facebook, Google та +Microsoft. +> +> *Нехай щастить!* + +
+Переклади: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) + +
+ +
+Переклади в процесі: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
## Що це? -Це мій багатомісячний навчальний план для перетворення з веб-розробника (самоучки без ступеню з CS) -на розробника програмного забезпечення у Google. +Це мій багатомісячний план навчання для переходу від веб-розробника (самоука, +без ступеня з комп'ютерних наук) до інженера програмного забезпечення для +великої компанії. ![Програмування у дошки — з серіалу «Silicon Valley» HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Цей довгий список був видобутий і розширений з **тренувальних нотаток Google**, отже це речі, які ви повинні знати. -Тут є додаткові пункти, які я додав знизу — вони можуть зустрітися в інтерв’ю або бути корисними у вирішенні завдань. -Багато пунктів взято з «[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)» Steve Yegge, -вони іноді дослівно відображаються в тренувальних нотатках Google. +Цей список призначено +**для піонерів у сфері розробки програмного забезпечення** або +тих, хто переходить від кодування/веб-розробки до більш архітектурних, +інженерних рішень (де потрібні знання комп'ютерних наук). Якщо у вас +багаторічний досвід і ви стверджуєте, що він таким є, очікуйте більш важкого +інтерв’ю. -Я обрав, що вам потрібно знати, базуючись на рекомендаціях Yegge. Я вніс зміни до вимог Yegge на основі інформації, -отриманої від мого контакту у Google. Це призначено для **нових розробників програмного забезпечення** або тих, -що переходять з веб-розробки на розробку програмного забезпечення (де потрібне знання CS). Якщо у вас багаторічний -досвід, і ви заявляєте про багаторічний досвід розробки програмного забезпечення, очікуйте на більш жорстке інтерв’ю. -[Прочитайте більше](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). +Також якщо у вас є багаторічний досвід кодування/веб-розробки, зверніть увагу, +що великі компанії-розробники програмного забезпечення, такі як Google, Amazon, +Facebook та Microsoft, відрізняють розробку програмного забезпечення +від веб-розробки, і вони потребують знання комп'ютерних наук. -Якщо у вас багато років досвіду веб-розробки, майте на увазі, що Google відрізняє розробку програмного забезпечення -від веб-розробки, і вони потребують знання Computer Science. - -Якщо ви хочете бути інженером з надійності або системним інженером, вчіть більше за опціональним списком (мережі, -безпека). +Якщо ви хочете бути інженером з надійності або системним інженером, вчіть +більше за опціональним списком (мережі, безпека). --- -## Таблиця контенту +## Зміст - [Що це?](#Що-це) - [Чому це використовувати?](#Чому-це-використовувати) @@ -1442,11 +1492,11 @@ You're never really done. ***************************************************************************************************** ***************************************************************************************************** - + Everything below this point is optional. By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. - + ***************************************************************************************************** ***************************************************************************************************** From f04efe11a70a3b3742b35a174d1c43441e75c6b4 Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim Date: Mon, 14 Jun 2021 13:30:48 +0600 Subject: [PATCH 250/857] Fix Discrete Mathematics by Shai Simonson playlist broken link --- README.md | 2 +- translations/README-ar.md | 2 +- translations/README-bn.md | Bin 285500 -> 285500 bytes translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-vi.md | 2 +- 21 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8c46dcde4b..d5f0bbcd26 100644 --- a/README.md +++ b/README.md @@ -1767,7 +1767,7 @@ You're never really done. - ### Discrete math - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - ### Machine Learning diff --git a/translations/README-ar.md b/translations/README-ar.md index 753230cd6a..1a1960fc40 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1997,7 +1997,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) +- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) diff --git a/translations/README-bn.md b/translations/README-bn.md index 0efb1d74b1181589dcc258bae95e152d660b9d63..b0a86e34ed02dbbea6807a64081e5e43503878be 100644 GIT binary patch delta 96 zcmdn9O>oaP!G;#b7N!>FEi4|&_TdZ>4CV}m3oaP!G;#b7N!>FEi4|&_QnkP43-Qo3?@LF!(hbV#^43y7cv+y#51HblmPh= t3;_%oK%NIsO#p*GgC~P2Lkfd8P(>w!`((u=(dh Date: Tue, 15 Jun 2021 19:15:18 -0700 Subject: [PATCH 251/857] Adds sponsorship file. --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..1cf53a951a --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: jwasham From f41ff687351a4323a218e49a5f1f18d032f88fce Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 16 Jun 2021 08:44:29 -0700 Subject: [PATCH 252/857] Adds sponsor info. --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index d5f0bbcd26..7afbf60383 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,29 @@
+
+ ## What is it? This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. From 43eef4a8bf2f3068b67ad89dd737631a85e5cc3f Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 16 Jun 2021 08:46:10 -0700 Subject: [PATCH 253/857] Testing sponsorship area. --- README.md | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/README.md b/README.md index 7afbf60383..0f10badf6c 100644 --- a/README.md +++ b/README.md @@ -48,28 +48,7 @@ - + ## What is it? From 971262b5e9d0fa43d493f2e12c39b6c4062a05fb Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 16 Jun 2021 10:46:06 -0700 Subject: [PATCH 254/857] Added supporter. --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0f10badf6c..d7dd8bef1f 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,27 @@ - + ## What is it? From 505b3222247c28dbe5627c63d82f1cc1c7334ec0 Mon Sep 17 00:00:00 2001 From: Raj <46242040+SRX9@users.noreply.github.com> Date: Sun, 20 Jun 2021 09:49:45 +0530 Subject: [PATCH 255/857] Helpful websites for Career Opportunities Added list of platforms which is helpful in finding the perfect job, internship or any other information like salary for a specific role in a specific company and much more. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d7dd8bef1f..aa0f812252 100644 --- a/README.md +++ b/README.md @@ -151,6 +151,7 @@ If you want to be a reliability engineer or operations engineer, study more from - [Coding Question Practice](#coding-question-practice) - [Coding exercises/challenges](#coding-exerciseschallenges) - [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Best way to Find perfect Career Oppurtunities for you](#best-way-to-find-perfect-career-oppurtunities-for-you) - [Your Resume](#your-resume) - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Have questions for the interviewer](#have-questions-for-the-interviewer) @@ -1361,6 +1362,10 @@ Mock Interviews: - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) +## Best way to Find perfect Career Oppurtunities for you +- If you are trying to find new Job Opportunities, or if you are trying to find internships, if want to know about the salary of a job role in any companies or want to just know about the company reputation before applying to that company, here are the list of platforms which can help you find the above answers and more. +- [Best Websites for Careers & Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + ## Your Resume - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed From f632d7a8fa0c535a57cd7d8851435dc10d07512c Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 23 Jun 2021 18:03:02 -0700 Subject: [PATCH 256/857] Adds Distributed Systems course, cleans up some old resources. --- README.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d7dd8bef1f..2bc3ba47ce 100644 --- a/README.md +++ b/README.md @@ -1146,7 +1146,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) @@ -1154,6 +1153,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [ ] Consensus Algorithms: - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) @@ -1171,15 +1171,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) @@ -1188,27 +1185,17 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together @@ -1240,7 +1227,6 @@ Graphs can be used to represent many problems in computer science, so this secti - Rough overview of any key algorithm that drives the service - Consider bottlenecks and determine solutions - Exercises: - - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) @@ -1948,6 +1934,8 @@ Sit back and enjoy. - [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + - [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) - [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) From 5afc504e5311f85a42ee8001688a1acc8ba3b177 Mon Sep 17 00:00:00 2001 From: Chaitanya Thengdi Date: Thu, 24 Jun 2021 15:14:28 +0530 Subject: [PATCH 257/857] Fix minor typos in main README --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7c03b30069..d5ae9dd3f3 100644 --- a/README.md +++ b/README.md @@ -1342,8 +1342,8 @@ Mock Interviews: ## Your Resume - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed -- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Complaint. -- [How to Create or Check if your Resume is ATS Complaint](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Compliant. +- [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) ## Be thinking of for when the interview comes @@ -1437,7 +1437,7 @@ You're never really done. - Algorithm catalog: - This is the real reason you buy this book - About to get to this part. Will update here once I've made my way through it - - Can rent it on kindle + - Can rent it on Kindle - Answers: - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) @@ -1809,9 +1809,9 @@ You're never really done. - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) @@ -1950,7 +1950,7 @@ Sit back and enjoy. ## Algorithms implementation -- [Multiple Algorithms implementation by Princeton University)](https://algs4.cs.princeton.edu/code) +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) ## Papers From 231cf058abf66e2b840e362fdd174eb5317cbc8b Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 24 Jun 2021 09:53:19 -0700 Subject: [PATCH 258/857] Typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dd82fd9d81..3d5e4655f0 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ If you want to be a reliability engineer or operations engineer, study more from - [Coding Question Practice](#coding-question-practice) - [Coding exercises/challenges](#coding-exerciseschallenges) - [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Best way to Find perfect Career Oppurtunities for you](#best-way-to-find-perfect-career-oppurtunities-for-you) +- [Best way to Find perfect Career Opportunities for you](#best-way-to-find-perfect-career-opportunities-for-you) - [Your Resume](#your-resume) - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Have questions for the interviewer](#have-questions-for-the-interviewer) @@ -1348,8 +1348,8 @@ Mock Interviews: - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) -## Best way to Find perfect Career Oppurtunities for you -- If you are trying to find new Job Opportunities, or if you are trying to find internships, if want to know about the salary of a job role in any companies or want to just know about the company reputation before applying to that company, here are the list of platforms which can help you find the above answers and more. +## Best way to find perfect career opportunities for you +- If you are trying to find new job opportunities, or if you are trying to find internships, if want to know about the salary of a job role in any companies or want to just know about the company reputation before applying to that company, here are the list of platforms which can help you find the above answers and more. - [Best Websites for Careers & Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) ## Your Resume From 3bc2de5703785609bce0681ecfe97763b804bfdd Mon Sep 17 00:00:00 2001 From: Vohidjon Date: Wed, 7 Apr 2021 20:27:12 +0200 Subject: [PATCH 259/857] Uzbek translation [1st part] --- translations/README-uz.md | 2004 +++++++++++++++++++++++++++++++++++++ 1 file changed, 2004 insertions(+) create mode 100644 translations/README-uz.md diff --git a/translations/README-uz.md b/translations/README-uz.md new file mode 100644 index 0000000000..28bc132a9c --- /dev/null +++ b/translations/README-uz.md @@ -0,0 +1,2004 @@ +# Coding Interview University + +Asl versiyasi: [Inglizcha](../README.md) + +> Dastlab men bu proyektni dasturchi (software engineer) bo'lish uchun o'qish kerak bo'lgan mavzularning qisqacha ro'yxati sifatida yaratdim, +> ammo bu proyekt bugun siz ko'rib turgan katta ro'yxatga aylandi. Ushbu o'quv rejasidan o'tib, [men Amazon-ga dasturchi sifatida ishga yollandim](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Ehtimol, menga o'xshab o'qishingizga to'g'ri kelmaydi. Baribir sizga kerak bo'lgan hamma narsa shu yerda. +> +> Bir necha oy davomida kuniga taxminan 8-12 soat o'qidim. Bu mening hikoyam: [Nega men Google-da intervyu olish uchun 8 oy davomida kechayu kunduz o'qidim](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> Bu erda keltirilgan narsalar sizni har qanday dasturiy ta'minot kompaniyalari, shu jumladan gigantlar: Amazon, Facebook, Google va Microsoft-da o'tkaziladigan texnik suhbatga yaxshi tayyorlaydi. +> +> *Sizga omad tilayman!* + +
+Translations: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) + +
+ +
+Translations in progress: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
+ +## Bu nima? + +Bu mening web dasturchisi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam. +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Bu proyekt **yangi dasturchi injinerlar** uchun juda forydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dastur injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bulganlar uchun foydali. + + +Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dastur injinerlikni (software engineer) oddiy dasturchilikdan (software/web developer) farqli deb kuradi va ular computer science bilimini talab qiladi. + + +Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, unda siz ixtiyoriy ro'yxatdan ko'proq o'qing (tarmoq, xavfsizlik va boshqalar). +--- + +## Table of Contents + +- [What is it?](#what-is-it) +- [Nima uchun foydali?](#why-use-it) +- [Qanday foydalanish kerak?](#how-to-use-it) +- [O'zingizni omadsiz deb o'ylamang](#dont-feel-you-arent-smart-enough) +- [Video qo'llanmalar haqida](#about-video-resources) +- [Suhbat jarayoni va intervyuga tayyorgarlik](#interview-process--general-interview-prep) +- [Intervyu uchun bitta dasturlash tilini tanlang](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [The Daily Plan](#the-daily-plan) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Nima uchun foydali? + +Ushbu loyihani boshlaganimda, men stack bilan heap-ni farqini bilmas edim, +Big-O ni nimaligini bilmas edim, tree-lar yoki graph-lar haqida hech qanday tushunchaga +ega emas edim. Agar tartiblash algoritmini (sorting) yozishni so'rashganda, aniq qovun tushirgan +bo'lar edim. Umrimda ishlatgan data strukturalarni hammasini tayyor holda ishlatganman +(built-in library) va ularning asosida nimalar yotishini umuman bilmas edim. +Juda ko'p kod yozgan bo'lsamda, lekin men hech qachon qandaydir data strukturani noldan yozmaganman + +Bu uzoq vaqt talab qiladigan jarayon bo’lib, sizga bir necha oy kerak bo'lishi mumkin. +Agar siz allaqachon bu narsalarni ko'pini bilsangiz, bu resurslar sizni ko'p vaqtingizni olmaydi. + +## Qanday foydalanish kerak? + +Quyida foydalanish qoidalari berilgan bo'lib, bosqichlarni yuqoridan pastga tartibda bajarishingiz kerak. + +Men natijalarni kuzatish uchun vazifalar ro'yxatini o'z ichiga olgan Github markupidan foydalanmoqdaman. + +**Bu kabi elementlarni tekshirishingiz uchun yangi "branch" yarating, so'ngra shunchaki qavs ichiga x qo'shib, ro'yxat elementlarini belgilashingiz mumkin: [x]** + + Branch-ni o'zingizga fork qiling va quyidagi buyruqlarni ketma-ketlikda bajaring: + +Ulash uchun https://github.com/jwasham/coding-interview-university havola(link) ga o'ting va "Fork" tugmasini bosing + + Shaxsiy(local) repo-ga ko'chirib oling + +`git clone git@github.com:/coding-interview-university.git` + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + O'zgarishlaringizni tugatganingizdan so'ng barcha qismlarni X bilan belgilang + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/main` + +`git push --set-upstream origin progress` + +`git push --force` + +[Github-flavored markdown-haqida ko'proq ma'lumot](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + + +## O'zingizni omadsiz deb hisoblamang + +- Omadli dasturchilar aqlli, ammo ularning ko'pchiliklari o'zlarini yetarlicha aqlli deb hisoblashmaydi. +- [Daho dasturchining afsonasi](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Yolg'iz qolish xavfli: Texnologiyada ko'rinmas monsterlarga qarshi kurash](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Video qo'llanmalar haqida + + +Ba'zi video darsliklarni faqat Coursera yoki EdX platformalari orqali ro'yxatdan o'tgan holda olish mumkin. +Ular MOOC (ommaviy ochiq onlayn kurs) deb nomlanadi. +Ba'zan darslar sessiyada bo'lmaganligi sababli siz bir necha oy kutishingizga to'g'ri keladi. + + Bepul va har doim ham ochiq ommaviy manbalarni yaratishda o'z hissangizni qo'shishingizni xohlagan bo'lar edim. + Bu manbalar Youtube dagi video darsliklar ham bo'lishi mumkin. Masalan menga universitet + maruzalaridan foydalanish yoqadi. + + +## Suhbat jarayoni va intervyuga tayyorgarlik + +- [ ] [2021 yilda injinerlik suhbatidan qanday o'tish mumkin?](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Doskada kodlash(Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Qanday qilib "Big 4" kompaniyalariga ishga kirish mumkin: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Coding intervyuga tayyorlanish, to'plam 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Facebook Coding Intervyusiga tayyorlanish: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Tayyorlanish uchun kurslar: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Google-ning sobiq interviewer-dan "software engineer" suhbatlariga qanday tayyorlanishni o'rganing. + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Ma'lumotlar tuzilmalari, algoritmlari, mock intervyular va boshqa ko'p ma'lumotlarni o'z ichiga oladigan Python markaziy intervyuga tayyorlash kursi + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Python-da ma'lumotlar tuzilmasi va algoritmlar haqida tekin kurs: + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 100 dan ortiq ma'lumotlar tuzilmalari va algoritmlarga oid mashqlari bilan amaliy mashg'ulotlarni olib boring va sizni intervyu jarayoniga tayyorlanishingizga yordam beradigan maxsus mentordan ko'rsatma oling. + - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Ko'pincha orzuyingizdagi ish joyiga intervyudan o'tishingizda faqat texnik salohiyatingiz emas balki o'zingizni qanday tuta olishingiz, xulqingiz ham katta ahamiyatga ega. + +## Intervyu uchun bitta dasturlash tilini tanlang + +Intervyuning kodlash qismini bajarish uchun o'zingizga qulay bo'lgan dasturlash tilidan foydalanishingiz mumkin, +lekin yirik kompaniyalar quyida berilgan tillarning biridan foydalanishni talab qilishlari mumkin: + +- C++ +- Java +- Python + +Shuningdek quyidagilarni ham ishlatishingiz mumkin: + +- JavaScript +- Ruby + +Quyida intervyu uchun dasturlash tilini tanlash haqida yozgan maqolam: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). + +Siz intervyu uchun tanlagan dasturlash tilida erkin kod yoza oladigan va o'z bilimingizga ega bo'lishingiz kerak. + +Tog'ri tanlov haqida ko'proq o'qishingiz uchun manbalar: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[Dasturlash tillari bo'yicha manbalar](programming-language-resources.md) + +Quyida berilgan kitoblar ro'yxatida o'zim o'rganayotgan C, C++, va Python ga oid manbalarni ko'rishingiz mumkin. + +## Kitoblar ro'yxati + +Bu sizning vaqtingizni tejash uchun men ishlatgan kitoblar ro'yxatining qisqartirilgan ko'rinishi. + +### Intervyuga tayyorlanish + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Javoblar (C++ va Java) + - "Cracking the Coding Interview" kitobini boshlashdan oldin tayyorlanish uchun juda yaxshi manba + - Juda murakkab emas, hattoki masalarning ko'pchiligi intervyuda uchraydigan masalalardan osonroq. +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java dasturlash tilida javoblar + +### Agar sizda bo'sh vaqtingiz ko'p bo'lsa: + +Quyidagi kitoblardan birini tanlashingiz mumkin: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java versiyasi) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### Dasturlash tiliga oid + +** Yuqorida aytilganidek siz intervyu uchun bitta dasturlash tilini tanlashingiz kerak ** + +Mening tilga oid tavsiyalarim. Menda barcha tillar uchun resurslar yo'q shuning uchun sizda qo'shimcha ma'lumot bo'lsa +tavsiya qilishingiz mumkin. +Agar siz bulardan birini o'qib chiqsangiz, masalalarni yechishda kerak bo'lgan barcha data strukturalar +va algoritmlari bo'yicha bilimlarga ega bo'lishingiz kerak. +** Loyihadagi video resurslarni o'tkazib yuborishingiz mumkin**, agar ko'rib chiqishni xohlamasangiz. + +[Tilga oid qo'shimcha resurslar.](programming-language-resources.md) + +### C++ + +Men bularning ikkitasini o'qimaganman, lekin ular yuqori baholangan va Sedvik tomonidan yozilgan. Sedgewick aka zo'rlar :) + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - Ma'lumotlar tuzilmasi va algoritmlarga oid boy va batafsil to'plam + - Birinchi marta boshlayotganlar uchun juda mos + +Agar sizda C++ bo'yicha yaxshiroq tavsiyalaringiz bo'lsa iltimos biz bilan baham ko'ring. + +### Java + +- [ ] [Algoritmlar (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Coursera dagi kitob tarkibi bilan videolar (va Sedgewick!): + - [Algoritmlar I](https://www.coursera.org/learn/algorithms-part1) + - [Algoritmlar II](https://www.coursera.org/learn/algorithms-part2) + +Yoki: + +- [ ] [Java da ma'lumotlar tuzilmasi va algoritmlar](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - Goodrich, Tamassia, va Goldwasser tomonidan yozilgan + - UC Berkeley-dagi CS(Computer Science) kirish kursi uchun qo'shimcha kitob sifatida ishlatiladi + - Quyida Python dasturlash kitobi uchun men qoldirgan izohlar bu kitobga ham tegishli. + +### Python + +- [ ] [Python da ma'lumotlar tuzilmasi va algoritmlar](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Goodrich, Tamassia, va Goldwasser tomonidan yozilgan + - Menga bu kitob juda yoqdi. Bu juda ko'p ma'lumotlarni o'z ichiga olgan. + - Pythonic kod + - Mening bu kitob haqidagi izohim: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [ ] [Python da Open Data strukturalari](https://opendatastructures.org/ods-python.pdf) + +## O'rganishni boshlashdan oldin + +Mazkur ro'yxat bir necha oylar davomida shakllanganligi sababli biroz qo'ldan chiqdi. +Bu yerda men ba'zi yo'l qo'ygan xatoliklar bor, bu esa sizlarga yaxshiroq tajriba orttirishingizga yordam beradi. + +### 1. Bularning barchasini eslab qolmaysiz + +Men soatlab videolar ko'rardim va eslatmalar yozib qo'yar edim, va bir necha oydan so'ng hammasini eslab qola olmas edim. +Men yozib olgan eslatmalarim va fleshkartalarim yordamida takrorlab chiqishim uchun 3 kun sarfladim. + +Men qilgan xatolarni siz ham takrorlamasligingiz uchun iltimos o'qib chiqing: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +Menga tavsiya qilingan kurs (shaxsan o'zim ko'rib chiqmaganman): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn). + +### 2. Fleshkartalar(kartochkalar) ishlating + +Muammoni yechish uchun, men fleshkartalar uchun sayt yaratdim, u yerga 2 turdagi fleshkartalar joylanadi: umumiy eslatmalar va kod. +Har bir karta o'z formatiga ega. + +Vebsaytdan telefon yoki tabletdan ham xoxlagan joyda foydalana olishim uchun mobilga moslangan sayt yaratdim. + +O'zingizni saytingizni ham tekinga yarating: + +- [Fleshkartalar sayti uchun repo](https://github.com/jwasham/computer-science-flash-cards) +- [Mening fleshkartalarim bazasi (eski versiya - 1200 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [ening fleshkartalarim bazasi(yangi versiya - 1800 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Yodingizda bo'lsin, menda assembly language va Python triviyalaridan tortib, machine learning va statistikani +o'z ichiga olgan kartalarim bor. Bu esa talab qilinadigan narsalardan ham ko'p hisoblanadi. +(Ya'ni bularning barchasini siz bir vaqtda o'zlashtirgan bo'lishingiz shart emas) + +**Fleshkartalardagi eslatmalar :** Birinchi marta fleshkartadagi javobni topa olganingizda uni o'zlashtirilganlar qatoriga qo'shmang. Aksincha xuddi shu kartani +ajratib qo'ying va bir necha marta javob bering toki haqiqatdan ham javobni anglab yetguningizgacha. +Takrorlash natijasida ma'lumot miyangizga chuqurroq joylashadi. + + +Fleshkartalar uchun bir necha marta menga tavsiya qilingan alternativ vebsayt [Anki](http://ankisrs.net/). +Bu sizning eslab qolishingizga yordam berish uchun takrorlash sistemasini ishlatadi. +Buni ishlatish qulay va barcha platformalarda mavjud va cloud bn sinxronizatsiya qilingan. iOS platformalari +uchun narxi $25, lekin boshqa platformalar uchun tekin. + +Anki formatidagi mening fleshkartalarim bazasi: https://ankiweb.net/shared/info/25173560 ([@xiewenya](https://github.com/xiewenya) ga tashakkur). + +### 3. Ma'lumotlar tuzilmalari va algoritmlarini o'rganish jarayonida coding intervyu savollariga javob topishni boshlang. + +O'rganayotgan narsalaringizni masalalar yechishda qo'llab ketishingiz kerak, +aks holda o'rganganlaringizni tez unutishingiz mumkin. +Shaxsan menda shunday bo'lgan. Biror bir mavzuni masalan bog'langan ro'yxatlar (linked lists) ga oid mavzuni +o'rganganingizdan keyin agar o'zingizni shu mavzuda erkin +his qilishni boshlasangiz coding intervyu kitoblaridan linked list ga oid masala yechishga urinib ko'ring. +So'ng, keyingi mavzuga o'ting. Bir qancha vaqtdan keyin yana ortga qaytib linked listga yoki +rekursiyaga oid masala yeching. Asosiysi o'rganish jarayonida ko'proq masalalarni yechishda davom eting. +Sizni ishga bilimingiz uchun emas, bilimingizni qo'llay olishingiz uchun qabul qilishadi. +Men sizlarga tavsiya qiladigan kitoblar va saytlar bor. +Ko'proq ko'rish uchun havolaga o'ting:: [Coding Question Practice](#coding-question-practice). + +### 4. Takrorlang, takrorlang va yana takrorlang + +Menda ASCII, OSI stack, Big-O notations va boshqa mavzularda eslatma varaqlarim bor. +Ularni biroz bo'sh vaqtim bo'lganda o'rganaman. + +Masalalar yechish jarayonida biroz tanaffus oling va o'zingizni fleshkartalaringizni takrorlab chiqing. + +### 5. Diqqatingizni bir joyga jamlang + +Atrofimizda juda ko'p narsalar bizni chalg'itib qo'yadi va qimmatli vaqtimizni oladi. +Shuningg uchun diqqatni jamlash va konsentratsiya qilish oson emas. Buning bir usuli, +matnsiz biron musiqa tinglang, bu esa diqqatingizni jamlashingizga yordam beradi. + +## Bu proyekt nimalarni o'z ichiga olmaydi + +Bular keng tarqalgan texnologiyalar lekin bu proyekt ularni o'z ichiga olmaydi: + +- SQL +- Javascript +- HTML, CSS, va boshqa front-end texnologiyalar + +## Kunlik reja + +Bazi mavzular bir kun oladi, va bazilariga bir necha kunlar kerak bo'ladi. Bazilari faqat o'rganish, kod yozish kerak emas. + +Har kuni bitta mavzu olib, videolarini ko'rib, quyidagi tillarda kodda yozib chiqaman: +- C - struct-lardan va struct * oladigan funksiyalarni ishlatgan holda +- C++ - built-in tiplarni ishlatmagan holda +- C++ - built-in tiplarni ishlatgan holda, masalan STL-ning std::list +- Python - built-in tiplarni ishlatgan holda (Python-ni mashq qilish uchun) +- va testlar yozgan holda (oddiy assert() ishlatib) +- siz Java yoki boshqa tilda qilishingiz mumkin + +Sizga bularni hammasi kerak emas. Intervyu uchun sizga [faqat bitta til](#pick-one-language-for-the-interview) kerak. + +Nega turlicha yozish kerak? +- Mashq, mashq, mashq, ko'nglim ayniguncha. Shunda muammosiz tushimda ham qila olaman. +- Pastgi darajada (low level) yoza olish uchun (masalan, garbage collection ishlatmagan holda) +- Har kunlik ishda built-in tiplardan bemalol foydalana olish uchun (production-da array listni yoki linked listni boshidan yozib o'tirmaymanku) + +Har bir mavzuni tepadagi tarzda o'qiyolmashim mumkin, lekin harakat qilaman. + +Meni kodlarimni bu yerda ko'rishingiz mumkin: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +Har bir algoritmni ikr-chikirini eslab qolishingiz shart emas. + +Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qiling. Keyin kompyuterda yozib test qiling. + +## Oldindan nima bilish kerak + +- [ ] **C ni o'rganing** + - C hamma yoqda. Siz C da yozilgan namuna kodlarni kitoblarda, ma'ruzalarda, videolarda, hamma yoqda uchratasiz + - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Bu qisqacha kitob, lekin C ni sizga ancha o'rgatadi va agar ozgina mashq qilsangiz tezda mohir bo'lib ketasiz. + C ni tushunish dasturlar va xotira qanday ishlashini tushinishga yordam beradi + - [Savollarga javoblar](https://github.com/lekkas/c-algorithms) + +- [ ] **Kompyuterlar dasturni qanday boshqarishadi** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +## Algoritmik murakkablik / Big-O / Asimtotik tahlil + +- Kodda yozadigan narsa yo'q +- Bu yerda ko'p videolar bor. Tushunguningizgacha ko'ring. Har doim qayta ko'rib chiqishingiz mumkin. +- Agar bazi maruzalarda murakkab matematika ishlatilsa, pastgi qisimga tushib diskret matematika videolarini ko'rib chiqishingiz mumkin +- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (umumiy qisqacha tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (and Omega and Theta) - eng yaxshi matematik tushuntirish (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slaydlar](https://archive.org/details/lecture2_202008) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (recurrence relation-larni va master teoremani o'z ichiga oladi): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat varaq](http://bigocheatsheet.com/) + +## Ma'lumotlar tuzilmasi (Data structures) + +- ### Massivlar + - Avtomatik ravishda o'lchamlarini o'zgartiradigan vektorni amalga oshirish. + - [ ] Tavsif: + - [Massivlar (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Chiziqli va ko'p o'lchovli massivlar(video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15:32 sekunddan boshlab ko'rishni boshlang) + - [Dinamik massivlar (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Vektorni bajaring (o'lchamini o'zgartiradigan massiv): + - [ ] Massivlar va ko'rsatgichlar(pointerlar) yordamida kod yozishni mashq qiling va massivning index-iga + o'tish uchun indexing o'rniga pointer matematikasini ishlating. + - [ ] Massivimiz elementlarini ushlab turadigan ichki (private) massiv + - int massivni elementlarni saqlash uchun ishlatsak bo'ladi, faqat uning xususiyatlaridan foydalanmaslik kerak + - 16 dan boshlang, agar boshlanayotgan son kattaroq bo'lsa 2 ning darajalarini ishlating(2 - 16, 32, 64, 128) + - [ ] size() - Massivdagi elementlar soni + - [ ] capacity() - massiv o'z ichiga olishi mumkin bo'lgan elementlar soni + - [ ] is_empty() - Massiv bo'sh yoki yo'qligini tekshirish + - [ ] at(index) - Ko'rsatilgan index-dagi massiv elementini qaytaradi. + Agar berilgan index massiv indexlaridan tashqarida bo'lsa xatolik qaytaradi. + - [ ] push(item) + - [ ] insert(index, item) - Ko'rsatilgan index-ga elementni qo'shadi, index-dagi eski element(lar)ni esa o'zidan o'ngga ko'chiradi + - [ ] prepend(item) - Massivning birinchi elementidan oldin yangi element qo'shish + - [ ] pop() - Massivning oxirgi elementini o'chiradi va o'chirilgan elemntni qaytaradi. + - [ ] delete(index) - Massiv elementini index bo'yicha o'chiradi, Qolgan elementlar chapga ko'chiriladi + - [ ] remove(item) - Berilgan qiymatni izlaydi va shu qiymatga ega index-larni barchasini o'chiradi + - [ ] find(item) - Berilgan qiymatni izlaydi va shu qiymatga ega birinchi index-ni qaytaradi, agar topilmasa -1 qaytaradi + - [ ] resize(new_capacity) // private function + - Massiv hajmi to'lganda, uni ikki baravar oshirish uchun o'lchamini o'zgartiring + - Massivda element olib tashlanganda, agar hajmi umumiy hajmning 1/4 ga teng bo'lsa, hajmini yarimiga o'zgartiring + - [ ] Ish vaqt xarajati (Time) + - O(1) Oxiriga qo'shish yoki olib tashlash (ko'proq joy ajratish uchun amortizatsiya qilingan), index, yoki o'zgartirish + - O(n) boshqa joyga qo'shish yoki olib tashlash + - [ ] Ish joy xarajati (Space) + - elementlar xotirada yonma yon joylashgan, shuning uchun yaqinlik yordam beradi + - bo'sh joy kerak = (massiv hajmi >= n) * element hajmi, agar 2n bo'lsa ham O(n) hisoblanadi + +- ### Linked Lists (O'zaro bog'langan ro'yxatlar) + - [ ] Tavsif: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismilarini ko'ring + - [ ] Linked List va Array(massiv)lar: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [nega linked list-dan foydalanmaganingiz maqul (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Yodda tuting: siz "pointer to pointer" nimaligini tushuningiz kerak: + (funksiyaga pointer berilganda, funksiya pointer ko'rsatib turgan adresni o'zgartirishi mumkin) + Bu sahifa "pointer to pointer" ni tushinish uchun foydali. Lekin bunday list traversal stilini tavsiya etmayman chunki kodni o'qish va uni maintain qilish qiyin. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Kodda yozaman (tail pointer va tail pointer-siz): + - [ ] size() - listdagi elementlar sonini qaytaradi + - [ ] empty() - agar list bo'sh bo'lsa true qaytaradi + - [ ] value_at(index) - n-inchi elementning qiymatini qaytaradi (0 dan boshlab) + - [ ] push_front(value) - listning boshiga element qo'shadi + - [ ] pop_front() - birinchi elementni olib tashlab va uni qiymatini qaytaradi + - [ ] push_back(value) - oxiriga element qoshadi + - [ ] pop_back() - oxiriga elementni olib tashlab va uni qiymatini qaytaradi + - [ ] front() - birinchi elementni qiymatini qaytaradi + - [ ] back() - oxiriga elementni qiymatini qaytaradi + - [ ] insert(index, value) - index-ni joyiga value-ni joylashtiradi + - [ ] erase(index) - index joyida turgan elementni o'chirib tashlaydi + - [ ] value_n_from_end(n) - oxiriga sanaganda n-inchi elementni qiymatini qaytaradi + - [ ] reverse() - listni teskari safga qo'yadi + - [ ] remove_value(value) - value qiymatiga ega bo'lgan birinchi elementni o'chirib tashlaydi + - [ ] Doubly-linked List + - [Tavsif (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Kodda yozish shart emas + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Kodda yozmayman. Massivada stackni yaratish juda oson. + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] linked-list dan foydalangan holda kodda yozaman (tail pointer bilan): + - enqueue(value) - qiymatni queue-ni oxiriga qo'yadi + - dequeue() - queue-ni boshidagi elementni o'chirib uni qiymatini qaytaradi + - empty() + - [ ] belgilangan o'lchamli massivdan foydalangan holda kodda yozaman: + - enqueue(value) - mavjud xotirani oxiriga qiymatni qo'yadi + - dequeue() - queue-ni boshidagi elementni o'chirib uni qiymatini qaytaradi + - empty() + - full() + - [ ] Ish xarajati: + - queue uchun linked-list ishlatib, list boshiga enqueue qilish va ohiridan dequeue qilish - bu yomon yondashuv + chunki har safar dequeue qilinganda O(n) vaqt ketadi + - enqueue: O(1) (amortized, linked list va massiv [probing]) + - dequeue: O(1) (linked list va massiv) + - empty: O(1) (linked list va massiv) + +- ### Hash table + - [ ] Videolar: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Onlayn kurslar: + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] tarqatilgan (distributed) hash table: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implement with array using linear probing + - [ ] 'Linear probing' ishlatgan holda amalga oshirish (massiv bilan) + - hash(k, m) - m bu hash table-ning o'lchami + - add(key, value) - agar key mavjud bo'lsa, qiymatini yangilaydi + - exists(key) + - get(key) + - remove(key) + +## Qo'shimcha bilimlar + +- ### Binary search + - [ ] [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) + - [ ] [batafsil](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Kodda yozish: + - binary search (tartiblangan integer massivlarida) + - rekursiv binary search + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - When it is appropriate to use it? + - How is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - In an OS, how it works? + - Can be gleaned from Operating System videos + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for 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/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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 + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/invite/icjf) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. + + +## Once you're closer to the interview + +- Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## Your Resume + +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed + + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book + - About to get to this part. Will update here once I've made my way through it + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - See videos below + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. "Netflix and skill" :P + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + +- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) + +- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University)](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) +- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - paper not available +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From b3a366f77e46d7a044974405484e96b3a59e271f Mon Sep 17 00:00:00 2001 From: khojarbukhaitmetova Date: Wed, 12 May 2021 10:38:22 +0500 Subject: [PATCH 260/857] Uzbek translation [2nd part] --- translations/README-uz.md | 939 +++++++++++++++++++------------------- 1 file changed, 468 insertions(+), 471 deletions(-) diff --git a/translations/README-uz.md b/translations/README-uz.md index 28bc132a9c..fa13fd9206 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -53,7 +53,7 @@ Asl versiyasi: [Inglizcha](../README.md) Bu mening web dasturchisi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam. ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Bu proyekt **yangi dasturchi injinerlar** uchun juda forydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dastur injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bulganlar uchun foydali. +Bu proyekt **yangi dasturchi injinerlar** uchun juda forydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dastur injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bo'lganlar uchun foydali. Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dastur injinerlikni (software engineer) oddiy dasturchilikdan (software/web developer) farqli deb kuradi va ular computer science bilimini talab qiladi. @@ -148,7 +148,7 @@ Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, un - [Computer Security](#computer-security) - [Garbage collection](#garbage-collection) - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [Xabar almashish, Serializatsiya, va Queue Tizimlar](#messaging-serialization-and-queueing-systems) - [A*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) @@ -175,7 +175,7 @@ Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, un - [Discrete math](#discrete-math) - [Machine Learning](#machine-learning) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) +- [Video Seriyalar](#video-series) - [Computer Science Courses](#computer-science-courses) - [Papers](#papers) @@ -674,30 +674,30 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) -## Trees +## Trees (daraxtlar) -- ### Trees - Notes & Background +- ### Trees - Eslatmalar & Kelib chiqishi - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basic tree construction - - traversal - - manipulation algorithms - - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS notes: - - level order (BFS, using queue) - - time complexity: O(n) - - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS notes: - - time complexity: O(n) - - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) + - tree-ning asosiy tuzilmasi + - traversal (o'tish) + - manipulyatsiya algoritmlari + - [ ] [BFS(breadth-first search) va DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS eslatmalari: + - level order (BFS, queue ishlatgan holda) + - ish vaqti xarajati (time complexity): O(n) + - ish joyi xarajati (space complexity): eng yaxshisi: O(1), eng yomoni: O(n/2)=O(n) + - DFS eslatmalari: + - ish vaqti xarajati: O(n) + - ish joyi xarajati: + eng yaxshisi: O(log n) - tree ning o'rtacha balandligi + eng yomoni: O(n) - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) +- ### Binary search tree lar: BST lar + - [ ] [Binary Search Tree Tahlili (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Kirish (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) @@ -710,21 +710,21 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max + - [ ] Kodda yozish: + - [ ] insert // qiymatni treega joylaydi + - [ ] get_node_count // treedagi elementlar sonini qaytaradi + - [ ] print_values // treedagi hamma qiymatlarini, mindan maxgacha, yozib chiqaradi - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_in_tree // true qaytaradi agar qiymat treeda mavjud bo'lsa + - [ ] get_height // treeni balandligini qaytaradi (bitta node-ning balandligi 1 xisoblanadi) + - [ ] get_min // treedagi minimum qiymatni qaytaradi + - [ ] get_max // treedagi maximum qiymatni qaytaradi - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] get_successor // berilgan qiymatdan keyingi katta qiymatni qaytaradi, agar bunday qiymat bo'lmasa -1 qaytaradi - ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) + - tree (daraxt) dek tasvirlansada, xotirada ketma ket tarzida saqlanadi (massiv, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) @@ -733,39 +733,39 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort - boshiga sakraydi (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: + - [ ] max-heap ni kodda yozish: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [ ] sift_up - insert operatsiyasi uchun kerak + - [ ] get_max - o'chirmagan holda, max elementni qaytaradi + - [ ] get_size() - mavjud elementlar sonini qaytaradi + - [ ] is_empty() - true qaytaradi agar heap bo'sh bo'lsa + - [ ] extract_max - o'chirgan holda, max elementni qaytaradi + - [ ] sift_down - extract_max operatsiyasi uchun kerak + - [ ] remove(i) - x indeksda joylashgan elementni o'chiradi + - [ ] heapify - massivdan heap yaratadi, heap_sort operatsiyasi uchun kerak + - [ ] heap_sort() - tartiblanmagan massivni olib, max heap yoki min heap dan foydalangan holda uni joyida tartiblangan massivga aylantiradi + +## Sorting (Saralash) + +- [ ] Eslatmalar: + - sorting bilan ishlang va eng yaxshi/eng yomon holatlarni, har birining o'rtacha murakkabligini biling: + - bubble sort ishlatmang - agar n <= 16 bo'lmasa, O(n^2)-bu juda yomon + - [ ] Algoritmlarni saralashdagi barqarorlik (stability) ("Quicksort barqarormi?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [ ] Linked list-da qaysi algoritmlardan foydalanish mumkin? Qaysi massivlarda? Qaysilarini ikkalasida ham ishlatsa bo'ladi? + - Men linked listni saralashni maslahat bermayman, lekin merge tartiblash algoritmini qilsa bo'ladi. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable +- Heapsort uchun yuqorida berilgan ma'lumotlar tuzilmasini ko'ring, Heap sort ajoyib lekin barqaror emas. - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) @@ -794,23 +794,23 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) -- [ ] Merge sort code: +- [ ] Merge sort kodda: - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: +- [ ] Quick sort uchun kod: - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above +- [ ] Kodda yozish: + - [ ] Mergesort: O(n log n) o'rtacha va eng yomon holat + - [ ] Quicksort O(n log n) o'rtacha + - Selection sort va insertion sort-larning ikkalalarini ham o'rtacha va eng yomon holati O(n^2) bo'ladi + - Heapsort uchun yuqoridagi Heap ma'lumotlar tuzilmasini ko'ring -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) +- [ ] Quyidagilar talab qilinmaydi lekin shaxsan men ularni tavsiya qilaman: + - [ ] [Sedgewick - Radix Sorts (6 ta video)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) @@ -823,28 +823,27 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - -## Graphs +Xulosada, vizual tarzda ma'lumot olish uchun [15 ta saralash algoritmlari](https://www.youtube.com/watch?v=kPRA0W1kECg). +Agar sizga ushbu mavzu bo'yicha batafsil ma'lumot kerak bo'lsa, "Saralash" bo'limiga qarang [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects) -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +## Graflar -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix +Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shuning uchun tree va tartiblash algoritmlari kabi bu qism yetarlicha uzun +- Eslatmalar: + - grafni xotirada ushlashni 4ta asosiy yo'li bor: + - obyektlar va pointerlar + - adjacency matritsa - adjacency list - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none + - Har bir usulni va ularni yaxshi & yomon tomonlarini o'rganib chiqing + - BFS va DFS - bu algoritmlarini tezligini (time & space complexity), yaxshi & yomon tomonlarini, va ularni kodda yozishni biling + - Masala berilganda, birinchi grafga asoslangan yechim qidiring. Bunday yechim ko'rmasangiz, boshqa yechimlarni qidiring -- [ ] MIT(videos): +- [ ] MIT(videolar): - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -- [ ] Skiena Lectures - great intro: +- [ ] Skiena maruzalari - ajoyib intro: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) @@ -852,7 +851,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Graphs (review and more): +- [ ] Graflar (tahlil va boshqa ko'p narsalar): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -867,44 +866,44 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- Full Coursera Course: +- To'liq Coursera kursi: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix +- Kodda yozaman: + - [ ] DFS, adjacency list bilan (recursive) + - [ ] DFS, adjacency list bilan (iterative, stackdan foydalangan holda) + - [ ] DFS, adjacency matritsa bilan (recursive) + - [ ] DFS, adjacency matritsa bilan (iterative, stackdan foydalangan holda) + - [ ] BFS, adjacency list bilan + - [ ] BFS, adjacency matritsa bilan - [ ] single-source shortest path (Dijkstra) - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - DFS-ga asoslangan algoritmlar (Aduni videolarini tepada ko'ring): + - [ ] cycle borligini tekshirish (topological sort uchun kerak, chunki boshlashdan oldin cycle bor yoki yo'qligini tekshiramiz) - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph + - [ ] grafdagi bog'liq componentlarni sanash (connected components) + - [ ] mustahkam bog'liq componentlarni sanash (strongly connected components) + - [ ] bipartite grafni aniqlash -## Even More Knowledge +## Yanada ko'proq bilim -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: +- ### Rekursiya + - [ ] rekursiya & backtracking-ga oid Stanford - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - When it is appropriate to use it? - - How is tail recursion better than not? + - Rekursiyani qachon ishlatish yaxshi? + - Nega tail rekursiya (tail recursion) yaxshi narsa? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) -- ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see +- ### Dinamik dasturlash (Dynamic Programming) + - Katta ehtimollik bilan sizni intervyuingizda dinamik dasturlash masalalari bo'lmaydi, lekin shunday masalani dinamik dasturlashga mosligini aniqlay olishni o'rganish arzigulik + - Bu mavzu qiyin bo'lishi mumkin. Chunki har bir DP bilan yechsa bo'ladigan masala uchun "recursion relation" o'ylab topish kerak va bu narsa qiyin bo'lishi mumkin + - kerakli patternni tushinib yetguncha ko'p DP masalalarni ko'rib chiqishni maslahat beraman + - [ ] Videolar: + - Skiena videolarini kuzatib tushinish qiyin bo'lishi mumkin chunki u ko'rish uchun juda kichik bo'lgan doskadan bazida foydalanadi - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) @@ -912,9 +911,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): + - [ ] DP masalalarini ro'yxati (har biri qisqa): [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: + - [ ] Yale ma'ruza yozuvlari: - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) @@ -927,11 +926,11 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Object-Oriented Programming - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] SOLID OOP Printsiplari: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) -- ### Design patterns +- ### Dizayn patternlar - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: + - [ ] Quyidagi patternlarni o'rganing: - [ ] strategy - [ ] singleton - [ ] adapter @@ -954,25 +953,26 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - "Design Patterns: Elements of Reusable Object-Oriented Software" kitobi dizayn patternlar uchun defakto resursligini bilaman, lekin Head First kitobi yangi o'rganuvchilar uchun ancha yaxshiroq. - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) +- ### Kombinatorikalar & Ehtimollik nazariyasi + - [ ] [Math Skills: Faktorial, Permutatsiya va kombinatsiyalarni qanday topish haqida(video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Ehtimollik nazariyasi (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: Ko'proq ehtimollik nazariyasi va Markov zanjirlari (Markov Chains) (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. + - Kurs tartibi: + - [ ] [Ehtimollik nazariyasining asoslari](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Faqat videolar - 41 (har biri qisqa va tushunishga oson): + - [ ] [Ehtimollik nazariyasi haqida (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP to'liq va taxminiy algoritmlari + - Sotuvchi sotuvchi va ryukzak muammosi kabi NP-ning eng mashhur klasslari haqida bilish, + va intervyu beruvchisi ularni niqob bilan so'raganda ularni taniy olish. + + - NP-complete nima ekanligini biling. - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) @@ -986,47 +986,47 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - Piter Norvig sotuvchi sayohatchining sayohatchi masalasining maqbul yechimlarini muhokama qiladi: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. + - 1048 - 1140 sahifalari CLRS da Agar bu sizda bo'lsa. -- ### Caches - - [ ] LRU cache: +- ### Keshlar + - [ ] LRU keshi haqida: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: + - [ ] CPU keshi haqida: - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 +- ### Processlar va Threadlar + - [ ] Computer Science 162 - Operatsion tizimlar (25ta video): + - processlar va threadlar uchun 1-chidan 11-chigacha bo'lgan videolarni ko'ring - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - Difference between processes and threads - - Processes - - Threads - - Locks - - Mutexes - - Semaphores - - Monitors - - How they work? + - o'z ichiga oladi: + - Processlar, Threadlar, Concurrency muammolari + - processlar va threadlarni bir biridan farqi + - Processlar + - Threadlar + - Locklar + - Mutexlar + - Semaphorelar + - Monitorlar + - Ular qanday ishlaydi? - Deadlock - Livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors + - CPU faoliyati, interruptlar, context almashtirish (context switching) + - Ko'p yadrolik processorlar bilan ishlaydigan zamonaviy concurrency constructlari - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware? - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): + - Process uchun kerakli resurslar (xotira: kod, statik xotira, stack, heap, va hamda file descriptorlar, i/o) + - Thread uchun kerakli resurslar (tepadagilarni (stackdan tashqari) bitta processda bo'lgan boshqa threadlar bilan baham ko'radi, lekin har birini o'zini pc, stack counter, registerlar, and stacklari bor) + - Forklash bu aslida "copy on write" operatsiya. Bu degani fork qilingan processdan nusxa ko'chirish fork process birinchi marta xotiraga yozganda bo'ladi. + - Context almashtirish + - Operatsion tizm va uni ushlab turgan hardware context almashtirishni qanday qiladi? + - [ ] [threads in C++ (to'plam - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] Pythonda concurrency (videolar): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -1035,12 +1035,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection +- ### Testlash (Testing) + - Quyidagilarni o'z ichiga oladi: + - unit test qanday ishlaydi + - mock obyektlar nima + - integration testing nima + - dependency injection nima - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) @@ -1048,13 +1048,13 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ ] [Qanday qilib test yozish](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - - In an OS, how it works? - - Can be gleaned from Operating System videos + - OS da bu qanday ishlaydi? + - Operatsion tizim videolaridan o'rganish mumkin -- ### String searching & manipulations +- ### Stringni izlash va manipulyatsiyalar us - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) @@ -1064,29 +1064,28 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + Agar bu mavzuda ko'proq ma'lumot olmoqchi bo'lsangiz, "String Matching" bo'limini ko'ring [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects). -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path - - I read through code, but will not implement +- ### Trie-lar + - Trie-larning turli xili mavjuddir.Bazilarida prefiks bor bo'lsa bazilarida esa yo'q, va bazilari yo'lni kuzatish uchun bitlar o'rniga string ishlatishadi. + - Men kodini ko'rib chiqaman, lekin uzim yozmayman - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: + - [ ] Qisqa kurslar: - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [MIT, Advanced Data Structures, Strings (taxminan yarim yo'lda juda tushunarsiz bo'lishi mumkin) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) +- ### Floating Point Numbers + - [ ] oddiy 8-bitli: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bitli: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) @@ -1096,12 +1095,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. + - Kernel dasturchilari uchun juda texnik muloqot. Agar ko'pini tushunmasangiz, tashvishlanmang + - Birinchi yarmi yetarli bo'ladi. - ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - Otherwise, this is just good to know + - **Agar siz networkingda tajribaga ega bo'lsangiz yoki reliability injineri yoki operations injineri bo'lishni xohlasangiz, shu mavzuda savollarni kuting** + - Agar bunday bo'lmasa, baribir bularni bilib qo'ygan yaxshi - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) @@ -1112,43 +1111,42 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] Sockets: + - [ ] Soketlar: - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) -## System Design, Scalability, Data Handling - -**You can expect system design questions if you have 4+ years of experience.** +## Tizim Dizayni, Scalability, Ma'lumotlar bilan ishlash -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: +**agar sizda 4+ yil ish tajribasi bo'lsa intervyularda sizga tizim dizayn savolli tushadi** +- Scalability va Tizim Dizayn juda katta mavzular hisoblanadi. + Chunki katta ko'lamni traffikni ko'tara oladigan software/hardware- ni dizayn qilish uni ko'p qirralarini e'tiborga olishni talab qiladi + Buni ustida bir talay vaqt o'tkazasiz +- Qirralar: - Scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - System design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - Katta miqdordagi data to'plamlarni bitta qiymatga agregatlash + - bitta data to'plamni boshqasiga o'tkazish + - Haddan tashqari katta miqdordagi data bilan ishlash + - Tizim dizayn + - funksional to'plami + - interfeyslar + - klaslar ierarxiyasi + - malum bir cheklovlar ostida tizimni dizayn qilish + - soddaligi va mustahkamligi + - afzalliklar va kamchiliklar o'rtasidagi muvozanat + - ijro tahlili (performance analysis) va optimallashtirish +- [ ] **Bu yerdan boshlang**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - Bu yerda juda ko'p resurslar bor. Berilgan maqolalarni va namunalarni ko'rib chiqing. Bir ikkitasini pastda topasiz - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] Consensus Algorithms: +- [ ] Consensus algoritmlari: - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) @@ -1156,9 +1154,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. + - Bularni hammasi kerak bo'lmaydi. Sizi qiziqtirgan bir ikkitasini tanlang. - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: + - [ ] Qisqa seriyalar: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) @@ -1205,35 +1203,35 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Servislarni bir biriga bog'laydigan texnologiyalar haqida o'rganish uchun pastroqdagi "Xabar almashish, Serializatsiya, va Queue Tizimlar" qismni ko'ring - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - Bundanda ko'proq narsa o'rganish, [Video Seriyalar](#video-series) seksiyadagi "Ulkan Datasetlarni Qazish" video seriyasini ko'ring +- [ ] Tizim dizayn qilish jarayonini mashq qilish: Bu yerda qog'ozda yozib yechish uchun bir nechta misollar bor. Har birini real proyektlarda qanday yechishgani haqida maqolalari ham bor: + - tahlil: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - Define the use cases, with interviewer's help - - Suggest additional features - - Remove items that interviewer deems out of scope - - Assume high availability is required, add as a use case - 2. Think about constraints: - - Ask how many requests per month - - Ask how many requests per second (they may volunteer it or make you do the math) - - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second - - Total storage required over 5 years - - How much data read per second - 3. Abstract design: - - Layers (service, data, caching) - - Infrastructure: load balancing, messaging - - Rough overview of any key algorithm that drives the service - - Consider bottlenecks and determine solutions - - Exercises: + - jarayon: + 1. Muammo va uning qamrov doirasini tushuning + - Intervyuverni yordami bilan usecase-larni belgilab oling + - Qo'shimcha funksional taklif qiling + - Intervyuver qamrov doirasidan tashqarida deb bilgan punktlarni olib tashlang + - High availability kerak deb biling va uni usecase-lar qatoriga qo'shing + 2. Checklovlar haqida o'ylang + - Oyiga nechta requestlar bo'lishini so'rang + - Sekundiga nechta requestlar bo'lishini so'rang (intervyuver javob berishi yoki o'zizdan xisoblashni so'rashi mumkin) + - O'qishlar (reads) va yozishlar (writes) foizini baholang + - Baholashda 80/20 qoidasini yodda tuting + - Sekundiga qancha data yoziladi + - 5 yil davomida jami qancha xotira kerak bo'ladi + - Sekundiga qancha data o'qiladi + 3. Abstrakt dizayn: + - Qatlamalar (servis, data, kesh) + - Infrastruktura: load balancing, xabar almashish (messaging) + - Servis ishlashi uchun kerak bo'lgan muhum algoritmlarni tahlili + - Bottleneck-larni e'tiborga oling va ularga yechim toping + - Mashqlar: - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) @@ -1245,84 +1243,84 @@ Graphs can be used to represent many problems in computer science, so this secti --- -## Final Review +## Yakuniy tahlil - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + Bu qismda ko'p muhim tushunchalarni tez qaytarib olish uchun kerak bo'ladigan qisqa videolar bor -- [ ] Series of 2-3 minutes short subject videos (23 videos) +- [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (18 video): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- -## Coding Question Practice +## Coding bo'yicha savollar ustida ishlash -Now that you know all the computer science topics above, it's time to practice answering coding problems. +Yuqoridagi barcha "computer science" mavzularini bilb oldingiz, endi coding bo'yicha masalalarga javob berishni mashq qilish vaqti keldi. -**Coding question practice is not about memorizing answers to programming problems.** +**Coding masalalarini yechishga tayyorlanish bu javoblarni yodlab qolish emas ** -Why you need to practice doing programming problems: -- Problem recognition, and where the right data structures and algorithms fit in -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for your solutions -- Testing your solutions +Masalalar yechishni mashq qilish nima uchun zarur: +- Muammoni aniqlash va kerakli ma'lumotlar tuzilmalari va algoritmlari mos keladigan joyni topa olish +- Masala uchun kerakli talablarni to'plash +- Xuddi intervyudagi kabi muammoni yechish uchun qadam baqadam yurish +- Doskada yoki qog'ozda kod yozish, kompyuterda emas +- Yechimlarizga ish joyi xarajati va ish vaqti xarajatini aniqlash +- Yechimlaringizni testlash -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: +Suhbatda metodik, kommunikativ muammolarni hal qilish uchun ajoyib kirish qismi mavjud. +Siz buni dasturlash uchun intervyu kitoblaridan ham topa olishingiz mumkin +lekin men buni ular ichida juda foydali deb topdim: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. I use a pencil -and eraser. +Uyingizda doska yo'qmi? Bu tabiy. Men o'zgacha insonman, menda kotta doskam bor. Doska o'rniga, rasm chizish uchun +mo'ljallangan daftar ishlating. Shunda divanda o'tirib, mashq qilishingiz mumkin. Bu mening "divanga mo'ljallangan doskam". +Men rasmda qalamimni ham qo'shganman qulaylik uchun. Agar siz ruchkadan foydalansangiz, o'chirish istagi paydo bo'lishi mumkin. +Tez Chalkashib ketadi. Shuning uchun men qalam va o'chirg'ichdan foydalanaman. -![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) +![mening divan uchun doskam](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -Supplemental: +Qo'shimcha: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) -**Read and Do Programming Problems (in this order):** +**Dasturlash masalalarini o'qing va bajaring (ketma ketlikda):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java + - C, C++ va Java da javoblar - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java + - Javada javoblar -See [Book List above](#book-list) +Ko'ring [Book List above](#book-list) -## Coding exercises/challenges +## Coding mashqlar/savollar -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +Miyyangiz og'rigunicha o'rganib bo'lganizdan keyin o'sha miyyangizni ishga soling +Har kuni coding savollar ishlang, qancha ko'p bo'lsa shuncha yaxshi - [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/) -Coding Interview Question Videos: +Coding Intervyu Savollar Videolari: - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - - Super for walkthroughs of problem solutions + - Qadam baqadam yechimlar tahlili uchun juda zo'r - [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 + - Yechimlar va ularni kodi uchun yaxshi tushuntirish + - Qisqa vaqtda ularni bir qanchasini ko'rib tugatsangiz bo'ladi - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) -Challenge sites: +Mashq saytlari: - [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 + - Mening sevimli saytim. 1-2 oy tayorgarlik paytida obuna puliga arzidi. - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - - See Nick White Videos above for short code-throughs + - Qisqa kod tahlillari uchun tepadagi Nick White videolarini ko'ring - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) @@ -1331,7 +1329,7 @@ Challenge sites: - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com) -Language-learning sites, with challenges: +Til o'rganish saytlari, mashqlari bilan - [Codewars](http://www.codewars.com) - [Codility](https://codility.com/programmers/) - [HackerEarth](https://www.hackerearth.com/) @@ -1339,122 +1337,122 @@ Language-learning sites, with challenges: - [Codechef](https://www.codechef.com/) - [Codeforces](https://codeforces.com/) -Challenge repos: +Mashqlar repolari - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) -Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies -- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. +Mock intervyular +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - Men buni ishlatdim va u menga phone screen va on-site intervyularga ruhan tayyorladi +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - foydalanuvchilararo intervyuga tayyorlanish modeli +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - kandidatlarga tech kompaniyalar bilan bo'ladigan bir nechta intervyulardan sakrab o'tishga ham yordam beradi +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANGdan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari -## Once you're closer to the interview +## Intervyuga yaqin kelganizda -- Cracking The Coding Interview Set 2 (videos): +- Cracking The Coding Interview Set 2 (videolar): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) -## Your Resume +## Sizni rezyumeingiz -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- 'Cracking The Coding Interview' kitobini Resume prep qismini va 'Programming Interviews Exposed' kitobini orqasini ko'ring -## Be thinking of for when the interview comes +## Intervyuga yaqin kelganda quydagilar haqida o'ylab yuring -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. +Sizdan so'rashlari mumkin bo'lgan 20 tacha intervyu savollarini o'ylab toping (pastagi savollarga o'xshagan). Har biri uchun 2-3 javobiz bo'lsin. +Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? +- Nega bu ishni xohlayapsiz? +- Siz yechgan mushkul masala/muammo? +- Qanday qiyinchiliklar bo'lgan? +- Siz ko'rgan eng yaxshi/eng yomon dizaynlar? +- Mavjud produktni takomillashtirish uchun g'oyalar? +- Qanday holda yaxshi ishlaysiz, yolg'iz yoki jamoda? +- Sizni qanday ko'nikmalaringiz/mahoratlaringiz bu ish o'rinida katta foyda bo'ladi va nega? +- [x ishda / y proyektda] sizni eng ko'p zavqlantirgan narsa? +- [x ishda / y proyektda] siz duch kelgan eng katta muammo? +- [x ishda / y proyektda] siz duch kelgan eng mashaqqatli bug? +- [x ishda / y proyektda] siz nima o'rgandingiz? +- [x ishda / y proyektda] siz nimani yaxshiroq qilgan bo'lardingiz? -## Have questions for the interviewer +## Intervyuver uchun savollaringizni tayyorlab qo'ying - Some of mine (I already may know answer to but want their opinion or team perspective): + Mening savollarimning bazilari (Bu savollarga javobni bilsam ham ularni fikrlarini yoki jamoaviy nuqtai nazarlarini bilishni xoxlayman): -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is work/life balance? +- Jamoangiz qanchalik katta? +- Sizning dasturlash siklingiz qanday tarzda o'tadi? waterfall/sprintlar/ yoki agile ishlatasizmi? +- Deadline-lar ga shoshilish odatiy holmi? Yoki erkinlik ko'proqmi? +- Jamoangizda qarorlar qanday qabul qilinadi? +- Haftasiga nechi marta jamooaviy meeting-lar tashkil etiladi? +- Sizning ishdagi atmosferangiz sizga konsentratsiya qilishga yordam beradimi? +- Hozirda nima ustida ishlayapsizlar? +- Bunda sizga nima ko'proq yoqadi? +- Ish hayoti qanday tarzda o'tadi? +- Ish va shaxsiy hayot balansi qanday yo'lga qo'yilgan? -## Once You've Got The Job +## Ishga qabul qilinganingizdan so'ng -Congratulations! +Tabriklaymiz! -Keep learning. +O'rganishda davom eting. -You're never really done. +Hech qachon tugatgan bo'lmaymiz. --- ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. + Ushbu bandning ostidagi hamma narsalar ixtiyoriydir. + Ularni o'rganish orqali siz ko'proq CS tushunchalariga ega bo'lasiz va har qanday dasturiy injinerlik + ishi uchun yaxshi tayyorlangan bo'lasiz. Siz ancha mukammal dasturchi darajasiga erishasiz. ***************************************************************************************************** ***************************************************************************************************** --- -## Additional Books +## Qo'shimcha kitoblar - These are here so you can dive into a topic you find interesting. + O'zingizni qiziqtirgan mavzuga chuqur sho'ng'ishingiz uchun resurslar - [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - An oldie but a goodie + - Eski lekin yaxshi - [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - A modern option + - Zamonaviy variant - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - A gentle introduction to design patterns + - Dizayn patternlarga yengil kirish - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - AKA the "Gang Of Four" book, or GOF - - The canonical design patterns book + - Shuningdek, "Gang Of Four" yoki "GOF" nomi bilan tanilgan + - Qoidaga aylangan dizayn pattern kitobi - [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview - - This book has 2 parts: - - Class textbook on data structures and algorithms - - Pros: - - Is a good review as any algorithms textbook would be - - Nice stories from his experiences solving problems in industry and academia - - Code examples in C - - Cons: - - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - - Algorithm catalog: - - This is the real reason you buy this book - - About to get to this part. Will update here once I've made my way through it - - Can rent it on kindle - - Answers: + - Qaytarish uchun va muammoni tanib olish uchun + - Algoritm katalog qismi intervyularda tushadigan savollardan ancha qiyin + - Bu kitob ikki qismdan iborat: + - Data strukturalar va algoritmlar bo'yicha sinf darslik kitobi + - Yaxshi taraflari: + - Boshqa algoritm sinf darsliklari kabi qaytarish uchun yaxshi + - Ishda va akademiyada bo'lgan o'zining masala yechish tajribasidan yaxshi hikoyalar bor + - Kod namunalari C da + - Yomon taraflari: + - CLRS kabi zich va tushinishga qiyin bo'lishi mumkin, va hatto bir xil mavzularga CLRS yaxshiroq bo'lishi mumkin + - Bazi narsalar yetarlicha yoritilmagani uchun, 7, 8, 9-boblar tushunishga qiyin (Ehtimol menikidan aqlliroq kalla kerakdir) + - Meni noto'g'ri tushunmang: Menga Skiena, uni o'qitish uslubi, va mannerizmi yoqadi, lekin men Stony Brook universitetdagilar kabi emasman + - Algoritm katalogi: + - Bu kitobni sotib olishingizni asl sababi + - Bu qismga yetib qoldim. Tugatganimdan so'ng bu yerni yangilab qo'yaman + - kindleda ijaraga olsangiz bo'ladi + - Javoblar - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like - - These chapters are worth the read to give you a nice foundation: + - Kitob 2004-yilda nashr etilgan va bir oz eskirgan, lekin kompyuterni qisqa vaqta tushunish uchun zo'r resurs + - Muallif [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) ni kashf etgan. Shunday ekan, HLA haqida gaplar va namunalarga skeptik qarang. Keng ishlatilmaydi lekin assembly qanday ko'rinishini ko'rsatadigan namunalar + - Bu boblar sizga kompyuterni tushunishda yaxshi bilim poydevori bo'ladi - Chapter 2 - Numeric Representation - Chapter 3 - Binary Arithmetic and Bit Operations - Chapter 4 - Floating-Point Representation @@ -1465,33 +1463,33 @@ You're never really done. - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - - AKA CLR, sometimes CLRS, because Stein was late to the game + - **Muhim:** Bu kitobni o'qish siz uchun cheklangan qiymatga ega. Bu kitob algoritmlar va data strukturalar tahlili uchun zo'r, lekin yaxshi kod yozishni o'rgatmaydi. O'zingiz to'g'ri yechim topishingiz kerak bo'ladi + - CLR nomi bilan ham tanilgan (bazida CLRS chunki Stein keyinroq kitob mualliflariga qo'shilgan) - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - - For a richer, more up-to-date (2017), but longer treatment + - Nisbatan ancha boyroq va yangiroq (2017), lekin uzunroq yozilgan - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture + - Boshlang'ich bir ikki boblari muammolarga ajoyib yechimlar taqdim qiladi, lekin bu shunchaki kirish. + Bu kitob dastur dizayn va arxitekturasi uchun qo'llanma -## Additional Learning +## Qo'shimcha o'rganish - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. + Men bularni har tomonlama rivojlangan dasturchi bo'lishingizga yordam berish va ba'zi texnologiyalar va algoritmlar xabardor bo'lishingiz uchun qo'shdim + texnologiyalar va algoritmlar, Natijada sizda kattaroq asboblar qutisi bo'ladi. -- ### Compilers +- ### Kompilyatorlar - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) -- ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor +- ### Emacs va vi(m) + - Unix-ga asoslangan kod muharriri (code editor) bilan tanishib chiqing - vi(m): - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: + - 4 ta videolar to'plami: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) @@ -1499,7 +1497,7 @@ You're never really done. - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - 3 ta videolar to'plami: - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) @@ -1507,8 +1505,8 @@ You're never really done. - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) -- ### Unix command line tools - - I filled in the list below from good tools. +- ### Unix uchun buyruqlar ro'yxati + - Quyidagi ro'yxatni yaxshi vositalardan to'ldirdim. - bash - cat - grep @@ -1521,15 +1519,15 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Ma'lumot nazariyasi (videolar) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - More about Markov processes: + - Markov protseslari haqida batafsil: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below + - Batafsil quyida MIT 6.050J-ning Ma'lumot va Entropiya seriyalarida ko'ring -- ### Parity & Hamming Code (videos) +- ### Parity va "Hamming Code" (videolar) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - Hamming Code: @@ -1537,21 +1535,21 @@ You're never really done. - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ### Entropy - - Also see videos below - - Make sure to watch information theory videos first +- ### Entropiya + - Quyidagi videolarni ko'ring + - Avval ma'lumot nazariyasi videolarini tomosha qiling - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography - - Also see videos below - - Make sure to watch information theory videos first +- ### Kriptografiya + - Quyidagi videolarni ham ko'ring + - Avval ma'lumot nazariyasi videolarini tomosha qiling - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression - - Make sure to watch information theory videos first - - Computerphile (videos): +- ### Kompressiya + - Avval ma'lumot nazariyasi videolarini tomosha qiling + - Computerphile (videolar): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) @@ -1561,7 +1559,7 @@ You're never really done. - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Computer Security +- ### Kompyuter xavfsizligi - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) @@ -1576,16 +1574,16 @@ You're never really done. - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- ### Garbage collection +- ### Chiqindi yig'ish (Garbage collection) - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ### Parallel Programming +- ### Paralel dasturlash - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### Messaging, Serialization, and Queueing Systems +- ### Xabar almashish, Serializatsiya, va Queue Tizimlar - [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [Protocol Buffers](https://developers.google.com/protocol-buffers/) @@ -1620,7 +1618,7 @@ You're never really done. - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - m-ta bitlik va k-ta hashlash funksiyalik Bloom filterda elementni joylash va tekshirish O(k) ish vaqtini oladi - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) @@ -1629,175 +1627,174 @@ You're never really done. - ### HyperLogLog - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) -- ### Locality-Sensitive Hashing - - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same +- ### Locality-Sensitive Hashlash + - dokumentlarni o'xshashligini tekshirish uchun ishlatiladi + - MD5 va SHA teskarisi. MD5 va SHA esa dokumentlar/stringlarni bir xilligini tekshirish uchun ishlatiladi - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) -- ### van Emde Boas Trees +- ### van Emde Boas Tree-lari - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [MIT Lecture Notes](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) -- ### Augmented Data Structures +- ### Kattalashtirilgan Data Strukturalari - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) -- ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena +- ### Balanced search tree-lar + - Kamida bitta balanced binary tree turini biling (va uni qanday yozishni ham biling) + - "Balanced search tree-lar orasida, AVL va 2/3 tree-lar hozir o'tmishga aylangan, va red-black tree-lar ancha mashhurroq. + Xususan qiziqarli bo'lgan o'z-o'zini tashkil qiladigan data struktura bu splay tree. Splay tree + har safar key so'ralganda uni rotatsiyadan foydalangan holda root-ga o'tkazadi." - Skiena - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code - - Splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - Search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets + - Bulardan men splay tree-ni kodda yozishni tanladim. Bilishimcha intervyuda sizdan balanced search tree-ni + yozishni so'rashmaydi. Lekin men baribir yozishni xohladim va tan olaylik splay tree-lar zo'r. + Men juda ko'p red-black tree kodlarini ham o'qidim. + - Splay tree: insert, search, delete funksiyalari + Agar red-black tree-ni yozadigan bo'lsangiz faqat shularni yozishga harakat qiling: + - Search va insertion funksiyalari, delete-ni tashlab ketavering + - Men B-tree-lar haqida ko'proq o'rganmoqchiman chunki ular katta data to'plamlari bilan juda ko'p ishlatiladi - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - **AVL tree-lar** + - Amalda: + Meni fikrimda AVL tree-lar amalda uncha ishlatilmaydi. Lekin men qayerda ishlatilishi mumkinligini ayta olaman: + AVL bu search, insertion, va removal funksiyalarini O(log n) tezligida qila oladigan yana bitta struktura. AVL tree-lar + red-black tree-larga nisbatan ancha uzil-kesil balanslangan. Shuning uchun insertion va removal sekin, lekin search tezroq. + Shu sababli u bir marta qurilib qayta-qayta yuklanib ishlatiladigan data strukturalari uchun juda qo'l keladi. + Masalan: til lug'atlari yoki dastur lu'gatlari (assembler va interpreter opcode-lari) - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc + - Amalda: + Splay tree-lar asosan cache-lar, memory allocator-lar, router-lar, garbage collector-lar, data compressiya, + rope data struktura, Windows NT, va hokazo componentlarni qurish uchun ishlatiladi - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. + - MIT ma'ruza: Splay Trees: + - Juda ko'p matematika aralashgan, lekin aniq oxirgi 10 minutini ko'ring - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - **Red/black trees** - - These are a translation of a 2-3 tree (see below). - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - **Red/black tree-lar** + - Bular 2-3 tree-ni tarjimasi (pastni ko'ring) + - Amalda: + Red-black tree-lar insertion, deletion va search uchun eng-yomon ish vaqtini kafolatlaydi. + Uni shu xususiyati vaqt juda muhim bo'lgan dasturlarda foydali qiladi. Hamda eng-yomon vaqtni + kafolat qiladigan data strukturalarni foydali bir qismi bo'lib ishlaydi; + masalan, kompyutatsion geometriyada ishlatiladigan ko'p data strukturalar red-black tree-larga asoslanishi mumkin + va hozirgi Linux kernellarda ishlatiladigan "Completely Fair Scheduler" red-black tree ishlatadi. Javaning 8 versiyasida, + oldin bir xil bo'lgan elementlari saqlash uchun LinkedList ishlatgan HashMap data strukturasi o'zgartirilib + hozirda Red-Black tree ishlatadi + - [Aduni - Algorithms - Lecture 4 (link videoni kerakli joyidan boshlaydi) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - **2-3 search tree-lar** + - Amalda: + 2-3 tree-lar sekinroq ishlaydigan search operatsiyasi hisobiga juda tez insert operatsiyasiga ega. + - 2-3 tree-lar kamdan-kam ishlatiladi chunki uni kodda yozish uchun har xil node-lar kerak bo'ladi. O'rniga, odamlar Red Black tree-larni ishlatadi - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - **2-3-4 Tree-lar (shuningdek 2-4 tree nomi bilan tanilgan)** + - Amalda: + Har 2-4 tree uchun unga mos elementlari bir xil tartibda bo'lgan red-black bor. Insertion va deletion funksiyalari red-black + tree-dagi color-flipping va rotation funksiyalariga tengma-tengdir. Bu xususiyati uni red-black tree-larni tagidagi mantiqni + tushunishda juda muhim rol o'ynaydi va shuning uchun ko'p kirish algoritm kitoblari red-black tree-dan oldin 2-4 treelar haqida gapiradi, + garchi **2-4 tree-lar amalda uncha ko'p ishlatilmasa**. - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 + - **N-talik (K-talik, M-talik) tree-lar** + - eslatma: N va K bu branchlash faktori (maksimum branchlar) + - binary tree-lar bu branchlash faktor = 2 bo'lgan 2-talik tree-lar - 2-3 trees are 3-ary + - 2-3 tree-lar 3-talik xisoblanadi - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - **B-Trees** - - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address + - **B-Tree** + - Qiziq fakt: bu noma'lum, lekin B-tree-dagi B Boeing, Balanced, yoki Bayerdan (boshqa ixtirochisi) olingan bo'lishi mumkin + - Amalda: + B-Tree-lar malumotlar bazasida keng ishlatiladi. Ko'p zamonaviy fayl tizimlari B-tree yoki uni boshqa variantlarini ishlatadi. + Malumotlar bazasidan tashqari, B-Tree-lar berilgan fayldagi tasodifiy bo'lakni tez o'qishga yordam beradi. Berilgan i fayl bo'lak adresini disk bo'lak adresiga aylantirish asosiy muammodir. - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - keshga e'tiborsiz B-Tree-lar haqida, juda qiziq data strukturalari + - birinchi 37 minuti juda texnik, o'tkazib yuborsangiz bo'ladi (B bu bo'lak hajmi, kesh qator hajmi) -- ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object - - A good fit for k-nearest neighbors +- ### k-D Tree-lar + - Uchburchak ichidagi nuqtalarni topish uchun yoki yuqori o'lchivli obyektlar uchun juda zo'r + - k-ta yaqin qo'shnilarni topish uchun mos - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) -- ### Skip lists - - "These are somewhat of a cult data structure" - Skiena +- ### Skip listlar + - "Bular qandaydir kult data strukturalari" - Skiena - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) -- ### Network Flows +- ### Network Flow - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find +- ### Disjoint Set & Union Find - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) -- ### Math for Fast Processing +- ### Tez xisoblash uchun Matematika - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - - Combination of a binary search tree and a heap + - Binary search tree va heapni birikmasi - [Treap](https://en.wikipedia.org/wiki/Treap) - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Linear Programming (videolar) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) +- ### Geometry, Convex hull (videolar) - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math - - See videos below +- ### Diskret matematika + - Pastdagi videolarni ko'ring - ### Machine Learning - - Why ML? + - Nega ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Tensorflow Tutoriallari](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (Theano ishlatgan holda)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Kurslar: + - [Zo'r boshlovchi kurs: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [faqat videolari](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - 12-dan 18-gacha videolar chiqizli algebrani qaytarish uchun (14 va 15 dublikat) - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: + - Manbalar: + - Kitoblar: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) @@ -1806,11 +1803,11 @@ You're never really done. --- -## Additional Detail on Some Subjects +## Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? + Men bularni Yuqorida keltirilgan ba'zi fikrlarni mustahkamlash uchun qo'shdim, lekin yuqorida qo'shishni xohlamadim + chunki juda ko'p resurslarni o'z ichiga oladi. Bitta mavzuda juda ko'p qolib ketish ham yaxshi emas. + Siz shu asrda ishga qabul qilinishingizni xohlaysiz shundaymi? - **SOLID** - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) @@ -1836,7 +1833,7 @@ You're never really done. - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- **More Dynamic Programming** (videos) +- **Dinamik dasturlash haqida batafsil** (videolar) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -1845,11 +1842,11 @@ You're never really done. - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Advanced Graph Processing** (videolar) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Ehtimollik nazariyasi** (matematikaga oid, sekin asstalik bilan ko'rib chiqing, matematikaga oid narsalar uchun yaxshi) (videolar): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1862,7 +1859,7 @@ You're never really done. - [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **String Matching** - - Rabin-Karp (videos): + - Rabin-Karp (videolar): - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) @@ -1870,31 +1867,31 @@ You're never really done. - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - Knuth-Morris-Pratt (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - Boyer–Moore string search algorithm + - Boyer–Moore string search algoritmi - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped + - juda yaxshi boshlanadi, ammo KMPdan o'tib ketishi bilan u kerak bo'lgandan ko'ra murakkabroq bo'ladi + - tries ning yaxshi tarifi berilgan + - o'tqazib yuborishingiz mumkin - **Sorting** - - Stanford lectures on sorting: + - Sorting bo'yicha Stanford universiteti ma'ruzalari: - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: + - Steven Skienaning sorting mavzusidagi ma'ruzalari: - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## Video Seriyalar -Sit back and enjoy. "Netflix and skill" :P +Qulay joylashib oling va maroqlaning. "Netflix va skillar" :P - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1910,7 +1907,7 @@ Sit back and enjoy. "Netflix and skill" :P - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) -- CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Algoritmlarning tahlillari (25 ta videolar to'plami) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -1956,40 +1953,40 @@ Sit back and enjoy. "Netflix and skill" :P - [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## Computer Science Kurslari - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) -## Algorithms implementation +## Algoritmlarning kodda yozilishi - [Multiple Algorithms implementation by Princeton University)](https://algs4.cs.princeton.edu/code) -## Papers +## Maqolalar - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 + - 2012 yilda Kolossus bilan almashtirildi - [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? + - Asosan Cloud Dataflow bilan almashtirilganmi?? - [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution + - The Dynamo maqolasi NoSQL revolyutsiyasini boshladi - [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available + - maqolaning o'zi mavjud emas - 2012: AddressSanitizer: A Fast Address Sanity Checker: - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) +- 2013: Spanner: Googlening global tarqatilgan ma'lumotlar bazasi: + - [maqola](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [video](https://www.usenix.org/node/170855) - [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) @@ -1999,6 +1996,6 @@ Sit back and enjoy. "Netflix and skill" :P - [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) -## LICENSE +## Litsenziya [CC-BY-SA-4.0](./LICENSE.txt) From 00ab80284d24064ac74cc3409c4dbdd39d1410ab Mon Sep 17 00:00:00 2001 From: Vohidjon Date: Sun, 27 Jun 2021 18:21:26 +0200 Subject: [PATCH 261/857] Final review & fix internal navigation --- README.md | 1 + translations/README-uz.md | 454 +++++++++++++++++--------------------- 2 files changed, 206 insertions(+), 249 deletions(-) diff --git a/README.md b/README.md index 1fe4deb4da..c15a156dfc 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ - [German](translations/README-de.md) - [Bahasa Indonesia](translations/README-id.md) - [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) diff --git a/translations/README-uz.md b/translations/README-uz.md index fa13fd9206..57bd5b2e64 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -6,178 +6,143 @@ Asl versiyasi: [Inglizcha](../README.md) > ammo bu proyekt bugun siz ko'rib turgan katta ro'yxatga aylandi. Ushbu o'quv rejasidan o'tib, [men Amazon-ga dasturchi sifatida ishga yollandim](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > Ehtimol, menga o'xshab o'qishingizga to'g'ri kelmaydi. Baribir sizga kerak bo'lgan hamma narsa shu yerda. > -> Bir necha oy davomida kuniga taxminan 8-12 soat o'qidim. Bu mening hikoyam: [Nega men Google-da intervyu olish uchun 8 oy davomida kechayu kunduz o'qidim](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> Bir necha oy davomida kuniga taxminan 8-12 soat o'qidim. Bu mening hikoyam: [Nega men Google-da intervyudan o'tish uchun 8 oy davomida kechayu kunduz o'qidim?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> Bu erda keltirilgan narsalar sizni har qanday dasturiy ta'minot kompaniyalari, shu jumladan gigantlar: Amazon, Facebook, Google va Microsoft-da o'tkaziladigan texnik suhbatga yaxshi tayyorlaydi. +> Bu yerda keltirilgan narsalar sizni har qanday dasturiy ta'minot kompaniyalari, shu jumladan gigantlar: Amazon, Facebook, Google va Microsoft-da o'tkaziladigan texnik suhbatga yaxshi tayyorlaydi. > > *Sizga omad tilayman!* -
-Translations: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) -- [Japanese (日本語)](translations/README-ja.md) -- [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) - -
- -
-Translations in progress: - -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - -
- -## Bu nima? - -Bu mening web dasturchisi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam. +## Bu nima uchun kerak? + +Bu mening web dasturchi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam. + ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Bu proyekt **yangi dasturchi injinerlar** uchun juda forydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dastur injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bo'lganlar uchun foydali. +Bu proyekt **yangi dasturchi injinerlar** uchun juda foydali. Va yana, oddiy programmistlikdan (masalan web yoki mobildan) dasturiy injinerlikka (dastur injinerlaridan computer science bilimlari talab qilinadi) o'tmoqchi bo'lganlar uchun foydali. -Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dastur injinerlikni (software engineer) oddiy dasturchilikdan (software/web developer) farqli deb kuradi va ular computer science bilimini talab qiladi. +Agar sizda dasturchilik bo'yicha ko'p yillik tajribangiz bo'lsa, shuni bilingki: Google, Amazon, Facebook, va Microsoftga o'xshagan katta kompaniyalar dasturiy injinerlikni (software engineer) oddiy dasturchilik (software/web developer) dan farqli deb ko'radi va ular computer science bilimini talab qiladi. -Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, unda siz ixtiyoriy ro'yxatdan ko'proq o'qing (tarmoq, xavfsizlik va boshqalar). +Agar siz reliability engineer yoki operations engineer bo'lmoqchi bo'lsangiz, unda siz ixtiyoriy ro'yxatdan ko'proq o'qing (networking, xavfsizlik va boshqalar). --- -## Table of Contents - -- [What is it?](#what-is-it) -- [Nima uchun foydali?](#why-use-it) -- [Qanday foydalanish kerak?](#how-to-use-it) -- [O'zingizni omadsiz deb o'ylamang](#dont-feel-you-arent-smart-enough) -- [Video qo'llanmalar haqida](#about-video-resources) -- [Suhbat jarayoni va intervyuga tayyorgarlik](#interview-process--general-interview-prep) -- [Intervyu uchun bitta dasturlash tilini tanlang](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [The Daily Plan](#the-daily-plan) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) +## Mundarija + +- [Bu nima uchun kerak?](#bu-nima-uchun-kerak) +- [Nima uchun foydali?](#nima-uchun-foydali) +- [Qanday foydalanish kerak?](#qanday-foydalanish-kerak) +- [O'zingizni omadsiz deb hisoblamang](#ozingizni-omadsiz-deb-hisoblamang) +- [Video qo'llanmalar haqida](#video-qollanmalar-haqida) +- [Suhbat jarayoni va intervyuga tayyorgarlik](#suhbat-jarayoni-va-intervyuga-tayyorgarlik) +- [Intervyu uchun bitta dasturlash tilini tanlang](#intervyu-uchun-bitta-dasturlash-tilini-tanlang) +- [Kitoblar ro'yxati](#kitoblar-royxati) +- [O'rganishni boshlashdan oldin](#organishni-boshlashdan-oldin) +- [Bu proyekt nimalarni o'z ichiga olmaydi](#bu-proyekt-nimalarni-oz-ichiga-olmaydi) +- [Kunlik reja](#kunlik-reja) +- [Oldindan nima bilish kerak](#oldindan-nima-bilish-kerak) +- [Algoritmik murakkablik / Big-O / Asimtotik tahlil](#algoritmik-murakkablik--big-o--asimtotik-tahlil) +- [Ma'lumotlar tuzilmasi (Data structures)](#malumotlar-tuzilmasi-data-structures) + - [Massivlar](#massivlar) + - [Linked Lists (O'zaro bog'langan ro'yxatlar)](#linked-lists-ozaro-boglangan-royxatlar) - [Stack](#stack) - [Queue](#queue) - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) +- [Qo'shimcha bilimlar](#qoshimcha-bilimlar) - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Bitwise operatsiyalari](#bitwise-operatsiyalari) +- [Trees (daraxtlar)](#trees-daraxtlar) + - [Trees - Eslatmalar & Kelib chiqishi](#trees---eslatmalar--kelib-chiqishi) + - [Binary search tree-lar: BST-lar](#binary-search-tree-lar-bst-lar) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) + - balanslangan search tree-lar (umumiy tushuncha) - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) +- [Sorting (Saralash)](#sorting-saralash) - selection - insertion - heapsort - quicksort - merge sort -- [Graphs](#graphs) +- [Graflar](#graflar) - directed - undirected - adjacency matrix - adjacency list - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) +- [Yanada ko'proq bilim](#yanada-koproq-bilim) + - [Rekursiya](#rekursiya) + - [Dinamik dasturlash (Dynamic Programming)](#dinamik-dasturlash-dynamic-programming) - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) + - [Dizayn patternlar](#dizayn-patternlar) + - [Kombinatorikalar & Ehtimollik nazariyasi](#kombinatorikalar--ehtimollik-nazariyasi) + - [NP-NP to'liq va taxminiy algoritmlari](#np-np-toliq-va-taxminiy-algoritmlari) + - [Keshlar](#keshlar) + - [Process-lar va Thread-lar](#process-lar-va-thread-lar) + - [Testlash (Testing)](#testlash-testing) - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) + - [Stringni izlash va manipulyatsiyalar](#stringni-izlash-va-manipulyatsiyalar) + - [Trie-lar](#trie-lar) - [Floating Point Numbers](#floating-point-numbers) - [Unicode](#unicode) - [Endianness](#endianness) - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -## Additional Resources - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Xabar almashish, Serializatsiya, va Queue Tizimlar](#messaging-serialization-and-queueing-systems) +- [Tizim Dizayni, Scalability, Ma'lumotlar bilan ishlash](#tizim-dizayni-scalability-malumotlar-bilan-ishlash) (agar sizda 4+ yillik tajriba bo'lsa) +- [Yakuniy tahlil](#yakuniy-tahlil) +- [Coding bo'yicha savollar ustida ishlash](#coding-boyicha-savollar-ustida-ishlash) +- [Coding mashqlar/savollar](#coding-mashqlarsavollar) +- [Intervyuga yaqin kelganingizda](#intervyuga-yaqin-kelganingizda) +- [Sizni rezyumeingiz](#sizni-rezyumeingiz) +- [Intervyuga yaqin kelganda quyidagilar haqida o'ylab yuring](#intervyuga-yaqin-kelganda-quyidagilar-haqida-oylab-yuring) +- [Intervyuver uchun savollaringizni tayyorlab qo'ying](#intervyuver-uchun-savollaringizni-tayyorlab-qoying) +- [Ishga qabul qilinganingizdan so'ng](#ishga-qabul-qilinganingizdan-song) + +---------------- Quyidagilar ixtiyoriy ---------------- + +## Qo'shimcha manbalar + +- [Qo'shimcha kitoblar](#qoshimcha-kitoblar) +- [Qo'shimcha o'rganish](#qoshimcha-organish) + - [Kompilyatorlar](#kompilyatorlar) + - [Emacs va vi(m)](#emacs-va-vim) + - [Unix uchun buyruqlar ro'yxati](#unix-uchun-buyruqlar-royxati) + - [Ma'lumot nazariyasi](#malumot-nazariyasi-videolar) + - [Parity va "Hamming Code"](#parity-va-hamming-code-videolar) + - [Entropiya](#entropiya) + - [Kriptografiya](#kriptografiya) + - [Kompressiya](#kompressiya) + - [Kompyuter xavfsizligi](#kompyuter-xavfsizligi) + - [Chiqindi yig'ish (Garbage collection)](#chiqindi-yigish-garbage-collection) + - [Paralel dasturlash](#paralel-dasturlash) + - [Xabar almashish, Serializatsiya, va Queue Tizimlar](#xabar-almashish-serializatsiya-va-queue-tizimlar) - [A*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [Locality-Sensitive Hashlash](#locality-sensitive-hashlash) + - [van Emde Boas Tree-lari](#van-emde-boas-tree-lari) + - [Kattalashtirilgan Data Strukturalari](#kattalashtirilgan-data-strukturalari) + - [Balanced search tree-lar](#balanced-search-tree-lar) + - AVL tree-lar + - Splay tree-lar + - Red/black tree-lar + - 2-3 search tree-lar + - 2-3-4 Tree-lar (shuningdek 2-4 tree nomi bilan tanilgan) + - N-talik (K-talik, M-talik) tree-lar + - B-Tree-lar + - [k-D Tree-lar](#k-d-tree-lar) + - [Skip listlar](#skip-listlar) + - [Network Flow](#network-flow) + - [Disjoint Set & Union Find](#disjoint-set--union-find) + - [Tez hisoblash uchun matematika](#tez-hisoblash-uchun-matematika) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) + - [Linear Programming](#linear-programming-videolar) + - [Geometry, Convex hull](#geometry-convex-hull-videolar) + - [Diskret matematika](#diskret-matematika) - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Seriyalar](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +- [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-boyicha-qoshimcha-malumotlar) +- [Video Seriyalar](#video-seriyalar) +- [Computer Science Kurslari](#computer-science-kurslari) +- [Maqolalar](#maqolalar) --- @@ -188,7 +153,7 @@ Big-O ni nimaligini bilmas edim, tree-lar yoki graph-lar haqida hech qanday tush ega emas edim. Agar tartiblash algoritmini (sorting) yozishni so'rashganda, aniq qovun tushirgan bo'lar edim. Umrimda ishlatgan data strukturalarni hammasini tayyor holda ishlatganman (built-in library) va ularning asosida nimalar yotishini umuman bilmas edim. -Juda ko'p kod yozgan bo'lsamda, lekin men hech qachon qandaydir data strukturani noldan yozmaganman +Juda ko'p kod yozgan bo'lsamda, lekin men hech qachon qandaydir data strukturani noldan yozmaganman. Bu uzoq vaqt talab qiladigan jarayon bo’lib, sizga bir necha oy kerak bo'lishi mumkin. Agar siz allaqachon bu narsalarni ko'pini bilsangiz, bu resurslar sizni ko'p vaqtingizni olmaydi. @@ -197,7 +162,7 @@ Agar siz allaqachon bu narsalarni ko'pini bilsangiz, bu resurslar sizni ko'p vaq Quyida foydalanish qoidalari berilgan bo'lib, bosqichlarni yuqoridan pastga tartibda bajarishingiz kerak. -Men natijalarni kuzatish uchun vazifalar ro'yxatini o'z ichiga olgan Github markupidan foydalanmoqdaman. +Men natijalarni kuzatish uchun vazifalar ro'yxatini o'z ichiga olgan Github markup-idan foydalanmoqdaman. **Bu kabi elementlarni tekshirishingiz uchun yangi "branch" yarating, so'ngra shunchaki qavs ichiga x qo'shib, ro'yxat elementlarini belgilashingiz mumkin: [x]** @@ -245,7 +210,7 @@ Ba'zan darslar sessiyada bo'lmaganligi sababli siz bir necha oy kutishingizga to Bepul va har doim ham ochiq ommaviy manbalarni yaratishda o'z hissangizni qo'shishingizni xohlagan bo'lar edim. Bu manbalar Youtube dagi video darsliklar ham bo'lishi mumkin. Masalan menga universitet - maruzalaridan foydalanish yoqadi. + ma'ruzalaridan foydalanish yoqadi. ## Suhbat jarayoni va intervyuga tayyorgarlik @@ -292,7 +257,7 @@ Quyida intervyu uchun dasturlash tilini tanlash haqida yozgan maqolam: [Pick One Siz intervyu uchun tanlagan dasturlash tilida erkin kod yoza oladigan va o'z bilimingizga ega bo'lishingiz kerak. -Tog'ri tanlov haqida ko'proq o'qishingiz uchun manbalar: +To'g'ri tanlov haqida ko'proq o'qishingiz uchun manbalar: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ @@ -309,7 +274,7 @@ Bu sizning vaqtingizni tejash uchun men ishlatgan kitoblar ro'yxatining qisqarti - [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - Javoblar (C++ va Java) - "Cracking the Coding Interview" kitobini boshlashdan oldin tayyorlanish uchun juda yaxshi manba - - Juda murakkab emas, hattoki masalarning ko'pchiligi intervyuda uchraydigan masalalardan osonroq. + - Juda murakkab emas, hattoki masalalarning ko'pchiligi intervyuda uchraydigan masalalardan osonroq. - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - Java dasturlash tilida javoblar @@ -325,19 +290,17 @@ Quyidagi kitoblardan birini tanlashingiz mumkin: ### Dasturlash tiliga oid -** Yuqorida aytilganidek siz intervyu uchun bitta dasturlash tilini tanlashingiz kerak ** +**Yuqorida aytilganidek siz intervyu uchun bitta dasturlash tilini tanlashingiz kerak** -Mening tilga oid tavsiyalarim. Menda barcha tillar uchun resurslar yo'q shuning uchun sizda qo'shimcha ma'lumot bo'lsa -tavsiya qilishingiz mumkin. -Agar siz bulardan birini o'qib chiqsangiz, masalalarni yechishda kerak bo'lgan barcha data strukturalar -va algoritmlari bo'yicha bilimlarga ega bo'lishingiz kerak. -** Loyihadagi video resurslarni o'tkazib yuborishingiz mumkin**, agar ko'rib chiqishni xohlamasangiz. +Mening tilga oid tavsiyalarim. Menda barcha tillar uchun resurslar yo'q shuning uchun sizda qo'shimcha ma'lumot bo'lsa tavsiya qilishingiz mumkin. +Agar siz bulardan birini o'qib chiqsangiz, masalalarni yechishda kerak bo'lgan barcha data strukturalar va algoritmlari bo'yicha bilimlarga ega bo'lishingiz kerak. +**Loyihadagi video resurslarni o'tkazib yuborishingiz mumkin**, agar ko'rib chiqishni xohlamasangiz. [Tilga oid qo'shimcha resurslar.](programming-language-resources.md) ### C++ -Men bularning ikkitasini o'qimaganman, lekin ular yuqori baholangan va Sedvik tomonidan yozilgan. Sedgewick aka zo'rlar :) +Men bularning ikkitasini o'qimaganman, lekin ular yuqori baholangan va Sedgewick tomonidan yozilgan. Sedgewick aka zo'rlar :) - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) @@ -391,27 +354,25 @@ Menga tavsiya qilingan kurs (shaxsan o'zim ko'rib chiqmaganman): [Learning how t Muammoni yechish uchun, men fleshkartalar uchun sayt yaratdim, u yerga 2 turdagi fleshkartalar joylanadi: umumiy eslatmalar va kod. Har bir karta o'z formatiga ega. -Vebsaytdan telefon yoki tabletdan ham xoxlagan joyda foydalana olishim uchun mobilga moslangan sayt yaratdim. +Vebsaytdan telefon yoki tabletdan ham xohlagan joyda foydalana olishim uchun mobil telefonga moslangan sayt yaratdim. O'zingizni saytingizni ham tekinga yarating: - [Fleshkartalar sayti uchun repo](https://github.com/jwasham/computer-science-flash-cards) - [Mening fleshkartalarim bazasi (eski versiya - 1200 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [ening fleshkartalarim bazasi(yangi versiya - 1800 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [Mening fleshkartalarim bazasi(yangi versiya - 1800 ta kartalar)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -Yodingizda bo'lsin, menda assembly language va Python triviyalaridan tortib, machine learning va statistikani -o'z ichiga olgan kartalarim bor. Bu esa talab qilinadigan narsalardan ham ko'p hisoblanadi. +Yodingizda bo'lsin, menda assembly language va Python triviyalaridan tortib, machine learning va statistikani o'z ichiga olgan kartalarim bor. Bu esa talab qilinadigan narsalardan ham ko'p hisoblanadi. (Ya'ni bularning barchasini siz bir vaqtda o'zlashtirgan bo'lishingiz shart emas) -**Fleshkartalardagi eslatmalar :** Birinchi marta fleshkartadagi javobni topa olganingizda uni o'zlashtirilganlar qatoriga qo'shmang. Aksincha xuddi shu kartani +**Fleshkartalardagi eslatmalar :** Birinchi marta fleshkartadagi javobni topa olganingizda uni o'zlashtirilganlar qatoriga qo'shmang. Aksincha huddi shu kartani ajratib qo'ying va bir necha marta javob bering toki haqiqatdan ham javobni anglab yetguningizgacha. Takrorlash natijasida ma'lumot miyangizga chuqurroq joylashadi. Fleshkartalar uchun bir necha marta menga tavsiya qilingan alternativ vebsayt [Anki](http://ankisrs.net/). Bu sizning eslab qolishingizga yordam berish uchun takrorlash sistemasini ishlatadi. -Buni ishlatish qulay va barcha platformalarda mavjud va cloud bn sinxronizatsiya qilingan. iOS platformalari -uchun narxi $25, lekin boshqa platformalar uchun tekin. +Buni ishlatish qulay va barcha platformalarda mavjud va cloud bilan sinxronizatsiya qilingan. iOS platformalari uchun narxi $25, lekin boshqa platformalar uchun tekin. Anki formatidagi mening fleshkartalarim bazasi: https://ankiweb.net/shared/info/25173560 ([@xiewenya](https://github.com/xiewenya) ga tashakkur). @@ -426,7 +387,7 @@ So'ng, keyingi mavzuga o'ting. Bir qancha vaqtdan keyin yana ortga qaytib linked rekursiyaga oid masala yeching. Asosiysi o'rganish jarayonida ko'proq masalalarni yechishda davom eting. Sizni ishga bilimingiz uchun emas, bilimingizni qo'llay olishingiz uchun qabul qilishadi. Men sizlarga tavsiya qiladigan kitoblar va saytlar bor. -Ko'proq ko'rish uchun havolaga o'ting:: [Coding Question Practice](#coding-question-practice). +Ko'proq ko'rish uchun havolaga o'ting: [Coding bo'yicha savollar ustida ishlash](#coding-boyicha-savollar-ustida-ishlash). ### 4. Takrorlang, takrorlang va yana takrorlang @@ -438,7 +399,7 @@ Masalalar yechish jarayonida biroz tanaffus oling va o'zingizni fleshkartalaring ### 5. Diqqatingizni bir joyga jamlang Atrofimizda juda ko'p narsalar bizni chalg'itib qo'yadi va qimmatli vaqtimizni oladi. -Shuningg uchun diqqatni jamlash va konsentratsiya qilish oson emas. Buning bir usuli, +Shuning uchun diqqatni jamlash va konsentratsiya qilish oson emas. Buning bir usuli, matnsiz biron musiqa tinglang, bu esa diqqatingizni jamlashingizga yordam beradi. ## Bu proyekt nimalarni o'z ichiga olmaydi @@ -461,14 +422,14 @@ Har kuni bitta mavzu olib, videolarini ko'rib, quyidagi tillarda kodda yozib chi - va testlar yozgan holda (oddiy assert() ishlatib) - siz Java yoki boshqa tilda qilishingiz mumkin -Sizga bularni hammasi kerak emas. Intervyu uchun sizga [faqat bitta til](#pick-one-language-for-the-interview) kerak. +Sizga bularni hammasi kerak emas. Intervyu uchun sizga [faqat bitta til](#intervyu-uchun-bitta-dasturlash-tilini-tanlang) kerak. Nega turlicha yozish kerak? - Mashq, mashq, mashq, ko'nglim ayniguncha. Shunda muammosiz tushimda ham qila olaman. -- Pastgi darajada (low level) yoza olish uchun (masalan, garbage collection ishlatmagan holda) +- Past darajada (low level) yoza olish uchun (masalan, garbage collection ishlatmagan holda) - Har kunlik ishda built-in tiplardan bemalol foydalana olish uchun (production-da array listni yoki linked listni boshidan yozib o'tirmaymanku) -Har bir mavzuni tepadagi tarzda o'qiyolmashim mumkin, lekin harakat qilaman. +Har bir mavzuni tepadagi tarzda o'qiyolmasligim mumkin, lekin harakat qilaman. Meni kodlarimni bu yerda ko'rishingiz mumkin: - [C](https://github.com/jwasham/practice-c) @@ -485,7 +446,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - C hamma yoqda. Siz C da yozilgan namuna kodlarni kitoblarda, ma'ruzalarda, videolarda, hamma yoqda uchratasiz - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - Bu qisqacha kitob, lekin C ni sizga ancha o'rgatadi va agar ozgina mashq qilsangiz tezda mohir bo'lib ketasiz. - C ni tushunish dasturlar va xotira qanday ishlashini tushinishga yordam beradi + C ni tushunish - dasturlar va xotira qanday ishlashini tushunishga yordam beradi - [Savollarga javoblar](https://github.com/lekkas/c-algorithms) - [ ] **Kompyuterlar dasturni qanday boshqarishadi** @@ -499,7 +460,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - Kodda yozadigan narsa yo'q - Bu yerda ko'p videolar bor. Tushunguningizgacha ko'ring. Har doim qayta ko'rib chiqishingiz mumkin. -- Agar bazi maruzalarda murakkab matematika ishlatilsa, pastgi qisimga tushib diskret matematika videolarini ko'rib chiqishingiz mumkin +- Agar bazi ma'ruzalarda murakkab matematika ishlatilsa, pastgi qismga tushib diskret matematika videolarini ko'rib chiqishingiz mumkin - [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [Big O Notations (umumiy qisqacha tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O Notation (and Omega and Theta) - eng yaxshi matematik tushuntirish (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -528,20 +489,19 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [Dinamik massivlar (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Vektorni bajaring (o'lchamini o'zgartiradigan massiv): - - [ ] Massivlar va ko'rsatgichlar(pointerlar) yordamida kod yozishni mashq qiling va massivning index-iga - o'tish uchun indexing o'rniga pointer matematikasini ishlating. + - [ ] Massivlar va ko'rsatgichlar(pointerlar) yordamida kod yozishni mashq qiling va massivning indeksiga o'tish uchun indeks o'rniga pointer matematikasini ishlating. - [ ] Massivimiz elementlarini ushlab turadigan ichki (private) massiv - int massivni elementlarni saqlash uchun ishlatsak bo'ladi, faqat uning xususiyatlaridan foydalanmaslik kerak - 16 dan boshlang, agar boshlanayotgan son kattaroq bo'lsa 2 ning darajalarini ishlating(2 - 16, 32, 64, 128) - - [ ] size() - Massivdagi elementlar soni + - [ ] size() - massivdagi elementlar soni - [ ] capacity() - massiv o'z ichiga olishi mumkin bo'lgan elementlar soni - - [ ] is_empty() - Massiv bo'sh yoki yo'qligini tekshirish - - [ ] at(index) - Ko'rsatilgan index-dagi massiv elementini qaytaradi. - Agar berilgan index massiv indexlaridan tashqarida bo'lsa xatolik qaytaradi. + - [ ] is_empty() - massiv bo'sh yoki yo'qligini tekshirish + - [ ] at(index) - ko'rsatilgan indeksdagi massiv elementini qaytaradi. + Agar berilgan index massiv indekslaridan tashqarida bo'lsa xatolik qaytaradi. - [ ] push(item) - - [ ] insert(index, item) - Ko'rsatilgan index-ga elementni qo'shadi, index-dagi eski element(lar)ni esa o'zidan o'ngga ko'chiradi + - [ ] insert(index, item) - ko'rsatilgan indeksga elementni qo'shadi, indeksdagi eski element(lar)ni esa o'zidan o'ngga ko'chiradi - [ ] prepend(item) - Massivning birinchi elementidan oldin yangi element qo'shish - - [ ] pop() - Massivning oxirgi elementini o'chiradi va o'chirilgan elemntni qaytaradi. + - [ ] pop() - Massivning oxirgi elementini o'chiradi va o'chirilgan elementni qaytaradi. - [ ] delete(index) - Massiv elementini index bo'yicha o'chiradi, Qolgan elementlar chapga ko'chiriladi - [ ] remove(item) - Berilgan qiymatni izlaydi va shu qiymatga ega index-larni barchasini o'chiradi - [ ] find(item) - Berilgan qiymatni izlaydi va shu qiymatga ega birinchi index-ni qaytaradi, agar topilmasa -1 qaytaradi @@ -561,7 +521,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismilarini ko'ring + - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismlarini ko'ring - [ ] Linked List va Array(massiv)lar: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) @@ -576,13 +536,13 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] value_at(index) - n-inchi elementning qiymatini qaytaradi (0 dan boshlab) - [ ] push_front(value) - listning boshiga element qo'shadi - [ ] pop_front() - birinchi elementni olib tashlab va uni qiymatini qaytaradi - - [ ] push_back(value) - oxiriga element qoshadi - - [ ] pop_back() - oxiriga elementni olib tashlab va uni qiymatini qaytaradi + - [ ] push_back(value) - oxiriga element qo'shadi + - [ ] pop_back() - oxirgi elementni olib tashlab va uni qiymatini qaytaradi - [ ] front() - birinchi elementni qiymatini qaytaradi - - [ ] back() - oxiriga elementni qiymatini qaytaradi + - [ ] back() - oxirgi elementni qiymatini qaytaradi - [ ] insert(index, value) - index-ni joyiga value-ni joylashtiradi - [ ] erase(index) - index joyida turgan elementni o'chirib tashlaydi - - [ ] value_n_from_end(n) - oxiriga sanaganda n-inchi elementni qiymatini qaytaradi + - [ ] value_n_from_end(n) - oxiridan sanaganda n-inchi elementni qiymatini qaytaradi - [ ] reverse() - listni teskari safga qo'yadi - [ ] remove_value(value) - value qiymatiga ega bo'lgan birinchi elementni o'chirib tashlaydi - [ ] Doubly-linked List @@ -591,7 +551,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Kodda yozmayman. Massivada stackni yaratish juda oson. + - [ ] Kodda yozmayman. Massivda stackni yaratish juda oson. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) @@ -606,8 +566,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - empty() - full() - [ ] Ish xarajati: - - queue uchun linked-list ishlatib, list boshiga enqueue qilish va ohiridan dequeue qilish - bu yomon yondashuv - chunki har safar dequeue qilinganda O(n) vaqt ketadi + - queue uchun linked-list ishlatib, list boshiga enqueue qilish va oxiridan dequeue qilish - bu yomon yondashuv. Chunki har safar dequeue qilinganda O(n) vaqt ketadi - enqueue: O(1) (amortized, linked list va massiv [probing]) - dequeue: O(1) (linked list va massiv) - empty: O(1) (linked list va massiv) @@ -629,7 +588,6 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] Implement with array using linear probing - [ ] 'Linear probing' ishlatgan holda amalga oshirish (massiv bilan) - hash(k, m) - m bu hash table-ning o'lchami - add(key, value) - agar key mavjud bo'lsa, qiymatini yangilaydi @@ -647,11 +605,11 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - binary search (tartiblangan integer massivlarida) - rekursiv binary search -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << +- ### Bitwise operatsiyalari + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - siz ikkining ko'p darajalarini bilishingiz kerak (2^1 dan 2^16 gacha va 2^32) + - [ ] Quyidagi operatorlar bilan bitlarni bo'shqarishni yaxshi bilishingiz kerak: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: + - [ ] Yaxshi kirish: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) @@ -661,17 +619,17 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - - [ ] 2s and 1s complement + - [ ] 2 va 1 ning komplementlari - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] Count set bits + - [ ] 1ga teng bo'lgan bitlarni sanash - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Swap values: + - [ ] Qiymatlarni almashtirish: - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] Absolute value: + - [ ] Absolyut qiymat: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## Trees (daraxtlar) @@ -713,10 +671,10 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] Kodda yozish: - [ ] insert // qiymatni treega joylaydi - [ ] get_node_count // treedagi elementlar sonini qaytaradi - - [ ] print_values // treedagi hamma qiymatlarini, mindan maxgacha, yozib chiqaradi + - [ ] print_values // treedagi hamma qiymatlarini, min-dan max-gacha, yozib chiqaradi - [ ] delete_tree - [ ] is_in_tree // true qaytaradi agar qiymat treeda mavjud bo'lsa - - [ ] get_height // treeni balandligini qaytaradi (bitta node-ning balandligi 1 xisoblanadi) + - [ ] get_height // treeni balandligini qaytaradi (bitta node-ning balandligi 1 hisoblanadi) - [ ] get_min // treedagi minimum qiymatni qaytaradi - [ ] get_max // treedagi maximum qiymatni qaytaradi - [ ] is_binary_search_tree @@ -823,8 +781,8 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -Xulosada, vizual tarzda ma'lumot olish uchun [15 ta saralash algoritmlari](https://www.youtube.com/watch?v=kPRA0W1kECg). -Agar sizga ushbu mavzu bo'yicha batafsil ma'lumot kerak bo'lsa, "Saralash" bo'limiga qarang [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects) +Vizual tarzda ma'lumot olish uchun [15 ta saralash algoritmlari](https://www.youtube.com/watch?v=kPRA0W1kECg). +Agar sizga ushbu mavzu bo'yicha batafsil ma'lumot kerak bo'lsa, "Saralash" bo'limiga qarang [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-boyicha-qoshimcha-malumotlar) ## Graflar @@ -843,7 +801,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -- [ ] Skiena maruzalari - ajoyib intro: +- [ ] Skiena ma'ruzalari - ajoyib kirish: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) @@ -888,7 +846,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun ## Yanada ko'proq bilim - ### Rekursiya - - [ ] rekursiya & backtracking-ga oid Stanford + - [ ] rekursiya & backtracking-ga oid Stanford ma'ruzalari: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) @@ -926,7 +884,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - ### Object-Oriented Programming - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Printsiplari: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] SOLID OOP Prinsiplari: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - ### Dizayn patternlar - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) @@ -969,7 +927,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [Ehtimollik nazariyasi haqida (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP to'liq va taxminiy algoritmlari - - Sotuvchi sotuvchi va ryukzak muammosi kabi NP-ning eng mashhur klasslari haqida bilish, + - traveling salesman and the knapsack muammosi kabi NP-ning eng mashhur klasslari haqida bilish, va intervyu beruvchisi ularni niqob bilan so'raganda ularni taniy olish. - NP-complete nima ekanligini biling. @@ -986,9 +944,9 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Piter Norvig sotuvchi sayohatchining sayohatchi masalasining maqbul yechimlarini muhokama qiladi: + - Piter Norvig traveling salesman masalasining maqbul yechimlarini muhokama qiladi: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - 1048 - 1140 sahifalari CLRS da Agar bu sizda bo'lsa. + - 1048 - 1140 sahifalari CLRS da agar bu sizda bo'lsa. - ### Keshlar - [ ] LRU keshi haqida: @@ -999,32 +957,32 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processlar va Threadlar +- ### Process-lar va Thread-lar - [ ] Computer Science 162 - Operatsion tizimlar (25ta video): - - processlar va threadlar uchun 1-chidan 11-chigacha bo'lgan videolarni ko'ring + - process-lar va thread-lar uchun 1-chidan 11-chigacha bo'lgan videolarni ko'ring - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - o'z ichiga oladi: - - Processlar, Threadlar, Concurrency muammolari - - processlar va threadlarni bir biridan farqi + - Process-lar, Thread-lar, Concurrency muammolari + - process-lar va thread-larni bir biridan farqi - Processlar - Threadlar - Locklar - - Mutexlar - - Semaphorelar + - Mutex-lar + - Semaphore-lar - Monitorlar - Ular qanday ishlaydi? - Deadlock - Livelock - - CPU faoliyati, interruptlar, context almashtirish (context switching) - - Ko'p yadrolik processorlar bilan ishlaydigan zamonaviy concurrency constructlari + - CPU faoliyati, interrupt-lar, context almashtirish (context switching) + - Ko'p yadrolik processorlar bilan ishlaydigan zamonaviy concurrency construct-lari - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - Process uchun kerakli resurslar (xotira: kod, statik xotira, stack, heap, va hamda file descriptorlar, i/o) - - Thread uchun kerakli resurslar (tepadagilarni (stackdan tashqari) bitta processda bo'lgan boshqa threadlar bilan baham ko'radi, lekin har birini o'zini pc, stack counter, registerlar, and stacklari bor) - - Forklash bu aslida "copy on write" operatsiya. Bu degani fork qilingan processdan nusxa ko'chirish fork process birinchi marta xotiraga yozganda bo'ladi. + - Process uchun kerakli resurslar (xotira: kod, statik xotira, stack, heap, va hamda file descriptor-lar, i/o) + - Thread uchun kerakli resurslar (tepadagilarni (stackdan tashqari) bitta processda bo'lgan boshqa threadlar bilan baham ko'radi, lekin har birini o'zini pc, stack counter, registerlar, va stacklari bor) + - Forklash bu aslida "copy on write" operatsiyasi. Bu degani fork qilingan process-dan nusxa ko'chirish fork process birinchi marta xotiraga yozganda bo'ladi. - Context almashtirish - - Operatsion tizm va uni ushlab turgan hardware context almashtirishni qanday qiladi? + - Operatsion tizim va uni ushlab turgan hardware context almashtirishni qanday qiladi? - [ ] [threads in C++ (to'plam - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] Pythonda concurrency (videolar): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) @@ -1054,7 +1012,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - OS da bu qanday ishlaydi? - Operatsion tizim videolaridan o'rganish mumkin -- ### Stringni izlash va manipulyatsiyalar us +- ### Stringni izlash va manipulyatsiyalar - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) @@ -1064,11 +1022,11 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - Agar bu mavzuda ko'proq ma'lumot olmoqchi bo'lsangiz, "String Matching" bo'limini ko'ring [Ba'zi mavzular bo'yicha qo'shimcha ma'lumot](#additional-detail-on-some-subjects). + Agar bu mavzuda ko'proq ma'lumot olmoqchi bo'lsangiz, "String Matching" bo'limini ko'ring [Ba'zi mavzular bo'yicha qo'shimcha ma'lumotlar](#bazi-mavzular-bo'yicha-qoshimcha-malumotlar). - ### Trie-lar - - Trie-larning turli xili mavjuddir.Bazilarida prefiks bor bo'lsa bazilarida esa yo'q, va bazilari yo'lni kuzatish uchun bitlar o'rniga string ishlatishadi. - - Men kodini ko'rib chiqaman, lekin uzim yozmayman + - Trie-larning turli xili mavjud. Bazilarida prefiks bor bo'lsa bazilarida esa yo'q, va bazilari yo'lni kuzatish uchun bitlar o'rniga string ishlatishadi. + - Men kodini ko'rib chiqaman, lekin o'zim yozmayman - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1117,21 +1075,21 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun ## Tizim Dizayni, Scalability, Ma'lumotlar bilan ishlash -**agar sizda 4+ yil ish tajribasi bo'lsa intervyularda sizga tizim dizayn savolli tushadi** +**agar sizda 4+ yil ish tajribasi bo'lsa intervyularda sizga tizim dizayn bo'yicha savolar tushadi** - Scalability va Tizim Dizayn juda katta mavzular hisoblanadi. - Chunki katta ko'lamni traffikni ko'tara oladigan software/hardware- ni dizayn qilish uni ko'p qirralarini e'tiborga olishni talab qiladi + Chunki katta ko'lamli traffikni ko'tara oladigan software/hardware-ni dizayn qilish uni ko'p qirralarini e'tiborga olishni talab qiladi Buni ustida bir talay vaqt o'tkazasiz - Qirralar: - Scalability - Katta miqdordagi data to'plamlarni bitta qiymatga agregatlash - - bitta data to'plamni boshqasiga o'tkazish + - Bitta data to'plamini boshqasiga o'tkazish - Haddan tashqari katta miqdordagi data bilan ishlash - - Tizim dizayn + - Tizim dizayni - funksional to'plami - interfeyslar - klaslar ierarxiyasi - - malum bir cheklovlar ostida tizimni dizayn qilish - - soddaligi va mustahkamligi + - ma'lum bir cheklovlar ostida tizimni dizayn qilish + - soddaligi va mustaxkamligi - afzalliklar va kamchiliklar o'rtasidagi muvozanat - ijro tahlili (performance analysis) va optimallashtirish - [ ] **Bu yerdan boshlang**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) @@ -1203,7 +1161,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] Servislarni bir biriga bog'laydigan texnologiyalar haqida o'rganish uchun pastroqdagi "Xabar almashish, Serializatsiya, va Queue Tizimlar" qismni ko'ring + - [ ] Servislarni bir biriga bog'laydigan texnologiyalar haqida o'rganish uchun pastroqdagi "Xabar almashish, Serializatsiya, va Queue Tizimlar" qismini ko'ring - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) @@ -1218,18 +1176,18 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - Qo'shimcha funksional taklif qiling - Intervyuver qamrov doirasidan tashqarida deb bilgan punktlarni olib tashlang - High availability kerak deb biling va uni usecase-lar qatoriga qo'shing - 2. Checklovlar haqida o'ylang - - Oyiga nechta requestlar bo'lishini so'rang - - Sekundiga nechta requestlar bo'lishini so'rang (intervyuver javob berishi yoki o'zizdan xisoblashni so'rashi mumkin) + 2. Cheklovlar haqida o'ylang + - Oyiga nechta so'rovlar bo'lishini so'rang + - Sekundiga nechta so'rovlar bo'lishini so'rang (intervyuver javob berishi yoki o'zingiz hisoblashingizni so'rashi mumkin) - O'qishlar (reads) va yozishlar (writes) foizini baholang - Baholashda 80/20 qoidasini yodda tuting - Sekundiga qancha data yoziladi - 5 yil davomida jami qancha xotira kerak bo'ladi - Sekundiga qancha data o'qiladi 3. Abstrakt dizayn: - - Qatlamalar (servis, data, kesh) + - Qatlamlar (servis, data, kesh) - Infrastruktura: load balancing, xabar almashish (messaging) - - Servis ishlashi uchun kerak bo'lgan muhum algoritmlarni tahlili + - Servis ishlashi uchun kerak bo'lgan muhim algoritmlarni tahlili - Bottleneck-larni e'tiborga oling va ularga yechim toping - Mashqlar: - [Design a CDN network: old article](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) @@ -1260,22 +1218,22 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun Yuqoridagi barcha "computer science" mavzularini bilb oldingiz, endi coding bo'yicha masalalarga javob berishni mashq qilish vaqti keldi. -**Coding masalalarini yechishga tayyorlanish bu javoblarni yodlab qolish emas ** +**Coding masalalarini yechishga tayyorlanish bu javoblarni yodlab qolish emas** Masalalar yechishni mashq qilish nima uchun zarur: - Muammoni aniqlash va kerakli ma'lumotlar tuzilmalari va algoritmlari mos keladigan joyni topa olish - Masala uchun kerakli talablarni to'plash -- Xuddi intervyudagi kabi muammoni yechish uchun qadam baqadam yurish +- Huddi intervyudagi kabi muammoni yechish uchun qadam baqadam yurish - Doskada yoki qog'ozda kod yozish, kompyuterda emas -- Yechimlarizga ish joyi xarajati va ish vaqti xarajatini aniqlash +- Yechimlaringizga ish joyi xarajati va ish vaqti xarajatini aniqlash - Yechimlaringizni testlash Suhbatda metodik, kommunikativ muammolarni hal qilish uchun ajoyib kirish qismi mavjud. -Siz buni dasturlash uchun intervyu kitoblaridan ham topa olishingiz mumkin +Siz buni dasturlash uchun intervyu kitoblaridan ham topa olishingiz mumkin, lekin men buni ular ichida juda foydali deb topdim: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -Uyingizda doska yo'qmi? Bu tabiy. Men o'zgacha insonman, menda kotta doskam bor. Doska o'rniga, rasm chizish uchun +Uyingizda doska yo'qmi? Bu tabiiy. Men o'zgacha insonman, menda kotta doskam bor. Doska o'rniga, rasm chizish uchun mo'ljallangan daftar ishlating. Shunda divanda o'tirib, mashq qilishingiz mumkin. Bu mening "divanga mo'ljallangan doskam". Men rasmda qalamimni ham qo'shganman qulaylik uchun. Agar siz ruchkadan foydalansangiz, o'chirish istagi paydo bo'lishi mumkin. Tez Chalkashib ketadi. Shuning uchun men qalam va o'chirg'ichdan foydalanaman. @@ -1301,7 +1259,7 @@ Ko'ring [Book List above](#book-list) ## Coding mashqlar/savollar -Miyyangiz og'rigunicha o'rganib bo'lganizdan keyin o'sha miyyangizni ishga soling +Miyyangiz og'rigunigacha o'rganib bo'lganingizdan keyin o'sha miyyangizni ishga soling Har kuni coding savollar ishlang, qancha ko'p bo'lsa shuncha yaxshi - [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) @@ -1344,10 +1302,10 @@ Mock intervyular - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - Men buni ishlatdim va u menga phone screen va on-site intervyularga ruhan tayyorladi - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - foydalanuvchilararo intervyuga tayyorlanish modeli - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - kandidatlarga tech kompaniyalar bilan bo'ladigan bir nechta intervyulardan sakrab o'tishga ham yordam beradi -- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANGdan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANG-dan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari -## Intervyuga yaqin kelganizda +## Intervyuga yaqin kelganingizda - Cracking The Coding Interview Set 2 (videolar): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) @@ -1358,10 +1316,10 @@ Mock intervyular - 'Cracking The Coding Interview' kitobini Resume prep qismini va 'Programming Interviews Exposed' kitobini orqasini ko'ring -## Intervyuga yaqin kelganda quydagilar haqida o'ylab yuring +## Intervyuga yaqin kelganda quyidagilar haqida o'ylab yuring Sizdan so'rashlari mumkin bo'lgan 20 tacha intervyu savollarini o'ylab toping (pastagi savollarga o'xshagan). Har biri uchun 2-3 javobiz bo'lsin. -Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin +Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin. - Nega bu ishni xohlayapsiz? - Siz yechgan mushkul masala/muammo? @@ -1378,13 +1336,13 @@ Siz amalga oshirgan biror narsa haqida hikoyangiz bo'lsin ## Intervyuver uchun savollaringizni tayyorlab qo'ying - Mening savollarimning bazilari (Bu savollarga javobni bilsam ham ularni fikrlarini yoki jamoaviy nuqtai nazarlarini bilishni xoxlayman): + Mening savollarimning bazilari (Bu savollarga javobni bilsam ham ularni fikrlarini yoki jamoaviy nuqtai nazarlarini bilishni xohlayman): - Jamoangiz qanchalik katta? - Sizning dasturlash siklingiz qanday tarzda o'tadi? waterfall/sprintlar/ yoki agile ishlatasizmi? - Deadline-lar ga shoshilish odatiy holmi? Yoki erkinlik ko'proqmi? - Jamoangizda qarorlar qanday qabul qilinadi? -- Haftasiga nechi marta jamooaviy meeting-lar tashkil etiladi? +- Haftasiga nechi marta jamoaviy meeting-lar tashkil etiladi? - Sizning ishdagi atmosferangiz sizga konsentratsiya qilishga yordam beradimi? - Hozirda nima ustida ishlayapsizlar? - Bunda sizga nima ko'proq yoqadi? @@ -1423,7 +1381,7 @@ Hech qachon tugatgan bo'lmaymiz. - Zamonaviy variant - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - Dizayn patternlarga yengil kirish + - Dizayn pattern-larga yengil kirish - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - Shuningdek, "Gang Of Four" yoki "GOF" nomi bilan tanilgan - Qoidaga aylangan dizayn pattern kitobi @@ -1444,7 +1402,7 @@ Hech qachon tugatgan bo'lmaymiz. - Algoritm katalogi: - Bu kitobni sotib olishingizni asl sababi - Bu qismga yetib qoldim. Tugatganimdan so'ng bu yerni yangilab qo'yaman - - kindleda ijaraga olsangiz bo'ladi + - kindle-da ijaraga olsangiz bo'ladi - Javoblar - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) @@ -1471,12 +1429,12 @@ Hech qachon tugatgan bo'lmaymiz. - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - Boshlang'ich bir ikki boblari muammolarga ajoyib yechimlar taqdim qiladi, lekin bu shunchaki kirish. - Bu kitob dastur dizayn va arxitekturasi uchun qo'llanma + Bu kitob dasturning dizayn va arxitekturasi uchun qo'llanma ## Qo'shimcha o'rganish - Men bularni har tomonlama rivojlangan dasturchi bo'lishingizga yordam berish va ba'zi texnologiyalar va algoritmlar xabardor bo'lishingiz uchun qo'shdim - texnologiyalar va algoritmlar, Natijada sizda kattaroq asboblar qutisi bo'ladi. + Men bularni har tomonlama rivojlangan dasturchi bo'lishingizga yordam berish va ba'zi texnologiyalar va algoritmlardan xabardor bo'lishingiz uchun qo'shdim, + Natijada sizda kattaroq asboblar qutisi bo'ladi. - ### Kompilyatorlar - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) @@ -1644,7 +1602,6 @@ Hech qachon tugatgan bo'lmaymiz. - "Balanced search tree-lar orasida, AVL va 2/3 tree-lar hozir o'tmishga aylangan, va red-black tree-lar ancha mashhurroq. Xususan qiziqarli bo'lgan o'z-o'zini tashkil qiladigan data struktura bu splay tree. Splay tree har safar key so'ralganda uni rotatsiyadan foydalangan holda root-ga o'tkazadi." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - Bulardan men splay tree-ni kodda yozishni tanladim. Bilishimcha intervyuda sizdan balanced search tree-ni yozishni so'rashmaydi. Lekin men baribir yozishni xohladim va tan olaylik splay tree-lar zo'r. Men juda ko'p red-black tree kodlarini ham o'qidim. @@ -1703,23 +1660,22 @@ Hech qachon tugatgan bo'lmaymiz. Har 2-4 tree uchun unga mos elementlari bir xil tartibda bo'lgan red-black bor. Insertion va deletion funksiyalari red-black tree-dagi color-flipping va rotation funksiyalariga tengma-tengdir. Bu xususiyati uni red-black tree-larni tagidagi mantiqni tushunishda juda muhim rol o'ynaydi va shuning uchun ko'p kirish algoritm kitoblari red-black tree-dan oldin 2-4 treelar haqida gapiradi, - garchi **2-4 tree-lar amalda uncha ko'p ishlatilmasa**. + garchi **2-4 tree-lar amalda uncha ko'p ishlatilmasada**. - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-talik (K-talik, M-talik) tree-lar** - eslatma: N va K bu branchlash faktori (maksimum branchlar) - - binary tree-lar bu branchlash faktor = 2 bo'lgan 2-talik tree-lar - - 2-3 trees are 3-ary + - binary tree-lar bu branchlash faktori = 2 bo'lgan 2-talik tree-lar - 2-3 tree-lar 3-talik xisoblanadi - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Tree** - Qiziq fakt: bu noma'lum, lekin B-tree-dagi B Boeing, Balanced, yoki Bayerdan (boshqa ixtirochisi) olingan bo'lishi mumkin - Amalda: - B-Tree-lar malumotlar bazasida keng ishlatiladi. Ko'p zamonaviy fayl tizimlari B-tree yoki uni boshqa variantlarini ishlatadi. - Malumotlar bazasidan tashqari, B-Tree-lar berilgan fayldagi tasodifiy bo'lakni tez o'qishga yordam beradi. Berilgan i fayl bo'lak adresini disk bo'lak adresiga aylantirish asosiy muammodir. + B-Tree-lar ma'lumotlar bazasida keng ishlatiladi. Ko'p zamonaviy fayl tizimlari B-tree yoki uni boshqa variantlarini ishlatadi. + Ma'lumotlar bazasidan tashqari, B-Tree-lar berilgan fayldagi tasodifiy bo'lakni tez o'qishga yordam beradi. Berilgan i fayl bo'lak adresini disk bo'lak adresiga aylantirish asosiy muammodir. - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1731,7 +1687,7 @@ Hech qachon tugatgan bo'lmaymiz. - ### k-D Tree-lar - - Uchburchak ichidagi nuqtalarni topish uchun yoki yuqori o'lchivli obyektlar uchun juda zo'r + - Uchburchak ichidagi nuqtalarni topish uchun yoki yuqori o'lchovli obyektlar uchun juda zo'r - k-ta yaqin qo'shnilarni topish uchun mos - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) @@ -1750,7 +1706,7 @@ Hech qachon tugatgan bo'lmaymiz. - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) -- ### Tez xisoblash uchun Matematika +- ### Tez hisoblash uchun matematika - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) @@ -1817,7 +1773,7 @@ Hech qachon tugatgan bo'lmaymiz. - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Mijozlarni o'zlari ishlatmaydigan interfeyslarni implement qilishga majburlash kerak emas - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. @@ -1846,7 +1802,7 @@ Hech qachon tugatgan bo'lmaymiz. - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Ehtimollik nazariyasi** (matematikaga oid, sekin asstalik bilan ko'rib chiqing, matematikaga oid narsalar uchun yaxshi) (videolar): +- MIT **Ehtimollik nazariyasi** (matematikaga oid, sekin astalik bilan ko'rib chiqing, matematikaga oid narsalar uchun yaxshi) (videolar): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1871,7 +1827,7 @@ Hech qachon tugatgan bo'lmaymiz. - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - juda yaxshi boshlanadi, ammo KMPdan o'tib ketishi bilan u kerak bo'lgandan ko'ra murakkabroq bo'ladi + - juda yaxshi boshlanadi, ammo KMP-dan o'tib ketishi bilan u kerak bo'lgandan ko'ra murakkabroq bo'ladi - tries ning yaxshi tarifi berilgan - o'tqazib yuborishingiz mumkin From 4ee1f382fa9a5289ae4be3cc95309ea925711ad7 Mon Sep 17 00:00:00 2001 From: Devin Jin Date: Tue, 29 Jun 2021 10:12:19 +0800 Subject: [PATCH 262/857] Update README-cn.md syntax error in Chinese --- translations/README-cn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 322361cc33..9d7220855f 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1,6 +1,6 @@ # Coding Interview University -原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 +原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间的推移而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 我每天自学8~12小时,这样持续了好几个月。这是我的故事:[为什么我为了 Google 面试而自学了8个月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)。 @@ -225,7 +225,7 @@ - Java - Python -你也可以使用下面两种编程语言,但可能会有某些限制,你需要实现查明: +你也可以使用下面两种编程语言,但可能会有某些限制,你需要事先查明: - JavaScript - Ruby From 1bcbb32c552cf3455d9d5a54904cf51bb995c7f3 Mon Sep 17 00:00:00 2001 From: vrushali-d <45972967+vrushali-d@users.noreply.github.com> Date: Thu, 8 Jul 2021 14:30:41 +0530 Subject: [PATCH 263/857] Checked box --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88ecc903a2..4bc26db04d 100644 --- a/README.md +++ b/README.md @@ -274,7 +274,7 @@ Sometimes the classes are not in session so you have to wait a couple of months, ## Interview Process & General Interview Prep - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [x] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) From dc5c2b0d1165c4ebdf0b7d4be8759ffcf824a579 Mon Sep 17 00:00:00 2001 From: vrushali-d <45972967+vrushali-d@users.noreply.github.com> Date: Mon, 12 Jul 2021 19:37:03 +0530 Subject: [PATCH 264/857] Added Discrete Maths Course by IIT Ropar NPTEL I found this course on discrete maths very interesting and helpful. Video lectures are very short and presented very well and are easy to understand. This course is conducted by IIT Ropar on NPTEL Platform. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bc26db04d..1ed19dfc70 100644 --- a/README.md +++ b/README.md @@ -274,7 +274,7 @@ Sometimes the classes are not in session so you have to wait a couple of months, ## Interview Process & General Interview Prep - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [x] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) @@ -1783,6 +1783,7 @@ You're never really done. - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - ### Machine Learning - Why ML? From 6b976af551ba6a473a0bf55069366750b714a0e1 Mon Sep 17 00:00:00 2001 From: Ivan Reznikov Date: Mon, 12 Jul 2021 18:08:43 +0300 Subject: [PATCH 265/857] fix-link-914 fixed image url in Russian translation --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index da61d60eee..785cb0adfd 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,7 +7,7 @@ Это мой учебный план, рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) и планирующих работать инженерами-программистами (software engineer) в компании Google. -![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) +![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://camo.githubusercontent.com/223e9758b09eb2908cb04c01c05f6e8550596dfd1526db5a2895c471b378a538/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f636f64696e672d61742d7468652d7768697465626f6172642d73696c69636f6e2d76616c6c65792e706e67) За основу учебного плана я взял список вопросов **Google's coaching notes** и значительно расширил его. Тут вы найдёте много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка: их могут задавать на From e4b0ad607d9ea5cf8bc974f62d173b67668d7b47 Mon Sep 17 00:00:00 2001 From: ireznikov Date: Mon, 12 Jul 2021 19:16:47 +0400 Subject: [PATCH 266/857] fixed readme url --- translations/README-ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index 785cb0adfd..1656536df3 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,7 +7,7 @@ Это мой учебный план, рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) и планирующих работать инженерами-программистами (software engineer) в компании Google. -![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://camo.githubusercontent.com/223e9758b09eb2908cb04c01c05f6e8550596dfd1526db5a2895c471b378a538/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f636f64696e672d61742d7468652d7768697465626f6172642d73696c69636f6e2d76616c6c65792e706e67) +![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) За основу учебного плана я взял список вопросов **Google's coaching notes** и значительно расширил его. Тут вы найдёте много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка: их могут задавать на From bf0826dabfef4ef7daaf974360c6074842ef19cf Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 12 Jul 2021 18:07:03 -0700 Subject: [PATCH 267/857] Updated image links in Russian translation. --- README.md | 1 - translations/README-ru.md | 15 ++------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 1ed19dfc70..fa65a012f1 100644 --- a/README.md +++ b/README.md @@ -1782,7 +1782,6 @@ You're never really done. - ### Discrete math - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - ### Machine Learning diff --git a/translations/README-ru.md b/translations/README-ru.md index da61d60eee..488474a14f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,7 +7,7 @@ Это мой учебный план, рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) и планирующих работать инженерами-программистами (software engineer) в компании Google. -![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) +![Кодирование на доске - из телесериала канала HBO Кремниевая Долина](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) За основу учебного плана я взял список вопросов **Google's coaching notes** и значительно расширил его. Тут вы найдёте много полезных вещей, которые необходимо знать. Дополнительные вопросы я добавил в конец списка: их могут задавать на @@ -199,12 +199,6 @@ Google не возьмёт тебя на работу. [Подробнее о разметке на Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Получи гугловское настроение - -Напечатай знак "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" и не отводи глаз от желанной добычи. - -[![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf) - ## Получил ли я работу? Пока я ожидаю своей очереди. Надеюсь интервью будет скоро. @@ -217,14 +211,9 @@ Google не возьмёт тебя на работу. Я ещё на пути к цели. Двигаемся вперёд: -- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/) -- Twitter: [@googleyasheck](https://twitter.com/googleyasheck) - Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor) -- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck) - LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham) -![John Washam - Google Interview University](https://dng5l3qzreal6.cloudfront.net/2016/Aug/book_stack_photo_resized_18_1469302751157-1472661280368.png) - ## Не переживайте о том, что вы недостаточно умны - Успешные инженеры умные, но многие из них переживают, что недостаточно умны. - [Миф о гениальных программистах](https://www.youtube.com/watch?v=0SARbwvhupQ) @@ -1343,7 +1332,7 @@ Google не возьмёт тебя на работу. У вас нет доски дома? Не удивительно. Я немного неормальный и у меня есть большая доска дома. Но вместо доски можно использователь и планшет для рисования из магазина художественных товаров, и практиковаться сидя на диване. Это моя "диванная доска". На фото я положил ручку чтобы иметь вы имели представление о масштабе. Если вы будете пользоваться ручкой, постоянно будет возникать желание что-то исправить и решение захламляется достаточно быстро. -![моя диванная доска](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![моя диванная доска](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) Дополнительно: From 569d23e242c4035fa18d9b7697d5b5f4870d12b3 Mon Sep 17 00:00:00 2001 From: ireznikov Date: Wed, 14 Jul 2021 23:10:44 +0400 Subject: [PATCH 268/857] fixed broken links README-id.md --- translations/README-id.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index bb513609d2..42d84d000f 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -240,7 +240,7 @@ Ini adalah daftar pendek yang saya gunakan. Ini disingkat untuk menghemat waktu ### Persiapan Interview -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](https://www.wiley.com/en-us/Programming+Interviews+Exposed%3A+Secrets+to+Landing+Your+Next+Job%2C+2nd+Edition-p-9780470121672) - jawaban di C++ and Java - direkomendasikan di Google candidate coaching - ini adalah pemanasan yang baik untuk Cracking the Coding Interview @@ -1102,7 +1102,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] [Cara Menghapus Duplikat dalam Kumpulan Data Besar](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - [ ] [Sekilas tentang skala dan budaya teknik Etsy dengan Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [Apa yang Membawa Amazon ke Arsitektur Layanan Mikro Sendiri](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [Untuk Mengompresi Atau Tidak Mengompresi, Itu Pertanyaan Uber](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Untuk Mengompresi Atau Tidak Mengompresi, Itu Pertanyaan Uber](https://eng.uber.com/trip-data-squeeze-json-encoding-compression/) - [ ] [Asyncio Tarantool Queue, Masuk Antrian](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - [ ] [Kapan Perkiraan Pemrosesan Kueri Digunakan?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Transisi Google Dari Pusat Data Tunggal, Ke Failover, Ke Arsitektur Native Multihomed](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) @@ -1157,7 +1157,6 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - Latihan: - [Desain jaringan CDN: artikel lama](https://kilthub.cmu.edu/articles/Globally_distributed_content_delivery/6605972) - [Rancang sistem pembuatan ID unik secara acak](https://blog.twitter.com/2010/announcing-snowflake) - - [Rancang permainan kartu multipemain daring](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Mendesain database nilai kunci](http://www.slideshare.net/dvirsky/introduction-to-redis) - [Rancang sistem berbagi gambar](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Rancang sistem rekomendasi](http://ijcai13.org/files/tutorial_slides/td3.pdf) @@ -1692,17 +1691,15 @@ Anda tidak pernah benar-benar selesai. - [Alat pembelajaran Mesin Cloud Google (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - [Resep Pembelajaran Mesin Google Developers (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tutorial Tensorflow](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Tutorials Tensorflow](https://www.tensorflow.org/tutorials) - [Panduan Praktis untuk mengimplementasikan Jaringan Neural dengan Python (menggunakan Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Kursus: - [Kursus pemula yang bagus: Pembelajaran Mesin](https://www.coursera.org/learn/machine-learning) - [video saja](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - lihat video 12-18 untuk review aljabar linier (14 dan 15 adalah duplikat) - - [Jaringan Neural untuk Pembelajaran Mesin](https://www.coursera.org/learn/neural-networks) - [Nanodegree Deep Learning Google](https://www.udacity.com/course/deep-learning--ud730) - - [Nanodegree Machine Learning Engineer Google / Kaggle](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Nanodegree Machine Learning Engineer Google / Kaggle](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009t) - [Nanodegree, Insinyur Mobil Mengemudi Mandiri](https://www.udacity.com/drive) - - [Kursus Online Metis ($99 selama 2 bulan)](http://www.thisismetis.com/explore-data-science) - Sumber: - Buku: - [Pembelajaran Mesin Python](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) From 62aee91eb08c17af4efd0403e43c252edb3c7bad Mon Sep 17 00:00:00 2001 From: ireznikov Date: Thu, 15 Jul 2021 02:28:33 +0400 Subject: [PATCH 269/857] bugfix-919 --- translations/README-tw.md | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index aadfbf2176..7a71969aff 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -472,12 +472,10 @@ - [ ] (動態)陣列背後原理: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Basic Arrays (video)]() + - [Multi-dim (video)]() - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] 實作動態陣列(可變、可動態調整大小的陣列) - [ ] 練習在程式中用陣列以及指標,透過計算指標而存取該內容,而不是直接用索引。 - [ ] 直接動態生成一個新的陣列 @@ -540,14 +538,14 @@ - ### Stack(堆疊) - [ ] [Stacks(影片)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)]() - [ ] 無須實作,可以用陣列實作,但這樣太過簡單了。 - ### Queue(佇列) - - [ ] [使用Queues(先進先出)First-In First-Out(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [使用Queues(先進先出)First-In First-Out(影片)]() - [ ] [Queue(影片)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues(影片)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] [Priority Queues(影片)]() - [ ] 使用linked list實作,包含末端指標(tail pointer): - enqueue(value) - 在queue末端加入元素 - dequeue() - 刪除當時queue中最早進入的元素(意即queue中第一個元素),並且回傳該元素的值。 @@ -568,10 +566,10 @@ - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (影片)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (影片)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] 線上開放式課程: - - [ ] [Understanding Hash Functions (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (影片)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Understanding Hash Functions (影片)]() + - [ ] [Using Hash Tables (影片)]() + - [ ] [Supporting Hashing (影片)]() + - [ ] [Language Support Hash Tables (影片)]() - [ ] [Core Hash Tables (影片)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (影片)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (影片)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -597,7 +595,7 @@ - 用遞迴(recursion)的方法實作二分搜尋法 - ### 位元運算(Bitwise operations) - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 你應該能背出一些2的指數(從2^1到2^16以及2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - 你應該能背出一些2的指數(從2^1到2^16以及2^32) - [ ] 實際了解如何用下列的位元運算子來操作每個位元: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -1048,7 +1046,7 @@ - ### 網路 - **以下為如果你有網路相關經驗,或是想成為一個可靠的工程師需要知道的知識** - 知道這些有益無害,多多益善! - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - [ ] [UDP and TCP: Comparison of Transport Protocols(影片)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained!(影片)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.(影片)](https://www.youtube.com/watch?v=nomyRJehhnM) @@ -1127,7 +1125,7 @@ - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze-json-encoding-compression/) - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) @@ -1182,7 +1180,6 @@ - 練習: - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) @@ -1234,7 +1231,7 @@ **閱讀並解題(按照以下順序):** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](https://www.wiley.com/en-us/Programming+Interviews+Exposed%3A+Secrets+to+Landing+Your+Next+Job%2C+2nd+Edition-p-9780470121672) - 附有C、C++、Java的解答 - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - 附有Java的解答 @@ -1677,17 +1674,16 @@ Coding面試題目影片: - [Google's Cloud Machine learning tools (影片)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (影片)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [Tensorflow (影片)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - [Practical Guide to implementing Neural Networks in Python (使用Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - 課程: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [只有影片](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Neural Networks and Deep Learning Learning](https://www.coursera.org/learn/neural-networks-deep-learning) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree--nd009t) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99/2個月)](http://www.thisismetis.com/explore-data-science) - 資源: - 書籍: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) From e76fceba990e5e121eed3b2c02f2c151baa54be3 Mon Sep 17 00:00:00 2001 From: ireznikov Date: Fri, 16 Jul 2021 13:47:23 +0400 Subject: [PATCH 270/857] fixed link with book edition --- translations/README-id.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-id.md b/translations/README-id.md index 42d84d000f..82c986610b 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -240,7 +240,7 @@ Ini adalah daftar pendek yang saya gunakan. Ini disingkat untuk menghemat waktu ### Persiapan Interview -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](https://www.wiley.com/en-us/Programming+Interviews+Exposed%3A+Secrets+to+Landing+Your+Next+Job%2C+2nd+Edition-p-9780470121672) +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 4th Edition](https://www.wiley.com/en-us/Programming+Interviews+Exposed%3A+Coding+Your+Way+Through+the+Interview%2C+4th+Edition-p-9781119418481) - jawaban di C++ and Java - direkomendasikan di Google candidate coaching - ini adalah pemanasan yang baik untuk Cracking the Coding Interview From 6f2f1f88d360575c004831a015643d9d1dca0fb5 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 18 Jul 2021 18:14:12 -0700 Subject: [PATCH 271/857] Updated link for PIE book --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fa65a012f1..094a7c6f46 100644 --- a/README.md +++ b/README.md @@ -1287,7 +1287,7 @@ Supplemental: **Read and Do Programming Problems (in this order):** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X) - answers in C, C++ and Java - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - answers in Java From 0924139374f2d00de70114310a7461cf048256c9 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 20 Jul 2021 08:17:27 -0700 Subject: [PATCH 272/857] Added link to papers repo. --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index 094a7c6f46..dcb9f8dba5 100644 --- a/README.md +++ b/README.md @@ -1979,15 +1979,10 @@ Sit back and enjoy. - [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - mostly replaced by Cloud Dataflow? - [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - The Dynamo paper kicked off the NoSQL revolution - [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) -- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) -- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) -- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - 2012: AddressSanitizer: A Fast Address Sanity Checker: - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) @@ -1999,8 +1994,7 @@ Sit back and enjoy. - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) ## LICENSE From 16d6a70c3fdaa4e9183b92d0bfb1c0d5806a10f6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:33:24 -0700 Subject: [PATCH 273/857] Adds new sponsor. --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dcb9f8dba5..72fe6b85a9 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ - ## What is it? From d5322a92abfc7b77f45f11e9060c14511bf58843 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:36:59 -0700 Subject: [PATCH 274/857] Adds new sponsor. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72fe6b85a9..b29e9da661 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Special thanks to:
- OSS Capital + OSS Capital
Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
@@ -70,7 +70,7 @@

Dev environments built for the cloud From 7f058b736087304a463ece511f9e97c155968c67 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:37:42 -0700 Subject: [PATCH 275/857] Fixes alignment. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b29e9da661..a54ad438f4 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ -
+

From 30ff2b339600e8c59a89ee861d3c318aad0801a0 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:38:39 -0700 Subject: [PATCH 276/857] Fixes width. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a54ad438f4..56e01df94f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@

Dev environments built for the cloud From bb23a0ba68dd20512aa86e7282944e9ea77333a8 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:39:25 -0700 Subject: [PATCH 277/857] Adds division. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 56e01df94f..1b3577b37b 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@

+

-
+
+

+ Dev environments built for the cloud
- Dev environments built for the cloud -
Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
From 9f0bb09aa3b23c3aaba4372cc7998e7d3de1d7c4 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:42:43 -0700 Subject: [PATCH 279/857] Spacing. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b8e99ff639..b3b1e8011f 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,6 @@


-

From a48cb36651010373a1d104978b873d67857574a7 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:44:06 -0700 Subject: [PATCH 280/857] Spacing. --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b3b1e8011f..44928764c8 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,10 @@ Coding Interview University is supported by the community. +
+ Special thanks to:

- Special thanks to:

OSS Capital @@ -73,7 +74,9 @@
Gitpod
- Dev environments built for the cloud +
+ Dev environments built for the cloud +
Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
From a63a44848f9fecf0ff8ac8abad1ae4585a18dd0d Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:47:01 -0700 Subject: [PATCH 281/857] Updates headline. --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 44928764c8..d1e110a348 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,7 @@

- - Coding Interview University is supported by the community. - + Become a sponsor and support Coding Interview University!
Special thanks to:

From 23fb9cd7a92a1f5c0b55ca001c30fc2d924858c0 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 08:48:37 -0700 Subject: [PATCH 282/857] Updates headline. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d1e110a348..c65e390169 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,9 @@

- Become a sponsor and support Coding Interview University! -
+ Become a sponsor and support Coding Interview University! +

+

Special thanks to:

From b944520365d735cf48e9e01159dcfea1b69e8ebb Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 17:44:54 -0700 Subject: [PATCH 283/857] Updates spacing. --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c65e390169..0e6137e5f6 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@

OSS Capital
-
+
Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
@@ -74,9 +74,11 @@ Gitpod
- Dev environments built for the cloud +

+ Dev environments built for the cloud +

-
+
Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
From 49ea7e06a88dddc918d3a996bf9b468e28fe92df Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 17:45:29 -0700 Subject: [PATCH 284/857] Updates spacing. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e6137e5f6..5b2ee9cbc2 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ Dev environments built for the cloud

-
+
Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
From 04fe7b52ab13b9a478c277929d403a91b1ecdcb5 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 21 Jul 2021 17:46:23 -0700 Subject: [PATCH 285/857] Updates spacing. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5b2ee9cbc2..936eeed6cd 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@
OSS Capital
-
+
Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
@@ -78,7 +78,7 @@ Dev environments built for the cloud

-
+
Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
From 9a52dd58437ec5933787f2753ceb32f573b92aa9 Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim Date: Tue, 27 Jul 2021 10:02:12 +0600 Subject: [PATCH 286/857] Fix Stanford: Programming Paradigms playlist broken link --- README.md | 2 +- translations/README-ar.md | 2 +- translations/README-bn.md | Bin 285500 -> 285498 bytes translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-id.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 21 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 936eeed6cd..7f891cd2b7 100644 --- a/README.md +++ b/README.md @@ -1965,7 +1965,7 @@ Sit back and enjoy. - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-ar.md b/translations/README-ar.md index fb1df852db..1de939cec6 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1927,7 +1927,7 @@ Sit back and enjoy. "Netflix and skill" :P - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-bn.md b/translations/README-bn.md index b0a86e34ed02dbbea6807a64081e5e43503878be..5ffe1ca35bea8c4be9fb4161bda1019c32fa0743 100644 GIT binary patch delta 28 kcmdn9O>oyX!G;#b7N!>FEi9j`ra!pCsIXncnngna0Ir$}xc~qF delta 57 zcmdnBO>oaP!G;#b7N!>FEi9j`6w4Sg8B!U_8R8iV7;+dA87hIS9H3Y+LkWXDP|S9_ Jpf!u80ssh>4?_R| diff --git a/translations/README-cn.md b/translations/README-cn.md index 9d7220855f..87b6fe0d39 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1828,7 +1828,7 @@ - [MIT 6.858:计算机系统安全, 2014 年秋季](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [斯坦福: 编程范例 (27 个视频)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [斯坦福: 编程范例 (27 个视频)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [密码学导论,Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [课程网站以及幻灯片和问题集](http://www.crypto-textbook.com/) diff --git a/translations/README-de.md b/translations/README-de.md index d25633924a..c7f2d27ded 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -2035,7 +2035,7 @@ Zurücklehnen und genießen. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography von Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [KurswWebseite mit Folien und Problemstellungen](http://www.crypto-textbook.com/) diff --git a/translations/README-es.md b/translations/README-es.md index afc71874a9..4e25f141fe 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1913,7 +1913,7 @@ Siéntese y disfrute. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-fr.md b/translations/README-fr.md index 55a2539211..92cf51a179 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1997,7 +1997,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-he.md b/translations/README-he.md index e3dc1ce9b4..be59bbcb0c 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1992,7 +1992,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-id.md b/translations/README-id.md index 82c986610b..d2fc6e8959 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1850,7 +1850,7 @@ Duduk dan nikmati. "Netflix dan keterampilan": P - [MIT 6.858 Computer Systems Security, Musim Gugur 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Paradigma Pemrograman (27 video)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Paradigma Pemrograman (27 video)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Pengantar Kriptografi oleh Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Situs Kursus bersama dengan Slide dan Kumpulan Soal](http://www.crypto-textbook.com/) diff --git a/translations/README-ja.md b/translations/README-ja.md index 29ea276116..d2d5d432e2 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1904,7 +1904,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [MIT 6.858コンピュータシステムセキュリティ、2014年秋](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford:Programming Paradigms(27ビデオ)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford:Programming Paradigms(27ビデオ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Christof Paarによる暗号の概要](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [スライドと問題セットと一緒のコースウェブサイト](http://www.crypto-textbook.com/) diff --git a/translations/README-kh.md b/translations/README-kh.md index be19759697..ecf08edf2e 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1937,7 +1937,7 @@ Mock Interviews: - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 វីដេអូ)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 វីដេអូ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-ko.md b/translations/README-ko.md index ef3e11ebd1..1119b3af54 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1925,7 +1925,7 @@ Challenge repos: - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-pl.md b/translations/README-pl.md index 3763faaf22..1cd18eb272 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1915,7 +1915,7 @@ Usiądź i spędź miło czas. "Netflix and skill" :P - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 wideo)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 wideo)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 583a4f4009..06e428d707 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1951,7 +1951,7 @@ Sente-se e aproveite. "Netflix e habilidade" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) (MIT 6.858 Segurança de Sistemas de Computador, Outono de 2014) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) (Stanford: Paradigmas de Programação - 27 vídeos) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) (Stanford: Paradigmas de Programação - 27 vídeos) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) (Introdução a Criptografia por Christof Paar) - [Website de Curso junto com Slides e Conjuntos de Problemas](http://www.crypto-textbook.com/) diff --git a/translations/README-ru.md b/translations/README-ru.md index 488474a14f..7b4668ecc1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1975,7 +1975,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-th.md b/translations/README-th.md index 57327eff99..68b4bd9aa4 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1921,7 +1921,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-tw.md b/translations/README-tw.md index 7a71969aff..4cad652654 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1834,7 +1834,7 @@ Coding面試題目影片: - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27部影片)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27部影片)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-uk.md b/translations/README-uk.md index 42610acaf8..37ae2f3418 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1972,7 +1972,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-ur.md b/translations/README-ur.md index 034b798ce1..7a01b66482 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1926,7 +1926,7 @@ Sit back and enjoy. "Netflix and skill" :P - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-uz.md b/translations/README-uz.md index 57bd5b2e64..e1199dcfee 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1900,7 +1900,7 @@ Qulay joylashib oling va maroqlaning. "Netflix va skillar" :P - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) diff --git a/translations/README-vi.md b/translations/README-vi.md index 75f864889f..daad29eb0f 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1939,7 +1939,7 @@ Hãy ngồi xuống và thưởng thức. "Luyện kỹ năng với Netflix" :P - [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/view_play_list?p=9D558D49CA734A02) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) From be4dfdb2ed60b89a1f7ffc2d94e18c53212c08ba Mon Sep 17 00:00:00 2001 From: Carlone Scott Date: Tue, 27 Jul 2021 23:50:33 -0400 Subject: [PATCH 287/857] Add `The Dictionary Even Mightier` talk This commit will add an updated talk: [The Dictionary Even Mightier](https://www.youtube.com/watch?v=66P5FMkWoVU) by Brandon Rhodes (Pycon 2017). --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dc1f754f64..fcad9969b8 100644 --- a/README.md +++ b/README.md @@ -602,6 +602,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [Pycon 2-17: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) From 02dcb64b02bee8d2e9836ae1c7acf1b313ae2c00 Mon Sep 17 00:00:00 2001 From: Carlone Scott Date: Tue, 27 Jul 2021 23:59:59 -0400 Subject: [PATCH 288/857] Fix typo in Pycon date --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fcad9969b8..93e2d41057 100644 --- a/README.md +++ b/README.md @@ -602,7 +602,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [Pycon 2-17: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) From cb8961db7d3677cbd4271f053b15624161675611 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 29 Jul 2021 08:54:17 -0700 Subject: [PATCH 289/857] Adds sponsors to translations. --- translations/README-ar.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-bn.md | Bin 285498 -> 288848 bytes translations/README-cn.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-de.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-es.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-fr.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-he.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-hi.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-id.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-ja.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-kh.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-ko.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-pl.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-ptbr.md | 39 +++++++++++++++++++++++++++++++++++- translations/README-ru.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-th.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-tw.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-uk.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-ur.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-uz.md | 37 ++++++++++++++++++++++++++++++++++ translations/README-vi.md | 37 ++++++++++++++++++++++++++++++++++ 21 files changed, 741 insertions(+), 1 deletion(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 1de939cec6..be6269f1e4 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -44,6 +44,43 @@ + + ## ما هذا؟ هي خطتي متعددة الأشهر للوصول من مطور ويب (تعليم ذاتي، بدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات لشركة عملاقة diff --git a/translations/README-bn.md b/translations/README-bn.md index 5ffe1ca35bea8c4be9fb4161bda1019c32fa0743..319931a08f076659499bfef718b9f82e80d3668b 100644 GIT binary patch delta 2608 zcmbVO%We}v5NszP2!Tk6odZIVh8ze;*iLu|h-{-I5I7)$gg7HV)(`wx%U&mN+5XoINp6{% zrI{etcDld%`)o7?yE-Ys&K7neU)_ygk!bhXkEwMx%r~=UeZ2L`6QK$l&)wp~$t#O|{9|KT z>s<6ph>bP}$nLOu5pgNN8(B04sgCf-433%8vs14}YR)pcN>1{5|ga@WG%nhfp8 ztL=+?r}um3@2m{Jj-?%dHncMoT)#;#O@ex)l{`hNJ$N5hAuEnoU`b`b5$_gu zIHuKzCF=?H<+Qcf`D0BuTTRe7HgyMM%i}_Du$y1i+V5+Z##Ak<*2186Yk1Ia1_uS| zBe0H=(e7I`0nr)IS5PtwSUH*QqWJ7jbU;@I&TLy?CMf*|5VIk&0T|iPV|f$P8M~9s z6q#Y685LX|ds#ZnCxc+SAz*5OGp`R>=RORXY(_S?pGPPz_Fa+gN#e2L5DtMGxN~qC zMZ_N)RgB`g>f%kNecqu&ON>RlEdyl4cJ@G#LvV~gIF?O<>9Y3#v&vsJjL}~DRB;78 zp66M0mo)bl=AO8>;D)Gd!>5sDf`TUimI)&W`tJ$Nc4P8p8~zo?eR|`*J&3(Oh(+)> Og}>>~2eDJ{w*LScLFo7Z delta 34 ncmca`L2%bL!3}#vrj;;qHQ!NezoW +
+

+ Become a sponsor and support Coding Interview University! +

+

+ Special thanks to: +

+

+ +

+
+ Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
+
+
+

+
+

+ +

+
+

+ Dev environments built for the cloud +

+
+
+ Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. +
+
+

+
+
+ ## 这是? 这是我为了从 web 开发者(自学、非计算机科学学位)蜕变至 Google 软件工程师所制定的计划,其内容历时数月。 diff --git a/translations/README-de.md b/translations/README-de.md index c7f2d27ded..c6de9fd701 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -45,6 +45,43 @@ + + ## Worum es geht Das ist mein mehrmonatiger Lehrplan um sich vom Web Developer (Selbststudium, kein Abschluss in Informatik) zum Softwareingenieur bei einer großen Firma zu entwickeln. diff --git a/translations/README-es.md b/translations/README-es.md index 4e25f141fe..9ac29263f1 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -46,6 +46,43 @@ + + ## ¿Qué es esto? Este es mi plan de estudios de varios meses para pasar de ser un Desarrollador Web (Autodidacta, sin título) a un Ingeniero de Software para una gran compañía. diff --git a/translations/README-fr.md b/translations/README-fr.md index 9609e93f04..d4204c2579 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -5,6 +5,43 @@ Traductions: - [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/coding-interview-university/issues/80) - मानक हिन्दी (in progress) [Issue #81](https://github.com/jwasham/coding-interview-university/issues/81) + + ## C'est quoi? C'est un plan d'études de plusieurs mois pour aller d'un développeur web (Autodidacte, sans diplôme en informatique) à ingénieur logiciel google. diff --git a/translations/README-he.md b/translations/README-he.md index be59bbcb0c..5e865face0 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -7,6 +7,43 @@ ישנם מספר דברים בתחתית הרשימה שמעוד יועילו בהכנה לראיון עצמו לאחר שצלחתם את חומר הלימוד, על מנת לפתור את הבעיות המוצגות בראיון ביעילות. + + חלק גדול מהתכנים לקוחים מהאתר המצויין של סטיב יגיי: המשרה הזו בגוגל? שלך! "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" diff --git a/translations/README-hi.md b/translations/README-hi.md index 37ed5e3e8f..71204781e7 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -5,6 +5,43 @@ > >आपको शुभकामनाएं! + + ## यह क्या है? यह एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर को वेब डेवलपर (स्वयं सिखाया, कोई सीएस डिग्री नहीं) से जाने के लिए मेरी बहु-महीने की अध्ययन योजना है diff --git a/translations/README-id.md b/translations/README-id.md index d2fc6e8959..1669f212bc 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -2,6 +2,43 @@ Versi asli: [Bahasa Inggris](../README.md) + + ## Ringkasan apa ini? Ini adalah rencana studi multi-bulan saya untuk beralih dari pengembang web (otodidak, tanpa gelar Ilmu Komputer) menjadi insinyur perangkat lunak untuk perusahaan besar. diff --git a/translations/README-ja.md b/translations/README-ja.md index d2d5d432e2..893ceb77e4 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -34,6 +34,43 @@ - [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) + + ## これは何? これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 diff --git a/translations/README-kh.md b/translations/README-kh.md index ecf08edf2e..4b410b1150 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -47,6 +47,43 @@ + + --- ## តារាងមាតិកា diff --git a/translations/README-ko.md b/translations/README-ko.md index 1119b3af54..80023e8911 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -46,6 +46,43 @@ + + ## 코딩 인터뷰 대학이란? 코딩 인터뷰 대학은 (컴퓨터공학 학위 없이 독학한) 웹 개발자에서 큰 회사의 소프트웨어 엔지니어가 되기 위한 나의 몇 달간의 공부 계획이다. diff --git a/translations/README-pl.md b/translations/README-pl.md index 1cd18eb272..387ce0a4ce 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -44,6 +44,43 @@ + + ## Co to jest? To jest mój wielomiesięczny plan nauki od przejścia od programisty (samouka, bez dyplomu CS - informatyki) do inżyniera oprogramowania dla dużej firmy. diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 06e428d707..cf3b29546b 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -39,7 +39,44 @@ Traduções em progresso: - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - + + + ## O que é isso? Esse é o meu plano de estudo mensal para ir de desenvolvedor web (autodidata, sem formação em Ciência da Computação) à engenheiro de software em uma grande empresa. diff --git a/translations/README-ru.md b/translations/README-ru.md index 7b4668ecc1..00b4b079b3 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -2,6 +2,43 @@ Оригинальная версия: [Английский](../README.md) + + ## Для кого это? Это мой учебный план, рассчитанный на несколько месяцев для веб-разработчиков, не имеющих образования в Computer Science (CS) diff --git a/translations/README-th.md b/translations/README-th.md index 68b4bd9aa4..e7c69d74a0 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -26,6 +26,43 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) + + ## นี่คืออะไร ? นี่เป็นแผนการศึกษาหลายเดือนของผมจากนักพัฒนาเว็บไซต์ (ด้วยการศึกษาด้วยตัวเอง โดยไม่ได้จบวิทยาการคอมพิวเตอร์) เพื่อจะเป็นวิศวกรซอฟต์แวร์ในบริษัทขนาดใหญ่ที่หลายๆ คนต้องการเข้าทำงานด้วย diff --git a/translations/README-tw.md b/translations/README-tw.md index 4cad652654..da39819db9 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -45,6 +45,43 @@ + + ## What is it? 這是我為了從一個網頁開發者(自學,並且沒有任何與資工、電腦科學有關的學位),成為一個大公司軟體工程師,持續好幾個月的讀書計畫。 diff --git a/translations/README-uk.md b/translations/README-uk.md index 37ae2f3418..2f000625ec 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -53,6 +53,43 @@ Microsoft. + + ## Що це? Це мій багатомісячний план навчання для переходу від веб-розробника (самоука, diff --git a/translations/README-ur.md b/translations/README-ur.md index 7a01b66482..02566bfe5b 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -45,6 +45,43 @@ + + ## What is it? This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. diff --git a/translations/README-uz.md b/translations/README-uz.md index e1199dcfee..d56275434f 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -12,6 +12,43 @@ Asl versiyasi: [Inglizcha](../README.md) > > *Sizga omad tilayman!* + + ## Bu nima uchun kerak? Bu mening web dasturchi (web developer) darajasidan katta kompaniyada ishlaydigan dastur injineri (software engineer) darajasiga chiqish uchun qilgan ko'p oylik o'qish rejam. diff --git a/translations/README-vi.md b/translations/README-vi.md index daad29eb0f..46a86f5076 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -29,6 +29,43 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt > > *Chúc may mắn!* + + ## Giới thiệu Đây là kế hoạch học tập trong nhiều tháng của tôi, để từ một nhà phát triển web (tự học, không có bằng cấp về Khoa Học Máy Tính - KHMT) trở thành một kỹ sư phần mềm ở Google. From add2f04189397ab7989ccf038d1ea38ae0b171ac Mon Sep 17 00:00:00 2001 From: Kagan Date: Sat, 31 Jul 2021 10:53:42 +0200 Subject: [PATCH 290/857] set the file namings & paths --- README-tr.md => README.md | 1057 ++++++++++--------- translations/README-tr.md | 2049 ++++++++++++++++++++++++++++++++++++- 2 files changed, 2539 insertions(+), 567 deletions(-) rename README-tr.md => README.md (73%) diff --git a/README-tr.md b/README.md similarity index 73% rename from README-tr.md rename to README.md index 90715cda13..78417ca680 100644 --- a/README-tr.md +++ b/README.md @@ -1,33 +1,32 @@ -# Kodlama Mülakatı Üniversitesi +# Coding Interview University -> Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, -> ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından -> Yazılım Geliştirme Mühendisi olarak işe alındım.](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> Muhtemelen yaptığım kadar çok çalışmanıza gerek kalmayacaktır. Her neyse, ihtiyaç duyabileceğiniz her şey burada. +> I originally created this as a short to-do list of study topics for becoming a software engineer, +> but it grew to the large list you see today. After going through this study plan, [I got hired +> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> You probably won't have to study as much as I did. Anyway, everything you need is here. > -> Birkaç ay boyunca günde 8 - 12 saat çalıştım. İşte benim hikayem: [Neden bir Google mülakatı için 8 ay boyunca tam zamanlı çalıştım?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> Burada listelenenler sizi herhangi bir yazılım firmasıyla yapacağınız teknik mülakata iyi bir şekilde hazırlar, -> büyük devler de dahil: Amazon, Facebook, Google, ve Microsoft. +> The items listed here will prepare you well for a technical interview at just about any software company, +> including the giants: Amazon, Facebook, Google, and Microsoft. > -> *İyi Şanslar!* - +> *Best of luck to you!*
Translations: - [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamca](translations/README-vi.md) -- [İspanyolca](translations/README-es.md) -- [Brezilya Portekizcesi](translations/README-ptbr.md) -- [Lehçe](translations/README-pl.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) - [繁體中文](translations/README-tw.md) -- [Japonca (日本語)](translations/README-ja.md) -- [Rusça](translations/README-ru.md) -- [Almanca](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) - [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Kmer](translations/README-kh.md) -- [Özbekçe](translations/README-uz.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md)
@@ -36,16 +35,16 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arapça](https://github.com/jwasham/coding-interview-university/issues/98) -- [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) -- [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) - [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) -- [İtalyanca](https://github.com/jwasham/coding-interview-university/issues/170) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) @@ -53,10 +52,10 @@
- 2018'de kurulan OSS Capital, yalnızca erken aşamadaki COSS (ticari açık kaynak) start-up
kurucularını desteklemeye odaklanan ilk ve tek risk sermayesi platformudur.
+ Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.

@@ -76,180 +75,178 @@

- Bulut için oluşturulmuş geliştirme ortamları + Dev environments built for the cloud

- GitLab, GitHub ve Bitbucket ile yerel olarak entegre olan Gitpod, tüm branchlarınız için otomatik olarak ve sürekli olarak geliştirme ortamları oluşturur. Sonuç olarak, ekip üyeleri her yeni görev için anında yeni geliştirme ortamlarıyla kodlamaya başlayabilir - ister yeni bir özellik oluşturuyor olun, ister bir hatayı düzeltmek istiyor olun, ister bir kod incelemesi üzerinde çalışıyor olun. + Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.


-## Nedir? +## What is it? + +This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. -Bir web geliştiricisinden (CS derecesi olmadan, alaylı), büyük bir firmada yazılım mühendisi olmak için çok-aylı bir çalışma planıdır. +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -![Beyaz tahtada kodlama - HBO'nun Silikon Vadisi'nden](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +This is meant for **new software engineers** or those switching from +software/web development to software engineering (where computer science knowledge is required). If you have +many years of experience and are claiming many years of software engineering experience, expect a harder interview. -Bu liste, yeni yazılım mühendisleri için veya web ya da yazılım geliştiriciliği alanlarından, yazılım mühendisliğine (bilgisayar bilimleri bilgisi gerekli) geçiş için hazırlanmıştır. -Eğer uzun yıllardır tecreübeniz varsa ve yazılım mühendisliği tecrübesi istiyorsanız, daha zor bir mülakat bekleyin. -Eğer uzun yıllardır yazılım/web geliştirme deneyiminiz varsa, Google, Amazon, Facebook ve Microsoft gibi büyük yazılım firmalarının yazılım mühendisliğini yazılım/web geliştirmekten farklı gördüğüne, ve bilgisayar bilimleri bilgisi istediğine dikkat edin. +If you have many years of software/web development experience, note that large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. -Eğer güvenlik ya da operasyon mühendisi olmak istiyorsanız, opsiyonel listeden (network, güvenlik) konulara daha fazla çalışın. +If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). --- -## İçindekiler - -- [Nedir?](#nedir) -- [Neden kullanılır?](#neden-kullanılır) -- [Nasıl kullanılır?](#nasıl-kullanılır) -- [Yeterince zeki olmadığınızı hissetmeyin](#yeterince-zeki-olmadığınızı-hissetmeyin) -- [Video Kaynakları Hakkında](#video-kaynakları-hakkında) -- [Mülakat Süreci & Genel Mülakat Hazırlığı](#interview-process--general-interview-prep) -- [Mülakat İçin Bir Dil Seçin](#pick-one-language-for-the-interview) -- [Kitap Listesi](#book-list) -- [Başlamadan Önce](#before-you-get-started) -- [Örtülü Olarak Görmeyecekleriniz](#what-you-wont-see-covered) -- [Günlük Plan](#the-daily-plan) -- [Önkoşul Bilgisi](#prerequisite-knowledge) -- [Günlük Plan](#the-daily-plan) -- [Algoritma Karmaşıklığı / Big-O / Asimptotik Analizler](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Veri Yapıları](#data-structures) - - [Diziler](#arrays) - - [Bağlı Listeler](#linked-lists) - - [Yığın](#stack) - - [Kuyruk](#queue) - - [Hash tablosu](#hash-table) -- [Ekstra Bilgi](#more-knowledge) - - [İkili arama](#binary-search) - - [Bitsel operasyonlar](#bitwise-operations) -- [Ağaçlar](#trees) - - [Ağaçlar - Notlar & Arkaplan](#trees---notes--background) - - [İkili Arama Ağaçları: BST'ler](#binary-search-trees-bsts) - - [Yığın / Öncelik Kuyruğu / İkili Yığın](#heap--priority-queue--binary-heap) - - dengeli arama ağaçları (genel konseptler, detaylar hariç) - - dolaşımlar: preorder, inorder, postorder, BFS, DFS -- [Sıralama](#sorting) - - seçimli (selection) - - eklemeli (insertion) - - yığın sıralama (heapsort) - - hızlı sıralama (quicksort) +## Table of Contents + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [About Video Resources](#about-video-resources) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Pick One Language for the Interview](#pick-one-language-for-the-interview) +- [Book List](#book-list) +- [Before you Get Started](#before-you-get-started) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [The Daily Plan](#the-daily-plan) +- [Prerequisite Knowledge](#prerequisite-knowledge) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort - merge sort -- [Graflar](#graphs) - - yönlü - - yönsüz - - bitişiklik matrisi - - bitişiklik listesi - - dolaşımlar: BFS, DFS -- [Daha Fazla Bilgi](#even-more-knowledge) - - [Rekürsif](#recursion) - - [Dinamik Programlama](#dynamic-programming) - - [Nesneye-Yönelik Programlama](#object-oriented-programming) - - [Tasarım Desenleri](#design-patterns) - - [Kombinasyonlar (n seçim k) & İhtimaller](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete ve Yaklaşım Algoritmaları](#np-np-complete-and-approximation-algorithms) - - [Önbellekler](#caches) - - [Prosesler ve Threadler](#processes-and-threads) - - [Test Etme](#testing) - - [Zamanlama](#scheduling) - - [Kağıtlar](#papers) - - [Test Etme](#testing) - - [Planlama](#scheduling) - - [String arama & manipulasyon](#string-searching--manipulations) - - [Denemeler](#tries) - - [Kayan Noktalı Sayılar](#floating-point-numbers) +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Object-Oriented Programming](#object-oriented-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [Scheduling](#scheduling) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) - [Unicode](#unicode) - [Endianness](#endianness) - - [Network Oluşturma](#networking) -- [Sistem Tasarımı, Ölçeklenebilirlik, Veri İşleme](#system-design-scalability-data-handling) (eğer 4+ yıldan fazla deneyiminiz varsa) -- [Final Bakışı](#final-review) -- [Kodlama Soruları Uygulaması](#coding-question-practice) -- [Kodlama egzersizleri/yarışmalar](#coding-exerciseschallenges) -- [Mülakata yakın olduğunuzda](#once-youre-closer-to-the-interview) -- [Sizin için En İyi Kariyer Fırsatlarını Bulma Yöntemi](#best-way-to-find-perfect-career-opportunities-for-you) -- [Özgeçmişiniz](#your-resume) -- [Mülakat geldiğinde düşünmek](#be-thinking-of-for-when-the-interview-comes) -- [Mülakat yapan kişiye sorularınızın olması](#have-questions-for-the-interviewer) -- [İşi Aldığınızda](#once-youve-got-the-job) - ----------------- Bu bölümün altındakiler opsiyoneldir ---------------- - -## Ek Kaynaklar - -- [Ek kitaplar](#additional-books) -- [Ek Öğrenim](#additional-learning) - - [Derleyiciler](#compilers) - - [Emacs ve vi(m)](#emacs-and-vim) - - [Unix komut satırı araçları](#unix-command-line-tools) - - [Bilgi teorisi](#information-theory-videos) - - [Parite & Hamming Kodu](#parity--hamming-code-videos) - - [Entropi](#entropy) - - [Kriptografi](#cryptography) - - [Sıkıştırma](#compression) - - [Bilgisayar Güvenliği](#computer-security) - - [Çöp toplayıcı](#garbage-collection) - - [Paralel Programlama](#parallel-programming) - - [Mesajlaşma, Serileştirme ve Kuyruklama Sistemleri](#messaging-serialization-and-queueing-systems) + - [Networking](#networking) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Final Review](#final-review) +- [Coding Question Practice](#coding-question-practice) +- [Coding exercises/challenges](#coding-exerciseschallenges) +- [Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [Best way to Find perfect Career Opportunities for you](#best-way-to-find-perfect-career-opportunities-for-you) +- [Your Resume](#your-resume) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +---------------- Everything below this point is optional ---------------- + +## Additional Resources + +- [Additional Books](#additional-books) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - [A*](#a) - - [Hızlı Fourier Dönüşümü](#fast-fourier-transform) - - [Bloom Filtresi](#bloom-filter) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Konuma Duyarlı Hashleme](#locality-sensitive-hashing) - - [van Emde Boas Ağaçları](#van-emde-boas-trees) - - [Artırılmış Veri Yapıları](#augmented-data-structures) - - [Dengeli arama ağaçları](#balanced-search-trees) - - AVL ağaçları - - Splay ağaçları - - Kırmızı/siyah ağaçları - - 2-3 arama ağaçları - - 2-3-4 Ağaçları (aka 2-4 ağaçları) - - N-ary (K-ary, M-ary) ağaçları - - B-ağaçları - - [k-D Ağaçları](#k-d-trees) - - [Geçiş Listeleri](#skip-lists) - - [Network Akışları](#network-flows) - - [Ayrık Kümeler & Birlik Bulma](#disjoint-sets--union-find) - - [Hızlı İşleme için Matematik](#math-for-fast-processing) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - - [Lineer Programlama](#linear-programming-videos) - - [Geometri, Convex hull](#geometry-convex-hull-videos) - - [Ayrık matematik](#discrete-math) - - [Makine Öğrenmesi](#machine-learning) -- [Bazı Konular Hakkında Ekstra Bilgi](#additional-detail-on-some-subjects) -- [Video Serileri](#video-series) -- [Bilgisayar Bilimleri Kursları](#computer-science-courses) -- [Makaleler](#papers) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) --- -## Neden Kullanılır? +## Why use it? -Bu projeye başladığımda, Stack ya da heap farkını bilmiyordum, Big-O notasyonu hakkında bir şey bilmiyordum, ağaçlar hakkında bir şey -bilmiyordum, ya da bir graf nasıl dolaşılır bilmiyordum. Bir sıralama algoritması kodlamış olsaydım, iyi olmayacağını size -söyleyebilirdim. Kullandığım her veri yapısı dilin içinde hazır bulunmaktaydı, kaputun altında nasıl çalıştıklarını bilmiyordum. -Çalışmakta olduğum bir proses, "bellek yetersiz" uyarısı verene kadar herhangi bir bellek yönetimi yapmamıştım ve buna bir geçici çözüm -buldum. Hayatımda bir kaç sefer çok boyutlu dizileri kullandım ve binlerce birleştirici dizileri kullandım, ama hiç bir zaman sıfırdan -bir veri yapısı oluşturmadım. +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. +Every data structure I've ever used was built into the language, and I didn't know how they worked +under the hood at all. I've never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and +thousands of associative arrays, but I've never created data structures from scratch. -Bu uzun bir plan. Aylar sürebilir. Eğer bunlara aşinaysanız, daha az zamanınızı alacaktır. +It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. -## Nasıl Kullanılır +## How to use it -Aşağıdaki her şey bir ana hattır, ve yukarıdan aşağıya doğru öğeleri ele almalısınız. +Everything below is an outline, and you should tackle the items in order from top to bottom. -İlerlemeyi izlemek için görev listeleri de dahil olmak üzere GitHub'ın özel işaretleme özelliğini kullanıyorum. +I'm using GitHub's special markdown flavor, including tasks lists to track progress. -**Bu şekilde öğeleri seçmek için yeni bir dal oluşturun, braketler arasına sadece bir x koyun: [x]** +**Create a new branch so you can check items like this, just put an x in the brackets: [x]** + Fork a branch and follow the commands below - Bir dalı fork edin ve aşağıdaki komutları takip edin +Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button -Github repositorysini https://github.com/jwasham/coding-interview-university Fork butonuna tıklayarak fork edin - - Lokal repositorynize klonlayın + Clone to your local repo `git clone git@github.com:/coding-interview-university.git` @@ -259,7 +256,7 @@ Github repositorysini https://github.com/jwasham/coding-interview-university For `git fetch --all` - Değişikliklerinizi tamamladıktan sonra bütün kutuları X ile işaretleyin + Mark all boxes with X after you completed your changes `git add .` @@ -271,111 +268,112 @@ Github repositorysini https://github.com/jwasham/coding-interview-university For `git push --force` -[Github aromalı Markdown ile ilgili daha fazla bilgi](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## Yeterince zeki olmadığınızı hissetmeyin -- Başarılı yazılım mühendisleri akıllıdır, ancak çoğunluğu yeterince zeki olmadığı için güvensizlik yaşarlar. -- [Dahi programcı hakkında bir efsane](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [Yalnız Gitmek Tehlikeli: Teknolojide Görünmez Canavarla Savaşmak](https://www.youtube.com/watch?v=1i8ylq4j_EY) -- [Değişebileceğine inan](http://www.aaronsw.com/weblog/dweck) +## Don't feel you aren't smart enough +- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## Video Kaynakları Hakkında +## About Video Resources -Bazı videolar Coursera ya da EdX sınıflarına dahil olduğunuzda ulaşılabilmektedir. Bunlar MOOC'lar olarak adlandırılır. -Bazı kurslar aktif olmayabilirler, bir kaç ay beklemeniz gerekebilir, erişiminiz olmaz. +Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. - Ücretsiz ve her zaman ulaşılabilir kaynaklar eklerseniz memnun olurum, YouTube videoları gibi çevrimiçi kurs videolarına eşlik edebilirsiniz. - Üniversite derslerini kullanmayı severim. + I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. + I like using university lectures. -## Mülakat Süreci & Genel Mülakat Hazırlığı +## Interview Process & General Interview Prep -- [ ] [2021 Yılında Mühendislik Mülakatını Nasıl Geçersiniz](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [ ] [Beyaz tahtalama](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Teknoloji İşe Alımını Açıklığa Kavuşturmak](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] Büyük 4'lüde Nasıl İşe Girersiniz: - - [ ] [Büyük 4'lüde Nasıl İşe Girersiniz - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [Büyük 4(.1)'lüde Nasıl İşe Girersiniz (Devam videosu)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] Cracking the Facebook Coding Interview: - - [ ] [Yaklaşım](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problemde İzlenecek Yol](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] Hazırlık Kursu: - - [ ] [Software Engineer Interview Unleashed (ücretli kurs)](https://www.udemy.com/software-engineer-interview-unleashed): - - Eski bir Google görüşmecisinden yazılım mühendisi görüşmelerine kendinizi nasıl hazırlayacağınızı öğrenin. - - [ ] [Python for Data Structures, Algorithms, and Interviews (ücretli kurs)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - Veri yapılarını, algoritmaları, sahte mülakatları ve çok daha fazlasını kapsayan Python merkezli bir mülakat hazırlık kursu. - - [ ] [Intro to Data Structures and Algorithms using Python (Udacity ücretsiz kurs)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - Ücretsiz bir Python merkezli veri yapıları ve algoritmaları kursu. + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Prep Course: + - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - Mülakatlara ve iş başında senaryolara hazırlanmanıza yardımcı olmak için özel bir danışmandan 100'den fazla veri yapısı ve algoritma alıştırmaları ve rehberliği ile uygulamalı pratik yapın. + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Çoğu zaman, sizi hayalinizdeki işe girmekten alıkoyan şey teknik yeterliliğiniz değil, görüşmede davranışsal nasıl performans gösterdiğinizdir. + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. -## Mülakat İçin Bir Dil Seçin +## Pick One Language for the Interview -Mülakatın kodlama bölümü için rahat hissettiğiniz bir dili kullanabilirsiniz, ancak büyük şirketler için, aşağıdakiler sağlam seçeneklerdir: +You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: - C++ - Java - Python -Ayrıca bunları da kullanabilirsin, ancak önce okuyun. Bazı uyarılar olabilir: +You could also use these, but read around first. There may be caveats: - JavaScript - Ruby -İşte mülakat için bir dil seçme hakkında yazdığım bir makale: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -Bir dilde çok rahat ve bilgili olmanız gerekmektedir. +You need to be very comfortable in the language and be knowledgeable. -Seçenekler hakkında daha fazlasını okuyun: +Read more about choices: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ -[Dil kaynaklarına buradan göz atın](programming-language-resources.md) +[See language resources here](programming-language-resources.md) -Aşağıda C, C++ ve Python öğreniminin dahil olduğunu göreceksiniz, çünkü ben öğreniyorum. Alta bakarsanız bir kaç kitap dahil edilmiştir. +You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. -## Kitap Listesi +## Book List -Kendi kullandığım kısa bir liste. Zamandan tasarruf etmenizi sağlayacaktır. +This is a shorter list than what I used. This is abbreviated to save you time. -### Mülakat Hazırlığı +### Interview Prep - [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - C++ ve Java dillerinde cevaplar - - Cracking the Coding Interview için iyi bir ısınma - - çok zor değil, çoğu problem bir mülakatta göreceğinizden daha kolay (benim okuduğum kadarıyla) + - answers in C++ and Java + - this is a good warm-up for Cracking the Coding Interview + - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Java dilinde cevaplar + - answers in Java -### Eğer bir sürü ekstra vaktiniz varsa: +### If you have tons of extra time: -Birini seçin: +Choose one: - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) - [ ] Elements of Programming Interviews (Java version) - - [kitap](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -### Spesifik Dil +### Language Specific -**Mülakat için bir dil seçmeniz gerekir (alta bakın).** Dile göre önerilerim burada. Her dil için kaynaklara sahip değilim. İlaveleri memnuniyetle karşılarım. +**You need to choose a language for the interview (see above).** -Eğer bunlardan birini okursanız, kodlama problemlerini yapmaya başlamanız için gereken tüm veri yapılarına ve algoritma bilgisine sahip olmanız gerekir. -İnceleme yapmak istemiyorsanız **bu projedeki bütün video derslerini atlayabilirsiniz** +Here are my recommendations by language. I don't have resources for all languages. I welcome additions. -[Spesifik dillere özgü ek kaynaklar burada.](programming-language-resources.md) +If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. +**You can skip all the video lectures in this project**, unless you'd like a review. + +[Additional language-specific resources here.](programming-language-resources.md) ### C++ -Henüz bu ikisini okumadım, ancak Sedgewick tararından yüksek derecelendirilmiş ve yazılmıştır. O mükemmel biri. +I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) @@ -383,146 +381,151 @@ Henüz bu ikisini okumadım, ancak Sedgewick tararından yüksek derecelendirilm - Rich and detailed collection of Data Structures and Algorithms - Great for first-timers -C++ için daha iyi bir tavsiyeniz varsa, beni bilgilendirin. Kapsamlı bir kaynak arıyorum. +If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. ### Java - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - kitap içeriğiyle birlikte coursera videoları (ve Sedgewick!): + - videos with book content (and Sedgewick!) on coursera: - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -YA DA: +OR: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - Goodrich, Tamassia, Goldwasser tarafından - - UC Berkeley'de bilgisayar bilimleri tanıtımı için opsiyonel metin olarak kullanılır - - aşağıda Python versiyonuyla ilgili kitap raporuma bak. Bu kitap aynı konuları kapsıyor. + - by Goodrich, Tamassia, Goldwasser + - used as optional text for CS intro course at UC Berkeley + - see my book report on the Python version below. This book covers the same topics ### Python - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - Goodrich, Tamassia, Goldwasser tarafından - - Bu kitabı seviyorum. Her şeyi ve daha fazlasını kapsıyor. - - Pythonic kod - - kitap raporum: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) -## Başlamadan Önce +## Before you Get Started + +This list grew over many months, and yes, it kind of got out of hand. -Bu liste birkaç ayda büyüdü, ve evet, biraz elden çıktı. +Here are some mistakes I made so you'll have a better experience. -Yaptığım hatalar şunlardır; böylece daha iyi bir tecrübeye sahip olacaksınız. +### 1. You Won't Remember it All -### 1. Hepsini Hatırlamayacaksın +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards, so I could review. -Saatlerce videolar izledim ve bol bol notlar aldım ancak aylar sonra hatırlamadığım çok şey oldu. Notlar karıştırarak ve -flashcardlar yaparak tekrarlamaya 3 günümü harcadım. +Please, read so you won't make my mistakes: -Lütfen okuyun, benim hatalarımı yapmayın: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn). -### 2. Flashcard Kullanın +### 2. Use Flashcards -Problemi çözmek için, genel ve kod olmak üzere 2 tür flashcard ekleyebildiğim küçük bir flashcard sitesi hazırladım. -Her kart farklı bir formata sahip. +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. -Nerede olursam olayım, telefonumdan ve tabletimden inceleyebilmek için bir mobil web sitesi hazırladım. +I made a mobile-first website, so I could review on my phone and tablet, wherever I am. -Kendinizinkini ücretsiz olarak yapın: +Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [Benim flashcard veritabanım (eski - 1200 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [Benim flashcard veritabanım (yeni - 1800 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -Kartlarla ilgili biraz aşırıya kaçtım, benim kartlarım Assembly dilinden Python'a, makine öğrenmesinden istatistiğe kadar bir çok şeyi kapsar. Gerekli olandan çok daha fazlasına sahip. +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. -**Flashcardlarla ilgili not:** İlk defa cevabı bildiğinizi fark ederseniz, bildiğiniz gibi işaretlemeyin. Aynı kartı görmeniz ve -gerçekten bilmeden önce birkaç kez doğru cevaplamanız gerekir. Tekrarlama bu bilgiyi beyninizde derinleştirecektir. +**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. -Kullandığım flashcard siteme bir alternatif [Anki](http://ankisrs.net/), bana defalarca tavsiye edildi. Unutulmaması için bir tekrarlama sistemi kullanır. -Kullanıcı dostu, tüm platformlarda kullanılabilir ve bir bulut senkronizasyon sistemi vardır. iOS'da 25$, diğer platformlarda ücretsiz. +An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. -Benim flashcard veritabanımın Anki formatı: https://ankiweb.net/shared/info/25173560 (teşekkürler, [@xiewenya](https://github.com/xiewenya)) +My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -### 3. Veri yapıları ve algoritmaları öğrenirken kodlama mülakatına yönelik sorular yapın +### 3. Start doing coding interview questions while you're learning data structures and algorithms -Öğrendiklerinizi sorunları çözmek için uygulamanız gerekir, yoksa unutacaksınız. Bu hatayı yaptım. Bir konuyu öğrendikten sonra, -ve o konu üzerinde kendinizi rahat hissettikten sonra (örneğin bağlantılı listeler), kodlama mülakatı kitaplarından birini açın ve bununla ilgili birkaç soru yapın. -Ardından bir sonraki konuya geçin. Daha sonra geri dönün ve başka bir bağlantılı liste problemi yapın, -ya da özyineleme sorunu ya da her neyse. Ama öğrenirken problemler yapmaya devam edin. Bilgi için işe alınmıyorsun, -bilgiyi nasıl kullandığından işe alınıyorsun. Önerdiğim birkaç kitap ve site var. -Daha fazlası için buraya bakın: [Kodlama Soruları Pratiği](#coding-question-practice). +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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding +linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, +or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, +but how you apply the knowledge. There are several books and sites I recommend. +See here for more: [Coding Question Practice](#coding-question-practice). -### 4. Tekrar, tekrar, tekrar +### 4. Review, review, review -ASCII, OSI stack, Big-O notasyonu, ve daha fazlası üzerinde bir dizi kopya kağıdı tutarım. Boş zamanlarım olduğunda bunlara çalışırım. +I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. -Yarım saat için programlama problemlerine ara verin ve flashcard'larınıza geçin. +Take a break from programming problems for a half hour and go through your flashcards. ### 5. Focus -Değerli zamanınızı alabilecek bir çok dikkat dağıtıcı şey vardır. Odaklanma ve konsantrasyonda zorlanabilirsin. Arka fon müziği açarak gayet güzel bir şekilde odaklanabilirsin. +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. -## Neyi görmeyeceksiniz +## What you won't see covered -Bunlar yaygın teknolojilerdir ancak bu çalışma planının bir parçası değildir: +These are prevalent technologies but not part of this study plan: - SQL - Javascript -- HTML, CSS, ve diğer front-end teknolojileri +- HTML, CSS, and other front-end technologies -## Günlük Plan +## The Daily Plan -Bazı konular bir gün alır, ve bazıları birkaç gün sürer. Bazıları sadece öğrenilir, kullanılmaz. +Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. -Her gün aşağıdaki listeden bir konu alıyorum, bu konuyla ilgili videolar izliyorum, ve implemente ediyorum: -- C - struct * ve argüman olarak başka şeyler alan struct ve fonksiyonları kullanarak -- C++ - yerleşik türleri kullanmadan -- C++ - yerleşik türleri kullanarak, bağlı liste için STL'in std::list gibi -- Python - yerleşik türleri kullanarak (Python'la ilgili pratiğe devam etmek için) -- doğru yaptığımdan emin olmak için testler yazarım, bazen sadece basit assert() deyimleri kullanırım -- Java ya da başka bir şey yapabilirsin, bu sadece benim yaptıklarım. +Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: +- C - using structs and functions that take a struct * and something else as args +- C++ - without using built-in types +- C++ - using built-in types, like STL's std::list for a linked list +- Python - using built-in types (to keep practicing Python) +- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements +- You may do Java or something else, this is just my thing -Bunların hepsine ihtiyacın yok. Sadece [mülakat için bir dile](#pick-one-language-for-the-interview) ihtiyacın var. +You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). -Neden bunların hepsinde kod var? -- Bıkana kadar, pratik, pratik, pratik, ve sonra sorunsuzca yapılabilir (bazılarının bir çok edge-case'i var ve hatırlanması için defter tutma ayrıntıları var) -- Ham kısıtlamalar ile çalışın (Çöp toplayıcı yardımı olmadan belleği ayırma / boşaltma (Python ya da Java hariç)) -- Yerleşik türlerden faydalanarak, yerleşik araçları gerçek dünya kullanımında tecrübe edindim. (kendi bağlı liste uygulamamı production'da kullanmayacağım.) +Why code in all of these? +- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) +- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) +- Make use of built-in types, so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) -Her konu için bunları yapmaya vaktim olmayabilir, ama deneyeceğim. +I may not have time to do all of these for every subject, but I'll try. -Kodumu buradan görebilirsiniz: +You can see my code here: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -Her algoritmanın püf noktalarını ezberlemenize gerek yok. +You don't need to memorize the guts of every algorithm. -Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdileri test edin. Sonra bilgisayar dışında test edin. +Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. -## Önkoşul Bilgisi +## Prerequisite Knowledge -- [ ] **C Öğren** - - C her yerde. Çalışırken kitaplarda, derslerde, videolarda, kısaca *her yerde* örnekler göreceksin. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Bu kısa kitap C dili üzerinde büyük bir ipucu verir, ve biraz pratik yaparsanız hızlı bir şekilde yetkinleşebilirsiniz. C'yi anlarsanız programların ve belleğin nasıl çalıştığını anlarsınız. - - [Sorulara cevap verin](https://github.com/lekkas/c-algorithms) +- [ ] **Learn C** + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying + - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work + - [Answers to questions](https://github.com/lekkas/c-algorithms) -- [ ] **Bilgisayarlar programları nasıl işlerler:** - - [ ] [CPU programı nasıl yürütür (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Makine Kodu Talimatları (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - - [ ] [Registers ve RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [İşlemci (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Komutlar ve Programlar (video)](https://youtu.be/zltgXvg6r3k) +- [ ] **How computers process a program:** + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) -## Algoritma karmaşıklığı / Big-O / Asimptotik analiz -- uygulanacak bir şey değil -- Burada bir sürü video var. Anlayana kadar videoları izle. Her zaman geri gelip tekrar inceleyebilirsin -- Eğer çok matematiksel geliyorsa aşağıya inip ayrık matematik videolarına bakabilirsin +## Algorithmic complexity / Big-O / Asymptotic analysis + +- Nothing to implement +- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review +- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -541,156 +544,152 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -## Veri Yapıları - -- ### Diziler - - Otomatik olarak yeniden boyutlandırılan bir vektör uygulayın. - - [ ] Tanım: - - [Diziler (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - - [UC Berkeley CS61B - Lineer ve Çok Boyutlu Diziler (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (İzlemenye 15:32'den başlayın) - - [Dinamik Diziler (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - - [Jagged Diziler (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] Vektör uygulayın (otomatik yeniden boyutlandırmaya sahip değiştirilebilir dizi): - - [ ] Dizileri ve işaretçileri kullanarak kodlama pratiği yapın, ve indexleme kullanmak yerine işaretçi matematiği kullanarak bir indexe atlayın. - - [ ] ayrılmış belleğe sahip yeni ham veri dizisi - - arkada int dizini kullanabilir, özelliklerini kullanamazsınız. - - 16 ile başlayın, başlangıç sayısı daha büyükse, 2'nin katlarını kullanın - 16, 32, 64, 128 - - [ ] size() - eleman sayısı - - [ ] capacity() - tutabileceği eleman sayısı +## Data Structures + +- ### Arrays + - Implement an automatically resizing vector. + - [ ] Description: + - [Arrays (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) + - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold - [ ] is_empty() - - [ ] at(index) - verilen indekse ait öğeyi döndürür, eğer o sınırlarda indeks yoksa patlar. + - [ ] at(index) - returns item at given index, blows up if index out of bounds - [ ] push(item) - - [ ] insert(index, item) - indekse öğe ekler, bu dizinin değerini ve arkasındaki öğeleri sağa kaydırır. - - [ ] prepend(item) - indeks 0'dan yukarıya eklemek için kullanılır - - [ ] pop() - en sondakini kaldırır, geri döndürür - - [ ] delete(index) - verilen indeksteki öğeyi siler, arkadaki öğeleri sola kaydırır. - - [ ] remove(item) - öğeyi arar ve onu tutan indeksi kaldırır (birden çok indekste olsa bile) - - [ ] find(item) - öğeyi arar ve öğeye sahip ilk indeksi döndürür, bulamazsa -1 döndürür - - [ ] resize(new_capacity) // özel fonksiyon - - kapasiteye erişince, boyutu iki katına çıkarın - - bir öğeyi çıkardığınızda, boyut 1/4 kapasiteye sahipse, yarısına yeniden boyutlandırın - - [ ] Zaman - - O(1) sona ekleme/silmede (daha fazla yer ayırmak için amortize edilir), index, ya da güncelleme - - O(n) başka yere ekleme/silmede - - [ ] Alan - - bellekte bitişiklik, performans artışına yardımcı olur - - gereken alan = (dizi kapasitesi, ki >= n) * öğe boyutu, 2n için, yine O(n) - -- ### Bağlı Listeler - - [ ] Tanım: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - tüm video değil, Node yapısı ve bellek ayırma için olan bölümler. - - [ ] Bağlı Listeler vs Diziler: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [neden bağlı listelerden kaçınmalısınız (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Pointer için pointer bilgisine ihtiyacınız var: - (bir pointer'ı bir fonksiyona yolladığınızda, bu pointer'ın işaret ettiği adresi değiştirebilir.) - Bu sayfa ptr ile ptr arasında bir kavrayış elde etmek içindir. Bu listeyi yukarıdan aşağıya geçiş tarzını tavsiye etmiyorum. Okunabilirlik ve sürdürülebilirlik, zekice olması nedeniyle acı çekici oluyor. + - not the whole video, just portions about Node struct and memory allocation + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] uygula (Kuyruk pointer ile & onsuz yaptım): - - [ ] size() - listedeki veri elementlerinin sayısını geri döndürür - - [ ] empty() - liste boşsa true döndürür - - [ ] value_at(index) - indexteki öğenin içeriğini döndürür (0'dan başlar) - - [ ] push_front(value) - listenin başına bir öğe ekler - - [ ] pop_front() - liste başındaki öğeyi kaldırıp return eder - - [ ] push_back(value) - listenin sonuna öğe ekler - - [ ] pop_back() - listenin sonundaki öğeyi kaldırır ve içeriğini return eder - - [ ] front() - ilk öğenin içeriğini verir - - [ ] back() - son öğenin içeriğini verir - - [ ] insert(index, value) - indexe yeni öğe ekler, geçerli öğenin indexi, yeni eklenen indexi gösterir - - [ ] erase(index) - verilen indexteki düğümü siler - - [ ] value_n_from_end(n) - listenin sonundan başlayarak n. pozisyondaki öğenin içeriğini verir - - [ ] reverse() - listeyi ters çevirir - - [ ] remove_value(value) - bu değerdeki ilk bulunan içeriği kaldırır - - [ ] Çift Bağlı Liste - - [Tanım (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - Uygulamaya gerek yok - -- ### Yığın - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] Uygulamayın. Diziyle gerçekleştirmek önemsiz. - -- ### Kuyruk - - [ ] [Kuyruk (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] Implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Will not implement. Implementing with array is trivial + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Bağlı listeyle birlikte kuyruk işaretçisi kullanarak uygulayın: - - enqueue(value) - kuyruktaki pozisyona değer ekler - - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır (ön) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) - empty() - - [ ] Sabit boyutlu dizi kullanarak uygulayın: - - enqueue(value) - müsait saklama alanının sonuna öğe ekler - - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element - empty() - full() - - [ ] Maliyet: - - bağlı liste kullanılarak yapılan kötü bir uygulamada enqueue ve dequeue işlemleri O(n) zaman alır - çünkü son öğenin devamına ihtiyacınız var, bu durum da her dizinin dolanmasına neden olur. - - enqueue: O(1) (amorti, bağlı liste ve dizi [sondalama]) - - dequeue: O(1) (bağlı liste ve dizi) - - empty: O(1) (bağlı liste ve dizi) - -- ### Hash tablosu - - [ ] Videolar: - - [ ] [Zincirleme ile Hashing (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [Tablo Katlama, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Açık Adresleme, Kriptografik Hashleme (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(İleri Seviye) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(İleri Seviye) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Kurslar: - - [ ] [Hash Fonksiyonlarını Anlama (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) - - [ ] [Hash Tablolarını Kullanma (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) - - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) - - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Veri Yapıları (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Telefon Rehberi Problemi (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] dağıtık hash tabloları: + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] Doğrusal sondalama (Linear Probing) kullanarak dizi ile uygulayın: - - hash(k, m) - m has tablosunun büyüklüğü - - add(key, value) - eğer key varsa, değerini güncelle + - [ ] Implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value - exists(key) - get(key) - remove(key) -## Daha Fazla Bilgi +## More Knowledge -- ### İkili arama (Binary search) +- ### Binary search - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] Uygulama: - - binary search (sıralanmış tam sayı dizisine) - - binary search (rekürsif kullanarak) - -- ### Bitsel işlemler - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 2'nin üslerinden bir çoğunu bilmelisin (2^1 to 2^16 and 2^32) - - [ ] Bunlarla bitleri manipüle etmeyi iyi anlayın: &, |, ^, ~, >>, << - - [ ] [kelimeler](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] İyi bir başlangıç: - [Bit Manipülasyonu (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programlama Uygulaması 2-10: Bitsel Operatörler (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipülasyonu](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitsel Operasyon](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - - [ ] 2 ve 1'e tümleyenler - - [Binary: Artılar & Eksiler (Neden 2'ye Tümleyen Kullanırız) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1'e Tümleyen](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2'ye tümleyen](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] set bitlerinin sayımı + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Count set bits - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) @@ -699,29 +698,29 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) -## Ağaçlar +## Trees -- ### Ağaçlar - Notlar & Arkaplan - - [ ] [Series: Ağaçlar (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basit ağaç yapımı +- ### Trees - Notes & Background + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basic tree construction - traversal - - manipülasyon algoritmaları - - [ ] [BFS(breadth-first search) ve DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS notları: - - level order (BFS, using queue) - - zaman karmaşıklığı: O(n) - - alan karmaşıklığı: en iyi: O(1), en kötü: O(n/2)=O(n) - - DFS notları: - - zaman karmaşıklığı: O(n) - - alan karmaşıklığı: - en iyi: O(log n) - ort. ağaç yüksekliği - en kötü: O(n) - - inorder (DFS: sol, kendisi, sağ) - - postorder (DFS: sol, sağ, kendisi) - - preorder (DFS: kendisi, sol, sağ) - -- ### İkili arama ağaçları: BSTs - - [ ] [İkili Arama Ağacı İncelemesi (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: @@ -735,23 +734,23 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Uygulama: - - [ ] insert // değeri ağaca ekler - - [ ] get_node_count // barındırılan düğümlerin sayısını verir - - [ ] print_values // minimumdan maximuma doğru ağaçtaki değerleri yazdırır + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max - [ ] delete_tree - - [ ] is_in_tree // verilen değer ağaçta varsa true döndrür - - [ ] get_height // düğümlerin yüksekliğini döndürür (tek düğümlerin yüksekliği: 1) - - [ ] get_min // ağaçta bulunan minimum değeri verir - - [ ] get_max // ağaçta bulunan maximum değeri verir + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // verilen değerden sonra ağaçtaki en yüksek değeri verir, bulunamazsa -1 verir + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none -- ### Heap / Öncelik Kuyruğu / Binary Heap - - ağaç olarak görselleştirilir, ancak depolama ortamında genellikle doğrusaldır (dizi, bağlı liste) +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Giriş (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) @@ -764,33 +763,33 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Max-heap uygulaması: + - [ ] Implement a max-heap: - [ ] insert - - [ ] sift_up - eklemek için gerekli - - [ ] get_max - maximum öğeyi çıkarmadan return eder - - [ ] get_size() - barındırılan eleman sayısını verir - - [ ] is_empty() - heap eleman içermiyorsa true döndürür - - [ ] extract_max - maximum öğeyi çıkararak döndürür - - [ ] sift_down - extract_max için gerekli - - [ ] remove(i) - indexdeki öğeyi kaldırır - - [ ] heapify - bir dizi öğeden heap oluşturur, heap_sort gerekli - - [ ] heap_sort() - sıralanmamış bir dizi alır ve max-heap veya min-heap kullanarak sıralı diziye dönüştürür - -## Sıralama - -- [ ] Notlar: - - Sıralamaları implemente et & en iyi/en kötü durumu, her birinin ortalama karmaşıklığını bil: - - bubble sort olmaz - çok kötü - O(n^2), n <= 16 hariç - - [ ] Sıralama Algoritmalarında Stabilite ("Quicksort stabil mi?") + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Hangi algoritmalar bağlı listelerde kullanılabilir? Hangileri dizilerde? Hangileri hepsinde? - - Bağlı listeyi sıralamanızı tavsiye etmem, ancak merge sort bunu yapabilir. + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- Heap sort için, yukarıdaki Heap veri yapısına bakın. Heap sort güzel, ama stabil değil. +- For heapsort, see Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) @@ -819,22 +818,22 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) -- [ ] Merge sort kod: +- [ ] Merge sort code: - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort kod: +- [ ] Quick sort code: - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) -- [ ] Uygulama: - - [ ] Mergesort: O(n log n) ortalama ve en kötü durum - - [ ] Quicksort O(n log n) ortalama durum - - Selection sort ve insertion sort her ikisi de O(n^2) ortalama ve en kötü durum - - Heapsort için, yukarıdaki Heap veri yapısına bakın. +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above -- [ ] Gerekli değil, fakat tavsiye ediyorum: +- [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) @@ -848,28 +847,28 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -Özetlemek gerekirse, burada [15 sıralama algoritmasının](https://www.youtube.com/watch?v=kPRA0W1kECg) görsel temsili var. -Bu konuda daha fazla bilgiye ihtiyacınız varsa, "Sıralama" bölümüne bakın [Bazı Konularda Ek Bilgiler](#additional-detail-on-some-subjects) +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -## Graflar +## Graphs -Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabilir, bu nedenle bu bölüm ağaçlar ve sıralama algoritmaları gibi uzundur. +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. -- Notlar: - - Grafı bellekte temsil etmek için 4 temel yol vardır: - - objeler ve işaretçiler (pointers) - - bitişiklik matrisi - - bitişik liste - - bitişik map - - Her temsilciliği ve artılarını - eksilerini tanıyın. - - BFS ve DFS - hesaplama karmaşıklığını bilin, ödün vermelerini verin, gerçek kod uygulamasını bilin. - - Bir soru sorulduğunda önce graf tabanlı bir çözüm arayın, eğer yoksa devam edin. +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none -- [ ] MIT(videolar): - - [ ] [Breadth-First Arama](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - [ ] [Depth-First Arama](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -- [ ] Skiena Dersleri - güzel giriş: +- [ ] Skiena Lectures - great intro: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) @@ -877,7 +876,7 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Graflar (inceleme ve fazlası): +- [ ] Graphs (review and more): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -892,43 +891,43 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- Full Coursera Kursu: +- Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- Bunları uygulayacağım: - - [ ] DFS ile bitişik liste (rekürsif) - - [ ] DFS ile bitişik liste (yığınla iteratif) - - [ ] DFS ile bitişik matris (rekürsif) - - [ ] DFS ile bitişik matris (yığınla iteratif) - - [ ] BFS ile bitişik liste - - [ ] BFS ile bitişik matris - - [ ] tek kaynak en kısa yol (Dijkstra) - - [ ] minimum yayılan ağaç - - DFS-tabanlı algoritmalar (yukarıdaki Aduni videolarına bakın): - - [ ] döngüye bak (topolojik sıralama için gerekli, başlamadan önce döngüyü konyrol edeceğiz) - - [ ] topolojik sıralama - - [ ] bir graftaki bağlı komponentleri saymak - - [ ] kuvvetli bağlı komponentleri listele - - [ ] iki parçalı graf için kontrol et - -## Daha Fazla Bilgi - -- ### Rekürsif - - [ ] Stanford dersleri rekürsif & geri yineleme: +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - Ne zaman kullanmak uygun olur? - - Parçalı özyineleme olmamasından nasıl daha iyidir? + - When it is appropriate to use it? + - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) -- ### Dinamik Programlama - - Mülakatınızda muhtemelen herhangi bir dinamik programlama sorusu görmeyeceksiniz, ancak bir soruyu dinamik programlama adayı olarak tanımaya değer. - - Bu konu oldukça zor olabilir, her DP çözülebilir problemin bir rekürsif ilişkisi olarak tanımlanması gerektiği için bununla baş etmek zor olabilir. - - Size tavsiyem ilgili model hakkında sağlam bir anlayış elde edene kadar, DP sorunlarının pek çok örneğini incelemenizi öneririm. - - [ ] Videolar: +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) diff --git a/translations/README-tr.md b/translations/README-tr.md index e9122733d0..90715cda13 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1,45 +1,2018 @@ -# Görüşme Kodlama Üniversitesi +# Kodlama Mülakatı Üniversitesi -Aslında bunu bir yazılım mühendisi olabilmek için kısa çalışma listeleri olarak hazırladım, -ancak bugün gördüğünüz gibi geniş bir listeye dönüştü. -Bu çalışma planını yapmaya başladıktan sonra, Amazon'da (https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Yazılım Geliştirme Mühendisi olarak işe alındım. -Muhtemelen benim yaptığım gibi çok çalışmak zorunda kalmazsınız. -Her neyse, ihtiyacınız olan her şey burada. +> Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, +> ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından +> Yazılım Geliştirme Mühendisi olarak işe alındım.](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Muhtemelen yaptığım kadar çok çalışmanıza gerek kalmayacaktır. Her neyse, ihtiyaç duyabileceğiniz her şey burada. +> +> Birkaç ay boyunca günde 8 - 12 saat çalıştım. İşte benim hikayem: [Neden bir Google mülakatı için 8 ay boyunca tam zamanlı çalıştım?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> Burada listelenenler sizi herhangi bir yazılım firmasıyla yapacağınız teknik mülakata iyi bir şekilde hazırlar, +> büyük devler de dahil: Amazon, Facebook, Google, ve Microsoft. +> +> *İyi Şanslar!* -Burada listelenen öğeler devlerde dahil olmak üzere (Amazon, Facebook, Google ya da Microsoft...) hemen hemen her yazılım şirketindeki mülakatlara hazırlayacak. +
+Translations: -*Size iyi şanlar!* - -Çeviriler: - [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vn.md) -- Çeviri İlerlemeleri: - - [İspanyolca](https://github.com/jwasham/coding-interview-university/issues/80) - - [Hintçe](https://github.com/jwasham/coding-interview-university/issues/81) - - [İbranice](https://github.com/jwasham/coding-interview-university/issues/82) - - [Endonezya](https://github.com/jwasham/coding-interview-university/issues/101) - - [Arabça](https://github.com/jwasham/coding-interview-university/issues/98) - - [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) - - [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) - - [Rusça](https://github.com/jwasham/coding-interview-university/issues/87) - - [Ukraynaca](https://github.com/jwasham/coding-interview-university/issues/106) - - [Brezilya Portekizcesi](https://github.com/jwasham/coding-interview-university/issues/113) - - [Korece](https://github.com/jwasham/coding-interview-university/issues/118) - - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - - [Lehçe](https://github.com/jwasham/coding-interview-university/issues/122) - - [Almanca](https://github.com/jwasham/coding-interview-university/issues/135) - - [Urduca](https://github.com/jwasham/coding-interview-university/issues/140) - - [Tay Dili](https://github.com/jwasham/coding-interview-university/issues/156) - - [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) - - [Italyanca](https://github.com/jwasham/coding-interview-university/issues/170) - -## Bu Nedir? - -Bu rehber bir web geliştiricinin (kendi kendini eğitmiş, BT derecesi olmayan) büyük bir şirkette yazılım mühendisi olabilmesi için aylık çalışma planı olarak hazırlanmıştır. - -![Coding at the whiteboard - from HBO's Silicon Valley](https://dng5l3qzreal6.cloudfront.net/2016/Aug/coding_board_small-1470866369118.jpg) - -Yeni mezun yazılım mühendisleri veya yazılım / web geliştiriciler'in Yazılım Mühendisliği'ne geçişi için hazırlanan bu rehberde uzun yıllara dayanan tecrübeniz varsa veya uzun yıllardır yazılım mühendisliği deneyimi yaşıyorsanız, daha zor bir mülakat bekleyin ve Google, Amazon, Facebook ve Microsoft gibi büyük yazılım şirketlerinin yazılım mühendisliğini, yazılım/web geliştiricilerden farklı gördüğünü ve bilgisayar bilimi bilgisine ihtiyaç duyduklarını unutmayın. Eğer güvenlik veya sistem mühendisi olmak istiyorsanız, bu listeden daha fazla çalışın (ağ oluşturma, güvenlik...). +- [Tiếng Việt - Vietnamca](translations/README-vi.md) +- [İspanyolca](translations/README-es.md) +- [Brezilya Portekizcesi](translations/README-ptbr.md) +- [Lehçe](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japonca (日本語)](translations/README-ja.md) +- [Rusça](translations/README-ru.md) +- [Almanca](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Kmer](translations/README-kh.md) +- [Özbekçe](translations/README-uz.md) + +
+ +
+Translations in progress: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arapça](https://github.com/jwasham/coding-interview-university/issues/98) +- [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) +- [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) +- [İtalyanca](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
+ +
+
+

+ Sponsor olun ve Kodlama Mülakatı Üniversitesi'ni destekleyin! +

+

+ Özellikte teşekkürler: +

+

+ +

+
+ 2018'de kurulan OSS Capital, yalnızca erken aşamadaki COSS (ticari açık kaynak) start-up
kurucularını desteklemeye odaklanan ilk ve tek risk sermayesi platformudur.
+
+
+

+
+

+ +

+
+

+ Bulut için oluşturulmuş geliştirme ortamları +

+
+
+ GitLab, GitHub ve Bitbucket ile yerel olarak entegre olan Gitpod, tüm branchlarınız için otomatik olarak ve sürekli olarak geliştirme ortamları oluşturur. Sonuç olarak, ekip üyeleri her yeni görev için anında yeni geliştirme ortamlarıyla kodlamaya başlayabilir - ister yeni bir özellik oluşturuyor olun, ister bir hatayı düzeltmek istiyor olun, ister bir kod incelemesi üzerinde çalışıyor olun. +
+
+

+
+
+ +## Nedir? + +Bir web geliştiricisinden (CS derecesi olmadan, alaylı), büyük bir firmada yazılım mühendisi olmak için çok-aylı bir çalışma planıdır. + +![Beyaz tahtada kodlama - HBO'nun Silikon Vadisi'nden](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Bu liste, yeni yazılım mühendisleri için veya web ya da yazılım geliştiriciliği alanlarından, yazılım mühendisliğine (bilgisayar bilimleri bilgisi gerekli) geçiş için hazırlanmıştır. +Eğer uzun yıllardır tecreübeniz varsa ve yazılım mühendisliği tecrübesi istiyorsanız, daha zor bir mülakat bekleyin. +Eğer uzun yıllardır yazılım/web geliştirme deneyiminiz varsa, Google, Amazon, Facebook ve Microsoft gibi büyük yazılım firmalarının yazılım mühendisliğini yazılım/web geliştirmekten farklı gördüğüne, ve bilgisayar bilimleri bilgisi istediğine dikkat edin. + +Eğer güvenlik ya da operasyon mühendisi olmak istiyorsanız, opsiyonel listeden (network, güvenlik) konulara daha fazla çalışın. + +--- + +## İçindekiler + +- [Nedir?](#nedir) +- [Neden kullanılır?](#neden-kullanılır) +- [Nasıl kullanılır?](#nasıl-kullanılır) +- [Yeterince zeki olmadığınızı hissetmeyin](#yeterince-zeki-olmadığınızı-hissetmeyin) +- [Video Kaynakları Hakkında](#video-kaynakları-hakkında) +- [Mülakat Süreci & Genel Mülakat Hazırlığı](#interview-process--general-interview-prep) +- [Mülakat İçin Bir Dil Seçin](#pick-one-language-for-the-interview) +- [Kitap Listesi](#book-list) +- [Başlamadan Önce](#before-you-get-started) +- [Örtülü Olarak Görmeyecekleriniz](#what-you-wont-see-covered) +- [Günlük Plan](#the-daily-plan) +- [Önkoşul Bilgisi](#prerequisite-knowledge) +- [Günlük Plan](#the-daily-plan) +- [Algoritma Karmaşıklığı / Big-O / Asimptotik Analizler](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Veri Yapıları](#data-structures) + - [Diziler](#arrays) + - [Bağlı Listeler](#linked-lists) + - [Yığın](#stack) + - [Kuyruk](#queue) + - [Hash tablosu](#hash-table) +- [Ekstra Bilgi](#more-knowledge) + - [İkili arama](#binary-search) + - [Bitsel operasyonlar](#bitwise-operations) +- [Ağaçlar](#trees) + - [Ağaçlar - Notlar & Arkaplan](#trees---notes--background) + - [İkili Arama Ağaçları: BST'ler](#binary-search-trees-bsts) + - [Yığın / Öncelik Kuyruğu / İkili Yığın](#heap--priority-queue--binary-heap) + - dengeli arama ağaçları (genel konseptler, detaylar hariç) + - dolaşımlar: preorder, inorder, postorder, BFS, DFS +- [Sıralama](#sorting) + - seçimli (selection) + - eklemeli (insertion) + - yığın sıralama (heapsort) + - hızlı sıralama (quicksort) + - merge sort +- [Graflar](#graphs) + - yönlü + - yönsüz + - bitişiklik matrisi + - bitişiklik listesi + - dolaşımlar: BFS, DFS +- [Daha Fazla Bilgi](#even-more-knowledge) + - [Rekürsif](#recursion) + - [Dinamik Programlama](#dynamic-programming) + - [Nesneye-Yönelik Programlama](#object-oriented-programming) + - [Tasarım Desenleri](#design-patterns) + - [Kombinasyonlar (n seçim k) & İhtimaller](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete ve Yaklaşım Algoritmaları](#np-np-complete-and-approximation-algorithms) + - [Önbellekler](#caches) + - [Prosesler ve Threadler](#processes-and-threads) + - [Test Etme](#testing) + - [Zamanlama](#scheduling) + - [Kağıtlar](#papers) + - [Test Etme](#testing) + - [Planlama](#scheduling) + - [String arama & manipulasyon](#string-searching--manipulations) + - [Denemeler](#tries) + - [Kayan Noktalı Sayılar](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Network Oluşturma](#networking) +- [Sistem Tasarımı, Ölçeklenebilirlik, Veri İşleme](#system-design-scalability-data-handling) (eğer 4+ yıldan fazla deneyiminiz varsa) +- [Final Bakışı](#final-review) +- [Kodlama Soruları Uygulaması](#coding-question-practice) +- [Kodlama egzersizleri/yarışmalar](#coding-exerciseschallenges) +- [Mülakata yakın olduğunuzda](#once-youre-closer-to-the-interview) +- [Sizin için En İyi Kariyer Fırsatlarını Bulma Yöntemi](#best-way-to-find-perfect-career-opportunities-for-you) +- [Özgeçmişiniz](#your-resume) +- [Mülakat geldiğinde düşünmek](#be-thinking-of-for-when-the-interview-comes) +- [Mülakat yapan kişiye sorularınızın olması](#have-questions-for-the-interviewer) +- [İşi Aldığınızda](#once-youve-got-the-job) + +---------------- Bu bölümün altındakiler opsiyoneldir ---------------- + +## Ek Kaynaklar + +- [Ek kitaplar](#additional-books) +- [Ek Öğrenim](#additional-learning) + - [Derleyiciler](#compilers) + - [Emacs ve vi(m)](#emacs-and-vim) + - [Unix komut satırı araçları](#unix-command-line-tools) + - [Bilgi teorisi](#information-theory-videos) + - [Parite & Hamming Kodu](#parity--hamming-code-videos) + - [Entropi](#entropy) + - [Kriptografi](#cryptography) + - [Sıkıştırma](#compression) + - [Bilgisayar Güvenliği](#computer-security) + - [Çöp toplayıcı](#garbage-collection) + - [Paralel Programlama](#parallel-programming) + - [Mesajlaşma, Serileştirme ve Kuyruklama Sistemleri](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Hızlı Fourier Dönüşümü](#fast-fourier-transform) + - [Bloom Filtresi](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Konuma Duyarlı Hashleme](#locality-sensitive-hashing) + - [van Emde Boas Ağaçları](#van-emde-boas-trees) + - [Artırılmış Veri Yapıları](#augmented-data-structures) + - [Dengeli arama ağaçları](#balanced-search-trees) + - AVL ağaçları + - Splay ağaçları + - Kırmızı/siyah ağaçları + - 2-3 arama ağaçları + - 2-3-4 Ağaçları (aka 2-4 ağaçları) + - N-ary (K-ary, M-ary) ağaçları + - B-ağaçları + - [k-D Ağaçları](#k-d-trees) + - [Geçiş Listeleri](#skip-lists) + - [Network Akışları](#network-flows) + - [Ayrık Kümeler & Birlik Bulma](#disjoint-sets--union-find) + - [Hızlı İşleme için Matematik](#math-for-fast-processing) + - [Treap](#treap) + - [Lineer Programlama](#linear-programming-videos) + - [Geometri, Convex hull](#geometry-convex-hull-videos) + - [Ayrık matematik](#discrete-math) + - [Makine Öğrenmesi](#machine-learning) +- [Bazı Konular Hakkında Ekstra Bilgi](#additional-detail-on-some-subjects) +- [Video Serileri](#video-series) +- [Bilgisayar Bilimleri Kursları](#computer-science-courses) +- [Makaleler](#papers) + +--- + +## Neden Kullanılır? + +Bu projeye başladığımda, Stack ya da heap farkını bilmiyordum, Big-O notasyonu hakkında bir şey bilmiyordum, ağaçlar hakkında bir şey +bilmiyordum, ya da bir graf nasıl dolaşılır bilmiyordum. Bir sıralama algoritması kodlamış olsaydım, iyi olmayacağını size +söyleyebilirdim. Kullandığım her veri yapısı dilin içinde hazır bulunmaktaydı, kaputun altında nasıl çalıştıklarını bilmiyordum. +Çalışmakta olduğum bir proses, "bellek yetersiz" uyarısı verene kadar herhangi bir bellek yönetimi yapmamıştım ve buna bir geçici çözüm +buldum. Hayatımda bir kaç sefer çok boyutlu dizileri kullandım ve binlerce birleştirici dizileri kullandım, ama hiç bir zaman sıfırdan +bir veri yapısı oluşturmadım. + +Bu uzun bir plan. Aylar sürebilir. Eğer bunlara aşinaysanız, daha az zamanınızı alacaktır. + +## Nasıl Kullanılır + +Aşağıdaki her şey bir ana hattır, ve yukarıdan aşağıya doğru öğeleri ele almalısınız. + +İlerlemeyi izlemek için görev listeleri de dahil olmak üzere GitHub'ın özel işaretleme özelliğini kullanıyorum. + +**Bu şekilde öğeleri seçmek için yeni bir dal oluşturun, braketler arasına sadece bir x koyun: [x]** + + + Bir dalı fork edin ve aşağıdaki komutları takip edin + +Github repositorysini https://github.com/jwasham/coding-interview-university Fork butonuna tıklayarak fork edin + + Lokal repositorynize klonlayın + +`git clone git@github.com:/coding-interview-university.git` + +`git checkout -b progress` + +`git remote add jwasham https://github.com/jwasham/coding-interview-university` + +`git fetch --all` + + Değişikliklerinizi tamamladıktan sonra bütün kutuları X ile işaretleyin + +`git add .` + +`git commit -m "Marked x"` + +`git rebase jwasham/main` + +`git push --set-upstream origin progress` + +`git push --force` + +[Github aromalı Markdown ile ilgili daha fazla bilgi](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + + +## Yeterince zeki olmadığınızı hissetmeyin +- Başarılı yazılım mühendisleri akıllıdır, ancak çoğunluğu yeterince zeki olmadığı için güvensizlik yaşarlar. +- [Dahi programcı hakkında bir efsane](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Yalnız Gitmek Tehlikeli: Teknolojide Görünmez Canavarla Savaşmak](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [Değişebileceğine inan](http://www.aaronsw.com/weblog/dweck) + + +## Video Kaynakları Hakkında + +Bazı videolar Coursera ya da EdX sınıflarına dahil olduğunuzda ulaşılabilmektedir. Bunlar MOOC'lar olarak adlandırılır. +Bazı kurslar aktif olmayabilirler, bir kaç ay beklemeniz gerekebilir, erişiminiz olmaz. + + Ücretsiz ve her zaman ulaşılabilir kaynaklar eklerseniz memnun olurum, YouTube videoları gibi çevrimiçi kurs videolarına eşlik edebilirsiniz. + Üniversite derslerini kullanmayı severim. + + +## Mülakat Süreci & Genel Mülakat Hazırlığı + +- [ ] [2021 Yılında Mühendislik Mülakatını Nasıl Geçersiniz](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Beyaz tahtalama](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Teknoloji İşe Alımını Açıklığa Kavuşturmak](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Büyük 4'lüde Nasıl İşe Girersiniz: + - [ ] [Büyük 4'lüde Nasıl İşe Girersiniz - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Büyük 4(.1)'lüde Nasıl İşe Girersiniz (Devam videosu)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [Yaklaşım](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problemde İzlenecek Yol](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- [ ] Hazırlık Kursu: + - [ ] [Software Engineer Interview Unleashed (ücretli kurs)](https://www.udemy.com/software-engineer-interview-unleashed): + - Eski bir Google görüşmecisinden yazılım mühendisi görüşmelerine kendinizi nasıl hazırlayacağınızı öğrenin. + - [ ] [Python for Data Structures, Algorithms, and Interviews (ücretli kurs)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Veri yapılarını, algoritmaları, sahte mülakatları ve çok daha fazlasını kapsayan Python merkezli bir mülakat hazırlık kursu. + - [ ] [Intro to Data Structures and Algorithms using Python (Udacity ücretsiz kurs)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Ücretsiz bir Python merkezli veri yapıları ve algoritmaları kursu. + - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Mülakatlara ve iş başında senaryolara hazırlanmanıza yardımcı olmak için özel bir danışmandan 100'den fazla veri yapısı ve algoritma alıştırmaları ve rehberliği ile uygulamalı pratik yapın. + - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Çoğu zaman, sizi hayalinizdeki işe girmekten alıkoyan şey teknik yeterliliğiniz değil, görüşmede davranışsal nasıl performans gösterdiğinizdir. + +## Mülakat İçin Bir Dil Seçin + +Mülakatın kodlama bölümü için rahat hissettiğiniz bir dili kullanabilirsiniz, ancak büyük şirketler için, aşağıdakiler sağlam seçeneklerdir: + +- C++ +- Java +- Python + +Ayrıca bunları da kullanabilirsin, ancak önce okuyun. Bazı uyarılar olabilir: + +- JavaScript +- Ruby + +İşte mülakat için bir dil seçme hakkında yazdığım bir makale: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). + +Bir dilde çok rahat ve bilgili olmanız gerekmektedir. + +Seçenekler hakkında daha fazlasını okuyun: +- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ +- http://blog.codingforinterviews.com/best-programming-language-jobs/ + +[Dil kaynaklarına buradan göz atın](programming-language-resources.md) + +Aşağıda C, C++ ve Python öğreniminin dahil olduğunu göreceksiniz, çünkü ben öğreniyorum. Alta bakarsanız bir kaç kitap dahil edilmiştir. + +## Kitap Listesi + +Kendi kullandığım kısa bir liste. Zamandan tasarruf etmenizi sağlayacaktır. + +### Mülakat Hazırlığı + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ ve Java dillerinde cevaplar + - Cracking the Coding Interview için iyi bir ısınma + - çok zor değil, çoğu problem bir mülakatta göreceğinizden daha kolay (benim okuduğum kadarıyla) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java dilinde cevaplar + +### Eğer bir sürü ekstra vaktiniz varsa: + +Birini seçin: + +- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [ ] Elements of Programming Interviews (Java version) + - [kitap](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +### Spesifik Dil + +**Mülakat için bir dil seçmeniz gerekir (alta bakın).** Dile göre önerilerim burada. Her dil için kaynaklara sahip değilim. İlaveleri memnuniyetle karşılarım. + +Eğer bunlardan birini okursanız, kodlama problemlerini yapmaya başlamanız için gereken tüm veri yapılarına ve algoritma bilgisine sahip olmanız gerekir. +İnceleme yapmak istemiyorsanız **bu projedeki bütün video derslerini atlayabilirsiniz** + +[Spesifik dillere özgü ek kaynaklar burada.](programming-language-resources.md) + +### C++ + +Henüz bu ikisini okumadım, ancak Sedgewick tararından yüksek derecelendirilmiş ve yazılmıştır. O mükemmel biri. + +- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) +- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) + - Rich and detailed collection of Data Structures and Algorithms + - Great for first-timers + +C++ için daha iyi bir tavsiyeniz varsa, beni bilgilendirin. Kapsamlı bir kaynak arıyorum. + +### Java + +- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - kitap içeriğiyle birlikte coursera videoları (ve Sedgewick!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +YA DA: + +- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) + - Goodrich, Tamassia, Goldwasser tarafından + - UC Berkeley'de bilgisayar bilimleri tanıtımı için opsiyonel metin olarak kullanılır + - aşağıda Python versiyonuyla ilgili kitap raporuma bak. Bu kitap aynı konuları kapsıyor. + +### Python + +- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Goodrich, Tamassia, Goldwasser tarafından + - Bu kitabı seviyorum. Her şeyi ve daha fazlasını kapsıyor. + - Pythonic kod + - kitap raporum: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) + +## Başlamadan Önce + +Bu liste birkaç ayda büyüdü, ve evet, biraz elden çıktı. + +Yaptığım hatalar şunlardır; böylece daha iyi bir tecrübeye sahip olacaksınız. + +### 1. Hepsini Hatırlamayacaksın + +Saatlerce videolar izledim ve bol bol notlar aldım ancak aylar sonra hatırlamadığım çok şey oldu. Notlar karıştırarak ve +flashcardlar yaparak tekrarlamaya 3 günümü harcadım. + +Lütfen okuyun, benim hatalarımı yapmayın: +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn). + +### 2. Flashcard Kullanın + +Problemi çözmek için, genel ve kod olmak üzere 2 tür flashcard ekleyebildiğim küçük bir flashcard sitesi hazırladım. +Her kart farklı bir formata sahip. + +Nerede olursam olayım, telefonumdan ve tabletimden inceleyebilmek için bir mobil web sitesi hazırladım. + +Kendinizinkini ücretsiz olarak yapın: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [Benim flashcard veritabanım (eski - 1200 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Benim flashcard veritabanım (yeni - 1800 kart)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Kartlarla ilgili biraz aşırıya kaçtım, benim kartlarım Assembly dilinden Python'a, makine öğrenmesinden istatistiğe kadar bir çok şeyi kapsar. Gerekli olandan çok daha fazlasına sahip. + +**Flashcardlarla ilgili not:** İlk defa cevabı bildiğinizi fark ederseniz, bildiğiniz gibi işaretlemeyin. Aynı kartı görmeniz ve +gerçekten bilmeden önce birkaç kez doğru cevaplamanız gerekir. Tekrarlama bu bilgiyi beyninizde derinleştirecektir. + +Kullandığım flashcard siteme bir alternatif [Anki](http://ankisrs.net/), bana defalarca tavsiye edildi. Unutulmaması için bir tekrarlama sistemi kullanır. +Kullanıcı dostu, tüm platformlarda kullanılabilir ve bir bulut senkronizasyon sistemi vardır. iOS'da 25$, diğer platformlarda ücretsiz. + +Benim flashcard veritabanımın Anki formatı: https://ankiweb.net/shared/info/25173560 (teşekkürler, [@xiewenya](https://github.com/xiewenya)) + +### 3. Veri yapıları ve algoritmaları öğrenirken kodlama mülakatına yönelik sorular yapın + +Öğrendiklerinizi sorunları çözmek için uygulamanız gerekir, yoksa unutacaksınız. Bu hatayı yaptım. Bir konuyu öğrendikten sonra, +ve o konu üzerinde kendinizi rahat hissettikten sonra (örneğin bağlantılı listeler), kodlama mülakatı kitaplarından birini açın ve bununla ilgili birkaç soru yapın. +Ardından bir sonraki konuya geçin. Daha sonra geri dönün ve başka bir bağlantılı liste problemi yapın, +ya da özyineleme sorunu ya da her neyse. Ama öğrenirken problemler yapmaya devam edin. Bilgi için işe alınmıyorsun, +bilgiyi nasıl kullandığından işe alınıyorsun. Önerdiğim birkaç kitap ve site var. +Daha fazlası için buraya bakın: [Kodlama Soruları Pratiği](#coding-question-practice). + +### 4. Tekrar, tekrar, tekrar + +ASCII, OSI stack, Big-O notasyonu, ve daha fazlası üzerinde bir dizi kopya kağıdı tutarım. Boş zamanlarım olduğunda bunlara çalışırım. + +Yarım saat için programlama problemlerine ara verin ve flashcard'larınıza geçin. + +### 5. Focus + +Değerli zamanınızı alabilecek bir çok dikkat dağıtıcı şey vardır. Odaklanma ve konsantrasyonda zorlanabilirsin. Arka fon müziği açarak gayet güzel bir şekilde odaklanabilirsin. + +## Neyi görmeyeceksiniz + +Bunlar yaygın teknolojilerdir ancak bu çalışma planının bir parçası değildir: + +- SQL +- Javascript +- HTML, CSS, ve diğer front-end teknolojileri + +## Günlük Plan + +Bazı konular bir gün alır, ve bazıları birkaç gün sürer. Bazıları sadece öğrenilir, kullanılmaz. + +Her gün aşağıdaki listeden bir konu alıyorum, bu konuyla ilgili videolar izliyorum, ve implemente ediyorum: +- C - struct * ve argüman olarak başka şeyler alan struct ve fonksiyonları kullanarak +- C++ - yerleşik türleri kullanmadan +- C++ - yerleşik türleri kullanarak, bağlı liste için STL'in std::list gibi +- Python - yerleşik türleri kullanarak (Python'la ilgili pratiğe devam etmek için) +- doğru yaptığımdan emin olmak için testler yazarım, bazen sadece basit assert() deyimleri kullanırım +- Java ya da başka bir şey yapabilirsin, bu sadece benim yaptıklarım. + +Bunların hepsine ihtiyacın yok. Sadece [mülakat için bir dile](#pick-one-language-for-the-interview) ihtiyacın var. + +Neden bunların hepsinde kod var? +- Bıkana kadar, pratik, pratik, pratik, ve sonra sorunsuzca yapılabilir (bazılarının bir çok edge-case'i var ve hatırlanması için defter tutma ayrıntıları var) +- Ham kısıtlamalar ile çalışın (Çöp toplayıcı yardımı olmadan belleği ayırma / boşaltma (Python ya da Java hariç)) +- Yerleşik türlerden faydalanarak, yerleşik araçları gerçek dünya kullanımında tecrübe edindim. (kendi bağlı liste uygulamamı production'da kullanmayacağım.) + +Her konu için bunları yapmaya vaktim olmayabilir, ama deneyeceğim. + +Kodumu buradan görebilirsiniz: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +Her algoritmanın püf noktalarını ezberlemenize gerek yok. + +Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdileri test edin. Sonra bilgisayar dışında test edin. + +## Önkoşul Bilgisi + +- [ ] **C Öğren** + - C her yerde. Çalışırken kitaplarda, derslerde, videolarda, kısaca *her yerde* örnekler göreceksin. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Bu kısa kitap C dili üzerinde büyük bir ipucu verir, ve biraz pratik yaparsanız hızlı bir şekilde yetkinleşebilirsiniz. C'yi anlarsanız programların ve belleğin nasıl çalıştığını anlarsınız. + - [Sorulara cevap verin](https://github.com/lekkas/c-algorithms) + +- [ ] **Bilgisayarlar programları nasıl işlerler:** + - [ ] [CPU programı nasıl yürütür (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Makine Kodu Talimatları (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + - [ ] [Registers ve RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [İşlemci (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Komutlar ve Programlar (video)](https://youtu.be/zltgXvg6r3k) + +## Algoritma karmaşıklığı / Big-O / Asimptotik analiz +- uygulanacak bir şey değil +- Burada bir sürü video var. Anlayana kadar videoları izle. Her zaman geri gelip tekrar inceleyebilirsin +- Eğer çok matematiksel geliyorsa aşağıya inip ayrık matematik videolarına bakabilirsin +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](https://archive.org/details/lecture2_202008) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +## Veri Yapıları + +- ### Diziler + - Otomatik olarak yeniden boyutlandırılan bir vektör uygulayın. + - [ ] Tanım: + - [Diziler (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Lineer ve Çok Boyutlu Diziler (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (İzlemenye 15:32'den başlayın) + - [Dinamik Diziler (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Diziler (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Vektör uygulayın (otomatik yeniden boyutlandırmaya sahip değiştirilebilir dizi): + - [ ] Dizileri ve işaretçileri kullanarak kodlama pratiği yapın, ve indexleme kullanmak yerine işaretçi matematiği kullanarak bir indexe atlayın. + - [ ] ayrılmış belleğe sahip yeni ham veri dizisi + - arkada int dizini kullanabilir, özelliklerini kullanamazsınız. + - 16 ile başlayın, başlangıç sayısı daha büyükse, 2'nin katlarını kullanın - 16, 32, 64, 128 + - [ ] size() - eleman sayısı + - [ ] capacity() - tutabileceği eleman sayısı + - [ ] is_empty() + - [ ] at(index) - verilen indekse ait öğeyi döndürür, eğer o sınırlarda indeks yoksa patlar. + - [ ] push(item) + - [ ] insert(index, item) - indekse öğe ekler, bu dizinin değerini ve arkasındaki öğeleri sağa kaydırır. + - [ ] prepend(item) - indeks 0'dan yukarıya eklemek için kullanılır + - [ ] pop() - en sondakini kaldırır, geri döndürür + - [ ] delete(index) - verilen indeksteki öğeyi siler, arkadaki öğeleri sola kaydırır. + - [ ] remove(item) - öğeyi arar ve onu tutan indeksi kaldırır (birden çok indekste olsa bile) + - [ ] find(item) - öğeyi arar ve öğeye sahip ilk indeksi döndürür, bulamazsa -1 döndürür + - [ ] resize(new_capacity) // özel fonksiyon + - kapasiteye erişince, boyutu iki katına çıkarın + - bir öğeyi çıkardığınızda, boyut 1/4 kapasiteye sahipse, yarısına yeniden boyutlandırın + - [ ] Zaman + - O(1) sona ekleme/silmede (daha fazla yer ayırmak için amortize edilir), index, ya da güncelleme + - O(n) başka yere ekleme/silmede + - [ ] Alan + - bellekte bitişiklik, performans artışına yardımcı olur + - gereken alan = (dizi kapasitesi, ki >= n) * öğe boyutu, 2n için, yine O(n) + +- ### Bağlı Listeler + - [ ] Tanım: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - tüm video değil, Node yapısı ve bellek ayırma için olan bölümler. + - [ ] Bağlı Listeler vs Diziler: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [neden bağlı listelerden kaçınmalısınız (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Pointer için pointer bilgisine ihtiyacınız var: + (bir pointer'ı bir fonksiyona yolladığınızda, bu pointer'ın işaret ettiği adresi değiştirebilir.) + Bu sayfa ptr ile ptr arasında bir kavrayış elde etmek içindir. Bu listeyi yukarıdan aşağıya geçiş tarzını tavsiye etmiyorum. Okunabilirlik ve sürdürülebilirlik, zekice olması nedeniyle acı çekici oluyor. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] uygula (Kuyruk pointer ile & onsuz yaptım): + - [ ] size() - listedeki veri elementlerinin sayısını geri döndürür + - [ ] empty() - liste boşsa true döndürür + - [ ] value_at(index) - indexteki öğenin içeriğini döndürür (0'dan başlar) + - [ ] push_front(value) - listenin başına bir öğe ekler + - [ ] pop_front() - liste başındaki öğeyi kaldırıp return eder + - [ ] push_back(value) - listenin sonuna öğe ekler + - [ ] pop_back() - listenin sonundaki öğeyi kaldırır ve içeriğini return eder + - [ ] front() - ilk öğenin içeriğini verir + - [ ] back() - son öğenin içeriğini verir + - [ ] insert(index, value) - indexe yeni öğe ekler, geçerli öğenin indexi, yeni eklenen indexi gösterir + - [ ] erase(index) - verilen indexteki düğümü siler + - [ ] value_n_from_end(n) - listenin sonundan başlayarak n. pozisyondaki öğenin içeriğini verir + - [ ] reverse() - listeyi ters çevirir + - [ ] remove_value(value) - bu değerdeki ilk bulunan içeriği kaldırır + - [ ] Çift Bağlı Liste + - [Tanım (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - Uygulamaya gerek yok + +- ### Yığın + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] Uygulamayın. Diziyle gerçekleştirmek önemsiz. + +- ### Kuyruk + - [ ] [Kuyruk (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Bağlı listeyle birlikte kuyruk işaretçisi kullanarak uygulayın: + - enqueue(value) - kuyruktaki pozisyona değer ekler + - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır (ön) + - empty() + - [ ] Sabit boyutlu dizi kullanarak uygulayın: + - enqueue(value) - müsait saklama alanının sonuna öğe ekler + - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır + - empty() + - full() + - [ ] Maliyet: + - bağlı liste kullanılarak yapılan kötü bir uygulamada enqueue ve dequeue işlemleri O(n) zaman alır + çünkü son öğenin devamına ihtiyacınız var, bu durum da her dizinin dolanmasına neden olur. + - enqueue: O(1) (amorti, bağlı liste ve dizi [sondalama]) + - dequeue: O(1) (bağlı liste ve dizi) + - empty: O(1) (bağlı liste ve dizi) + +- ### Hash tablosu + - [ ] Videolar: + - [ ] [Zincirleme ile Hashing (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Tablo Katlama, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Açık Adresleme, Kriptografik Hashleme (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(İleri Seviye) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(İleri Seviye) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Kurslar: + - [ ] [Hash Fonksiyonlarını Anlama (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) + - [ ] [Hash Tablolarını Kullanma (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) + - [ ] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) + - [ ] [Language Support Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Veri Yapıları (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Telefon Rehberi Problemi (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] dağıtık hash tabloları: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Doğrusal sondalama (Linear Probing) kullanarak dizi ile uygulayın: + - hash(k, m) - m has tablosunun büyüklüğü + - add(key, value) - eğer key varsa, değerini güncelle + - exists(key) + - get(key) + - remove(key) + +## Daha Fazla Bilgi + +- ### İkili arama (Binary search) + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Uygulama: + - binary search (sıralanmış tam sayı dizisine) + - binary search (rekürsif kullanarak) + +- ### Bitsel işlemler + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - 2'nin üslerinden bir çoğunu bilmelisin (2^1 to 2^16 and 2^32) + - [ ] Bunlarla bitleri manipüle etmeyi iyi anlayın: &, |, ^, ~, >>, << + - [ ] [kelimeler](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] İyi bir başlangıç: + [Bit Manipülasyonu (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programlama Uygulaması 2-10: Bitsel Operatörler (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipülasyonu](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitsel Operasyon](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2 ve 1'e tümleyenler + - [Binary: Artılar & Eksiler (Neden 2'ye Tümleyen Kullanırız) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1'e Tümleyen](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2'ye tümleyen](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] set bitlerinin sayımı + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Ağaçlar + +- ### Ağaçlar - Notlar & Arkaplan + - [ ] [Series: Ağaçlar (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basit ağaç yapımı + - traversal + - manipülasyon algoritmaları + - [ ] [BFS(breadth-first search) ve DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notları: + - level order (BFS, using queue) + - zaman karmaşıklığı: O(n) + - alan karmaşıklığı: en iyi: O(1), en kötü: O(n/2)=O(n) + - DFS notları: + - zaman karmaşıklığı: O(n) + - alan karmaşıklığı: + en iyi: O(log n) - ort. ağaç yüksekliği + en kötü: O(n) + - inorder (DFS: sol, kendisi, sağ) + - postorder (DFS: sol, sağ, kendisi) + - preorder (DFS: kendisi, sol, sağ) + +- ### İkili arama ağaçları: BSTs + - [ ] [İkili Arama Ağacı İncelemesi (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Uygulama: + - [ ] insert // değeri ağaca ekler + - [ ] get_node_count // barındırılan düğümlerin sayısını verir + - [ ] print_values // minimumdan maximuma doğru ağaçtaki değerleri yazdırır + - [ ] delete_tree + - [ ] is_in_tree // verilen değer ağaçta varsa true döndrür + - [ ] get_height // düğümlerin yüksekliğini döndürür (tek düğümlerin yüksekliği: 1) + - [ ] get_min // ağaçta bulunan minimum değeri verir + - [ ] get_max // ağaçta bulunan maximum değeri verir + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // verilen değerden sonra ağaçtaki en yüksek değeri verir, bulunamazsa -1 verir + +- ### Heap / Öncelik Kuyruğu / Binary Heap + - ağaç olarak görselleştirilir, ancak depolama ortamında genellikle doğrusaldır (dizi, bağlı liste) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Giriş (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Max-heap uygulaması: + - [ ] insert + - [ ] sift_up - eklemek için gerekli + - [ ] get_max - maximum öğeyi çıkarmadan return eder + - [ ] get_size() - barındırılan eleman sayısını verir + - [ ] is_empty() - heap eleman içermiyorsa true döndürür + - [ ] extract_max - maximum öğeyi çıkararak döndürür + - [ ] sift_down - extract_max için gerekli + - [ ] remove(i) - indexdeki öğeyi kaldırır + - [ ] heapify - bir dizi öğeden heap oluşturur, heap_sort gerekli + - [ ] heap_sort() - sıralanmamış bir dizi alır ve max-heap veya min-heap kullanarak sıralı diziye dönüştürür + +## Sıralama + +- [ ] Notlar: + - Sıralamaları implemente et & en iyi/en kötü durumu, her birinin ortalama karmaşıklığını bil: + - bubble sort olmaz - çok kötü - O(n^2), n <= 16 hariç + - [ ] Sıralama Algoritmalarında Stabilite ("Quicksort stabil mi?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Hangi algoritmalar bağlı listelerde kullanılabilir? Hangileri dizilerde? Hangileri hepsinde? + - Bağlı listeyi sıralamanızı tavsiye etmem, ancak merge sort bunu yapabilir. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Heap sort için, yukarıdaki Heap veri yapısına bakın. Heap sort güzel, ama stabil değil. + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort kod: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort kod: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Uygulama: + - [ ] Mergesort: O(n log n) ortalama ve en kötü durum + - [ ] Quicksort O(n log n) ortalama durum + - Selection sort ve insertion sort her ikisi de O(n^2) ortalama ve en kötü durum + - Heapsort için, yukarıdaki Heap veri yapısına bakın. + +- [ ] Gerekli değil, fakat tavsiye ediyorum: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Özetlemek gerekirse, burada [15 sıralama algoritmasının](https://www.youtube.com/watch?v=kPRA0W1kECg) görsel temsili var. +Bu konuda daha fazla bilgiye ihtiyacınız varsa, "Sıralama" bölümüne bakın [Bazı Konularda Ek Bilgiler](#additional-detail-on-some-subjects) + +## Graflar + +Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabilir, bu nedenle bu bölüm ağaçlar ve sıralama algoritmaları gibi uzundur. + +- Notlar: + - Grafı bellekte temsil etmek için 4 temel yol vardır: + - objeler ve işaretçiler (pointers) + - bitişiklik matrisi + - bitişik liste + - bitişik map + - Her temsilciliği ve artılarını - eksilerini tanıyın. + - BFS ve DFS - hesaplama karmaşıklığını bilin, ödün vermelerini verin, gerçek kod uygulamasını bilin. + - Bir soru sorulduğunda önce graf tabanlı bir çözüm arayın, eğer yoksa devam edin. + +- [ ] MIT(videolar): + - [ ] [Breadth-First Arama](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Arama](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Dersleri - güzel giriş: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graflar (inceleme ve fazlası): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Kursu: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Bunları uygulayacağım: + - [ ] DFS ile bitişik liste (rekürsif) + - [ ] DFS ile bitişik liste (yığınla iteratif) + - [ ] DFS ile bitişik matris (rekürsif) + - [ ] DFS ile bitişik matris (yığınla iteratif) + - [ ] BFS ile bitişik liste + - [ ] BFS ile bitişik matris + - [ ] tek kaynak en kısa yol (Dijkstra) + - [ ] minimum yayılan ağaç + - DFS-tabanlı algoritmalar (yukarıdaki Aduni videolarına bakın): + - [ ] döngüye bak (topolojik sıralama için gerekli, başlamadan önce döngüyü konyrol edeceğiz) + - [ ] topolojik sıralama + - [ ] bir graftaki bağlı komponentleri saymak + - [ ] kuvvetli bağlı komponentleri listele + - [ ] iki parçalı graf için kontrol et + +## Daha Fazla Bilgi + +- ### Rekürsif + - [ ] Stanford dersleri rekürsif & geri yineleme: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Ne zaman kullanmak uygun olur? + - Parçalı özyineleme olmamasından nasıl daha iyidir? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + +- ### Dinamik Programlama + - Mülakatınızda muhtemelen herhangi bir dinamik programlama sorusu görmeyeceksiniz, ancak bir soruyu dinamik programlama adayı olarak tanımaya değer. + - Bu konu oldukça zor olabilir, her DP çözülebilir problemin bir rekürsif ilişkisi olarak tanımlanması gerektiği için bununla baş etmek zor olabilir. + - Size tavsiyem ilgili model hakkında sağlam bir anlayış elde edene kadar, DP sorunlarının pek çok örneğini incelemenizi öneririm. + - [ ] Videolar: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Object-Oriented Programming + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### Scheduling + - In an OS, how it works? + - Can be gleaned from Operating System videos + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Coding Question Practice + +Now that you know all the computer science topics above, it's time to practice answering coding problems. + +**Coding question practice is not about memorizing answers to programming problems.** + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for 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/) + +No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) + +Supplemental: + +- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) + +**Read and Do Programming Problems (in this order):** + +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X) + - answers in C, C++ and Java +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +See [Book List above](#book-list) + + +## Coding exercises/challenges + +Once you've learned your brains out, put those brains to work. +Take coding challenges every day, as many as you can. + +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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 + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Code Exercises](https://code-exercises.com) + +Language-learning sites, with challenges: +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +Challenge repos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. + + +## Once you're closer to the interview + +- Cracking The Coding Interview Set 2 (videos): + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + +## Best way to find perfect career opportunities for you +- If you are trying to find new job opportunities, or if you are trying to find internships, if want to know about the salary of a job role in any companies or want to just know about the company reputation before applying to that company, here are the list of platforms which can help you find the above answers and more. +- [Best Websites for Careers & Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Your Resume + +- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed +- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Compliant. +- [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + + +- If you find hard to come up with good answers of this type interview questions, you can refer below link for some answer templates and have some idea. +- [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + + +## Have questions for the interviewer + + Some of mine (I already may know answer to but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is work/life balance? + + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. + By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book + - About to get to this part. Will update here once I've made my way through it + - Can rent it on Kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game + +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + that is just an intro. This a guidebook on program design and architecture + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ --- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From 8da90210947e382ead7b06e80f50fe76230c1da0 Mon Sep 17 00:00:00 2001 From: Ismail Cherri Date: Tue, 10 Aug 2021 23:16:11 +0200 Subject: [PATCH 291/857] Remove unavailable System design exercise The `indieflashblog.com` website no longer exist and the link leads to amazon deals --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 78417ca680..8915a90a18 100644 --- a/README.md +++ b/README.md @@ -1246,7 +1246,6 @@ Graphs can be used to represent many problems in computer science, so this secti - Consider bottlenecks and determine solutions - Exercises: - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) From d75873e136e70214957ea39413140e1aa62ce669 Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim Date: Thu, 12 Aug 2021 08:28:22 +0600 Subject: [PATCH 292/857] Fix Tail recursion youtube video broken link --- README.md | 2 +- translations/README-ar.md | 2 +- translations/README-bn.md | Bin 288848 -> 288912 bytes translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 23 files changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 8915a90a18..705425d551 100644 --- a/README.md +++ b/README.md @@ -921,7 +921,7 @@ Graphs can be used to represent many problems in computer science, so this secti - When it is appropriate to use it? - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Dynamic Programming - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. diff --git a/translations/README-ar.md b/translations/README-ar.md index be6269f1e4..31b5023ee4 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -913,7 +913,7 @@ Graphs can be used to represent many problems in computer science, so this secti - When it is appropriate to use it? - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Dynamic Programming - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. diff --git a/translations/README-bn.md b/translations/README-bn.md index 319931a08f076659499bfef718b9f82e80d3668b..cdb19fe45a5db020b6adb98d94ad5bc78d390555 100644 GIT binary patch delta 59 zcmca`L2$xF!GoVg~)`nwJ>m*&`XE7%~}>r!!t<7H^lk P%m~Cx+vP4Z8%+fO&oLF= delta 54 zcmbPmQSibA!G Date: Sun, 22 Aug 2021 10:21:32 -0700 Subject: [PATCH 293/857] Delete IntelCodeTable.pdf Removing Assembly related cheat sheet. --- extras/cheat sheets/IntelCodeTable.pdf | Bin 150424 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 extras/cheat sheets/IntelCodeTable.pdf diff --git a/extras/cheat sheets/IntelCodeTable.pdf b/extras/cheat sheets/IntelCodeTable.pdf deleted file mode 100644 index a9022968cecb1b47a633165260ff33414f854602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150424 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≤WUni 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 T5M4d^ylbY_lR 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 z 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
)^2N}4oXt;D+ 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 z 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

t&c{5)2{9L*io3$WHRJn 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 z�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 b#}LA3acx;mt(aISXBxPQ4o6OYuHk Date: Thu, 26 Aug 2021 14:49:07 +0900 Subject: [PATCH 294/857] Fix README-ja.md. --- translations/README-ja.md | 134 +++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 49bb56cb78..122db78afc 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -91,50 +91,50 @@ SREまたはシステムエンジニアになりたい場合は、オプショ - [コーディング面接の大学](#コーディング面接の大学) - - [これは何?](#これは何) - - [目次](#目次) - - [なぜこれを使用するのか](#なぜこれを使用するのか) - - [それの使い方](#それの使い方) - - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) - - [ビデオリソースについて](#ビデオリソースについて) - - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) - - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) - - [ブックリスト](#ブックリスト) - - [面接の準備](#面接の準備) - - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) - - [言語固有](#言語固有) - - [C++](#c) - - [Java](#java) - - [Python](#python) - - [始める前に](#始める前に) - - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) - - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) - - [3.レビュー、レビュー、評価](#3レビューレビュー評価) - - [4.フォーカス](#4フォーカス) - - [カバーされていないもの](#カバーされていないもの) - - [日々の計画](#日々の計画) - - [前提知識](#前提知識) - - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) - - [データ構造](#データ構造) - - [その他の知識](#その他の知識) - - [木](#木) - - [ソート](#ソート) - - [グラフ](#グラフ) - - [さらに多くの知識](#さらに多くの知識) - - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) - - [最終レビュー](#最終レビュー) - - [コーディングの質問練習](#コーディングの質問練習) - - [コード演習/挑戦](#コード演習挑戦) - - [面接に近づいたら](#面接に近づいたら) - - [あなたの履歴書](#あなたの履歴書) - - [面接が来たときに考えてください](#面接が来たときに考えてください) - - [面接官に質問があります](#面接官に質問があります) - - [一度あなたは仕事を得た](#一度あなたは仕事を得た) - - [その他の書籍](#その他の書籍) - - [その他の学習](#その他の学習) - - [追加科目の詳細](#追加科目の詳細) - - [ビデオシリーズ](#ビデオシリーズ) - - [コンピュータサイエンスコース](#コンピュータサイエンスコース) + - [これは何?](#これは何) + - [目次](#目次) + - [なぜこれを使用するのか](#なぜこれを使用するのか) + - [それの使い方](#それの使い方) + - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) + - [ビデオリソースについて](#ビデオリソースについて) + - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) + - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) + - [ブックリスト](#ブックリスト) + - [面接の準備](#面接の準備) + - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) + - [言語固有](#言語固有) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [始める前に](#始める前に) + - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) + - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) + - [3.レビュー、レビュー、評価](#3レビューレビュー評価) + - [4.フォーカス](#4フォーカス) + - [カバーされていないもの](#カバーされていないもの) + - [日々の計画](#日々の計画) + - [前提知識](#前提知識) + - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) + - [データ構造](#データ構造) + - [その他の知識](#その他の知識) + - [木](#木) + - [ソート](#ソート) + - [グラフ](#グラフ) + - [さらに多くの知識](#さらに多くの知識) + - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) + - [最終レビュー](#最終レビュー) + - [コーディングの質問練習](#コーディングの質問練習) + - [コード演習/挑戦](#コード演習挑戦) + - [面接に近づいたら](#面接に近づいたら) + - [あなたの履歴書](#あなたの履歴書) + - [面接が来たときに考えてください](#面接が来たときに考えてください) + - [面接官に質問があります](#面接官に質問があります) + - [一度あなたは仕事を得た](#一度あなたは仕事を得た) + - [その他の書籍](#その他の書籍) + - [その他の学習](#その他の学習) + - [追加科目の詳細](#追加科目の詳細) + - [ビデオシリーズ](#ビデオシリーズ) + - [コンピュータサイエンスコース](#コンピュータサイエンスコース) ## なぜこれを使用するのか @@ -437,7 +437,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - 実装するものは何もない - [ ] [Harvard CS50 - 漸近表記(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) - [ ] [BigO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] BigO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)(https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [BigO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - [動画](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [スライド](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) @@ -492,7 +492,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] 時間 - 最後に追加/削除するO(1)(スペースを増やすために償却される)、索引、または更新 - 他の場所に挿入/削除するO(n) -    - [ ] 空間 + - [ ] 空間 - メモリ内で連続しているため、プロキシミティはパフォーマンスに役立ちます - 必要なスペース=(配列の容量, > = n)*アイテムのサイズですが、2nでもO(n) @@ -505,7 +505,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb.             ビデオ全体ではなく、ノード構造体とメモリ割り当てに関する部分だけです。 - [ ] 連結リスト Vs 配列: - [コア連結リストs Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [実世界の連結リスト Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs)アレー) + - [実世界の連結リスト Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs) - [ ] [連結リスト(ビデオ)を避けるべき理由](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] 分かったぞ!:ポインタの知識へのポインタが必要です:         (そのポインタが指すアドレスを変更する可能性のある関数へのポインタを渡すとき) @@ -532,11 +532,11 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - ### スタック - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [スタックをの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4 .html) + - [ ] [スタックをの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) - [ ] 実装されません。配列で実装するのは簡単です。 - ### キュー - - [ ] [キューの使用 First-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4 .html) + - [ ] [キューの使用 First-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) - [ ] [キュー(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [環状バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [優先度つきキュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) @@ -616,7 +616,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [2つの次のパワーに回す](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - [ ] スワップ値: - [スワップ](http://bits.stephan-brumme.com/swap.html) -    - [ ] 絶対値: + - [ ] 絶対値: - [絶対整数](http://bits.stephan-brumme.com/absInteger.html) ## 木 @@ -869,7 +869,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [動的プログラミングのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - [ ] [DPアルゴリズムの説明(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - [ ] [DPアルゴリズムの実行時間(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) -        - [ ] [[DP Vs 再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [DP Vs 再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [グローバル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [ローカル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) @@ -890,8 +890,8 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] I - [インタフェース分離の原則](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません - [インタフェース分離の原則5分(ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) - - [ ] D - [依存性逆転の原則(http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 - - なぜ依存関係の逆転の原則とそれが重要なのか(http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [ ] D - [依存性逆転の原則](http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 + - [なぜ依存関係の逆転の原則とそれが重要なのか](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja) - ### デザインパターン @@ -1014,7 +1014,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [2006:疎結合分散システムのChubby Lockサービス](https://research.google.com/archive/chubby-osdi06.pdf) - [ ] [2007:Dynamo:Amazonの高可用性 key valueストア](https://www.akkadia.org/drepper/cpumemory.pdf) - Dynamo紙がNoSQL革命を開始 - - すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する)](https://www.akkadia.org/drepper/cpumemory.pdf) + - [すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する)](https://www.akkadia.org/drepper/cpumemory.pdf) - [ ] [2010:Dapper、大規模分散システム追跡基盤](https://research.google.com/pubs/archive/36356.pdf) - [ ] [2010:Dremel:Web-Scaleデータセットのインタラクティブ解析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [ ] [2012:Googleの巨像](https://www.wired.com/2012/07/google-colossus/) @@ -1108,7 +1108,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - そうでなければ、これは知っているだけでいいです - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - [ ] [UDPとTCP:トランスポートプロトコルの比較](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [[TCP / IPとOSIモデルの説明!](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [TCP / IPとOSIモデルの説明!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [インターネット経由のパケット伝送。ネットワーク&TCP / IPチュートリアル](https://www.youtube.com/watch?v=nomyRJehhnM) - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - [ ] [SSLとHTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) @@ -1197,19 +1197,19 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Tinder:どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - [ ] [現代のキャッシュのデザイン](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - [ ] [Facebookのスケールでライブビデオストリーミング](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) -    - [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - [ ] [Dockerの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - [ ] [AMPはGoogleに存在する脅威に対抗していますか?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) ) + - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [サーバーレス(非常に長い、要点が必要)](http://martinfowler.com/articles/serverless.html) + - [ ] [サーバーレス(非常に長い、要点が必要](http://martinfowler.com/articles/serverless.html) - [ ] [Instagramを動かすもの:何百ものインスタンス、数十のテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - [ ] [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) ) + - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - [ ] [アーキテクチャ - 40Mビジター、200Mダイナミックページビュー、30TBデータ]() - [ ] [PlentyOfFishアーキテクチャ](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) ) + - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 - [ ] Twitter: @@ -1545,7 +1545,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) -- ## #エントロピー +- ### エントロピー - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) @@ -1637,7 +1637,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Bloom Filter Appを書く方法](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -objects-us.html) + - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### 局所性に敏感なハッシング - ドキュメントの類似性を判断するために使用されます。 @@ -1646,7 +1646,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### ヴァンEmde Boasの木 - [Divide&Conquer:van Emde Boas Trees(ビデオ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT講義ノート](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) + - [ ] [MIT講義ノート](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) - ### 拡張データ構造 - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) @@ -1665,7 +1665,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍     B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。 - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - [ ] ** AVL木** + - [ ] **AVL木**         - 実際には:             私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。             AVL木は、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に @@ -1700,7 +1700,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(ビデオ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - アルゴリズム - 講義5(ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red -black-trees /) + - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - [ ] **2-3の検索木** - 実際には: @@ -1779,7 +1779,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### 幾何学、凸包(ビデオ) - - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9(https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) @@ -1948,7 +1948,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Mining Massive Datasets - スタンフォード大学(94ビデオ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [ ] グラフ理論(Sarada Herke)(67ビデオ)(https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [ ] [グラフ理論(Sarada Herke)(67ビデオ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## コンピュータサイエンスコース From 11c5b8f32aa573d1cf2cae3451ea75e5668c1bcf Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 30 Aug 2021 19:29:34 -0700 Subject: [PATCH 295/857] Update README.md Added note on time to study. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 705425d551..0e960fbfbb 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > +> **Note** you won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> > The items listed here will prepare you well for a technical interview at just about any software company, > including the giants: Amazon, Facebook, Google, and Microsoft. > From 85931b525b34ce84a40396e5794548ce72b409f8 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 30 Aug 2021 19:30:01 -0700 Subject: [PATCH 296/857] Update README.md Clarified note. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e960fbfbb..6edf6338bb 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Note** you won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. > > The items listed here will prepare you well for a technical interview at just about any software company, > including the giants: Amazon, Facebook, Google, and Microsoft. From 4b7ab52b06dea8b8f7820277c1dfdf4d06614708 Mon Sep 17 00:00:00 2001 From: zelig Date: Tue, 31 Aug 2021 11:21:11 +0800 Subject: [PATCH 297/857] add missing part of translation --- README.md | 4 ++-- translations/README-tw.md | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6edf6338bb..ee6b03c946 100644 --- a/README.md +++ b/README.md @@ -1427,11 +1427,11 @@ You're never really done. ***************************************************************************************************** ***************************************************************************************************** - + Everything below this point is optional. By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. - + ***************************************************************************************************** ***************************************************************************************************** diff --git a/translations/README-tw.md b/translations/README-tw.md index d8eb6ce243..270dc642bb 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -232,6 +232,8 @@ Fork一個branch,並且跟隨以下的指令 +`git clone git@github.com:/coding-interview-university.git` + `git checkout -b progress` `git remote add jwasham https://github.com/jwasham/coding-interview-university` @@ -246,6 +248,8 @@ `git rebase jwasham/main` +`git push --set-upstream origin progress` + `git push --force` [更多有關Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) @@ -1266,6 +1270,7 @@ - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - [Exercises for getting better at a given language](http://exercism.io/languages) + **閱讀並解題(按照以下順序):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](https://www.wiley.com/en-us/Programming+Interviews+Exposed%3A+Secrets+to+Landing+Your+Next+Job%2C+2nd+Edition-p-9780470121672) @@ -1349,12 +1354,12 @@ Coding面試題目影片: ***************************************************************************************************** ***************************************************************************************************** - + 下面的東西都是額外的。 讀這些東西,可以更了解電腦科學的概念, 並且能讓自己對任何軟體工程的工作做更好的準備。 如此一來,你將會成為一個更全面的軟體工程師。 - + ***************************************************************************************************** ***************************************************************************************************** @@ -1420,7 +1425,7 @@ Coding面試題目影片: - 前幾章提供了一些解決coding問題的精妙絕倫的方法(有些很舊,甚至還用磁帶),但那些只是導論。這是本程式設計和架構的指南。 ## 額外學習 - + 我把他們加了進來為了讓你成為更全方位的軟體工程師,並且留意一些科技以及演算法,讓你的資料庫中有更多素材。 - ### 編譯器 From aea6b885b786d884dfd9c2b63e65bedc469c1277 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 30 Aug 2021 20:22:35 -0700 Subject: [PATCH 298/857] Made updates and modernized some sections. --- README.md | 153 ++++++++++++++++++++++++------------------------------ 1 file changed, 69 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 6edf6338bb..b058f74e2d 100644 --- a/README.md +++ b/README.md @@ -90,18 +90,20 @@ ## What is it? -This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. - ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. +This is my multi-month study plan for becoming a software engineer for a large company. -If you have many years of software/web development experience, note that large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. +**Required:** +* A little experience with coding (variables, loops, methods/functions, etc) +* Patience +* Time -If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). +Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from web development. For example, Amazon has +Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for +them will not be the same, as each has its own competencies. These companies require computer science knowledge for +software development/engineering roles. --- @@ -112,7 +114,6 @@ If you want to be a reliability engineer or operations engineer, study more from - [How to use it](#how-to-use-it) - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [Book List](#book-list) - [Before you Get Started](#before-you-get-started) @@ -168,6 +169,7 @@ If you want to be a reliability engineer or operations engineer, study more from - [Final Review](#final-review) - [Coding Question Practice](#coding-question-practice) - [Coding exercises/challenges](#coding-exerciseschallenges) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Once you're closer to the interview](#once-youre-closer-to-the-interview) - [Best way to Find perfect Career Opportunities for you](#best-way-to-find-perfect-career-opportunities-for-you) - [Your Resume](#your-resume) @@ -227,12 +229,16 @@ If you want to be a reliability engineer or operations engineer, study more from ## Why use it? -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +If you want to work as a software engineer for a large company, these are the things you have to know. + +If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. +Every data structure I had ever used was built into the language, and I didn't know how they worked +under the hood at all. I never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I used a few multidimensional arrays in my life and +thousands of associative arrays, but I never created data structures from scratch. It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. @@ -246,33 +252,25 @@ I'm using GitHub's special markdown flavor, including tasks lists to track progr Fork a branch and follow the commands below -Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button - - Clone to your local repo - -`git clone git@github.com:/coding-interview-university.git` - -`git checkout -b progress` +Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +Clone to your local repo: -`git fetch --all` + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all - Mark all boxes with X after you completed your changes +Mark all boxes with X after you completed your changes: -`git add .` - -`git commit -m "Marked x"` - -`git rebase jwasham/main` - -`git push --set-upstream origin progress` - -`git push --force` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - ## Don't feel you aren't smart enough - Successful software engineers are smart, but many have an insecurity that they aren't smart enough. @@ -287,33 +285,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. I like using university lectures. - -## Interview Process & General Interview Prep - -- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Cracking the Facebook Coding Interview: - - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] Prep Course: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. - - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. - - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - - [ ] [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. - ## Pick One Language for the Interview You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: @@ -1353,28 +1324,50 @@ Language-learning sites, with challenges: Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) +## Interview Process & General Interview Prep + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. - ## Once you're closer to the interview - Cracking The Coding Interview Set 2 (videos): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) -## Best way to find perfect career opportunities for you -- If you are trying to find new job opportunities, or if you are trying to find internships, if want to know about the salary of a job role in any companies or want to just know about the company reputation before applying to that company, here are the list of platforms which can help you find the above answers and more. -- [Best Websites for Careers & Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) +## Finding Jobs and Internships +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) ## Your Resume - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed -- Very Important thing to remember while creating your resume, if you applying for big companies is that make it ATS Compliant. -- [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) ## Be thinking of for when the interview comes @@ -1394,9 +1387,8 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? - -- If you find hard to come up with good answers of this type interview questions, you can refer below link for some answer templates and have some idea. -- [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) +- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: + - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) ## Have questions for the interviewer @@ -1412,8 +1404,7 @@ Have a story, not just data, about something you accomplished. - What are you working on? - What do you like about it? - What is the work life like? -- How is work/life balance? - +- How is the work/life balance? ## Once You've Got The Job @@ -1428,8 +1419,8 @@ You're never really done. ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + Everything below this point is optional. It is NOT needed for an entry-level interview. + However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. ***************************************************************************************************** @@ -1451,7 +1442,6 @@ You're never really done. - [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - AKA the "Gang Of Four" book, or GOF - The canonical design patterns book -- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - As a review and problem recognition - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview @@ -1466,8 +1456,8 @@ You're never really done. - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - Algorithm catalog: - - This is the real reason you buy this book - - About to get to this part. Will update here once I've made my way through it + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. - Can rent it on Kindle - Answers: - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) @@ -1489,14 +1479,9 @@ You're never really done. - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - AKA CLR, sometimes CLRS, because Stein was late to the game - - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment -- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture - ## Additional Learning I added them to help you become a well-rounded software engineer, and to be aware of certain From 69c85007a39d8461e32c830367b8abe05cc54426 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 30 Aug 2021 20:25:24 -0700 Subject: [PATCH 299/857] Moved system design to additional info. --- README.md | 226 +++++++++++++++++++++++++++--------------------------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index b058f74e2d..4bed706670 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,6 @@ software development/engineering roles. - [Unicode](#unicode) - [Endianness](#endianness) - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Final Review](#final-review) - [Coding Question Practice](#coding-question-practice) - [Coding exercises/challenges](#coding-exerciseschallenges) @@ -182,6 +181,7 @@ software development/engineering roles. ## Additional Resources - [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Additional Learning](#additional-learning) - [Compilers](#compilers) - [Emacs and vi(m)](#emacs-and-vim) @@ -1113,118 +1113,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) -## System Design, Scalability, Data Handling - -**You can expect system design questions if you have 4+ years of experience.** - -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: - - Scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - System design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) -- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [Easy-to-read paper](https://raft.github.io/) - - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - Define the use cases, with interviewer's help - - Suggest additional features - - Remove items that interviewer deems out of scope - - Assume high availability is required, add as a use case - 2. Think about constraints: - - Ask how many requests per month - - Ask how many requests per second (they may volunteer it or make you do the math) - - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second - - Total storage required over 5 years - - How much data read per second - 3. Abstract design: - - Layers (service, data, caching) - - Infrastructure: load balancing, messaging - - Rough overview of any key algorithm that drives the service - - Consider bottlenecks and determine solutions - - Exercises: - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - --- ## Final Review @@ -1482,6 +1370,118 @@ You're never really done. - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + ## Additional Learning I added them to help you become a well-rounded software engineer, and to be aware of certain From 5bd06a145950228c791cc9ec76a685c2845cb74c Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 31 Aug 2021 20:31:23 -0700 Subject: [PATCH 300/857] Updates to book and study plan. --- README.md | 198 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 101 insertions(+), 97 deletions(-) diff --git a/README.md b/README.md index 4bed706670..ff25396274 100644 --- a/README.md +++ b/README.md @@ -114,8 +114,9 @@ software development/engineering roles. - [How to use it](#how-to-use-it) - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [About Video Resources](#about-video-resources) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) +- [Choose a Programming Language](#choose-a-programming-language) +- [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) +- [Interview Prep Books](#interview-prep-books) - [Before you Get Started](#before-you-get-started) - [What you Won't See Covered](#what-you-wont-see-covered) - [The Daily Plan](#the-daily-plan) @@ -155,6 +156,7 @@ software development/engineering roles. - [Design Patterns](#design-patterns) - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) - [Caches](#caches) - [Processes and Threads](#processes-and-threads) - [Testing](#testing) @@ -282,10 +284,35 @@ Mark all boxes with X after you completed your changes: Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. +It would be great to replace the online course resources with free and always-available public sources, +such as YouTube videos (preferably university lectures), so that you people can study these anytime, +not just when a specific online course is in session. -## Pick One Language for the Interview +## Choose a Programming Language + +You'll need to choose a programming language for the coding interviews you do, +but you'll also need to find a language that you can use to study computer science concepts. + +Preferably the language would be the same, so that you only need to be proficient in one. + +### For this Study Plan + +When I did the study plan, I used 2 languages for most of it: C and Python + +* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures + and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + but when you're learning how these low-level data structures are built, it's great to feel close to the metal. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. + - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) +* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. + +This is my preference. You do what you like, of course. + +### For your Coding Interview You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: @@ -298,86 +325,80 @@ You could also use these, but read around first. There may be caveats: - JavaScript - Ruby -Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Here is an article I wrote about choosing a language for the interview: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +This is the original article my post was based on: http://blog.codingforinterviews.com/best-programming-language-jobs/ You need to be very comfortable in the language and be knowledgeable. -Read more about choices: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ - -[See language resources here](programming-language-resources.md) +Read more about choices: +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +[See language-specific resources here](programming-language-resources.md) -## Book List +## Books for Data Structures and Algorithms -This is a shorter list than what I used. This is abbreviated to save you time. +This book will form your foundation for computer science. -### Interview Prep +Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - answers in C++ and Java - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +### C -### If you have tons of extra time: - -Choose one: +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [ ] Elements of Programming Interviews (Java version) - - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) - -### Language Specific +### Python -**You need to choose a language for the interview (see above).** +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +### Java -If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Your choice: -[Additional language-specific resources here.](programming-language-resources.md) +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) ### C++ -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Your choice: -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) - - Rich and detailed collection of Data Structures and Algorithms - - Great for first-timers +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +## Interview Prep Books -### Java +You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, +but I bought more to give myself more practice. But I always do too much. -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!) on coursera: - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) +I bought both of these. They gave me plenty of practice. -OR: +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Answers in C++ and Java + - This is a good warm-up for Cracking the Coding Interview + - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics +### If you have tons of extra time: -### Python +Choose one: -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) ## Before you Get Started @@ -388,35 +409,33 @@ Here are some mistakes I made so you'll have a better experience. ### 1. You Won't Remember it All I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards, so I could review. +through my notes and making flashcards, so I could review. I didn't need all of that knowledge. Please, read so you won't make my mistakes: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). -A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn). - ### 2. Use Flashcards To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. - -I made a mobile-first website, so I could review on my phone and tablet, wherever I am. +Each card has different formatting. I made a mobile-first website, so I could review on my phone and tablet, wherever I am. Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. +It's way too much for what's required. **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. 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. +An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. +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. My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). @@ -427,7 +446,6 @@ and feel comfortable with it, like linked lists, open one of the coding intervie linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, but how you apply the knowledge. There are several books and sites I recommend. -See here for more: [Coding Question Practice](#coding-question-practice). ### 4. Review, review, review @@ -454,8 +472,6 @@ Some subjects take one day, and some will take multiple days. Some are just lear Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: - C - using structs and functions that take a struct * and something else as args -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list - Python - using built-in types (to keep practicing Python) - and write tests to ensure I'm doing it right, sometimes just using simple assert() statements - You may do Java or something else, this is just my thing @@ -465,7 +481,7 @@ You don't need all these. You need only [one language for the interview](#pick-o Why code in all of these? - Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) - Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) -- Make use of built-in types, so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +- Make use of built-in types, so I have experience using the built-in tools for real-world use (I'm not going to write my own linked list implementation in production) I may not have time to do all of these for every subject, but I'll try. @@ -478,22 +494,6 @@ You don't need to memorize the guts of every algorithm. Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. -## Prerequisite Knowledge - -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying - - [ ] [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work - - [Answers to questions](https://github.com/lekkas/c-algorithms) - -- [ ] **How computers process a program:** - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - ## Algorithmic complexity / Big-O / Asymptotic analysis - Nothing to implement @@ -897,7 +897,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + problem as being a candidate for dynamic programming. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: @@ -922,10 +923,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - ### Design patterns - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Learn these patterns: @@ -955,7 +952,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - - ### Combinatorics (n choose k) & Probability - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) @@ -987,6 +983,14 @@ Graphs can be used to represent many problems in computer science, so this secti - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. +- ### How computers process a program + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + - ### Caches - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) From d4622c2e4d63d9648d9d99b937cae920a87e0f3f Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 1 Sep 2021 20:32:50 -0700 Subject: [PATCH 301/857] More updates to the study plan. --- README.md | 263 +++++++++++++++++++++++++----------------------------- 1 file changed, 121 insertions(+), 142 deletions(-) diff --git a/README.md b/README.md index ff25396274..aff94f318d 100644 --- a/README.md +++ b/README.md @@ -117,10 +117,12 @@ software development/engineering roles. - [Choose a Programming Language](#choose-a-programming-language) - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - [Interview Prep Books](#interview-prep-books) -- [Before you Get Started](#before-you-get-started) +- [A Note About Video Resources](#a-note-about-video-resources) - [What you Won't See Covered](#what-you-wont-see-covered) - [The Daily Plan](#the-daily-plan) -- [Prerequisite Knowledge](#prerequisite-knowledge) +- [Coding Question Practice](#coding-question-practice) +- [Coding Problems](#coding-problems) +- [The Study Plan](#the-study-plan) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) @@ -279,7 +281,7 @@ Mark all boxes with X after you completed your changes: - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## About Video Resources +## A Note About Video Resources Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. @@ -312,6 +314,15 @@ When I did the study plan, I used 2 languages for most of it: C and Python This is my preference. You do what you like, of course. +You may not need it, but here are some sites for learning a new language: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + ### For your Coding Interview You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: @@ -400,11 +411,11 @@ Choose one: - [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -## Before you Get Started +## Don't Make My Mistakes -This list grew over many months, and yes, it kind of got out of hand. +This list grew over many months, and yes, it got out of hand. -Here are some mistakes I made so you'll have a better experience. +Here are some mistakes I made so you'll have a better experience. And you'll save months of time. ### 1. You Won't Remember it All @@ -418,11 +429,15 @@ Please, read so you won't make my mistakes: ### 2. Use Flashcards To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. I made a mobile-first website, so I could review on my phone and tablet, wherever I am. +Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. + +But if you don't want to listen to me, here you go: - [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): - [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): @@ -439,21 +454,28 @@ It costs $25 on iOS but is free on other platforms. My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -### 3. Start doing coding interview questions while you're learning data structures and algorithms +### 3. Do Coding Interview Questions While You're Learning + +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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding -linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, -or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, -but how you apply the knowledge. There are several books and sites I recommend. +You need to apply what you're learning to solving problems, or you'll forget. I made this mistake. -### 4. Review, review, review +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. Do 2 or 3 questions regarding linked lists. +1. Move on to the next learning topic. +1. Later, go back and do another 2 or 3 linked list problems. +1. Do this with each new topic you learn. -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +** Keep doing problems while you're learning all this stuff, not after.** -Take a break from programming problems for a half hour and go through your flashcards. +You're not being hired for knowledge, but how you apply the knowledge. -### 5. Focus +There are many resources for this, listed below. Keep going. + +### 4. Focus 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. @@ -468,60 +490,106 @@ These are prevalent technologies but not part of this study plan: ## The Daily Plan -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. - -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing - -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). - -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) -- Make use of built-in types, so I have experience using the built-in tools for real-world use (I'm not going to write my own linked list implementation in production) +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. -I may not have time to do all of these for every subject, but I'll try. +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-cpp) - [Python](https://github.com/jwasham/practice-python) -You don't need to memorize the guts of every algorithm. +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) + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for your solutions (see Big-O below) +- 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/) + +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) + +**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). -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +Solving Problems: +- [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/) + +Coding Interview Question Videos: +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [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-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - See Nick White and FisherCoder Videos above for code walk-throughs. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) + +## The Study Plan + +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 -- Nothing to implement -- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review -- If some lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge +- 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. - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [slides](https://archive.org/details/lecture2_202008) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - [ ] TopCoder (includes recurrence relations and master theorem): - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [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 +if you can identify the runtime complexity of different algorithms. It's a super review and test. + ## Data Structures - ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: + - [ ] About Arrays: - [Arrays (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) - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) @@ -1133,88 +1201,15 @@ Graphs can be used to represent many problems in computer science, so this secti --- -## Coding Question Practice - -Now that you know all the computer science topics above, it's time to practice answering coding problems. - -**Coding question practice is not about memorizing answers to programming problems.** - -Why you need to practice doing programming problems: -- Problem recognition, and where the right data structures and algorithms fit in -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for 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/) - -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) - -Supplemental: - -- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) - -**Read and Do Programming Problems (in this order):** - -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X) - - answers in C, C++ and Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - -See [Book List above](#book-list) - - -## Coding exercises/challenges - -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. - -- [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/) - -Coding Interview Question Videos: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [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-) - - Good explanations of solution and the code - - You can watch several in a short time -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +## Update Your Resume -Challenge sites: -- [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 - - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - - See Nick White Videos above for short code-throughs -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Code Exercises](https://code-exercises.com) +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) -Language-learning sites, with challenges: -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) -- [Codeforces](https://codeforces.com/) +## Find a Job -Challenge repos: -- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) ## Interview Process & General Interview Prep @@ -1244,26 +1239,11 @@ Challenge repos: Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. - -## Once you're closer to the interview - -- Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - -## Finding Jobs and Internships -- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) - -## Your Resume - -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed -- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: - - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously ## Be thinking of for when the interview comes -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. Have a story, not just data, about something you accomplished. - Why do you want this job? @@ -1282,10 +1262,9 @@ Have a story, not just data, about something you accomplished. - If you find it hard to come up with good answers of these types of interview questions, here are some ideas: - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) - ## Have questions for the interviewer - Some of mine (I already may know answer to but want their opinion or team perspective): +Some of mine (I already may know the answers, but want their opinion or team perspective): - How large is your team? - What does your dev cycle look like? Do you do waterfall/sprints/agile? From 46960bbc17f3bfd9e26709ff835d37d11bf69127 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 1 Sep 2021 20:34:05 -0700 Subject: [PATCH 302/857] Fixed markdown. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aff94f318d..5e759e3452 100644 --- a/README.md +++ b/README.md @@ -469,7 +469,7 @@ Once you've learned a topic, and feel somewhat comfortable with it, for example, 1. Later, go back and do another 2 or 3 linked list problems. 1. Do this with each new topic you learn. -** Keep doing problems while you're learning all this stuff, not after.** +**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. From 9c2f276c2ea56ee201864ef60d0e93a7af8fab07 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 2 Sep 2021 08:43:50 -0700 Subject: [PATCH 303/857] Updated playlist link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b80a86bbe7..53fb280d6d 100644 --- a/README.md +++ b/README.md @@ -539,7 +539,7 @@ Solving Problems: - [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/watch?v=NBcqBddFbZw&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) - Super for walkthroughs of problem solutions - [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) From b611709cb028a3283586af0209eb8768f25007cc Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 2 Sep 2021 08:52:08 -0700 Subject: [PATCH 304/857] Updates table of contents. --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 53fb280d6d..c63a352d47 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ software development/engineering roles. ## Table of Contents +### The Study Plan + - [What is it?](#what-is-it) - [Why use it?](#why-use-it) - [How to use it](#how-to-use-it) @@ -122,6 +124,9 @@ software development/engineering roles. - [The Daily Plan](#the-daily-plan) - [Coding Question Practice](#coding-question-practice) - [Coding Problems](#coding-problems) + +### Topics of Study + - [The Study Plan](#the-study-plan) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) @@ -170,19 +175,19 @@ software development/engineering roles. - [Endianness](#endianness) - [Networking](#networking) - [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) + +### Getting the Job + +- [Update Your Resume](#update-your-resume) +- [Find a Job](#find-a-job) - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Best way to Find perfect Career Opportunities for you](#best-way-to-find-perfect-career-opportunities-for-you) -- [Your Resume](#your-resume) - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Have questions for the interviewer](#have-questions-for-the-interviewer) - [Once You've Got The Job](#once-youve-got-the-job) ----------------- Everything below this point is optional ---------------- +**---------------- Everything below this point is optional ----------------** -## Additional Resources +### Optional Extra Topics & Resources - [Additional Books](#additional-books) - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) @@ -1119,10 +1124,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - In an OS, how it works? - - Can be gleaned from Operating System videos - - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) From 880b1a7aa6337b330dd8cbdc5eb13e349d39bb4e Mon Sep 17 00:00:00 2001 From: Leonardo Freua Date: Thu, 2 Sep 2021 15:32:17 -0300 Subject: [PATCH 305/857] Add the Project Euler to the list of Challenge sites. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c63a352d47..cc8bce3dc3 100644 --- a/README.md +++ b/README.md @@ -560,6 +560,7 @@ Challenge sites: - [TopCoder](https://www.topcoder.com/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) ## The Study Plan From 4f607441c78b260c8a88a202f35cca996bf2efa4 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 4 Sep 2021 08:27:19 -0700 Subject: [PATCH 306/857] Fixed link. --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c63a352d47..9b54d93c63 100644 --- a/README.md +++ b/README.md @@ -115,11 +115,11 @@ software development/engineering roles. - [Why use it?](#why-use-it) - [How to use it](#how-to-use-it) - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) +- [A Note About Video Resources](#a-note-about-video-resources) - [Choose a Programming Language](#choose-a-programming-language) - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - [Interview Prep Books](#interview-prep-books) -- [A Note About Video Resources](#a-note-about-video-resources) +- [Don't Make My Mistakes](#dont-make-my-mistakes) - [What you Won't See Covered](#what-you-wont-see-covered) - [The Daily Plan](#the-daily-plan) - [Coding Question Practice](#coding-question-practice) @@ -127,7 +127,6 @@ software development/engineering roles. ### Topics of Study -- [The Study Plan](#the-study-plan) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) @@ -561,7 +560,7 @@ Challenge sites: - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [InterviewBit](https://www.interviewbit.com/) -## The Study Plan +## Let's Get Started Alright, enough talk, let's learn! From 8ec18e47e93f979f90b7fba41f57766b37494915 Mon Sep 17 00:00:00 2001 From: nikita-jain-01 <72670446+njain876085@users.noreply.github.com> Date: Wed, 8 Sep 2021 02:48:56 +0530 Subject: [PATCH 307/857] Adding programming resources --- programming-language-resources.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 633c3409b2..34a80382a9 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -63,10 +63,12 @@ - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) + - [W3 Schools](https://www.w3schools.com/html/default.asp) - CSS - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) + - [W3 Schools](https://www.w3schools.com/css/default.asp) - Javascript - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) From fc5934fafdcf605cb034235ea6a1e5ca40a68099 Mon Sep 17 00:00:00 2001 From: nikita-jain-01 <72670446+njain876085@users.noreply.github.com> Date: Wed, 8 Sep 2021 11:34:57 +0530 Subject: [PATCH 308/857] Adding programming resources --- programming-language-resources.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index 34a80382a9..d5e3cc19c6 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -63,12 +63,12 @@ - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) - - [W3 Schools](https://www.w3schools.com/html/default.asp) + - [W3 Schools](https://www.w3schools.com/html/) - CSS - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) - - [W3 Schools](https://www.w3schools.com/css/default.asp) + - [W3 Schools](https://www.w3schools.com/css/) - Javascript - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) From ddd4c9975286ad04169e6080e559395adf810486 Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim <1929036+gjzim@users.noreply.github.com> Date: Wed, 15 Sep 2021 11:24:19 +0600 Subject: [PATCH 309/857] Remove OOP link from Extra Topics & Resources --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 8e4648c9df..e5446a84b0 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,6 @@ software development/engineering roles. - [Even More Knowledge](#even-more-knowledge) - [Recursion](#recursion) - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - [Design Patterns](#design-patterns) - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) From d349fbc5c6fac6520ee968598a2e357a5063dd2c Mon Sep 17 00:00:00 2001 From: Med Amine Fh <37845480+medaminefh@users.noreply.github.com> Date: Wed, 15 Sep 2021 18:38:17 +0100 Subject: [PATCH 310/857] Fix some broken links --- translations/README-ar.md | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 31b5023ee4..9f70723efb 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -97,17 +97,17 @@ ## الفهرس -- [كيفية استخدامها](#how-to-use-it) -- [لماذا استخدمه؟](#why-use-it) -- [كيفية استخدامها](#how-to-use-it) -- [عن مصادر مقاطع الفديو](#about-video-resources) -- [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#interview-process--general-interview-prep) -- [اختر لغة برمجية واحدة للمقابلة البرمجية](#pick-one-language-for-the-interview) -- [لائحة الكتب](#book-list) -- [قبل أن تبدأ](#before-you-get-started) -- [ما لن تجده هنا](#what-you-wont-see-covered) -- [الخطة اليومية](#the-daily-plan) -- [معرفة مسبقة](#prerequisite-knowledge) +- [ما هذا؟](#ما-هذا؟) +- [لماذا استخدمه؟](#لماذا-استخدمه؟) +- [كيفية استخدامها](#كيفية-استخدامها) +- [عن مصادر مقاطع الفديو](#عن-مصادر-مقاطع-الفديو) +- [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#مراحل-المقابلة-الشخصية-و-الإستعداد-العام-للمقابلة) +- [اختر لغة برمجية واحدة للمقابلة البرمجية](#اختر-لغة-برمجية-واحدة-للمقابلة-البرمجية) +- [لائحة الكتب](#لائحة-الكتب) +- [قبل البدء](#قبل-البدء) +- [ما لن تجده هنا](#ما-لن-تجده-هنا) +- [الخطة اليومية](#الخطة-اليومية) +- [معرفة مسبقة](#المعرفة-المسبقة) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - [Data Structures](#data-structures) - [Arrays](#arrays) @@ -266,7 +266,7 @@ - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## عن مصادر الفديو +## عن مصادر مقاطع الفديو بعض الفديوهات متاحة فقط عن طريق الاشتراك في كورسيرا "Coursera"، إيدكس "Edx" أو ليندا "Lynda.com". يطلق عليهم موكس"MOOCS". بعض الأحيان الدروس ليست متاحة في كل الأوقات لذلك عليك الانتظار عدة أشهر حتى تكون متاحة للالتحاق بها. دروس ليندا "Lynda" ليست مجانية. @@ -276,7 +276,7 @@ أفضل استخدام مصادر الجامعات. -## مراحل المقابلة الشخصية & الإستعداد العام للمقابلة +## مراحل المقابلة الشخصية و الإستعداد العام للمقابلة - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) @@ -330,7 +330,7 @@ You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. -## قائمة الكتب +## لائحة الكتب هذه قائمة من العناصر التي استحدمتها. تم اختصارها للمحافظة على الكتب. @@ -440,7 +440,7 @@ It's user-friendly, available on all platforms and has a cloud sync system. It c My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -### 3. Start doing coding interview questions while you're learning data structures and algorithms +### 3. ابدأ في إجراء أسئلة المقابلة بينما تتعلم هياكل البيانات والخوارزميات 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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding @@ -449,18 +449,18 @@ or recursion problem, or whatever. But keep doing problems while you're learning but how you apply the knowledge. There are several books and sites I recommend. See here for more: [Coding Question Practice](#coding-question-practice). -### 4. Review, review, review +### 4. المراجعة ,المراجعة, المراجعة I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. Take a break from programming problems for a half hour and go through your flashcards. -### 5. Focus +### 5. ركز 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: @@ -468,7 +468,7 @@ These are prevalent technologies but not part of this study plan: - Javascript - HTML, CSS, and other front-end technologies -## The Daily Plan +## الخطة اليومية Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. @@ -498,7 +498,7 @@ You don't need to memorize the guts of every algorithm. Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. -## Prerequisite Knowledge +## المعرفة المسبقة - [ ] **Learn C** - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying From 80e0182253965f031052db11af1d9a9f0514f4cc Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim <1929036+gjzim@users.noreply.github.com> Date: Fri, 17 Sep 2021 20:06:50 +0600 Subject: [PATCH 311/857] Remove Scheduling link from Extra Topics & Resources --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e5446a84b0..9aed98f780 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,6 @@ software development/engineering roles. - [Caches](#caches) - [Processes and Threads](#processes-and-threads) - [Testing](#testing) - - [Scheduling](#scheduling) - [String searching & manipulations](#string-searching--manipulations) - [Tries](#tries) - [Floating Point Numbers](#floating-point-numbers) From cef4c46d3b57150eeeea8909deb3d0d12dbf5fad Mon Sep 17 00:00:00 2001 From: Vladislav Date: Tue, 21 Sep 2021 21:39:22 +0300 Subject: [PATCH 312/857] Edit the intro section with words of gratitude --- translations/README-ru.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/translations/README-ru.md b/translations/README-ru.md index b3ce9373c0..50225fa4c6 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -5,10 +5,10 @@

- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
+ Основанная в 2018, OSS Capital - первая и единственная венчурная платформа, ориентированная
исключительно для поддержки основателей стартапов на ранней стадии COSS (commercial open source - коммерческий открытый источник).

@@ -28,11 +28,16 @@

- Dev environments built for the cloud + Среды разработки, созданные для облачных сервисов

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + + Изначально интегрированный с GitLab, GitHub и Bitbucket, Gitpod автоматически, продолжительно и предварительно собирает + среды разработки всех ветвей (branches). В результате члены команды могут мгновенно приступить к написанию кода с новыми + средами разработки для каждой новой задачи - независимо от того, создаете ли вы новую функцию (feature), хотите исправить ошибку + или работаете над проверкой кода (code review). +

From d3d11233b55dfd5f5370ae47b60cb770585b66b7 Mon Sep 17 00:00:00 2001 From: HicaroD Date: Sun, 26 Sep 2021 09:00:52 -0300 Subject: [PATCH 313/857] Adding programming resources about Rust programming language --- programming-language-resources.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index d5e3cc19c6..9f67bbd4a3 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -74,6 +74,13 @@ - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) -- Other Language 1 +- Rust + - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) + - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) + - [Rust Tutorial by Doug Milford from Lambda Valley](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) + - [Introduction - Easy Rust](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) + - [Rust overview](https://learning-rust.github.io/docs/index.html) + - [A Gentle Introduction to Rust](https://stevedonovan.github.io/rust-gentle-intro/readme.html) + - Other Language 2 - etc From 9fd3e67b3b2625b1c542bcb2bb4cc41c85b6cc8c Mon Sep 17 00:00:00 2001 From: HicaroD Date: Tue, 28 Sep 2021 09:31:21 -0300 Subject: [PATCH 314/857] Adding a good resume template at "Update Your Resume" section This resume template was created Gayle McDowell and posted in her website called CareerCup --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9aed98f780..3bb0163028 100644 --- a/README.md +++ b/README.md @@ -1205,6 +1205,9 @@ Graphs can be used to represent many problems in computer science, so this secti - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" - I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." + ## Find a Job From 6367def37169783ca4344c065316cefb509d580e Mon Sep 17 00:00:00 2001 From: HicaroD Date: Thu, 30 Sep 2021 10:04:52 -0300 Subject: [PATCH 315/857] Adding a new course about Operating System from University of Massachusetts I'm doing that because I had some problems with the operating system from University of Berkeley. The lectures are good, but it's bad organized, the name of the lectures are not explicity and you need to search for every single lecture to find something you want to learn specifically. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3bb0163028..87d8c57a05 100644 --- a/README.md +++ b/README.md @@ -1098,6 +1098,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Context switching - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] concurrency in Python (videos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) From cae0a354108856c3bd5d43448c4ffc928c00a4d0 Mon Sep 17 00:00:00 2001 From: Harshwardhan Date: Thu, 30 Sep 2021 23:15:16 +0530 Subject: [PATCH 316/857] Added Ruby Programming language resources --- programming-language-resources.md | 152 ++++++++++++++++-------------- 1 file changed, 80 insertions(+), 72 deletions(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index 9f67bbd4a3..4d8684d29f 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -1,86 +1,94 @@ ## Programming Language Resources - C - - [ANSI C Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/C%20Reference%20Card%20(ANSI)%202.2.pdf) - - K&R C book (ANSI C) - - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) - - GDB: - - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) - - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=y5JmQItfFck) - - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) - - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) + - [ANSI C Cheat Sheet]() + - K&R C book (ANSI C) + - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) + - GDB: + - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) + - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=y5JmQItfFck) + - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) + - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) - C++ - - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) - - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) - - [basics](https://www.tutorialspoint.com/cplusplus/cpp_basic_syntax.htm) - - [pointers](https://www.cprogramming.com/tutorial/lesson6.html) - - [class and object](https://www.cprogramming.com/tutorial/lesson12.html) - - [functions](https://www.cprogramming.com/tutorial/lesson4.html) - - [references](https://www.geeksforgeeks.org/references-in-c/) - - [templates](https://www.cprogramming.com/tutorial/templates.html) - - [compilation](https://www.youtube.com/watch?v=ZTu0kf-7h08) - - [scope & linkage](https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/) - - [namespaces](https://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm) - - [OOP](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) - - [STL](https://www.hackerearth.com/practice/notes/standard-template-library/) - - [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html) - - [C++ at Google (video)](https://www.youtube.com/watch?v=NOCElcMcFik) - - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) - - Google uses clang-format (there is a command line "style" argument: -style=google) - - [Efficiency with Algorithms, Performance with Data Structures (video)](https://youtu.be/fHNmRkzxHWs) - - [Review of C++ concepts (video)](https://www.youtube.com/watch?v=Rub-JsjMhWY) - - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) - - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) + - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) + - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) + - [basics](https://www.tutorialspoint.com/cplusplus/cpp_basic_syntax.htm) + - [pointers](https://www.cprogramming.com/tutorial/lesson6.html) + - [class and object](https://www.cprogramming.com/tutorial/lesson12.html) + - [functions](https://www.cprogramming.com/tutorial/lesson4.html) + - [references](https://www.geeksforgeeks.org/references-in-c/) + - [templates](https://www.cprogramming.com/tutorial/templates.html) + - [compilation](https://www.youtube.com/watch?v=ZTu0kf-7h08) + - [scope & linkage](https://www.learncpp.com/cpp-tutorial/scope-duration-and-linkage-summary/) + - [namespaces](https://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm) + - [OOP](https://www.geeksforgeeks.org/object-oriented-programming-in-cpp/) + - [STL](https://www.hackerearth.com/practice/notes/standard-template-library/) + - [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html) + - [C++ at Google (video)](https://www.youtube.com/watch?v=NOCElcMcFik) + - [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) + - Google uses clang-format (there is a command line "style" argument: -style=google) + - [Efficiency with Algorithms, Performance with Data Structures (video)](https://youtu.be/fHNmRkzxHWs) + - [Review of C++ concepts (video)](https://www.youtube.com/watch?v=Rub-JsjMhWY) + - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) + - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) - Python - - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) - - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) - - [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) - - [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA) - - [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8) - - [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6) - - [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs) - - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) - - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) - - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) - - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) + - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) + - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) + - [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_) + - [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA) + - [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8) + - [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6) + - [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs) + - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) + - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) + - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) + - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - Java - - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - - [Software Construction In Java (video)](https://www.edx.org/course/software-construction-java-mitx-6-005-1x) - - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) - - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) - - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) - - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) + - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) + - [Software Construction In Java (video)](https://www.edx.org/course/software-construction-java-mitx-6-005-1x) + - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) + - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) + - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) + - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) - Go - - [The Go programming Language](https://golang.org/) - - [The Go programming Language (book)](http://www.gopl.io/) - - [A Tour of Go](https://tour.golang.org/) - - [Effective Go](https://golang.org/doc/effective_go.html) - - [Go Wiki](https://golang.org/wiki) - - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) - - [Go Proverbs](http://go-proverbs.github.io/) - - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) + - [The Go programming Language](https://golang.org/) + - [The Go programming Language (book)](http://www.gopl.io/) + - [A Tour of Go](https://tour.golang.org/) + - [Effective Go](https://golang.org/doc/effective_go.html) + - [Go Wiki](https://golang.org/wiki) + - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) + - [Go Proverbs](http://go-proverbs.github.io/) + - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) - HTML - - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) - - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) - - [W3 Schools](https://www.w3schools.com/html/) + - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) + - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) + - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) + - [W3 Schools](https://www.w3schools.com/html/) - CSS - - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) - - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) - - [W3 Schools](https://www.w3schools.com/css/) + - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) + - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) + - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) + - [W3 Schools](https://www.w3schools.com/css/) - Javascript - - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) - - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) + - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) + - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) + - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) + - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) - Rust - - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) - - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) - - [Rust Tutorial by Doug Milford from Lambda Valley](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) - - [Introduction - Easy Rust](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) - - [Rust overview](https://learning-rust.github.io/docs/index.html) - - [A Gentle Introduction to Rust](https://stevedonovan.github.io/rust-gentle-intro/readme.html) + + - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) + - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) + - [Rust Tutorial by Doug Milford from Lambda Valley](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) + - [Introduction - Easy Rust](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) + - [Rust overview](https://learning-rust.github.io/docs/index.html) + - [A Gentle Introduction to Rust](https://stevedonovan.github.io/rust-gentle-intro/readme.html) + +- Ruby + + - [The Ruby Programming Language](https://book4you.org/book/1219034/7c9a4b) + - [Polished Ruby Programming](https://book4you.org/book/16678106/f61159) + - [Ruby Fu](https://rubyfu.net/) + - [Ruby Koans](http://rubykoans.com/) - Other Language 2 - etc From cd01531ce572944dd235aacdb04a34c221741acd Mon Sep 17 00:00:00 2001 From: Tarun Date: Sun, 3 Oct 2021 09:47:50 +0530 Subject: [PATCH 317/857] Marked x --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 4d8684d29f..b6bcb82eed 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -59,6 +59,7 @@ - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) - [Go Proverbs](http://go-proverbs.github.io/) - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) + -[Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) ] - HTML - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) From 0f6067ca67fe3c36dd3024390e44750323c77cf6 Mon Sep 17 00:00:00 2001 From: Gul Jamal Zim <1929036+gjzim@users.noreply.github.com> Date: Sun, 3 Oct 2021 21:21:53 +0600 Subject: [PATCH 318/857] Fix Networking: Khan Academy broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87d8c57a05..a19fc6c669 100644 --- a/README.md +++ b/README.md @@ -1171,7 +1171,7 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Networking - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - Otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/computers-and-internet-code-org) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) From bbe72afa25b857d6ecba5daad61a207dc2fec597 Mon Sep 17 00:00:00 2001 From: Kevin Lee Date: Mon, 4 Oct 2021 02:33:27 +0900 Subject: [PATCH 319/857] Spell Correction Spell Correction --- translations/README-ko.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translations/README-ko.md b/translations/README-ko.md index 9249d56b89..c188f10909 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1,13 +1,13 @@ # 코딩 인터뷰 대학(Coding Interview University) > 나는 원래 이것을 소프트웨어 엔지니어가 되기 위한 짧은 연구 목록으로 만들었다. -> 그러나 지금 당신이 볼수 있듯이 이 목록은 매우 커졌다. 이 목록을 숙지 한 후, +> 그러나 지금 당신이 볼 수 있듯이 이 목록은 매우 커졌다. 이 목록을 숙지한 후, > [나는 아마존에 소프트웨어 엔지니어로 채용됐다](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > 당신은 아마 내가 한 것처럼 많이 공부할 필요는 없을 것이다. 어쨌든 당신이 필요로 하는 모든 것은 여기에 있다. > > 몇 달 동안 하루에 8-12 시간 정도 공부했습니다. 이것이 제 이야기입니다. [Google 인터뷰를 위해 8 개월 동안 풀 타임으로 공부 한 이유](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> 여기에 나열된 목록들은 아마존, 페이스북, 구글, 마이크로소프트 같은 거대 기업을 포함한 거의 모든 소프트웨어 회사의 인터뷰를 준비하는데에 도움이 될것이다. +> 여기에 나열된 목록들은 아마존, 페이스북, 구글, 마이크로소프트 같은 거대 기업을 포함한 거의 모든 소프트웨어 회사의 인터뷰를 준비하는 데에 도움이 될 것이다. > > > *행운을 빈다!* @@ -89,9 +89,9 @@ ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -이 글은 **신입 소프트웨어 엔지니어** 혹은 소프트웨어/웹 개발에서 (컴퓨터과학 지식이 필요한) 소프트웨어 엔지니어링으로 전환자고자 하는 사람들을 위한 글입니다. 만약 당신이 여러 해의 소프트웨어 엔지니어링 경력이 있다면, 더 어려운 인터뷰가 예상된다. +이 글은 **신입 소프트웨어 엔지니어** 혹은 소프트웨어/웹 개발에서 (컴퓨터과학 지식이 필요한) 소프트웨어 엔지니어링으로 전환하고자 하는 사람들을 위한 글입니다. 만약 당신이 여러 해의 소프트웨어 엔지니어링 경력이 있다면, 더 어려운 인터뷰가 예상된다. -만약 당신이 여러 해의 소프트웨어/웹 개발 경험을 가지고 있다면, 구글과 아마존, 페이스북 그리고 마이크로소프트과 같은 큰 규모의 소프트웨어 회사들은 소프트웨어 엔지니어링을 소프트웨어/웹 개발과 다르게 바라보고 있으며 컴퓨터과학 지식을 요구한다는 사실에 주목하도록 하자. +만약 당신이 여러 해의 소프트웨어/웹 개발 경험을 가지고 있다면, 구글과 아마존, 페이스북 그리고 마이크로소프트와 같은 큰 규모의 소프트웨어 회사들은 소프트웨어 엔지니어링을 소프트웨어/웹 개발과 다르게 바라보고 있으며 컴퓨터과학 지식을 요구한다는 사실에 주목하도록 하자. 믿음직한 엔지니어 혹은 시스템 엔지니어가 되고 싶다면, 선택적인 주제 목록(네트워크, 보안 등)을 더 공부하도록 하자. @@ -110,7 +110,7 @@ - [시작하기 전에](#시작하기-전에) - [다루지 않을 것](#다루지-않을-것) - [먼저 알아야 할 지식](#먼저-알아야-할-지식) -- [하루 하루의 계획](#하루-하루의-계획) +- [하루하루의 계획](#하루-하루의-계획) - [알고리즘 복잡도 / Big-O / 점근적 분석](#알고리즘-복잡도--big-o--점근적-분석) - [자료구조](#자료구조) - [배열](#배열) @@ -217,13 +217,13 @@ ## 이걸 왜 써야하죠? -내가 이 프로젝트를 시작했을 때, 나는 힙이나 스택, 시간복잡도, 트리, 그래프 순회 등에 대하여 전혀 아는 바가 없었다. +내가 이 프로젝트를 시작했을 때, 나는 힙이나 스택, 시간 복잡도, 트리, 그래프 순회 등에 대하여 전혀 아는 바가 없었다. 만약 내가 정렬 알고리즘을 코딩해야 했다면, 나는 그리 잘하지 못했을 것이다. 모든 사용했던 모든 자료 구조는 언어 안에서 구현되어 있던 것들이고, 나는 그것들이 보이지 않는 곳에서 어떻게 작동하고 있는지 몰랐다. 나는 실행 중인 프로세스가 메모리 초과 에러를 메시지를 보내지 않는 한 메모리를 관리할 필요가 없었고, 나는 해결책을 찾아야만 했다. -나는 몇몇 다차원 배열이나 연관 배열을 사용해왔지만, 자료구조를 처음부터 구현해본 적은 없었다. +나는 몇몇 다차원 배열이나 연관 배열을 사용해왔지만, 자료구조를 처음부터 구현해 본 적은 없었다. -하지만 이 공부 계획을 진행하면서 나는 내가 고용될 것이라는 자신감을 갖게 되었다. 이 것은 내게 여러 달이 필요한 긴 계획이다. +하지만 이 공부 계획을 진행하면서 나는 내가 고용될 것이라는 자신감을 갖게 되었다. 이것은 내게 여러 달이 필요한 긴 계획이다. 만약 당신이 이 중 많은 내용에 익숙하다면 시간은 훨씬 덜 들 것이다. ## 어떻게 사용하면 되나요? @@ -236,11 +236,11 @@ **새 브랜치를 만들어서 중괄호에 x표를 넣는 식으로 항목을 체크하라: [x]** - 브랜치를 포크하고 아래의 명령을 따라라 + 브랜치를 라하고 아래의 명령을 따라라 -포크 버튼을 눌러 Github https://github.com/jwasham/coding-interview-university 레포지토리를 포크하라. +포크 버튼을 눌러 Github https://github.com/jwasham/coding-interview-university 레포지토리를 포크 하라. - 로컬 레포지토리에 클론하라. + 로컬 레포지토리에 클론 하라. `git clone git@github.com:/coding-interview-university.git` From f35145313cb7d4759446dea55ff05ad2bc5561a2 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 3 Oct 2021 12:08:18 -0700 Subject: [PATCH 320/857] Update programming-language-resources.md Minor spacing --- programming-language-resources.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index b6bcb82eed..f3faddba73 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -59,7 +59,7 @@ - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) - [Go Proverbs](http://go-proverbs.github.io/) - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) - -[Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) ] + - [Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) ] - HTML - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) @@ -76,7 +76,6 @@ - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) - Rust - - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) - [Rust Tutorial by Doug Milford from Lambda Valley](https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5) From 2ebfe53cec4385f76f095c90e3a22f95f6820497 Mon Sep 17 00:00:00 2001 From: Saju Ahmed <59993047+Riyadh1734@users.noreply.github.com> Date: Thu, 7 Oct 2021 14:56:08 +0600 Subject: [PATCH 321/857] updated readme file --- translations/README-bn.md | Bin 288912 -> 264176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index cdb19fe45a5db020b6adb98d94ad5bc78d390555..9f2b967ffb328aaad031f4187a8dbf89c24b68df 100644 GIT binary patch literal 264176 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 z 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 X{e5$@SEm;ir?0dRwLkjL|Lp$-pE(Vs literal 288912 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 z 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 S!n~l9`X8Aft8ClMtNkCC|EI$M From bbf814732b5d664163658843f8edf5e65aca9e55 Mon Sep 17 00:00:00 2001 From: Lucifer Chase Date: Wed, 27 Oct 2021 07:41:00 +0530 Subject: [PATCH 322/857] Minor Typo --- .gitignore | 2 ++ programming-language-resources.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 722472706d..0a89050ec7 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ personal-9894.md ehthumbs.db Thumbs.db +# Sublime Files +.sublime \ No newline at end of file diff --git a/programming-language-resources.md b/programming-language-resources.md index f3faddba73..39023e292a 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -59,7 +59,7 @@ - [Go at Google: Language Design in the Service of Software Engineering](https://talks.golang.org/2012/splash.article) - [Go Proverbs](http://go-proverbs.github.io/) - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) - - [Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) ] + - [Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) - HTML - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) From 2ab93facda94f97094498c5aa688c2127638fa0d Mon Sep 17 00:00:00 2001 From: Lucifer Chase Date: Wed, 27 Oct 2021 07:42:54 +0530 Subject: [PATCH 323/857] Minor Typo --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 0a89050ec7..eaecbd802d 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,3 @@ personal-9894.md .Trashes ehthumbs.db Thumbs.db - -# Sublime Files -.sublime \ No newline at end of file From bb1f306d1e3138e34be7438f7bf605d150dac04a Mon Sep 17 00:00:00 2001 From: Lucifer Chase Date: Wed, 27 Oct 2021 07:44:55 +0530 Subject: [PATCH 324/857] Minor Typo --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index eaecbd802d..0a89050ec7 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ personal-9894.md .Trashes ehthumbs.db Thumbs.db + +# Sublime Files +.sublime \ No newline at end of file From f49bc34b5aba4f72dfe4464eefe480b0b6e71f3d Mon Sep 17 00:00:00 2001 From: Richard Pascarelli Date: Tue, 26 Oct 2021 23:13:35 -0400 Subject: [PATCH 325/857] adds solution for anki whitespace to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a19fc6c669..e0b9b1d158 100644 --- a/README.md +++ b/README.md @@ -456,6 +456,8 @@ It costs $25 on iOS but is free on other platforms. My flashcard database in Anki format: 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. + ### 3. Do Coding Interview Questions While You're Learning THIS IS VERY IMPORTANT. From 30760c5c4e34b4d5cb0fceb311114ec707cf7621 Mon Sep 17 00:00:00 2001 From: odedindi <75929767+odedindi@users.noreply.github.com> Date: Thu, 28 Oct 2021 16:02:38 +0200 Subject: [PATCH 326/857] first attempt to edit the document improve rtl to the introduction section as well as update the content to the current english version --- translations/README-he.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/translations/README-he.md b/translations/README-he.md index 3a4fbafd86..13f4ed3e20 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1,11 +1,21 @@ - -## על מה מדובר כאן? -זוהי התוכנית הפעולה אותה הגיתי על מנת להפוך בהצלחה ממפתח אתרים, ללא תואר במדעי המחשב, למהנדס תוכנה בחברת גוגל. -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -רשימת המשימות הארוכה המצורפת להלן, הוצאה מקובץ האימון האישי אותו מפרסמת גוגל לעזור למועמדים פוטנציאליים **Google's coaching notes**. לפני שאתם מתחילים במשימה ישנם מספר דברים שעליכם לדעת. -ישנם מספר דברים בתחתית הרשימה שמעוד יועילו בהכנה לראיון עצמו לאחר שצלחתם את חומר הלימוד, -על מנת לפתור את הבעיות המוצגות בראיון ביעילות. +# Coding Interview University +

+

על מה מדובר כאן?

+

+בהתחלה, זאת היתה רשימה קצרה של נושאי לימוד כדי להיות מהנדס תוכנה, אבל עם הזמן הפרוייקט צמח להיות מה שאפשר לראות כיום. +לאחר סיום תוכנית הלימודים הזאת, +התקבלתי לעבוד כמפתח תוכנה באמזון! +את\אתה כנראה לא תצטרכו ללמוד באותה כמות שאני למדתי. בכל אופן כל מה שאתם זקוקים לו נמצא פה.

+

+למדתי בין 8-12 שעות ביום, למשך מספר חודשים. זהו הסיפור שלי: + למה למדתי במשרה מלאה למשך שמונה חודשים בשביל ראיון עבודה בגוגל. +

+

אנא שימו לב: את\ה לא צריכים ללמוד באותה הכמות שאני למדתי. בזבזתי זמן רב על דברים שלא הייתי צריך לדעת. מידע נוסף על כך בהמשך. אני .אעזור לך לסיים מבלי לבזבז את זמנכם היקר +

+

הפריטים ברשימה המובאת כאן יכינו אותך לראיון טכני פחות או יותר בכל חברת טכנולוגיה, כולל הענקיות: אמזון, פייסבוק, גוגל ומייקרוסופט.

+
+

שיהיה המון בהצלחה!

+

From 77ddfcf2d7e5bd439be2677c515283741c776bbd Mon Sep 17 00:00:00 2001 From: lemontree1729 <88894223+lemontree1729@users.noreply.github.com> Date: Wed, 3 Nov 2021 01:44:08 +0900 Subject: [PATCH 327/857] Refines exist translation --- translations/README-ko.md | 2494 +++++++++++++++++++------------------ 1 file changed, 1266 insertions(+), 1228 deletions(-) diff --git a/translations/README-ko.md b/translations/README-ko.md index c188f10909..7ffb3c7078 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1,20 +1,21 @@ -# 코딩 인터뷰 대학(Coding Interview University) +# 코딩 면접 대학(Coding Interview University) -> 나는 원래 이것을 소프트웨어 엔지니어가 되기 위한 짧은 연구 목록으로 만들었다. -> 그러나 지금 당신이 볼 수 있듯이 이 목록은 매우 커졌다. 이 목록을 숙지한 후, -> [나는 아마존에 소프트웨어 엔지니어로 채용됐다](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> 당신은 아마 내가 한 것처럼 많이 공부할 필요는 없을 것이다. 어쨌든 당신이 필요로 하는 모든 것은 여기에 있다. +> 이 글은 원래 제가 소프트웨어 엔지니어가 되기 위해 정리한 짧은 주제들이었습니다. +> 그러나 지금은 보다시피 주제들이 굉장히 많아졌습니다. 아래 내용을 모두 습득한 후, +> [저는 아마존에 소프트웨어 엔지니어로 채용되었습니다](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> 여러분은 아마 아래 글들을 모두 다 공부할 없을 겁니다. 아무튼 여러분에게 필요한 모든 것은 여기에 있습니다. > -> 몇 달 동안 하루에 8-12 시간 정도 공부했습니다. 이것이 제 이야기입니다. [Google 인터뷰를 위해 8 개월 동안 풀 타임으로 공부 한 이유](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> 몇 달 동안 저는 하루에 8-12시간 정도 공부했습니다. 다음 글에는 제 이야기를 적어놓았습니다. [Google 면접을 위해 8개월 동안 풀 타임으로 공부한 이유](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> 여기에 나열된 목록들은 아마존, 페이스북, 구글, 마이크로소프트 같은 거대 기업을 포함한 거의 모든 소프트웨어 회사의 인터뷰를 준비하는 데에 도움이 될 것이다. +> **반드시 읽어주세요:** 다시 한번 말하지만, 여러분은 여기에 있는 글들을 모두 알 필요는 없습니다. 저는 제가 알지 않아도 될 것에 많은 시간을 뺏겼습니다. 여러분의 귀중한 시간을 잃지 않게 해당 파트에 더 자세하게 적어놓겠습니다. > +>여기에 정리된 글들은 아마존, 페이스북, 구글, 마이크로소프트 같은 거대 기업을 포함한 거의 모든 소프트웨어 회사의 면접을 준비하는 데에 도움이 될 것입니다. > -> *행운을 빈다!* - +> +> *행운을 빕니다!*
-번역: +완료된 번역: - [중국어](translations/README-cn.md) - [베트남어](translations/README-vi.md) @@ -22,6 +23,13 @@ - [브라질 포르투갈어](translations/README-ptbr.md) - [폴란드어](translations/README-pl.md) - [타이완어](translations/README-tw.md) +- [일본어](translations/README-ja.md) +- [러시아어](translations/README-ru.md) +- [독일어](translations/README-de.md) +- [인도네시아어](translations/README-id.md) +- [크메르어](translations/README-kh.md) +- [우즈베크어](translations/README-uz.md) +
@@ -29,7 +37,6 @@ - [힌디어](https://github.com/jwasham/coding-interview-university/issues/81) - [히브리어](https://github.com/jwasham/coding-interview-university/issues/82) -- [바하사 인도네시아어](https://github.com/jwasham/coding-interview-university/issues/101) - [아랍어](https://github.com/jwasham/coding-interview-university/issues/98) - [터키어](https://github.com/jwasham/coding-interview-university/issues/90) - [프랑스어](https://github.com/jwasham/coding-interview-university/issues/89) @@ -42,12 +49,11 @@ - [그리스어](https://github.com/jwasham/coding-interview-university/issues/166) - [이탈리아어](https://github.com/jwasham/coding-interview-university/issues/170) - [말라얄람어](https://github.com/jwasham/coding-interview-university/issues/239) -- [일본어](https://github.com/jwasham/coding-interview-university/issues/257)
-## 코딩 인터뷰 대학이란? - -코딩 인터뷰 대학은 (컴퓨터공학 학위 없이 독학한) 웹 개발자에서 큰 회사의 소프트웨어 엔지니어가 되기 위한 나의 몇 달간의 공부 계획이다. +## 이건 대체 뭐하는 건가요? ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -이 글은 **신입 소프트웨어 엔지니어** 혹은 소프트웨어/웹 개발에서 (컴퓨터과학 지식이 필요한) 소프트웨어 엔지니어링으로 전환하고자 하는 사람들을 위한 글입니다. 만약 당신이 여러 해의 소프트웨어 엔지니어링 경력이 있다면, 더 어려운 인터뷰가 예상된다. +이 글은 저의 대기업의 소프트웨어 엔지니어가 되기 위한 여러 달에 걸친 공부계획을 적어놓은 것입니다. -만약 당신이 여러 해의 소프트웨어/웹 개발 경험을 가지고 있다면, 구글과 아마존, 페이스북 그리고 마이크로소프트와 같은 큰 규모의 소프트웨어 회사들은 소프트웨어 엔지니어링을 소프트웨어/웹 개발과 다르게 바라보고 있으며 컴퓨터과학 지식을 요구한다는 사실에 주목하도록 하자. +**필요한 것:** +* 조금이라도 코딩을 해본 경험 (변수, 반복문, 메서드/함수 등등) +* 인내심 +* 시간 -믿음직한 엔지니어 혹은 시스템 엔지니어가 되고 싶다면, 선택적인 주제 목록(네트워크, 보안 등)을 더 공부하도록 하자. +주의) 이 글은 **소프트웨어 엔지니어**가 되기 위한 계획이지 웹 개발을 배우기 위한 것이 아닙니다.구글, 아마존, 페이스북 그리고 마이크로소프트 같은 대기업은 소프트웨어 엔지니어링이랑 웹 개발을 서로 다른 것으로 봅니다. 예를 들어, 아마존에는 프론트엔드 엔지니어와 소프트웨어 개발 엔지니어가 있습니다. 이 두 역할은 서로 나뉘어져있으므로 면접 역시 같게 보진 않을 것이고, 갖추어야할 역량 역시 다릅니다. 위의 회사들은 소프트웨어 개발자/엔지니어 역할에 좀 더 전문적인 컴퓨터 과학 지식을 요구합니다. --- ## 목차 -- [코딩 인터뷰 대학이란?](#코딩-인터뷰-대학이란) -- [이걸 왜 써야하죠?](#이걸-왜-써야하죠) -- [어떻게 쓰면 되나요?](#어떻게-쓰면-되나요) -- [당신은 충분히 똑똑합니다](#당신은-충분히-똑똑합니다) +### 공부 계획 + +- [이건 대체 뭐하는 건가요?](#이건-대체-뭐하는-건가요) +- [이걸 왜 해야하죠?](#이걸-왜-해야하죠) +- [어떻게 하면 되나요?](#어떻게-하면-되나요) +- [머리가 나쁘다고 자책하지 마세요](#-머리가-나쁘다고-자책하지-마세요) - [영상 자료에 관하여](#영상-자료에-관하여) -- [인터뷰 과정 & 전반적인 인터뷰 준비 과정](#인터뷰-과정--전반적인-인터뷰-준비-과정) -- [인터뷰를 위한 언어 고르기](#인터뷰를-위한-언어-고르기) -- [도서 목록](#도서-목록) -- [시작하기 전에](#시작하기-전에) +- [프로그래밍 언어 선택하기](#프로그래밍-언어-선택하기) +- [자료구조와 알고리즘에 대한 도서](#자료구조와-알고리즘에-대한-도서) +- [면접 준비 관련 도서](#면접-준비-관련-도서) +- [저와 같은 실수는 하지마세요](#저와-같은-실수는-하지마세요) - [다루지 않을 것](#다루지-않을-것) -- [먼저 알아야 할 지식](#먼저-알아야-할-지식) -- [하루하루의 계획](#하루-하루의-계획) +- [하루하루의 계획](#하루하루의-계획) +- [코딩 질문 연습하기](#코딩-질문-연습하기) +- [코딩 문제들](#코딩-문제들) + +### 공부 주제 + - [알고리즘 복잡도 / Big-O / 점근적 분석](#알고리즘-복잡도--big-o--점근적-분석) - [자료구조](#자료구조) - - [배열](#배열) - - [링크드 리스트](#링크드-리스트) - - [스택](#스택) - - [큐](#큐) - - [해시 테이블](#해시-테이블) + - [배열](#배열) + - [링크드 리스트](#링크드-리스트) + - [스택](#스택) + - [큐](#큐) + - [해시 테이블](#해시-테이블) - [추가 지식](#추가-지식) - - [이진 탐색/이진 검색](#binary-search) - - [비트 연산](#bitwise-operations) + - [이진 탐색/이진 검색](#binary-search) + - [비트 연산](#bitwise-operations) - [트리](#트리) - - [트리 - 배경지식](#trees---notes--background) - - [이진 탐색 트리(BST)](#binary-search-trees-bsts) - - [힙 / 우선순위 큐 / 이진 힙](#heap--priority-queue--binary-heap) - - 균형 탐색 트리 (간단한 개념) - - 트리 순회: 전위 순회, 중위 순회, 후위 순회, 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) + - [트리 - 배경지식](#trees---notes--background) + - [이진 탐색 트리(BST)](#binary-search-trees-bsts) + - [힙 / 우선순위 큐 / 이진 힙](#heap--priority-queue--binary-heap) + - 균형 탐색 트리 (간단한 개념) + - 트리 순회: 전위 순회, 중위 순회, 후위 순회, 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) - [정렬](#정렬) - - 선택 정렬 - - 삽입 정렬 - - 힙 정렬 - - 퀵 정렬 - - 병합 정렬 + - 선택 정렬 + - 삽입 정렬 + - 힙 정렬 + - 퀵 정렬 + - 병합 정렬 - [그래프](#그래프) - - 방향 그래프 - - 무방향 그래프 - - 인접 행렬 - - 인접 리스트 - - 그래프 순회: 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) + - 방향 그래프 + - 무방향 그래프 + - 인접 행렬 + - 인접 리스트 + - 그래프 순회: 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) - [더 많은 지식](#even-more-knowledge) - - [재귀](#recursion) - - [동적 프로그래밍](#dynamic-programming) - - [객체 지향 프로그래밍](#object-oriented-programming) - - [디자인 패턴](#design-patterns) - - [조합 & 확률](#combinatorics-n-choose-k--probability) - - [NP와 NP-완전, 그리고 근사 알고리즘](#np-np-complete-and-approximation-algorithms) - - [캐시](#caches) - - [프로세스와 쓰레드](#processes-and-threads) - - [테스트](#테스트) - - [스케줄링](#scheduling) - - [시스템 루틴의 구현](#implement-system-routines) - - [문자열 검색 & 조작](#string-searching--manipulations) - - [트라이](#tries) - - [부동 소수점](#floating-point-numbers) - - [유니코드](#unicode) - - [엔디언(Endianness)](#endianness) - - [네트워크](#networking) -- [시스템 디자인, 확장성, 데이터 핸들링](#시스템-디자인-확장성-데이터-핸들링) (4년 이상 경력자를 위한 주제) + - [재귀](#recursion) + - [동적 프로그래밍](#dynamic-programming) + - [객체 지향 프로그래밍](#object-oriented-programming) + - [디자인 패턴](#design-patterns) + - [조합 & 확률](#combinatorics-n-choose-k--probability) + - [NP와 NP-완전, 그리고 근사 알고리즘](#np-np-complete-and-approximation-algorithms) + - [캐시](#caches) + - [프로세스와 쓰레드](#processes-and-threads) + - [테스트](#테스트) + - [스케줄링](#scheduling) + - [시스템 루틴의 구현](#implement-system-routines) + - [문자열 검색 & 조작](#string-searching--manipulations) + - [트라이](#tries) + - [부동 소수점](#floating-point-numbers) + - [유니코드](#unicode) + - [엔디언(Endianness)](#endianness) + - [네트워크](#networking) - [최종 검토](#최종-검토) -- [코딩 문제 연습](#코딩-문제-연습) -- [코딩 연습/도전](#코딩-연습도전) -- [인터뷰가 얼마 남지 않았을 때](#인터뷰가-얼마-남지-않았을-때) + +### 직업 구하기 + +- [면접이 얼마 남지 않았을 때](#면접이-얼마-남지-않았을-때) - [이력서](#이력서) - [인터뷰가 다가오면 생각해보기](#인터뷰가-다가오면-생각해보기) - [면접관에게 받았던 질문들](#면접관에게-받았던-질문들) - [취직했다면](#취직했다면) ----------------- 여기부터는 선택사항입니다. ---------------- +**---------------- 이 아래로는 전부 선택사항입니다 ----------------** - [추가 도서](#additional-books) - [추가 주제](#additional-learning) - - [컴파일러](#compilers) - - [Emacs 와 vi(m)](#emacs-and-vim) - - [유닉스 명령어 도구](#unix-command-line-tools) - - [정보 이론](#information-theory-videos) - - [패리티 & 해밍코드](#parity--hamming-code) - - [엔트로피](#entropy) - - [암호기법](#cryptography) - - [압축](#compression) - - [컴퓨터 보안](#computer-security) - - [가비지 콜렉션](#garbage-collection) - - [병렬 프로그래밍](#parallel-programming) - - [메세징, 직렬화, 그리고 큐잉 시스템](#messaging-serialization-and-queueing-systems) - - [A* 알고리즘](#a) - - [고속 푸리에 변환(FFT)](#fast-fourier-transform) - - [블룸 필터](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas 트리](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [균형 탐색 트리](#balanced-search-trees) - - AVL 트리 - - Splay 트리 - - 레드블랙 트리(RBT) - - 2-3 탐색 트리 - - 2-3-4 트리(aka 2-4 트리) - - N-ary (K-ary, M-ary) 트리 - - B-트리 - - [k-D 트리](#k-d-trees) - - [스킵 리스트](#skip-lists) - - [네트워크 플로우(유량)](#network-flows) - - [분리집합 & 유니온 파인드(Disjoint Sets & Union Find)](#disjoint-sets--union-find) - - [빠른 프로세싱을 위한 수학](#math-for-fast-processing) - - [트립](#treap) - - [선형 계획법](#linear-programming) - - [기하학, 볼록 껍질](#geometry-convex-hull) - - [이산수학](#discrete-math) - - [기계학습](#machine-learning) + - [컴파일러](#compilers) + - [Emacs 와 vi(m)](#emacs-and-vim) + - [유닉스 명령어 도구](#unix-command-line-tools) + - [정보 이론](#information-theory-videos) + - [패리티 & 해밍코드](#parity--hamming-code) + - [엔트로피](#entropy) + - [암호기법](#cryptography) + - [압축](#compression) + - [컴퓨터 보안](#computer-security) + - [가비지 콜렉션](#garbage-collection) + - [병렬 프로그래밍](#parallel-programming) + - [메세징, 직렬화, 그리고 큐잉 시스템](#messaging-serialization-and-queueing-systems) + - [A* 알고리즘](#a) + - [고속 푸리에 변환(FFT)](#fast-fourier-transform) + - [블룸 필터](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas 트리](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [균형 탐색 트리](#balanced-search-trees) + - AVL 트리 + - Splay 트리 + - 레드블랙 트리(RBT) + - 2-3 탐색 트리 + - 2-3-4 트리(aka 2-4 트리) + - N-ary (K-ary, M-ary) 트리 + - B-트리 + - [k-D 트리](#k-d-trees) + - [스킵 리스트](#skip-lists) + - [네트워크 플로우(유량)](#network-flows) + - [분리집합 & 유니온 파인드(Disjoint Sets & Union Find)](#disjoint-sets--union-find) + - [빠른 프로세싱을 위한 수학](#math-for-fast-processing) + - [트립](#treap) + - [선형 계획법](#linear-programming) + - [기하학, 볼록 껍질](#geometry-convex-hull) + - [이산수학](#discrete-math) + - [기계학습](#machine-learning) - [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항) - [영상 자료](#video-series) - [컴퓨터 과학 강의들](#컴퓨터-과학-강의들) @@ -215,240 +228,239 @@ --- -## 이걸 왜 써야하죠? +## 이걸 왜 해야하죠? -내가 이 프로젝트를 시작했을 때, 나는 힙이나 스택, 시간 복잡도, 트리, 그래프 순회 등에 대하여 전혀 아는 바가 없었다. -만약 내가 정렬 알고리즘을 코딩해야 했다면, 나는 그리 잘하지 못했을 것이다. -모든 사용했던 모든 자료 구조는 언어 안에서 구현되어 있던 것들이고, 나는 그것들이 보이지 않는 곳에서 어떻게 작동하고 있는지 몰랐다. -나는 실행 중인 프로세스가 메모리 초과 에러를 메시지를 보내지 않는 한 메모리를 관리할 필요가 없었고, 나는 해결책을 찾아야만 했다. -나는 몇몇 다차원 배열이나 연관 배열을 사용해왔지만, 자료구조를 처음부터 구현해 본 적은 없었다. +대기업에서 소프트웨어 엔지니어로 일하기 위해서는 알아야 할 것들이 많습니다. -하지만 이 공부 계획을 진행하면서 나는 내가 고용될 것이라는 자신감을 갖게 되었다. 이것은 내게 여러 달이 필요한 긴 계획이다. -만약 당신이 이 중 많은 내용에 익숙하다면 시간은 훨씬 덜 들 것이다. +만약 여러분이 저처럼 컴퓨터 관련 전공이 아니라면 이 과정은 전공자들을 따라잡으면서도 4년이라는 시간을 절약하게 해줍니다. -## 어떻게 사용하면 되나요? +제가 이 프로젝트를 시작했을 때, 저는 힙이나 스택, 시간 복잡도, 트리, 그래프 순회 등에 대하여 전혀 아는 바가 없었습니다. 만약 그 때의 제가 정렬 알고리즘을 직접 코딩해야 할 일이 있었다면, 아마 제 코드는 끔찍한 상태였을 겁니다. +제가 사용했던 모든 자료 구조는 이미 언어 안에서 구현되어 있던 것들이고, 저는 그것들이 보이지 않는 곳에서 어떻게 작동하고 있는지 몰랐습니다. 실행 중인 프로세스가 메모리 초과 에러를 메시지를 보내지 않는 이상 메모리를 관리할 필요조차 없었고, 에러가 발생하면 그제야 해결책을 찾곤 했습니다. 또한 저는 몇몇 다차원 배열이나 연관 배열을 사용한 적은 있지만, 자료구조를 완전 밑바닥부터 구현해 본 적은 없었습니다. +매우 긴 과정이고 몇 달이나 걸릴지 모릅니다. 그렇치만 여러분이 이런 분야에 익숙하다면 분명 훨씬 더 적은 시간이 걸릴 겁니다. +## 어떻게 하면 되나요? -아래의 모든 것은 대략적인 개요이며 당신은 위에서 아래 순서대로 진행해야 한다. +아래에 있는 모든 것들은 대략적인 개요이며 여러분은 위에서 아래 순서대로 차근차근 진행해야 합니다. -이 문서는 진행 상황을 확인하기 위한 목록 작성부터 다른 곳에도, Github식 마크다운 문법을 사용하고 있다. +이 글은 진행 상황 파악을 위해 목차를 만드는 등 Github 특유의 마크다운을 이용한 방식을 사용하고 있습니다. -**새 브랜치를 만들어서 중괄호에 x표를 넣는 식으로 항목을 체크하라: [x]** +**새 브랜치를 만들어서 중괄호에 x를 추가하는 식으로 항목을 체크하세요: [x]** - 브랜치를 라하고 아래의 명령을 따라라 + 브랜치를 포크(fork)하고 아래의 커맨드들을 입력하세요 -포크 버튼을 눌러 Github https://github.com/jwasham/coding-interview-university 레포지토리를 포크 하라. +포크 버튼을 눌러 Github 레포지토리를 포크하세요. - 로컬 레포지토리에 클론 하라. +로컬 레포지토리에 클론(clone)하기: -`git clone git@github.com:/coding-interview-university.git` + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all -`git checkout -b progress` +끝났으면 박스를 x로 체크하기: -`git remote add jwasham https://github.com/jwasham/coding-interview-university` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force -`git fetch --all` +[Github식 마크다운에 대하여](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - 끝났으면 박스에 x로 체크하라 +## 머리가 나쁘다고 자책하지 마세요 -`git add . ` +- 성공한 소프트웨어 엔지니어들은 똑똑합니다. 하지만 그들조차도 자신들의 지적 능력에 대해서 불안감을 갖기 일쑤입니다. +- [천재 프로그래머에 대한 미신(迷信)](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [위험한 홀로서기: 테크 산업의 보이지 않는 괴물들의 전쟁](https://www.youtube.com/watch?v=1i8ylq4j_EY) -`git commit -m "Marked x" ` +## 영상 자료에 관하여 -`git rebase jwasham/main ` +몇몇 영상들은 Cousera, Edx에 등록을 해야만 접근할 수 있습니다. 이들을 MOOCs라고 부르기도 합니다. +가끔씩 강의가 진행중이지 않아서 몇 달 동안 기다려야 할 수도 있습니다. -`git push --set-upstream origin progress` +YouTube 온라인 강의 동영상과 같이 무료이고 항상 접근 가능한 동영상 소스들을 추가해주신다면 많은 분이 온라인 강의가 다시 시작할 때까지 기다리지 않고 언제나 공부할 수 있게 될 테니 정말 감사하겠습니다. -`git push --force` +## 프로그래밍 언어 선택하기 -[Github식 마크다운에 대하여](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +여러분은 코딩 면접용 프로그래밍 언어도 선택해야하지만, 컴퓨터 과학을 배우기 위한 프로그래밍 언어 역시 선택해야합니다. -## 당신은 충분히 똑똑합니다 -- 성공한 소프트웨어 엔지니어들은 똑똑합니다. 하지만 그들 조차도 자신들의 지적 능력면에 대해서 불안감을 갖기 일쑤입니다. -- [천재 프로그래머에 대한 미신(迷信)](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [위험한 홀로서기: 테크 산업의 보이지 않는 괴물들의 전쟁](https://www.youtube.com/watch?v=1i8ylq4j_EY) +왠만하면 둘 다에 해당하는 언어를 골라서 일단 하나에 숙달되도록 하는 것을 추천합니다. -## 영상 자료에 관하여 +### 이 공부 계획을 위해서 -몇몇 영상들은 Cousera, Edx에 등록을 해야만 접근할 수 있습니다. 이것들은 MOOCs라고 불리는데요. -강의가 없는 경우에는 몇 달 동안 기다려야 할 수도 있습니다. - - 여러분이 YouTube 온라인 강의 동영상과 같이 무료이고 항상 접근 가능한 동영상 소스들을 추가해주면 정말 감사하겠습니다. - 저는 대학 강의 듣는 것을 좋아합니다. - -## 인터뷰 과정 & 전반적인 인터뷰 준비 과정 - -- [ ] [ABC: 항상 코딩 하라](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [화이트 보드 쓰기](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] Big 4에 취업하는 방법: - - [ ] ['Big 4에 취업하는 방법 - Amazon, Facebook, Google & Microsoft' (영상)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] 코딩 인터뷰 정복 Set 1: - - [ ] [Gayle L McDowell - 코딩 인터뷰 정복 (영상)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [저자와 함께하는 코딩 인터뷰 정복 (영상)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] 페이스북 코딩 인터뷰 정복 - - [ ] [접근법](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [문제 풀이](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] 준비 코스: - - [ ] [소프트웨어 엔지니어 인터뷰 대공개 (유료 강좌)](https://www.udemy.com/software-engineer-interview-unleashed): - - 전직 구글 면접관이 당신이 어떻게 소프트웨어 엔지니어 인터뷰를 준비해야 하는지 알려줍니다. - - [ ] [자료 구조, 알고리즘 그리고 면접을 위한 파이썬! (유료 강좌)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - 자료 구조와 알고리즘, 모의 면접 등을 다루는 파이썬 중점 면접의 준비 강좌입니다. - - [ ] [Intro to Data Structures and Algorithms using Python (Udacity 무료 강좌))](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - 파이썬 중심적 자료구조와 알고리즘 강좌. - - [ ] [자료구조와 알고리즘 나노학위! (Udacity 유료 나노학위)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - 100개 이상의 자료구조, 알고리즘 실습과 당신의 인터뷰, 취업을 도울 섬세한 멘토의 가이드 - -## 인터뷰를 위한 언어 고르기 - -인터뷰때에 당신이 쓰기에 편한 언어를 선택해도 되지만, 큰 기업들은 보통 아래의 언어들을 선택합니다. +제가 공부할 때에는 C와 Python이란 2가지의 언어를 주로 썼습니다. + +* C: 굉장히 저급 언어입니다. 포인터와 메모리 할당 및 해제를 직접 다루어서 데이터 구조와 알고리즘을 뼈 속 깊이 새겨둘 수 있게 됩니다. Python이나 Java와 같은 고급 언어들은 이런 걸 알아서 처리하기 때문에 가려져 있습니다. 이는 일상 업무를 할 때에는 아주 훌륭하지만 만약 저급 수준 데이터 구조가 어떻게 짜여져있는지 자체를 배우는 중이라면 c 언어를 사용해 기계와 가까워 지는 것이 더 좋습니다. + - C 언어는 어디에나 있습니다. 여러분은 공부하는 내내 이 사실을 깨닫게 될겁니다. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - 이 책은 짧은 책이지만 여러분이 C 언어를 잘 다루게 만들어주고, 만약 조금씩 연습해본다면 더 빠르게 발전할 겁니다. C 언어를 이해하면 프로그램이 어떻게 돌아가고 메모리가 어떻게 작동하는지 이해하는데 도움을 줍니다. + - 여러분은 이 책을 깊게 파고들 필요는 없습니다(심지어 다 안 읽으셔도 됩니다). 그저 여러분이 C 언어를 읽고 쓰는 데에 익숙해질 정도면 됩니다. + - [이 책의 문제에 대한 정답들](https://github.com/lekkas/c-algorithms) + +* Python: 현대적이고 굉장히 많은 것들을 할 수 있습니다. 저는 그냥 완전 유용하고 면접 때 써야할 코드를 줄여주기도 해서 배웠습니다. + +이건 물론 제 취향일 뿐이고 여러분은 원하시는 걸 하시면 됩니다. + +아마 필요없으실 수도 있지만, 새 언어를 배우기 위한 여러 사이트 주소들입니다. +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +### 면접을 위해서 + +면접에서는 여러분이 쓰기에 편한 언어를 사용해도 되지만, 대기업들은 보통 다음과 같은 정해진 언어들을 사용합니다: - C++ - Java - Python -아래 언어들을 사용할 수 있지만 주의하여야 합니다. +아래 언어들을 사용할 수도 있지만 제대로 확인하셔야합니다. 주의사항이 있을 수도 있습니다: - JavaScript - Ruby -코딩 인터뷰를 위한 언어를 선택하는 것과 관련하여 제가 쓴 글입니다: [코딩 인터뷰를 위한 언어 선택하기](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +코딩 면접를 위한 언어를 선택하는 것과 관련하여 제가 쓴 글입니다: [코딩 면접을 위한 언어 선택하기](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +이 글은 제가 기반으로 사용한 원본 글입니다: http://blog.codingforinterviews.com/best-programming-language-jobs/ -당신은 당신의 언어에 매우 익숙하고 그 언어에 대해 잘 알아야 합니다. +여러분은 여러분이 선택한 언어에 대해 매우 익숙하고 잘 알아야 합니다. 언어 선택에 도움이 될 만한 읽을 거리들 -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- 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) -제가 공부하고 있는 C, C++, Python 강의를 아래서 볼 수 있습니다. 아래를 보시면 관련된 책들이 몇 개 있습니다. - -## 도서 목록 +## 자료구조와 알고리즘에 대한 도서 -아래의 목록은 내가 공부했던 책들보다는 적다. 당신의 시간을 절약하기 위해 몇몇 책들은 생략하였다. +이 책들은 여러분의 컴퓨터 과학에 대한 기반을 다져줄 책들입니다. -### 인터뷰 준비를 위해서 +그냥 아무거나 하나 여러분이 편한 언어와 관련된 것으로 선택하세요. 엄청나게 많은 책 읽기와 코딩을 하게 될 겁니다. -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - C++ 과 JAVA 문제의 답변을 위해서 - - Cracking the Coding Interview 책을 위한 좋은 사전학습용 책이기 때문에 - - 어렵지 않고, 당신이 인터뷰에서 마주할 대부분의 문제들 보다 쉽기 때문에 -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - JAVA 문제의 답변을 위해서 +### C -### 만일 당신이 많은 여유 시간이 있다면: +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - 기본적인 것들, 데이터 구조들, 정렬, 탐색, 그리고 그래프와 관련된 알고리즘 등이 들어있습니다. -하나를 선택: - -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [ ] Elements of Programming Interviews (Java version) - - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +### Python -### 특정 언어 관련 +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - 저는 이 책이 좋습니다. Python에 대한 모든 것과 부가적인 것을 다룹니다. + - Python적인 코드 + - 저의 열렬한 서적 보고서: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -**인터뷰를 위해 당신의 언어를 선택하여야 합니다 (윗글 참조)** 아래는 제가 추천하는 언어들입니다. 이 언어들중에 부연설명이나 부가 자료들이 있다면 나눠 주세요. +### Java -이 중 하나를 읽으려면 코딩 문제 푸는 데 필요한 데이터 구조 및 알고리즘 지식이 있어야합니다. +여러분이 선택하세요: -검토(review)를 좋아하지 않는다면, **이 프로젝트의 모든 영상은 생략해도 됩니다.** +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 책의 내용을 가르쳐주는 무료 Cousera 강의 (저자가 가르쳐줍니다!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -[Additional language-specific resources here.](programming-language-resources.md) ### C++ -나는 아래의 두 책들을 읽지 않았습니다. 하지만 Sedgewick이 높게 평가한 책들입니다. 그는 정말 대단한 사람입니다. +여러분이 선택하세요: -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) - - 자세하고 많은 자료구조와 알고리즘. - - 처음 시도 하는 사람에게 좋은 선택. +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/). -C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적인 자료를 찾고 있습니다. -### Java +## 면접 준비 관련 도서 -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!) on coursera: - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) +여러분은 이 책 뭉터기들을 다 살 필요는 없습니다. 솔직하게 말해서 "Cracking the Coding Interview"라는 책 하나면 충분합니다. 하지만 저는 더 준비해보기 위해 많이 사보았습니다. 결국 항상 너무 과했지만 말이죠. -또는: +저는 이 책을 둘 다 샀습니다. 굉장히 많은 걸 준비하게 해주었습니다. -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - UC버클리 대학의 CS입문 과정의 선택 텍스트로 사용됨 - - 아래에서 Python 버전에 대한 나의 책 보고서를 참조하십시오. 이 책은 동일한 주제를 다루고 있습니다. +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++와 Java로 답변되어 있습니다. + - Cracking the Coding Interview 책을 위한 좋은 사전학습용 책입니다. + - 너무 어렵지 않습니다. 대부분의 문제가 여러분이 직접 겪게될 면접 문제보다 쉬울지도 모릅니다(제가 읽기로는) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - JAVA로 답변되어 있습니다. -### Python +### 만일 당신이 시간이 넘쳐난다면 + +하나를 선택하세요: -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - 나는 이 책을 사랑한다. 이 책은 모든 것을 다룬다. - - Pythonic code - - 나의 열렬한 서적 보고서: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -## 시작하기 전에 +## 저와 같은 실수는 하지마세요 -이 문서는 몇 달간 계속 업데이트 되고 있으며, 그런 이유로, 내가 감당할 수 없어지기 시작한 듯하다. +이 문서는 많은 달에 걸쳐서 추가되고 있고, 맞습니다, 이미 제 손을 떠났습니다. -내가 저지른 몇 가지 실수들을 소개한다. 이를 통해 당신은 이 과정을 좀 더 효과적으로 진행할 수 있기를 바란다. +여기에 제가 저지른 몇 가지 실수들을 적어놓았으니 여러분은 참고하시고 더 나은 방향으로 나아가시길 바랍니다. 물론 몇 달의 시간도 절약하실 겁니다. -### 1. 당신은 이것을 다 기억하지 못할 것이다. +### 1. 당신은 이것을 다 기억하지 못할 것이다 -나는 수 시간의 비디오를 보고 방대한 양의 노트를 작성했지만, 몇 달 뒤에는 대부분의 내용을 기억하지 못했다. 나는 3일 동안 내가 작성한 노트를 보고 flashcard를 만들면서 내용들을 다시 검토해야 했다. +저는 수 시간의 비디오를 보고 방대한 양의 노트를 작성했지만, 몇 달 뒤에는 대부분의 내용을 기억하지 못했습니다. 저는 3일에 걸쳐 제가 작성한 노트를 보고 flashcard를 제작해서 복습할 수 있게 만들었습니다. 그 많은 지식들까지는 사실 필요 없었습니다. -꼭 읽고 내가 한 실수들을 반복하지 않길 바란다. +꼭 읽고 제가 한 실수들을 반복하지 않길 바랍니다: [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) -내가 추천받은 강좌 (아직 수업을 들어보지는 않았다): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) +### 2. 요약집(Flashcard)을 만들자 -### 2. Flashcard를 사용하자. +이 문제를 해결하기 위해 2가지 종류(일반적인 내용, 코드)의 요약집을 보관하고 추가할 수 있는 조그만 사이트를 만들었습니다. +각 정리본은 다른 형식을 가지고 있습니다. 저는 모바일 우선인 웹사이트를 만들어서 제 휴대폰이나 태블릿 등 어디서나 볼 수 있게 했습니다. -이 문제를 해결하기 위해 나는 2가지 종류(일반적인 내용, 코드)의 flashcard를 보관하고 추가할 수 있는 작은 사이트를 만들었다. -각 카드는 다른 서식을 가지고 있다. +여러분만의 요약집을 무료로 만들어봅시다: -이 사이트는 모바일에 최적화 되어있기 때문에 내 전화기나 태블릿 어디에서든 이를 확인할 수 있다. +- [Flashcard 사이트 repo](https://github.com/jwasham/computer-science-flash-cards) -당신만의 카드를 무료로 만들어보자: +**제 요약집을 그대로 사용하시는 건 추천하지 않습니다.** 거기엔 너무 많은 것들이 있고 대부분은 여러분이 필요하지 않은 것들뿐입니다. -- [Flashcard 사이트 repo](https://github.com/jwasham/computer-science-flash-cards) -- [내 flashcard 데이터베이스 (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [내 flashcard 데이터베이스 (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +하지만 제 말을 듣고 싶지 않은 청개구리 같은 분들을 위해, 주소는 남겨두겠습니다: +- [내 flashcard 데이터베이스 (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [내 flashcard 데이터베이스 (확장판 - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -앞에서도 언급했듯이 나는 불필요하게 많은 것을 공부하려고 했고, 내 카드의 내용들은 어셈블리 언어와 Python의 자잘한 지식들부터 기계 학습과 통계학까지 넘나들게 되었다. 결국 기업이 요구하는 것보다 훨씬 멀리 가버리고 말았다. +앞에서도 언급했듯이 저는 불필요하게 많은 것을 공부하려고 했고, 카드의 내용들은 어셈블리 언어와 Python의 자잘한 지식들부터 기계 학습과 통계학까지 넘나들게 되었습니다. 이건 필요한 것에서 엇나가도 너무 엇나간 겁니다. -**flashcard에 대한 참고사항:** 답을 할 수 있더라도 처음부터 안다고 표시하지 말자. 정확히 알기 전까지는 같은 카드를 보고 여러 번 답변할 수 있어야한다. -반복 학습을 통해 해당 지식은 당신의 뇌에 깊이 각인될 것이다. +**flashcard에 대한 참고사항:** 한 번 답을 맞췄다고 해서 안다고 표시하지 맙시다. 정확히 알기 전까지는 같은 카드를 보고 여러 번 맞추어 보아야합니다. +반복 학습은 그 지식을 뇌에 깊이 각인시켜 줄 겁니다. -나의 flashcard site를 사용하는 대신 [Anki](http://ankisrs.net/)를 사용해도 된다. 나는 이 것을 여러 번 추천받았다. 이것은 당신이 기억하는 것을 돕기 위해 반복적인 시스템을 사용한다. +제 사이트를 사용하는 대신 [Anki](http://ankisrs.net/)를 사용해도 됩니다. 여러 번 추천받았던 사이트입니다. 이 사이트는 반복 시스템을 통해 여러분의 기억을 돕습니다. 사용자 친화적이며, 모든 플랫폼에서 사용 가능합니다. 또한 클라우드 동기화 시스템을 제공합니다. iOS에서는 2만 5천 원이지만 다른 플랫폼에서는 무료입니다. -이것은 사용자 친화적이며, 모든 플랫폼에서 사용가능하다. 또한 클라우드 동기화 시스템을 제공한다. 이것은 iOS에서는 $25이지만 다른 플랫폼에서는 무료로 사용 가능하다. +Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info/25173560 ([@xiewenya](https://github.com/xiewenya)에게 감사의 말을 전합니다). -Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +어떤 분들이 공백과 관련된 포맷팅 문제가 있다고 언급하셨는데 다음 방법으로 해결할 수 있습니다: open deck, edit card, click cards, select the "styling" radio button, add the member "white-space: pre;" to the card class. -### 3. 자료구조와 알고리즘을 배우면서 코딩 인터뷰를 시작하라 +### 3. 배우는 동안에 코딩 면접 질문들을 보기 -문제를 풀기 위해 배웠던 무언가를 적용하는 것이 필요합니다., 그렇지 않으면 까먹을 겁니다. 내가 이 실수를 했습니다. 한 주제를 익혔다면 , - 링크드 리스트와 같이 그 주제에 좀 익숙해졌다면, 코딩 인터뷰 책 한권을 펴서 링크드 리스트와 관련된 문제를 몇개 풀어보십시오. 그리고 나서 다시 돌아가 다른 링크드리스트 문제를 해결하던, 회귀 문제나 다른 것을 하십시오. 하지만 배우면서 문제를 계속해서 푸십시오. 당신은 지식 자체의 소유가 아니라 그 지식을 적용할 수 있기에 고용되는 것입니다. -다음은 제가 추천하는 책과 사이트들입니다.. -좀 더 알아보고 싶다면: [Coding Question Practice](#coding-question-practice) +굉장히 중요합니다! -### 4. 검토, 검토, 검토 +코딩 면접 질문들을 여러분이 데이터 구조와 알고리즘을 배우는 동안에 봐두세요. -나는 ASCII, OSI 구조, Big-O 표기법 등에 관한 일련의 치트시트를 만들어 놓고, 여유 시간이 날 때마다 공부한다. +한 주제를 공부하고 충분히 익숙해졌다고 느낀다면(예를 들어 그것이 **연결 리스트**라면): +1. [코딩 면접 책들](#면접-준비-관련-도서)이나 더 밑에서 다룰 코딩 문제 사이트들을 준비합니다. +1. 연결 리스트에 관한 문제를 두세 문제 풀어봅니다. +1. 다음 배울 주제로 넘어갑니다. +1. 나중에, 다시 돌아와서 또 다른 두세 문제를 연결 리스트와 관련해서 풀어봅니다. +1. 이를 새 내용을 배울 때마다 반복합니다. -30분 동안 프로그래밍 문제를 해결하고, flashcard를 살펴보자. +**반드시 여러분이 배우는 동안에 문제를 푸세요, 다 배우고 나서가 아니라.** -### 5. 집중 +여러분은 지식 자체가 필요해서 고용되는 것이 아니라 그 지식을 활용하기 위해서 고용되는 것입니다. -주의를 산만하게 만드는 많은 것이 있으며, 이것들은 우리의 귀중한 시간을 뺏어간다. 주의를 집중하는 것은 힘든 일이다. +이를 위한 엄청나게 많은 자료들이 아래에 있습니다. 계속 합시다. + +### 4. 집중하기 + +주의를 산만하게 만드는 많은 것들이 우리의 귀중한 시간을 뺏어갑니다. 주의를 집중하는 일은 물론 힘듭니다. 가사 없는 음악을 듣다보면 좀 더 쉽게 집중하실 수 있습니다. ## 다루지 않을 것 @@ -458,51 +470,76 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - Javascript - HTML, CSS, 그리고 다른 프론트엔드 기술들 -## 하루 하루의 계획 +## 하루하루의 계획 + +이 과정에는 엄청나게 많은 주제가 있습니다. 어떤 주제들은 며칠이 걸리거나 심지어 아마 일주일이나 그 이상이 걸릴지도 모릅니다. 여러분의 일정에 달려있습니다. + +매일매일, 다음 주제로 넘어가면서, 주제에 관한 동영상들을 보고, 그리고 실제로 선택한 언어의 데이터 구조나 알고리즘을 구현하세요. + +여기서 제 코드들을 볼 수 있습니다: +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) + +모든 알고리즘을 외울 필요는 없습니다. 그저 그걸 이해하고 나만의 방식으로 구현할 수 있으면 됩니다. + +## 코딩 질문 연습하기 + + 왜 이게 여기 있죠? 전 아직 면접볼 준비가 안되어 있는데요. + +[그렇다면 이걸 다시 읽어보세요](#3-배우는-동안에-코딩-면접-질문들을-보기) -어떤 주제들은 하루가 걸리고, 어떤 것들은 며칠이 걸릴 것이다. -또 어떤것은 구현할 것들이 없이 그냥 배우는 것들이다. +왜 프로그래밍 문제들을 풀면서 연습히야하는가: +- 문제 인식, 그리고 어디에 어떤 데이터 구조와 알고리즘을 썼어야했는지 알 수 있음 +- 문제의 요구사항이 뭐였는지 이해할 수 있음 +- 실제 면접처럼 자신만의 방식으로 문제를 설명할 수 있음 +- 컴퓨터가 아니라 화이트보드나 종이에 코딩함 +- 시간과 공간 복잡도를 함께 생각하게 됨(아래의 Big-O를 볼 것) +- 코드가 맞나 확인하게 됨 -아래 리스트에 있는 것에서 매일 하나의 주제를 택했고, 그 주제에 대한 강의를 보고, 구현을 했다: -- C - 인자를 가지는 구조체와 함수 사용 -- C++ - 빌트인 타입 사용하지 않음 -- C++ - 링크리스트를 위한 STL's std::list 같은 빌트인 타입 사용 -- Python - 빌트인 타입 사용 (파이선 연습을 계속 하려고) -- 제대로 하고 있는지 테스트를 했고 가끔은 간단한 assert() 사용 -- 당신은 아마 자바나 그 어떤 언어를 이용하겠지만 이것은 그냥 내 것들이다. +면접에서 방법론적인, 양방향 소통인 문제 해결에 대한 훌륭한 소개글이 있습니다. 물론 프로그래밍 면접 책들에서도 배울 수 있겠지만 이 글이 더 미친 수준이라 봅니다: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -당신은 이것을 다 할 필요는 없다. 단지 [인터뷰를 위한 하나의 언어를 할 것.](#인터뷰를 위한 언어를 하나 골라 두어라). +컴퓨터가 아니라 화이트보드나 종이에 직접 코드를 적어보세요. 그리고 여기에 값들을 넣어보면서 테스트해보세요. 그리고는 컴퓨터에 코드를 치고 테스트해보세요. -왜 이 모든것을 코딩해야 하는가? -- 나는 이것에 미칠때까지 연습하고 또 연습했고, 아무런 문제 없이 할 수 있게 되었다 (어떤 것들은 다양한 케이스가 있고 이것을 기억하기 위해 기록을 보관했다.) -- 있는 그대로의 제한 속에서 연습 (garbage collection의 도움없이 메모리 할당과 해지 (파이선 빼고)) -- 빌트인 타입을 사용하여 나는 빌트인 도구에 대한 경험이 있게 되었다. (내 프로젝트의 링크 리스트 구현은 쓰지 않을 예정) +만약 화이트보드가 집에 없다면, 문방구에 가서 그림용 공책을 사서 거기서 연습해보세요. +이건 제 "소파 화이트보드"입니다. 크기 비교를 위해 사진에 펜을 추가해봤습니다. 펜을 쓰신다면 몇 분 후 지워지지 않는 펜을 원망하는 자신을 보게 될 겁니다. +엄청 빨리 더러워집니다. **저는 그래서 연필과 지우개를 썼습니다.** -모든 주제에 대한 모든 것을 할 수 없지만 나는 노력했다. +![제 소파 화이트보드](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -나의 코드를 여기서 확인하세요: - - [C](https://github.com/jwasham/practice-c) - - [C++](https://github.com/jwasham/practice-cpp) - - [Python](https://github.com/jwasham/practice-python) +**코딩 문제 연습은 프로그래밍 문제에 대한 답을 외우는 연습이 아니다.** -당신은 모든 알고리즘에 대해서 기억할 필요는 없다. +## 코딩 문제들 +[여기 있는](#면접-준비-관련-도서) 코딩 면접 책들을 잊지마세요. -컴퓨터에 코딩하지 말고 와이트보드나 종이에 적어보아라. 인풋 값으로 샘플 테스트를 해 보아라. 그리고 컴퓨터로 테스트해 보아라. +문제 푸는 법들: +- [해답을 찾는 법](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) +- [탑코더 문제 상태 파헤치기](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) -## 먼저 알아야 할 지식 +코딩 면접 질문 관련 동영상들: +- [IDeserve (동영상 88개)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (플레이리스트 5개)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Super for walkthroughs of problem solutions +- [Nick White - 릿코드 해답 (동영상 187개)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Good explanations of solution and the code + - You can watch several in a short time +- [FisherCoder - 릿코드 해답](https://youtube.com/FisherCoder) -- [ ] **C언어 배우기** - - C 는 어디에나 있다. 당신은 책이나 강의, 비디오 등 공부하는 동안 모든 곳에서 예제를 볼 것이다. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - 이 책은 분량이 적은 책이지만 C언어를 잘 다룰 수 있게 해 줄 것이다. 또한 조금만 연습하더라도 연습량에 비해 빠르게 배울 수 있을 것이다. C언어를 이해하는 것은 프로그램과 메모리가 어떻게 돌아가는지 이해하는 것을 도와준다. - - [질의 응답](https://github.com/lekkas/c-algorithms) +도전 사이트들: +- [릿코드](https://leetcode.com/) + - 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. +- [해커랭크](https://www.hackerrank.com/) +- [탑코더](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) + +## 이제 시작해봅시다 + +네, 잡설은 그만하고, 배워봅시다! -- [ ] **컴퓨터가 프로그램을 어떻게 처리하는 지:** - - [ ] [CPU는 프로그램을 어떻게 실행하는 지 (영상)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [컴퓨터의 계산 방법 - ALU (영상)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [레지스터와 RAM (영상)](https://youtu.be/fpnE6UAfbtU) - - [ ] [중앙처리장치(CPU) (영상)](https://youtu.be/FZGugFqdr60) - - [ ] [명렁어와 프로그램 (영상)](https://youtu.be/zltgXvg6r3k) +하지만 위의 코딩 문제를 배우는 중에 같이 풀어보는 거 절대 잊지마세요! ## 알고리즘 복잡도 / Big-O / 점근적 분석 @@ -513,8 +550,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] [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) - [ ] Skiena: - - [동영상](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [슬라이드 자료](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) + - [동영상](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [슬라이드 자료](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) @@ -523,289 +560,289 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) ## 자료구조 - ### 배열 - - 자동 리사이징 벡터 구현하기 - - [ ] 설명: - - [배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - 선형과 다차원 배열 (영상)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [배열 기본 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [다차원 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [동적 배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [가변 배열 (영상)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [가변 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [배열 리사이징 (영상)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - - [ ] 벡터 구현하기 (자동 리사이징을 포함한 동적 배열): - - [ ] 배열, 포인터 및 인덱싱 대신하여 특정 인덱스에 접근하는 포인터 연산을 통한 코딩 연습 - - [ ] 메모리 할당을 포함한 새 배열 - - 배열 메소드 등의 기능을 활용하지 않으면서 정수 배열에 메모리를 할당할 수 있어야 함 - - 16으로 시작하거나 시작하는 숫자가 크다면 2의 제곱수(16, 32, 64, 128)로 시작 - - [ ] size() - 항목의 개수 - - [ ] capacity() - 들어갈 수 있는 항목의 최대 개수 - - [ ] is_empty() - - [ ] at(index) - 인덱스에 있는 항목을 돌려주고, 인덱스가 범위 밖이면 에러를 냄 - - [ ] push(item) - - [ ] insert(index, item) - index에 item을 삽입하고 기존 인덱스의 값부터 쭉 오른쪽으로 쉬프트 - - [ ] prepend(item) - 맨 앞에 원소를 삽입 - - [ ] pop() - 마지막 원소를 삭제하고 값을 돌려준다 - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private 함수 - - 용량이 꽉 차면, 그 두배로 크기를 조정한다. - - item을 하나 꺼낼 때, 용량이 1/4이라면, 용량을 절반으로 줄인다. - - [ ] 시간 복잡도 - - 접근, 수정, 끝에 추가/삭제하는 데 O(1) - - 다른 곳에 추가/삭제하는 데 O(n) - - [ ] 공간 복잡도 - - 메모리에 연속적으로 있어서, 근접성이 성능을 향상시킨다. - - 필요한 공간 = (n 이상인 배열의 용량) * item의 크기, 하지만 2n 크기에서는 여전히 O(n) + - 자동 리사이징 벡터 구현하기 + - [ ] 설명: + - [배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - 선형과 다차원 배열 (영상)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [배열 기본 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [다차원 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [동적 배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [가변 배열 (영상)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [가변 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [배열 리사이징 (영상)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [ ] 벡터 구현하기 (자동 리사이징을 포함한 동적 배열): + - [ ] 배열, 포인터 및 인덱싱 대신하여 특정 인덱스에 접근하는 포인터 연산을 통한 코딩 연습 + - [ ] 메모리 할당을 포함한 새 배열 + - 배열 메소드 등의 기능을 활용하지 않으면서 정수 배열에 메모리를 할당할 수 있어야 함 + - 16으로 시작하거나 시작하는 숫자가 크다면 2의 제곱수(16, 32, 64, 128)로 시작 + - [ ] size() - 항목의 개수 + - [ ] capacity() - 들어갈 수 있는 항목의 최대 개수 + - [ ] is_empty() + - [ ] at(index) - 인덱스에 있는 항목을 돌려주고, 인덱스가 범위 밖이면 에러를 냄 + - [ ] push(item) + - [ ] insert(index, item) - index에 item을 삽입하고 기존 인덱스의 값부터 쭉 오른쪽으로 쉬프트 + - [ ] prepend(item) - 맨 앞에 원소를 삽입 + - [ ] pop() - 마지막 원소를 삭제하고 값을 돌려준다 + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private 함수 + - 용량이 꽉 차면, 그 두배로 크기를 조정한다. + - item을 하나 꺼낼 때, 용량이 1/4이라면, 용량을 절반으로 줄인다. + - [ ] 시간 복잡도 + - 접근, 수정, 끝에 추가/삭제하는 데 O(1) + - 다른 곳에 추가/삭제하는 데 O(n) + - [ ] 공간 복잡도 + - 메모리에 연속적으로 있어서, 근접성이 성능을 향상시킨다. + - 필요한 공간 = (n 이상인 배열의 용량) * item의 크기, 하지만 2n 크기에서는 여전히 O(n) - ### 링크드 리스트 - - [ ] 설명: - - [ ] [단일 연결 리스트 (영상)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - 연결 리스트 1 (영상)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [CS 61B - 연결 리스트 2 (영상)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - [ ] 설명: + - [ ] [단일 연결 리스트 (영상)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - 연결 리스트 1 (영상)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - 연결 리스트 2 (영상)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - 전체 영상은 아니고, 노드 구조와 메모리 할당에 대한 부분입니다. - - [ ] 연결 리스트 vs 배열: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [실세계에서의 연결 리스트 Vs 배열 (영상)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [왜 연결 리스트를 기피해야 하는지 (영상)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] 짚고가기: 이중 포인터에 대한 지식이 필요하다면: + - [ ] 연결 리스트 vs 배열: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [실세계에서의 연결 리스트 Vs 배열 (영상)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [왜 연결 리스트를 기피해야 하는지 (영상)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] 짚고가기: 이중 포인터에 대한 지식이 필요하다면: (for when you pass a pointer to a function that may change the address where that pointer points) 이 페이지는 포인터가 포인터를 가리키는 것을 파악하는 정도입니다. 저는 아래 목록을 순서대로 읽지 않기를 권장합니다. 가독성과 유지 보수성이 더 좋기 때문입니다. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] 구현 (저는 tail 포인터가 있는 것과 없는 것 모두 구현했었습니다.): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] 이중 연결 리스트 - - [설명 (영상)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - 구현할 필요는 없습니다. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] 구현 (저는 tail 포인터가 있는 것과 없는 것 모두 구현했었습니다.): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] 이중 연결 리스트 + - [설명 (영상)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - 구현할 필요는 없습니다. - ### 스택 - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] Will not implement. Implementing with array is trivial. - ### 큐 - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - - [ ] tail 포인터가 있는 연결 리스트를 사용하여 구현하기: - - enqueue(value) - tail이 가리키는 곳에 value를 추가한다 - - dequeue() - value를 반환하고 가장 최근에 추가된 원소(front)를 제거한다. - - empty() - - [ ] 고정 길이 배열을 사용하여 구현하기: - - enqueue(value) - 사용 가능한 저장 공간의 끝에 item을 추가한다. - - dequeue() - value를 반환하고 가장 최근에 추가된 원소를 제거한다. - - empty() - - full() - - [ ] 비용: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] tail 포인터가 있는 연결 리스트를 사용하여 구현하기: + - enqueue(value) - tail이 가리키는 곳에 value를 추가한다 + - dequeue() - value를 반환하고 가장 최근에 추가된 원소(front)를 제거한다. + - empty() + - [ ] 고정 길이 배열을 사용하여 구현하기: + - enqueue(value) - 사용 가능한 저장 공간의 끝에 item을 추가한다. + - dequeue() - value를 반환하고 가장 최근에 추가된 원소를 제거한다. + - empty() + - full() + - [ ] 비용: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) - ### 해시 테이블 - - [ ] 동영상들: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] 온라인 강의들: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] Linear probing을 사용하여 배열로 구현해보기 - - hash(k, m) - m은 해시 테이블의 크기 - - add(key, value) - 키가 이미 존재한다면, 값을 갱신한다. - - exists(key) - - get(key) - - remove(key) + - [ ] 동영상들: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] 온라인 강의들: + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] Linear probing을 사용하여 배열로 구현해보기 + - hash(k, m) - m은 해시 테이블의 크기 + - add(key, value) - 키가 이미 존재한다면, 값을 갱신한다. + - exists(key) + - get(key) + - remove(key) ## 추가 지식 - ### Binary search - - [ ] [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) - - [ ] [자세한 내용](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] 구현: - - (정수가 정렬된 배열에서) 이진 탐색 - - 재귀를 사용한 이진 탐색 + - [ ] [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) + - [ ] [자세한 내용](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] 구현: + - (정수가 정렬된 배열에서) 이진 탐색 + - 재귀를 사용한 이진 탐색 - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] 비트 연산자(&, |, ^, ~, >>, <<) 제대로 이해하기 - - [ ] [워드](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] 시작하기 좋은 곳: + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] 비트 연산자(&, |, ^, ~, >>, <<) 제대로 이해하기 + - [ ] [워드](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] 시작하기 좋은 곳: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - - [ ] 2의 보수와 1의 보수 - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1의 보수](https://ko.wikipedia.org/wiki/1의_보수) - - [2의 보수](https://ko.wikipedia.org/wiki/2의_보수) - - [ ] Count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Swap values: - - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] Absolute value: - - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] 2의 보수와 1의 보수 + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1의 보수](https://ko.wikipedia.org/wiki/1의_보수) + - [2의 보수](https://ko.wikipedia.org/wiki/2의_보수) + - [ ] Count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## 트리 - ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - 트리 기초 형태 만들기 - - 순회 - - 알고리즘 다루기 - - [ ] [BFS(너비-우선 탐색;breadth-first search) and DFS(깊이-우선 탐색;depth-first search)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS 노트: - - level order (BFS, 큐를 사용하여) - - 시간 복잡도: O(n) - - 공간 복잡도: + - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - 트리 기초 형태 만들기 + - 순회 + - 알고리즘 다루기 + - [ ] [BFS(너비-우선 탐색;breadth-first search) and DFS(깊이-우선 탐색;depth-first search)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS 노트: + - level order (BFS, 큐를 사용하여) + - 시간 복잡도: O(n) + - 공간 복잡도: 최고: O(1) 최악: O(n/2)=O(n) - - DFS 노트: - - 시간 복잡도: O(n) - - 공간 복잡도: + - DFS 노트: + - 시간 복잡도: O(n) + - 공간 복잡도: 최고: O(log n) - 평균적으로, 트리의 높이이다. 최악: O(n) - - 중위(inorder) (DFS: 왼쪽, 자신, 오른쪽) - - 후위(postorder) (DFS: 왼쪽, 오른쪽, 자신) - - 전위(preorder) (DFS: 자신, 왼쪽, 오른쪽) + - 중위(inorder) (DFS: 왼쪽, 자신, 오른쪽) + - 후위(postorder) (DFS: 왼쪽, 오른쪽, 자신) + - 전위(preorder) (DFS: 자신, 왼쪽, 오른쪽) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [이진 탐색 트리 - C/C++로 구현하기 (영상)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST 구현 - 스택과 힙에 메모리 할당 (영상)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [이진 탐색 트리에서 가장 작은 원소와 가장 큰 원소 찾기 (영상)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [이진 트리의 높이 구하기 (영상)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [이진 트리 순회 - 너비-우선과 깊이-우선 전략 (영상)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [이진 트리: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [이진 트리 순회: 전위, 중위, 후위 (영상)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [이진 트리가 이진 탐색 트리인지 아닌 지 확인하기 (영상)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [이진 탐색 트리에서 노드 삭제하기 (영상)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] 구현: - - [ ] insert // 트리에 어떤 값을 삽입 - - [ ] get_node_count // 저장된 값들의 개수 세기 - - [ ] print_values // 트리 안의 값들을 최소부터 최대까지 출력 - - [ ] delete_tree - - [ ] is_in_tree // 주어진 값이 트리 안에 있는 지를 반환 - - [ ] get_height // 어떤 노드의 높이를 반환 (노드 하나의 높이는 1이다.) - - [ ] get_min // 트리에 저장된 값 중 가장 작은 값을 반환 - - [ ] get_max // 트리에 저장된 값 중 가장 큰 값을 반환 - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // 값이 주어지면, 다음으로 가장 큰 값을, 없으면 -1을 반환 + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - starts with symbol table and goes through BST applications + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [이진 탐색 트리 - C/C++로 구현하기 (영상)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST 구현 - 스택과 힙에 메모리 할당 (영상)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [이진 탐색 트리에서 가장 작은 원소와 가장 큰 원소 찾기 (영상)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [이진 트리의 높이 구하기 (영상)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [이진 트리 순회 - 너비-우선과 깊이-우선 전략 (영상)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [이진 트리: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [이진 트리 순회: 전위, 중위, 후위 (영상)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [이진 트리가 이진 탐색 트리인지 아닌 지 확인하기 (영상)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [이진 탐색 트리에서 노드 삭제하기 (영상)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] 구현: + - [ ] insert // 트리에 어떤 값을 삽입 + - [ ] get_node_count // 저장된 값들의 개수 세기 + - [ ] print_values // 트리 안의 값들을 최소부터 최대까지 출력 + - [ ] delete_tree + - [ ] is_in_tree // 주어진 값이 트리 안에 있는 지를 반환 + - [ ] get_height // 어떤 노드의 높이를 반환 (노드 하나의 높이는 1이다.) + - [ ] get_min // 트리에 저장된 값 중 가장 작은 값을 반환 + - [ ] get_max // 트리에 저장된 값 중 가장 큰 값을 반환 + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // 값이 주어지면, 다음으로 가장 큰 값을, 없으면 -1을 반환 - ### Heap / Priority Queue / Binary Heap - - 트리처럼 보여지지만, 보통은 선형으로 저장됩니다. (배열, 링크드리스트처럼) - - [ ] [힙(Heap)](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [소개 (영상)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive한 구현들 (영상)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [이진 트리 (영상)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [기본 연산들 (영상)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [완전 이진 트리 (영상)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [의사 코드(Pseudocode) (영상)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [힙 정렬 - 시작하기 (영상)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [힙 정렬 (영상)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [힙 만들기 (영상)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: 힙과 힙 정렬 (영상)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: 우선순위 큐 (영상)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - - [ ] [선형 시간에 힙 만들기 (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] max-heap 구현하기: - - [ ] insert - - [ ] sift_up - `insert` 하려면 필요 - - [ ] get_max - 최대 원소를 반환하되, 삭제는 하지 않는다. - - [ ] get_size() - 저장된 원소들의 개수를 반환 - - [ ] is_empty() - 힙에 원소를 하나도 없는 지 반환 - - [ ] extract_max - 최대 원소를 반환하고, 그걸 삭제한다. - - [ ] sift_down - `extract_max` 하려면 필요하다 - - [ ] remove(x) - x번째 원소를 삭제 - - [ ] heapify - 배열에 있는 원소들로 힙을 만든다. `heap_sort` 하려면 필요 - - [ ] heap_sort() - 정렬되지 않은 배열을 받아서 정렬된 배열로 만든다. 추가 메모리 없이 제자리에서 max-heap을 사용한다. - - 노트: min-heap을 사용하면 연산을 줄일 수 있지만, 공간이 두 배로 필요합니다. (제자리에서 못 하기 때문에) + - 트리처럼 보여지지만, 보통은 선형으로 저장됩니다. (배열, 링크드리스트처럼) + - [ ] [힙(Heap)](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [소개 (영상)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive한 구현들 (영상)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [이진 트리 (영상)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [기본 연산들 (영상)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [완전 이진 트리 (영상)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [의사 코드(Pseudocode) (영상)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [힙 정렬 - 시작하기 (영상)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [힙 정렬 (영상)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [힙 만들기 (영상)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: 힙과 힙 정렬 (영상)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: 우선순위 큐 (영상)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [선형 시간에 힙 만들기 (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] max-heap 구현하기: + - [ ] insert + - [ ] sift_up - `insert` 하려면 필요 + - [ ] get_max - 최대 원소를 반환하되, 삭제는 하지 않는다. + - [ ] get_size() - 저장된 원소들의 개수를 반환 + - [ ] is_empty() - 힙에 원소를 하나도 없는 지 반환 + - [ ] extract_max - 최대 원소를 반환하고, 그걸 삭제한다. + - [ ] sift_down - `extract_max` 하려면 필요하다 + - [ ] remove(x) - x번째 원소를 삭제 + - [ ] heapify - 배열에 있는 원소들로 힙을 만든다. `heap_sort` 하려면 필요 + - [ ] heap_sort() - 정렬되지 않은 배열을 받아서 정렬된 배열로 만든다. 추가 메모리 없이 제자리에서 max-heap을 사용한다. + - 노트: min-heap을 사용하면 연산을 줄일 수 있지만, 공간이 두 배로 필요합니다. (제자리에서 못 하기 때문에) ## 정렬 - [ ] Notes: - - 정렬들 구현 & 각 정렬의 최적의 경우/최악의 경우, 평균적인 복잡도를 알기: - - 버블 소트 쓰지 마세요 - 끔찍하니까요 - n이 16이하 제외하고 O(n^2) - - [ ] 정렬 알고리즘들의 안정성 ("퀵소트는 안정적인가?") - - [정렬 알고리즘의 안정성](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [정렬 알고리즘들의 안정성](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [정렬 알고리즘들의 안정성](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [정렬 알고리즘들 - 안정성](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] 어떤 알고리즘들에 연결 리스트를 쓸 수 있는가? 배열은? 둘 다는? - - 연결 리스트를 정렬하는 것은 추천하지 않지만, 병합 정렬은 가능합니다. - - [링크드 리스트로 병합 정렬](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + - 정렬들 구현 & 각 정렬의 최적의 경우/최악의 경우, 평균적인 복잡도를 알기: + - 버블 소트 쓰지 마세요 - 끔찍하니까요 - n이 16이하 제외하고 O(n^2) + - [ ] 정렬 알고리즘들의 안정성 ("퀵소트는 안정적인가?") + - [정렬 알고리즘의 안정성](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [정렬 알고리즘들의 안정성](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [정렬 알고리즘들의 안정성](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [정렬 알고리즘들 - 안정성](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] 어떤 알고리즘들에 연결 리스트를 쓸 수 있는가? 배열은? 둘 다는? + - 연결 리스트를 정렬하는 것은 추천하지 않지만, 병합 정렬은 가능합니다. + - [링크드 리스트로 병합 정렬](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - 힙소트의 경우, 위의 힙 데이터 구조를 보세요. 힙 정렬은 훌륭하지만 안정적이지 못합니다. - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) - - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) - - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - [ ] [Bubble Sort (영상)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (영상)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) @@ -816,33 +853,33 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info - [ ] [선택 정렬 (영상)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - [ ] 병합 정렬 코드: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) - [ ] 퀵 정렬 코드: - - [ ] [구현 (C언어)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [구현 (C언어)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [구현 (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + - [ ] [구현 (C언어)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [구현 (C언어)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [구현 (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - [ ] 구현: - - [ ] 병합 정렬: 평균과 최악의 경우 O(n log n) - - [ ] 퀵 정렬: 평균적인 경우 O(n log n) - - 선택 정렬과 삽입 정렬은 둘 다 평균과 최악의 경우에 O(n^2) - - 힙 정렬의 경우, 위의 힙 데이터 구조를 보세요. + - [ ] 병합 정렬: 평균과 최악의 경우 O(n log n) + - [ ] 퀵 정렬: 평균적인 경우 O(n log n) + - 선택 정렬과 삽입 정렬은 둘 다 평균과 최악의 경우에 O(n^2) + - 힙 정렬의 경우, 위의 힙 데이터 구조를 보세요. - [ ] 필요한 건 아니지만, 아래도 추천합니다: - - [ ] [Sedgewick - 기수 정렬(Radix Sorts) (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) - - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [Sedgewick - 기수 정렬(Radix Sorts) (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) 개략적으로 보자면, 여기에 시각적으로 나타낸 [15가지 정렬 알고리즘들](https://www.youtube.com/watch?v=kPRA0W1kECg)을 보세요. 이 주제에 대해서 더 자세히 알고 싶다면, [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항)에서 "정렬" 섹션를 보세요. @@ -852,293 +889,291 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info 그래프는 컴퓨터 과학의 여러 문제들을 표현하는 데 사용할 수 있다. 때문에 이 섹션은 트리나 정렬 섹션처럼 길다. - 노트: - - 메모리에 그래프를 표시하는 네 가지 기본 방법이 있다: - - 오브젝트와 포인터 - - 행렬 - - 인접 리스트 - - 인접 맵 - - 각각의 표현과 장단점을 숙지하라. - - 넓이 우선 탐색(BFS)와 깊이 우선 탐색(DFS) - 계산상의 복잡성, 장단점, 실제 코드로 구현하는 방법을 알아야 한다. - - 질문을 받을 시 먼저 그래프 기반 솔루션을 찾고, 없을 경우에 다른 솔루션으로 넘어가라. + - 메모리에 그래프를 표시하는 네 가지 기본 방법이 있다: + - 오브젝트와 포인터 + - 행렬 + - 인접 리스트 + - 인접 맵 + - 각각의 표현과 장단점을 숙지하라. + - 넓이 우선 탐색(BFS)와 깊이 우선 탐색(DFS) - 계산상의 복잡성, 장단점, 실제 코드로 구현하는 방법을 알아야 한다. + - 질문을 받을 시 먼저 그래프 기반 솔루션을 찾고, 없을 경우에 다른 솔루션으로 넘어가라. - [ ] MIT(영상): - - [ ] [너비 우선 탐색(BFS;Breadth-First Search)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - [ ] [깊이 우선 탐색(DFS;Depth-First Search)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - [ ] [너비 우선 탐색(BFS;Breadth-First Search)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [깊이 우선 탐색(DFS;Depth-First Search)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - [ ] Skiena의 강좌 - 시작하기 아주 좋습니다: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] 그래프 (검토, 그 외 여러가지): - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - 내가 구현할 것: - - [ ] DFS with 인접 리스트 (재귀) - - [ ] DFS with 인접 리스트 (스택을 쓴 비재귀) - - [ ] DFS with 인접 행렬 (재귀) - - [ ] DFS with 인접 행렬 (스택을 쓴 비재귀) - - [ ] BFS with 인접 리스트 - - [ ] BFS with 인접 행렬 - - [ ] 단일 출발지 최단 경로 (다익스트라) - - [ ] 최소 신장 트리 (MST;minimum spanning tree) - - DFS-기반 알고리즘들 (위의 Aduni 영상들을 보세요): - - [ ] 사이클 검사/확인 (위상 정렬할 때 필요합니다. 시작하기 전에 검사해야 하거든요.) - - [ ] 위상 정렬 - - [ ] 그래프 내의 연결 요소(Connected Component)들 개수 - - [ ] 강연결요소(SCC;Strongly Connected Component)들 나열하기 - - [ ] 이분 그래프 확인하기 + - [ ] DFS with 인접 리스트 (재귀) + - [ ] DFS with 인접 리스트 (스택을 쓴 비재귀) + - [ ] DFS with 인접 행렬 (재귀) + - [ ] DFS with 인접 행렬 (스택을 쓴 비재귀) + - [ ] BFS with 인접 리스트 + - [ ] BFS with 인접 행렬 + - [ ] 단일 출발지 최단 경로 (다익스트라) + - [ ] 최소 신장 트리 (MST;minimum spanning tree) + - DFS-기반 알고리즘들 (위의 Aduni 영상들을 보세요): + - [ ] 사이클 검사/확인 (위상 정렬할 때 필요합니다. 시작하기 전에 검사해야 하거든요.) + - [ ] 위상 정렬 + - [ ] 그래프 내의 연결 요소(Connected Component)들 개수 + - [ ] 강연결요소(SCC;Strongly Connected Component)들 나열하기 + - [ ] 이분 그래프 확인하기 Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그래프 실습을 할 수 있습니다. ## Even More Knowledge - ### Recursion - - [ ] 재귀와 백트래킹에 대한 스탠포드 대학 강의: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - 재귀는 언제 사용해야 하는 지 - - 꼬리 재귀를 사용하는 게 그렇지 않은 것보다 얼마나 나은가요? - - [ ] [꼬리 재귀가 무엇이고 왜 그게 좋지 않은지에 대하여](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [꼬리 재귀 (영상)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - + - [ ] 재귀와 백트래킹에 대한 스탠포드 대학 강의: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - 재귀는 언제 사용해야 하는 지 + - 꼬리 재귀를 사용하는 게 그렇지 않은 것보다 얼마나 나은가요? + - [ ] [꼬리 재귀가 무엇이고 왜 그게 좋지 않은지에 대하여](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [꼬리 재귀 (영상)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Dynamic Programming - - 인터뷰에서 DP 문제를 접하지 않을 수도 있습니다. 하지만 알고 있는게 미뤄두는 것 보다 낫습니다. - - 이 주제는 아주 어렵습니다. DP로 풀리는 각 문제마다 어떤 점화식을 정의해야 하는데 그게 까다롭습니다. - - 얽혀있는 패턴들을 확실히 이해할 때까지, 많은 DP 예시 문제들을 찾아보기를 권합니다. - - [ ] Videos: - - Skiena씨의 영상들은 따라가기 힘듭니다. 가끔 화이트보드를 사용하시는 데 너무 작아서 보기가 힘들거든요. - - [ ] [Skiena: CSE373 2012 - Lecture 19 - 동적 프로그래밍 소개 (영상)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - 동적 프로그래밍 예제들 (영상)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - 동적 프로그래밍의 활용 (영상)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (59:18부터 시작) (영상)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (영상)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (영상)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): + - 인터뷰에서 DP 문제를 접하지 않을 수도 있습니다. 하지만 알고 있는게 미뤄두는 것 보다 낫습니다. + - 이 주제는 아주 어렵습니다. DP로 풀리는 각 문제마다 어떤 점화식을 정의해야 하는데 그게 까다롭습니다. + - 얽혀있는 패턴들을 확실히 이해할 때까지, 많은 DP 예시 문제들을 찾아보기를 권합니다. + - [ ] Videos: + - Skiena씨의 영상들은 따라가기 힘듭니다. 가끔 화이트보드를 사용하시는 데 너무 작아서 보기가 힘들거든요. + - [ ] [Skiena: CSE373 2012 - Lecture 19 - 동적 프로그래밍 소개 (영상)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - 동적 프로그래밍 예제들 (영상)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - 동적 프로그래밍의 활용 (영상)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (59:18부터 시작) (영상)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (영상)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (영상)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] SOLID OOP Principles: + - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. - ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - difference between processes and threads + - processes + - threads + - locks + - mutexes + - semaphores + - monitors + - how they work + - deadlock + - livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### 테스트 - - 알아 두어야 할 것: - - 유닛 테스트는 어떻게 작동하는지 - - mock object 는 무엇인지 - - 통합 테스트는 무엇인지 - - 의존성 주입은 무엇인지 - - [ ] [James Bach과 함께하는 애자일 소프트웨어 테스트 (비디오)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [소프트웨어 테스트에 대한 James Bach의 무료 강의 (비디오)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven 개발 (이것은 우리가 의미하는 것은 아니다) (비디오)](https://vimeo.com/83960706) - - [참고자료](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] 의존성 주입: - - [ ] [비디오](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [테스트 어떻게 작성하는지](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - 알아 두어야 할 것: + - 유닛 테스트는 어떻게 작동하는지 + - mock object 는 무엇인지 + - 통합 테스트는 무엇인지 + - 의존성 주입은 무엇인지 + - [ ] [James Bach과 함께하는 애자일 소프트웨어 테스트 (비디오)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [소프트웨어 테스트에 대한 James Bach의 무료 강의 (비디오)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven 개발 (이것은 우리가 의미하는 것은 아니다) (비디오)](https://vimeo.com/83960706) + - [참고자료](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] 의존성 주입: + - [ ] [비디오](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [테스트 어떻게 작성하는지](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - - 운영체제(OS)에서 어떻게 동작하는지 - - 운영 체제 관련 영상들에서 알아보실 수 있습니다. + - 운영체제(OS)에서 어떻게 동작하는지 + - 운영 체제 관련 영상들에서 알아보실 수 있습니다. - ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) 이 주제를 더 자세히 알고 싶으시다면, [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항)에서 "문자열 매칭" 섹션을 읽어보세요. - ### Tries - - 트라이에는 여러 종류가 있다는 것을 유의하라. 어떤 건 접두사가 있는 데, 어떤 건 그렇지 않고 또 어떤 것은 경로 추적을 위해 비트 대신에 문자열을 사용한다. - - 나는 코드만 읽었고, 구현은 안 했다. - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - 트라이에는 여러 종류가 있다는 것을 유의하라. 어떤 건 접두사가 있는 데, 어떤 건 그렇지 않고 또 어떤 것은 경로 추적을 위해 비트 대신에 문자열을 사용한다. + - 나는 코드만 읽었고, 구현은 안 했다. + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. + - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. - ### Networking - - **만약 당신이 네트워크에 대한 경험이 있거나 operations engineer 또는 믿음직한 엔지니어가 되고 싶다면 받을 수 있는 질문들** - - 즉, 알면 좋은 것들이다. - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] 소켓: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - **만약 당신이 네트워크에 대한 경험이 있거나 operations engineer 또는 믿음직한 엔지니어가 되고 싶다면 받을 수 있는 질문들** + - 즉, 알면 좋은 것들이다. + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] 소켓: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## 시스템 디자인, 확장성, 데이터 핸들링 @@ -1147,18 +1182,18 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 there is a lot to consider when designing a software/hardware system that can scale. Expect to spend quite a bit of time on this. - 고려사항: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization + - scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - system design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization - [ ] **여기서 시작하세요**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) @@ -1172,72 +1207,72 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) - [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [Easy-to-read paper](https://raft.github.io/) - - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: 1. Understand the problem and scope: - define the use cases, with interviewer's help - suggest additional features @@ -1256,15 +1291,15 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - infrastructure: load balancing, messaging - rough overview of any key algorithm that drives the service - consider bottlenecks and determine solutions - - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - Exercises: + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) --- @@ -1274,9 +1309,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 복습을 하고자 한다면, 이 영상들이 도움이 될 것이다. - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1289,6 +1324,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 **코딩 문제 연습은 프로그래밍 문제에 대한 답을 외우는 것이 아니다.** 당신에게 프로그래밍 문제를 푸는 연습이 필요한 이유: + - 문제 인식, 그리고 어떤 자료구조와 알고리즘이 언제 필요한지 - 문제의 조건을 모으기 - 인터뷰를 하듯 당신이 문제를 푸는 과정을 말하기 @@ -1314,9 +1350,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 **읽고 프로그래밍 문제 풀기 (순서대로):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - C, C++, Java로 답변 + - C, C++, Java로 답변 - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Java로 답변 + - Java로 답변 [위의 도서 목록](#도서-목록)을 보세요. @@ -1329,18 +1365,20 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) 코딩 인터뷰 질문들 영상: + - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - [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. + - Good explanations of solution and the code. + - You can watch several in a short time. - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Challenge sites: + - [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. - - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - - See Nick White Videos above for short code-throughs + - My favorite coding problem site. It's worth the subscription money for the 1-2 months you'll likely be preparing. + - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) + - See Nick White Videos above for short code-throughs - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [InterviewCake](https://www.interviewcake.com/) @@ -1350,6 +1388,7 @@ Challenge sites: - [Code Exercises](https://code-exercises.com) Language-learning sites, with challenges: + - [Codewars](http://www.codewars.com) - [Codility](https://codility.com/programmers/) - [HackerEarth](https://www.hackerearth.com/) @@ -1357,25 +1396,26 @@ Language-learning sites, with challenges: - [Codechef](https://www.codechef.com/) Challenge repos: + - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) 모의 면접: + - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. -- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. -## 인터뷰가 얼마 남지 않았을 때 +## 면접이 얼마 남지 않았을 때 - [ ] Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) ## 이력서 - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - ## 인터뷰가 다가오면 생각해보기 아래의 아이템들에 따른 너가 받을 20개의 인터뷰 질문에 대해 생각하라. 각각 2-3개의 대답을 준비해라. @@ -1436,266 +1476,265 @@ Challenge repos: 아래는 당신이 흥미로워하는 주제에 대해 공부할 수 있는 자료들입니다. - [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - an oldie but a goodie + - an oldie but a goodie - [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option + - a modern option - [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns + - a gentle introduction to design patterns - [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book + - aka the "Gang Of Four" book, or GOF + - the canonical design patterns book - [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. + - This book has 2 parts: + - class textbook on data structures and algorithms + - pros: + - is a good review as any algorithms textbook would be + - nice stories from his experiences solving problems in industry and academia + - code examples in C + - cons: + - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - algorithm catalog: + - this is the real reason you buy this book. + - about to get to this part. Will update here once I've made my way through it. + - Can rent it on kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - aka CLR, sometimes CLRS, because Stein was late to the game + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. + - aka CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - - For a richer, more up-to-date (2017), but longer treatment + - For a richer, more up-to-date (2017), but longer treatment - [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but + - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but that is just an intro. This a guidebook on program design and architecture. ## Additional Learning - 두루 갖춘 소프트웨어 엔지니어가 되는데 도움이 될만한 것들을 추가했습니다. 이를 통해 더 큰 도구들을 다루실 수 있게 되실 겁니다. - ### Compilers - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor - - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - - I filled in the list below from good tools. - - bash - - cat - - grep - - sed - - awk - - curl or wget - - sort - - tr - - uniq - - [strace](https://en.wikipedia.org/wiki/Strace) - - [tcpdump](https://danielmiessler.com/study/tcpdump/) + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Information theory (videos) - - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - More about Markov processes: - - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below. - ### Parity & Hamming Code (videos) - - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - also see videos below - - make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - also see videos below + - make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - also see videos below - - make sure to watch information theory videos first - - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - also see videos below + - make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - make sure to watch information theory videos first - - Computerphile (videos): - - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ActiveMQ](http://activemq.apache.org/) - - [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [MessagePack](http://msgpack.org/index.html) - - [Avro](https://avro.apache.org/) + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) - ### A* - - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + - used to determine the similarity of documents + - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) - ### Augmented Data Structures - - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - 적어도 하나의 타입의 균형 이진 트리에 대하여 알고 계시는 게 좋습니다 (그리고 어떻게 적용되는지까지요): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + - 적어도 하나의 타입의 균형 이진 트리에 대하여 알고 계시는 게 좋습니다 (그리고 어떻게 적용되는지까지요): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a balanced search tree in your interview. But I wanted exposure to coding one up and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions + - splay tree: insert, search, delete functions If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + - search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets. + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - **AVL trees** - - In practice: + - **AVL trees** + - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - **Splay trees** - - In practice: + - **Splay trees** + - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, networking and file system code) etc. - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - **Red/black trees** - - these are a translation of a 2-3 tree (see below) - - In practice: + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - these are a translation of a 2-3 tree (see below) + - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, but it makes them valuable building blocks in other data structures which provide worst-case guarantees; @@ -1703,120 +1742,119 @@ Challenge repos: the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used. - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - **2-3 search trees** - - In practice: + - **2-3 search trees** + - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - **2-3-4 Trees (aka 2-4 trees)** - - In practice: + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - - **B-Trees** - - 재밌는 사실: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-트리는 데이터베이스에 광범위하게 사용됩니다. 가장 현대적인 파일시스템은 B-트리를 씁니다 (or Variants). + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - 재밌는 사실: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - In Practice: + B-트리는 데이터베이스에 광범위하게 사용됩니다. 가장 현대적인 파일시스템은 B-트리를 씁니다 (or Variants). 데이터베이스에 사용될 뿐만 아니라, B-트리는 특정한 파일의 임의의 블록에 '빠른 무작위 탐색'을 가능하게 합니다. 기본적인 문제는 파일블록 주소 i를 하나의 디스크 블록(또는 아마도 실린더-헤드-섹터) 주소로 바꾸는 것입니다. - - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - - ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - great for finding number of points in a rectangle or higher dimension object + - a good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - - Combination of a binary search tree and a heap - - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Linear Programming (videos) - - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometry, Convex hull (videos) - - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### 이산수학 - - 아래에 있는 영상을 확인하세요. + - 아래에 있는 영상을 확인하세요. - ### 기계학습 - - 왜 기계학습이 중요하죠? - - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - 강의들: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - 왜 기계학습이 중요하죠? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - 강의들: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - 자료들: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - 자료들: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: --- @@ -1827,85 +1865,84 @@ Challenge repos: 하나의 주제에 대하여 지나치게 깊게 파고드는 것은 쉬운 일입니다. 이번 세기에 직장을 구하고 싶으시잖아요, 맞죠? -- **SOLID** - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - **Union-Find** - - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - **More Dynamic Programming** (videos) - - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - **Advanced Graph Processing** (videos) - - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **문자열 매칭 - - 라빈-카프(Rabin-Karp) (동영상): - - [라빈 카프 알고리즘](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [최적화: 구현과 분석](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - Knuth-Morris-Pratt (KMP): - - [The Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - 보이어-무어(Boyer–Moore) 문자열 검색 알고리즘 - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - 트라이(tries)에 대해서 잘 설명하고 있다. - - 이건 생략 가능 + - 라빈-카프(Rabin-Karp) (동영상): + - [라빈 카프 알고리즘](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [최적화: 구현과 분석](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [The Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - 보이어-무어(Boyer–Moore) 문자열 검색 알고리즘 + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - 트라이(tries)에 대해서 잘 설명하고 있다. + - 이건 생략 가능 - **정렬** - - 스탠포드 대학의 정렬 강의들: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - 스탠포드 대학의 정렬 강의들: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## Video Series @@ -1926,7 +1963,7 @@ Challenge repos: - [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -1965,7 +2002,7 @@ Challenge repos: - [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) - [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) @@ -1977,29 +2014,30 @@ Challenge repos: - [(많은 온라인 강의가 있는) 컴퓨터 과학 강의들](https://github.com/prakhar1989/awesome-courses) ## 학술 자료들 + - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 + - replaced by Colossus in 2012 - [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? + - mostly replaced by Cloud Dataflow? - [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution + - The Dynamo paper kicked off the NoSQL revolution - [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available + - paper not available - 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) - [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) From a9a8e792f43934d2b3bd9cc3cd77ccd64d417d1b Mon Sep 17 00:00:00 2001 From: develhopper Date: Wed, 3 Nov 2021 22:00:46 +0330 Subject: [PATCH 328/857] - persian translation --- translations/README-fa.md | 1993 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1993 insertions(+) create mode 100644 translations/README-fa.md diff --git a/translations/README-fa.md b/translations/README-fa.md new file mode 100644 index 0000000000..1f1480e73d --- /dev/null +++ b/translations/README-fa.md @@ -0,0 +1,1993 @@ + +# دانشنامه مصاحبه برنامه نویسی + +> من در ابتدا این لیست رو به عنوان یک لیست کوتاه از مجموعه موضوعات پژوهشی برای تبدیل شدن به یک مهندس نرم افزار ایجاد کردم، اما به فهرست بلند و بالایی که امروز میبینید تبدیل شد. +> بعد از طی کردن این طرح, [به عوان مهندس توسعه نرم افزار در آمازون استخدام شدم](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> احتمالاً مجبور نخواهید بود به آن اندازه که من مطالطه کردم مطالعه کنید. به هر حال هر چیزی که نیاز داشته باشید در اینجا ذکر شده +> +> من بین 8 تا 10 ساعت در روز، برای چندین ماه مطالعه کردم. داستان از این قرار است: [چرا 8 ماه تمام وقت برای مصاحبه گوگل مطالعه کردم](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **لطفاً توجه داشته باشید:** لازم نیست به اندازه من مطالعه کنید. من زمان زیادی رو برای دانستن چیزهایی که نیازی به دانستن آنها نداشتم تلف کردم. که بیشتر در پایین توضیح میدهم. من به شما کمک میکنم که بدون اتلاف وقت گرانبهای خود به هدف خود برسید. +> +> موارد ذکر شده در اینجا شما را برای یک مصاحبه فنی، تقریباً در هر شرکت نرم افزاری به خوبی آماده می کند, +> از جمله غول ها: آمازون، فیس بوک، گوگل و مایکروسافت +> +> *با آرزوی موفقیت* + +
+ترجمه ها: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) + +
+ +
+در حال ترجمه: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) + +
+ + + +## این چیه؟ + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +این برنامه پژوهشی چند ماهه من جهت تبدیل شدن به یک مهندس نرم افزار برای یک شرکت بزرگ است. + +**مهارت های ضروری:** +* کمی تجربه کد نویسی (متغیر ها, حلقه ها, متدها/توابع, و...) +* صبر و حوصله +* زمان + +
+توجه داشته باشید که این یک برنامه مطالعاتی برای **مهندسی نرم افزار** است، نه توسعه وب. شرکت های بزرگ نرم افزاری مانند گوگل، آمازون، +فیس بوک و مایکروسافت مهندسی نرم افزار را متفاوت از توسعه وب می دانند. برای مثال در آمازون مهندسین فرانت اند (FEE) و مهندسان توسعه نرم افزار (SDE) وجود دارند. این دو تا نقش های جداگانه هستند و مصاحبه برای آنها یکسان نخواهد بود، زیرا هر کدام شایستگی های خاص خود را دارند. این شرکت ها برای نقش های توسعه نرم افزار/مهندسی نیاز به دانش علوم کامپیوتر دارند. +
+--- + +## فهرست مطالب + +### برنامه مطالعه + +- [این چیه؟](#این-چیه) +- [چرا ازش استفاده کنیم؟](#چرا-ازش-استفاده-کنیم) +- [نحوه استفاده](#نحوه-استفاده) +- [احساس نکنید که به اندازه کافی باهوش نیستید](#احساس-نکنید-که-به-اندازه-کافی-باهوش-نیستید) +- [نکته ای درباره منابع ویدئویی](#نکته-ای-درباره-منابع-ویدیویی) +- [یک زبان برنامه نویسی انتخاب کنید](#یک-زبان-برنامه-نویسی-انتخاب-کنید) +- [کتاب های مربوط به ساختمان داده و الگوریتم](#کتاب-های-مربوط-به-ساختمان-داده-و-الگوریتم) +- [کتاب های آمادگی مصاحبه](#کتاب-های-آمادگی-مصاحبه) +- [اشتباهات من را تکرار نکنید](#اشتباهات-من-را-تکرار-نکنید) +- [به چه چیزهایی پرداخته نشده](#به-چه-چیزهایی-پرداخته-نشده) +- [برنامه روزانه](#برنامه-روزانه) +- [تمرین مصاحبه کدنویسی](#تمیرن-مصاحبه-کدنویسی) +- [مشکلات و مسائل کدنویسی](#مشکلات-و-مسائل-کدنویسی) + +### موضوعات مطالعه + +- [پیچیدگی الگوریتمی / Big-O / تحلیل مجانبی](#پیچیدگی-الگوریتمی--big-o--تحلیل-مجانبی) +- [ساختمان داده](#ساختمان-داده) + - [آرایه ها](#آرایه-ها) + - [لیست پیوندی](#لیست-پیوندی) + - [پشته](#پشته) + - [صف](#صف) + - [Hash table](#جدول-هش) +- [علوم بیشتر](#علم-بیشتر) + - [جستجوی باینری](#جستجوی-باینری) + - [Bitwise operations](#bitwise-operations) +- [درخت ها](#درخت-ها) + - [درخت ها - یادداشت ها و پس زمینه](#درختها---یادداشت-ها-و-پس-زمینه) + - [درخت جستجوی دودویی: BSTs](#درخت-جستوجوی-دودویی-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - درخت جستجوی متعادل (مفهوم کلی، نه جزئیات) + - پیمایش: پیش‌سفارش، سفارش، پس‌سفارش، BFS، DFS +- [مرتب سازی](#مرتب-سازی) + - انتخاب (selection) + - درج (insertion) + - heapsort + - مرتب سازی سریع (quicksort) + - مرتب سازی ادغام (merge sort) +- [گراف](#گراف) + - جهت دار (directed) + - بدون جهت (undirected) + - ماتریس مجاورت (adjacency matrix) + - لیست مجاورت (adjacency list + - traversals: BFS, DFS) +- [دانستنی های بیشتر](#دانستنی-های-بیشتر) + - [بازگشت](#recursion) + - [برنامه نویسی پویا](#برنامه-نویسی-پویا) + - [الگوهای-طراحی](#الگوهای-طراحی) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [چگونه کامپیوتر یک برنامه را پردازش می کنند](#چگونه-کامپیوتر-یک-برنامه-را-پردازش-میکند) + - [حافظه نهان](#حافطه-نهان) + - [پردازش و نخ](#پردازش-و-نخ) + - [تست](#تست) + - [جستجو و دستکاری رشته](#جستجو-و-دستکاری-رشته) + - [Tries](#tries) + - [اعداد اعشاری](#اعداد-اعشاری) + - [یونیکد](#یونیکد) + - [Endianness](#endianness) + - [شبکه](#شبکه) +- [بررسی نهایی](#بررسی-نهایی) + +### گرفتن شغل + +- [رزومه خود را به روز کنید](#رزومه-خود-را-به-روز-کنید) +- [Find a Job](#یک-شعل-پیدا-کنید) +- [فرآیند مصاحبه و آمادگی مصاحبه عمومی](#فرآیند-مصاحبه-و-آمادگی-مصاحبه-عمومی) +- [به فکر زمان مصاحبه باشید](#به-فکر-زمان-مصاحبه-باشید) +- [سوالاتی برای مصاحبه کننده آماده کنید](#سوالاتی-برای-مصاحبه-کننده-آماده-کنید) +- [وقتی شغل مورد نظر رو به دست آوردید](#وقتی-شغل-مورد-نظر-رو-به-دست-آوردید) + +**---------------- یادگیری موارد زیر احتیاری است ----------------** + +### موضوعات و منابع اضافی اختیاری + +- [کتاب های اضافی](#کتاب-های-اضافی) +- [طراحی سیستم، مقیاس پذیری، مدیریت داده ها](#طراحی-سیستم-مقیاس-پذیری-مدیریت-داده-ها) (اگر بیش از 4 سال تجربه دارید) +- [یادگیری بیشتر](#additional-learning) + - [کامپایلرها](#کامپایلرها) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [نظریه اطلاعات](#نظریه-اطلاعات) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [رمزنگاری](#رمزنگاری) + - [فشرده سازی](#فشرده-سازی) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [برنامه نویسی موازی](#برنامه-نویسی-موازی) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [ریاضی برای پردازش سریع](#ریاضی-برای-پردازش-سریع) + - [Treap](#treap) + - [برنامه نویسی خطی](#برنامه-نویسی-خطی) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [ریاضی گسسته](#ریاضی-گسسته) + - [یادگیری ماشین](#یادگیری-ماشین) +- [جزئیات بیشتر در مورد برخی از موضوعات](#جزئیات-بیشتر-در-مورد-برخی-از-موضوعات) +- [مجموعه ویدیویی](#مجموعه-ویدیویی) +- [دوره های علوم کامپیوتر](#دوره-های-علوم-کامپیوتر) +- [مقالات](#papers) + +--- + +## چرا ازش استفاده کنیم؟ + +اگر می خواهید به عنوان مهندس نرم افزار برای یک شرکت بزرگ کار کنید، اینها چیزهایی هستند که باید بدانید. + +اگر مانند من موفق به دریافت مدرک در رشته علوم کامپیوتر نشدید، این لیست شما رو در میابد و 4 سال از زندگی شما رو حفظ میکند + +وقتی این پروژه را شروع کردم فرق بین پشته و هیپ رو نمیدانستم، یا چیزی درمورد پیچیدگی زمانی و درخت ها نمیدانستم , و یا اینکه چگونه یک گراف رو پیمایش کنم. اگر مجبور بودم یک الگوریتم مرتب‌سازی را کدنویسی کنم، می‌توانم به شما بگویم که وحشتناک بود. +هر ساختار داده ای که استفاده میکردم از انواع تعریف شده در زبان برنامه نویسی بود و اصلا از پشت صحنه هیچ خبری نداشتم. من هرگز مجبور نبودم حافظه را مدیریت کنم، مگر اینکه فرآیندی که در حال اجرا بودم،خطای حافظه را نشان دهد, و سپس به فکر این می افتادم که باید یک راه حل پیدا کنم. من تنها قادر بودم از آرایه های چند بعدی استفاده کنم و هرگز یک ساختار داده رو از ابتدا ایجاد نکرده بودم + +این یک برنامه طولانی است. ممکن است ماه ها طول بکشد. اگر قبلاً با بسیاری از این موارد آشنا هستید، زمان بسیار کمتری از شما خواهد گرفت. + +## نحوه استفاده + + موارد را به ترتیب از بالا به پایین بررسی کنید. + +من از قابلیت های مارک داون گیتهاب ار جمله قابلیت لیست وظایف برای پیگیری پیشرفت مطالعات استفاده کردم +
+**یک برنچ جدید برای تیک زدن مواردی که به اتمام رسانده اید ایجاد کنید، برای این کار فقط یک x داخل براکت قرار دهید : [x]** +
+ + Fork a branch and follow the commands below + +این ریپو رو فورک کنید https://github.com/jwasham/coding-interview-university + +و سپس کلون کنید: + + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + +
+تمام باکس هایی که به اتمام رسانیده اید را با X علامت بزنید: +
+ + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + +[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## احساس نکنید که به اندازه کافی باهوش نیستید + +- مهندسان نرم افزار موفق باهوش هستند، اما بسیاری از آنها این حس ناامنی را دارند که به اندازه کافی باهوش نیستند. +- [افسانه برنامه نویس نابغه](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [تنها رفتن خطرناک است: مبارزه با هیولاهای نامرئی در فناوری](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## نکته ای درباره منابع ویدئویی + +
+برخی از ویدیوها فقط با ثبت نام در کلاس Coursera یا EdX در دسترس هستند. که بهشون دوره های گسترده باز (MOOC) میگویند. +بعضی مواقع کلاس ها در باز های زمانی خاصی دایر میشوند، بنابراین باید چند ماه برای شرکت در این کلاس ها صبر کنید + +خیلی عالی میشه که دوره های آنلاین اینچنینی با منابع رایگان و همیشه در دسترس جایگزین بشه, +مانند ویدیوهای یوتیوب (ترجیحاً سخنرانی های دانشگاه)، تا اینکه بتوانید هر زمان که خواستید مطالعه کنید, +نه فقط زمانی که یک دوره آنلاین خاص در حال برگزاری است. +
+ +## یک زبان برنامه نویسی را انتخاب کنید + +برای مصاحبه های کدنویسی که انجام می دهید باید یک زبان برنامه نویسی انتخاب کنید. +اما شما همچنین باید زبانی را پیدا کنید که بتوانید از آن برای مطالعه مفاهیم علوم کامپیوتر استفاده کنید. + +ترجیحاً زبانهای یکسانی باشند، به طوری که شما فقط باید در یکی از آن ها مهارت داشته باشید. + +### برای این طرح مطالعه + +
+من وقتی داشتم این برنامه مطالعاتی رو انجام میدادم، برای بیشتر آن از دو زبان پایتون و C استفاده میکردم + + +* C: یک زبان بسیار سطح پایین است. و شما با اشاره گر ها و تخصیص و آزاد سازی حافظه سرو کار دارید, از این رو شما ساختمان داده ها و الگوریتم رو از نزدیک تجربه خواهید کرد. در زبان‌های سطح بالاتر مانند پایتون یا جاوا، اینها از شما پنهان هستند. که برای کارهای روزانه فوق العاده هست, + اما زمانی که در حال یادگیری نحوه ساخت این ساختارهای داده سطح پایین هستید, یک حس دیگری است. + - در طول پروسه مطالعه زبان سی رو همه جا خواهید دید در کتاب ها سخنرانی ها و ویدیوها. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - این یک کتاب کوتاه است، اما به شما مهارت خوبی در زبان C می دهد و اگر کمی آن را تمرین کنید، به سرعت به مهارت خواهید رسید. درک C به شما کمک می کند تا نحوه عملکرد برنامه ها و حافظه را درک کنید. + - نیازی نیست خیلی عمیق در این کتاب فرو بروید فقط تا حدی لازم است که بتوانید کد های زبان سی رو بخوانید و بنویسید. + - [پاسخ به سوالات کتاب](https://github.com/lekkas/c-algorithms) +* Python: مدرن و بسیار رسا، من پایتون رو برای اینکه یک زبان بسیار مفید هست یاد گرفتم و همچنین برای اینکه این امکان رو بهم میده که کد کمتری در مصاحبه بنویسم. + +این دو زبان ترجیجات من هستند. البته شما میتوانید هر چیزی که دوست دارید انتخاب کنید. + +ممکن است لازم نباشه ، ولی در اینجا چند سایت برای یادگیری یک زبان جدید وجود دارد: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +
+ +### برای مصاحبه + +شما می توانید از زبانی که در آن راحت هستید برای انجام بخش کد نویسی مصاحبه استفاده کنید، اما برای شرکت های بزرگ، اینها گزینه های خوبی هستند.: + +- C++ +- Java +- Python + +شما همچنین می توانید از اینها استفاده کنید، اما ابتدا مطالعه کنید. ممکن است اخطارهایی وجود داشته باشد: + +- JavaScript +- Ruby + +در اینجا مقاله ای در مورد انتخاب زبان برای مصاحبه نوشتم: +[یک زبان را برای مصاحبه کدنویسی انتخاب کنید](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +این مقاله اصلی است که پست من بر اساس آن نوشته شده است: 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) + +## کتاب های مربوط به ساختمان داده و الگوریتم + +این کتاب پایه و اساس شما را برای علوم کامپیوتر تشکیل خواهد داد. + +فقط یکی از موارد مربوط به زبانی که با آن راحت تر هستیدرا انتخاب کنید. که قرار است مطالعه و کد نویسی زیادی انجام دهید. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - مبانی، ساختمان داده، مرتب‌سازی، جستجو و الگوریتم‌های نمودار + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - من این کتاب را دوست داشتم. همه چیز را پوشش می داد. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +انتخاب شما: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +انتخاب شما: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## کتاب های آمادگی مصاحبه + +
+شما نیازی به خریدن تمام این کتاب ها رو ندارید. راستش رابخواهید احتمالاً کتاب "Cracking the Coding Interview" کافی است, +اما من بیشتر گرفتم تا بیشتر تمرین کنم. اما من همیشه بیش از حد انجام می دهم. +
+ +من هر دوی اینها را خریدم. آنها به من تمرین زیادی دادند. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - پاسخ به زبان C++ و جاوا + - این یک گرم کردن خوب برای Cracking the Coding Interview است + - خیلی سخت نیست بیشتر مشکلات ممکن است ساده تر از چیزی باشد که در مصاحبه می بینید (از آنچه من خوانده ام) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - پاسخ در جاوا + +### اگر وقت اضافی دارید: + +Choose one: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +## اشتباهات من را مرتکب نشوید + +این فهرست در طول چندین ماه رشد کرد و از کنترل خارج شد. + +در اینجا برخی از اشتباهاتم رو ذکر میکنم تا شما تجربه بهتری داشته باشید. تا ماه ها در زمان خود صرفه جویی کنید. + +### 1. شما همه چیز را به خاطر نخواهید آورد + +ساعت‌ها ویدیو تماشا کردم و یادداشت‌برداری کردم و ماه‌ها بعد چیز زیادی به یاد نمی آوردم. من 3 روز وقت گذاشتم یادداشت هایم را مرور کردم و فلش کارت درست کردم تا بتوانم مرور کنم. من نیازی به این همه دانستن نداشتم. + +لطفا بخوانید تا مرتکب اشتباه من نشوید: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. از فلش کارت استفاده کنید + +برای حل این مشکل، یک سایت فلش کارت کوچک درست کردم که می توانستم فلش کارت های خودم رو در دو نوع کد و عمومی اضافه کنم. +هر کارت قالب بندی متفاوتی داشت. وب‌سایت رو سازگار با تلفن همراه ایجاد کردم، بنابراین می‌توانستم هر کجا که هستم، در تلفن یا تبلت مرور کنم. + +سورس وب سایت: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**توصیه نمیکنم که از فلش کارت های من استفاده کنید.** بسیاری از آنها موارد بی اهمیت هستند که ممکن است نیاز نداشته باشید. + +اما اگر نمی خواهی به من گوش کنی، بفرما: +- [دیتابیس فلش کارد های من (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +به خاطر داشته باشید که من زیاده روی کردم و کارت هایی دارم که همه چیز را از زبان اسمبلی و نکات بی اهمیت پایتون گرفته تا یادگیری ماشینی و آمار را پوشش می دهد. +که بسیار زیاد تر از حد مورد نیاز است. + +**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. +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. + +My flashcard database in Anki format: 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. + +### 3. Do Coding Interview Questions While You're Learning + +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. Do 2 or 3 questions regarding linked lists. +1. Move on to the next learning topic. +1. Later, go back and do another 2 or 3 linked list problems. +1. Do this with each new topic you learn. + +**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 + +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 +- Javascript +- 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-cpp) + - [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) + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for your solutions (see Big-O below) +- 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/) + +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) + +**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). + +Solving Problems: +- [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/) + +Coding Interview Question Videos: +- [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) + - Super for walkthroughs of problem solutions +- [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 +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - See Nick White and FisherCoder Videos above for code walk-throughs. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [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 + +- 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. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](https://archive.org/details/lecture2_202008) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [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 +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) + - [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) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Will not implement. Implementing with array is trivial + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(i) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - When it is appropriate to use it? + - How is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### How computers process a program + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Update Your Resume + +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." + + +## Find a Job + +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Interview Process & General Interview Prep + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: + - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Have questions for the interviewer + +Some of mine (I already may know the answers, but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is the work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. It is NOT needed for an entry-level interview. + However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file From 242dcc378d56381d034c2a21ef5216a3a2f8cd13 Mon Sep 17 00:00:00 2001 From: develhopper Date: Thu, 4 Nov 2021 16:50:20 +0330 Subject: [PATCH 329/857] - persian translation --- translations/README-fa.md | 153 ++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 79 deletions(-) diff --git a/translations/README-fa.md b/translations/README-fa.md index 1f1480e73d..29092d10b8 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -121,7 +121,7 @@ - [به چه چیزهایی پرداخته نشده](#به-چه-چیزهایی-پرداخته-نشده) - [برنامه روزانه](#برنامه-روزانه) - [تمرین مصاحبه کدنویسی](#تمیرن-مصاحبه-کدنویسی) -- [مشکلات و مسائل کدنویسی](#مشکلات-و-مسائل-کدنویسی) +- [مسائل کدنویسی](#مسائل-کدنویسی) ### موضوعات مطالعه @@ -132,7 +132,7 @@ - [پشته](#پشته) - [صف](#صف) - [Hash table](#جدول-هش) -- [علوم بیشتر](#علم-بیشتر) +- [دانستنی های بیشتر](#دانستنی-های-بیشتر) - [جستجوی باینری](#جستجوی-باینری) - [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. -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. +میتوانید به عنوان جاگزین سایت فلش کارت من از سایت [Anki](http://ankisrs.net/), استفاده کنید که بارها به من توصیه شده است. +که از یک سیستم تکرار برای کمک به یادآوری استفاده می کند. کاربرپسند است، در همه پلتفرم ها موجود است و دارای سیستم همگام سازی ابری است. +که تمامی نسخه های آن به غیر از نسخه 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. Do 2 or 3 questions regarding linked lists. -1. Move on to the next learning topic. -1. Later, go back and do another 2 or 3 linked list problems. -1. Do this with each new topic you learn. +وقتی موضوعی را یاد گرفتید و تا حدودی با آن احساس راحتی کردید, برای مثال **لیست های پیوندی**: +1. [کتاب مصاحبه کدنویسی](#interview-prep-books) (یا یکی از سایت های معرفی شده در پایین) رو باز کنید +1. 2 یا 3 سوال در مورد لیست های پیوندی انجام دهید. +1. به سراغ مبحث بعدی بروید. +1. بعد ها دوباره به مبحث لیست های پیوندی برگردید و دو یا سه مسئله دیگر انجام دهید. +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 - Javascript - 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-cpp) - [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 - Gathering requirements for the problem - 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) - 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/) -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) -**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/) -- [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-find-a-solution/) +- [نحوه تشریح یک مسئله](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) - [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-) - - Good explanations of solution and the code + - توضیحات خوب راه حل و کد - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) -Challenge sites: +سایت های چالشی: - [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. - See Nick White and FisherCoder Videos above for code walk-throughs. @@ -563,18 +558,18 @@ Challenge sites: - [InterviewBit](https://www.interviewbit.com/) - [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) - [ ] [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) @@ -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/) - [ ] [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 -if you can identify the runtime complexity of different algorithms. It's a super review and test. +وقتی دارید کتاب "Cracking the Coding Interview" رو مطالعه میکنید، یک فصل در این مورد در آنجا وجود داره. +اگر بتوانید پیچیدگی زمان اجرای الگوریتم های مختلف رو شناسایی کنید. فرصت خوبیه برای بررسی و تست مسائل -## 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) - - [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) - - [ ] Implement a vector (mutable array with automatic resizing): - - [ ] Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing. + - [ ] پیاده سازی vector (mutable array with automatic resizing): + - [ ] تمرین آرایه ها و اشاره گر ها, استفاده از اشاره گر به جای ایندکس در آرایه. - [ ] New raw data array with allocated memory - 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 @@ -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 - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) -- ### Linked Lists +- ### لیست های پیوندی - [ ] Description: - [ ] [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) @@ -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) - No need to implement -- ### Stack +- ### پشته - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] Will not implement. Implementing with array is trivial -- ### Queue +- ### صف - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] 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) - empty: O(1) (linked list and array) -- ### Hash table +- ### جدول هش - [ ] Videos: - [ ] [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) @@ -709,9 +704,9 @@ if you can identify the runtime complexity of different algorithms. It's a super - get(key) - remove(key) -## More Knowledge +## دانستنی های بیشتر -- ### Binary search +- ### جستجوی دودویی - [ ] [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) - [ ] [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 Integer](https://bits.stephan-brumme.com/absInteger.html) -## Trees +## درخت - ### Trees - Notes & Background - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) From e24a5be46fda154d03e10db76b72088a3ac5c715 Mon Sep 17 00:00:00 2001 From: develhopper Date: Thu, 4 Nov 2021 21:45:53 +0330 Subject: [PATCH 330/857] - persian translation --- translations/README-fa.md | 245 +++++++++++++++++++------------------- 1 file changed, 120 insertions(+), 125 deletions(-) diff --git a/translations/README-fa.md b/translations/README-fa.md index 29092d10b8..5cd527cdc4 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -131,8 +131,8 @@ - [لیست پیوندی](#لیست-پیوندی) - [پشته](#پشته) - [صف](#صف) - - [Hash table](#جدول-هش) -- [دانستنی های بیشتر](#دانستنی-های-بیشتر) + - [جدول هش](#جدول-هش) +- [موارد بیشتر](#موارد-بیشتر) - [جستجوی باینری](#جستجوی-باینری) - [Bitwise operations](#bitwise-operations) - [درخت ها](#درخت-ها) @@ -153,8 +153,8 @@ - ماتریس مجاورت (adjacency matrix) - لیست مجاورت (adjacency list - traversals: BFS, DFS) -- [دانستنی های بیشتر](#دانستنی-های-بیشتر) - - [بازگشت](#recursion) +- [موارد حتی بیشتر](#موارد-حتی-بیشتر) + - [بازگشت](#بازگشت) - [برنامه نویسی پویا](#برنامه-نویسی-پویا) - [الگوهای-طراحی](#الگوهای-طراحی) - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) @@ -174,7 +174,7 @@ ### گرفتن شغل - [رزومه خود را به روز کنید](#رزومه-خود-را-به-روز-کنید) -- [Find a Job](#یک-شعل-پیدا-کنید) +- [یک شغل پیدا کنید](#یک-شعل-پیدا-کنید) - [فرآیند مصاحبه و آمادگی مصاحبه عمومی](#فرآیند-مصاحبه-و-آمادگی-مصاحبه-عمومی) - [به فکر زمان مصاحبه باشید](#به-فکر-زمان-مصاحبه-باشید) - [سوالاتی برای مصاحبه کننده آماده کنید](#سوالاتی-برای-مصاحبه-کننده-آماده-کنید) @@ -704,9 +704,9 @@ Choose one: - get(key) - remove(key) -## دانستنی های بیشتر +## موارد بیشتر -- ### جستجوی دودویی +- ### جستجوی باینری - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) @@ -743,16 +743,16 @@ Choose one: ## درخت -- ### Trees - Notes & Background +- ### درخت ها - یادداشت ها و پس زمینه - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basic tree construction - - traversal - - manipulation algorithms + - ساخت درخت اولیه + - پیشمایش + - الگوریتم های ویرایش - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - - level order (BFS, using queue) - - time complexity: O(n) - - space complexity: best: O(1), worst: O(n/2)=O(n) + - ترتیب سطح (BFS, using queue) + - پیچیدگی زمانی: O(n) + - پیچیدگی مکانی: best: O(1), worst: O(n/2)=O(n) - DFS notes: - time complexity: O(n) - space complexity: @@ -762,7 +762,7 @@ Choose one: - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) -- ### Binary search trees: BSTs +- ### درخت جستجوی دودویی: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) @@ -791,7 +791,7 @@ Choose one: - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) + - به عنوان یک درخت تجسم میشود اما معمولاً به صورت خطی ذخیره میشود (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) @@ -818,21 +818,21 @@ Choose one: - [ ] heapify - create a heap from an array of elements, needed for heap_sort - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap -## Sorting +## مرتب سازی - [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: + - پیاده سازی روش های مرتب سازی و دانستن بهترین و بدترین روش, میانگین پیچیدگی زمانی هر کدام: - no bubble sort - it's terrible - O(n^2), except when n <= 16 - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + - [ ] کدوم الگوریتم ها در آرایه ها و کدام در لیست های پیوندی و کدام در هر دو استفاده میشوند؟ + - من مرتب کردن لیست پیوندی را توصیه نمی کنم، اما مرتب سازی ادغام قابل انجام است. + - [مرتب سازی ادغام برای لیست های پیوندی](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable +- برای مرتب سازی هیپ بخش ساختمان داده هیپ در بالا رو ببینید. مرتب سازی هیپ عالی است اما پایدار نیست - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) @@ -890,22 +890,22 @@ Choose one: - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +به عنوان خلاصه، در اینجا یک نمایش بصری از[15 الگوریتم مرتب سازی](https://www.youtube.com/watch?v=kPRA0W1kECg). +اگر به جزئیات بیشتری در مورد این موضوع نیاز دارید، بخش "مرتب سازی" را در اینجا ببینید [جزئیات بیشتر در مورد برخی از موضوعات](#جزئیات-بیشتر-در-مورد-برخی-از-موضوعات) -## Graphs +## گراف -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +از گراف ها میتوان برای حل بسیاری از مسائل در علوم کامپیوتر استفاده کرد، بنابراین این بخش مانند بهش درخت و مرتب سازی طولانی است. -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list +- توجه: + - 4 روش اساسی برای نمایش یک گراف در حافظه وجود دارد: + - اشاره گرها و اشیاء (objects) + - ماتریس مجاورت + - لیست مجاورت - adjacency map - - Familiarize yourself with each representation and its pros & cons + - با هر کدام از آنها و مزایا و معایب آنها آشنا شوید - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none + - اگر سوالی پرسیده شد، ابتدا به دنبال راه حل مبتنی بر گراف بگردید. - [ ] MIT(videos): - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) @@ -953,24 +953,23 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph -## Even More Knowledge +## موارد حتی بیشتر -- ### Recursion +- ### بازگشت - [ ] Stanford lectures on recursion & backtracking: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - When it is appropriate to use it? + - چه زمانی از توابع بازگشتی استفاده کنیم؟ - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) -- ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a - problem as being a candidate for dynamic programming. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. +- ### برنامه نویسی پویا + - احتمالاً در مصاحبه خود هیچ مسئله ای مربوط به برنامه نویسی پویا نخواهید دید، اما ارزش دارد که بتوانید راه حل یک مسئله را به عنوان برنامه نویسی پویا تشخیص دهید. + - این موضوع می تواند بسیار دشوار باشد، زیرا هر مسئله قابل حل DP باید به عنوان یک رابطه بازگشتی تعریف شود، و رسیدن به آن می تواند مشکل باشد.. + - من پیشنهاد می‌کنم که نمونه‌های زیادی از مسائل DP را تا زمانی که درک کاملی از مباحث داشته باشید، ببینید. - [ ] Videos: - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) @@ -993,9 +992,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Design patterns +- ### الگوهای طراحی - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: + - [ ] این الگو ها رو یاد بگیرید: - [ ] strategy - [ ] singleton - [ ] adapter @@ -1061,7 +1060,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) -- ### Caches +- ### حافظه نهان - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) @@ -1070,16 +1069,16 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processes and Threads +- ### پردازش و نخ - [ ] Computer Science 162 - Operating Systems (25 videos): - for processes and threads see videos 1-11 - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - Difference between processes and threads - - Processes - - Threads + - موارد گفته شده در این دوره: + - پردازه ها, نخ ها, مسائل همزمانی + - فرق بین پردازه (process) و نخ + - پردازه ها + - نخ - Locks - Mutexes - Semaphores @@ -1107,9 +1106,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Testing +- ### تست - To cover: - - how unit testing works + - چگونه unit test پیاده سازی کنیم - what are mock objects - what is integration testing - what is dependency injection @@ -1122,7 +1121,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### String searching & manipulations +- ### جستجو و دستکاری رشته - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) @@ -1132,7 +1131,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + اگر به جزئیات بیشتری در مورد این موضوع نیاز دارید، بخش "String Matching" را ببینید [جزئیات بیشتر در مورد برخی از موضوعات](#جزئیات-بیشتر-در-مورد-برخی-از-موضوعات). - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits @@ -1152,11 +1151,11 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Floating Point Numbers +- ### اعداد اعشاری - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) -- ### Unicode +- ### یونیکد - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) @@ -1167,7 +1166,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Very technical talk for kernel devs. Don't worry if most is over your head. - The first half is enough. -- ### Networking +- ### شبکه - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - Otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) @@ -1186,10 +1185,9 @@ Graphs can be used to represent many problems in computer science, so this secti --- -## Final Review +## بررسی نهایی - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. + این بخش ویدیوهای کوتاه تری دارد که می توانید خیلی سریع آن ها را تماشا کنید تا بیشتر مفاهیم مهم را مرور کنید. - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) @@ -1200,20 +1198,20 @@ Graphs can be used to represent many problems in computer science, so this secti --- -## Update Your Resume +## رزومه خود را به روز کنید -- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: +- اطلاعات آماده سازی رزومه را در کتاب های زیر ببینید: "Cracking The Coding Interview" و "Programming Interviews Exposure" +- من نمی دانم این چقدر مهم است (شما می توانید تحقیقات خود را انجام دهید) اما در اینجا مقاله ای در مورد سازگار کردن رزومه شما با ATS وجود دارد.: - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." -## Find a Job +## یک شغل پیدا کنید -- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) +- [سایت های کاریابی](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) -## Interview Process & General Interview Prep +## فرآیند مصاحبه و آمادگی مصاحبه عمومی - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) @@ -1243,65 +1241,63 @@ Mock Interviews: - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously -## Be thinking of for when the interview comes - -Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. -Have a story, not just data, about something you accomplished. - -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? - -- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: +## به فکر زمان مصاحبه باشید + +درباره 20 تا از سوالاتی که ممکن است از شما پرسیده شود و سوالات پایین فکر کنید. و برای هرکدام حداقل یک جواب داشته باشید + +- چرا این شغل را می خواهی؟ +- یکی از مشکلات بزرگی که حل کردی رو بازگو کن؟ +- بزرگترین چالشی که داشتی؟ +- بهترین و بدترین طرح هایی که دیدی؟ +- ایده هایی برای بهبود یک محصول موجود +- چگونه به عنوان یک فرد و به عنوان بخشی از یک تیم بهترین کار را انجام می دهید؟ +- کدام یک از مهارت ها یا تجربیات شما میتواند کلیدی باشد و چرا؟ +- از چه چیز فلان پروژه لذت بردی؟ +- بزرگترین چالشی که توی فلان پروژه باهاش روبرو شدی چی بود؟ +- سخت ترین باگی که باهاش روبرو شدی چی بود؟ +- از فلان پروژه چی یاد گرفتی؟ +- چه کاری رو بهتر انجام دادی؟ + +- اگر یافتن پاسخ‌های خوب برای این نوع سوالات مصاحبه برایتان سخت است، در اینجا چند ایده وجود دارد: - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) -## Have questions for the interviewer +## سوالاتی برای مصاحبه کننده آماده کنید -Some of mine (I already may know the answers, but want their opinion or team perspective): +برخی از سوالات من (من قبلاً ممکن است پاسخ ها را بدانم، اما نظر آنها یا دیدگاه تیم را می خواهم): -- How large is your team? +- تعداد تیم شما چقدر است؟ - What does your dev cycle look like? Do you do waterfall/sprints/agile? - Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is the work/life balance? +- تصمیمات در تیم شما چگونه گرفته می شود؟ +- چند جلسه در هفته دارید؟ +- آیا احساس می کنید محیط کارتان به شما کمک می کند تمرکز کنید؟ +- بر روی چه مسئله ای کار می کنید؟ +- چه چیزی را درباره آن دوست داری؟ +- زندگی کاری چگونه است؟ +- تعادل کار و زندگی چگونه است؟ -## Once You've Got The Job +## وقتی شغل مورد نظر رو به دست آوردید -Congratulations! +تبریک می گویم! -Keep learning. +به یادگیری ادامه دهید. -You're never really done. +تازه اولشه --- ***************************************************************************************************** ***************************************************************************************************** - Everything below this point is optional. It is NOT needed for an entry-level interview. - However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. + از اینجا به بعد موارد اختیاری استو دانستن آنها برای مصاحبه سطح مقدماتی نیازی نیست. + با این حال، با مطالعه این موارد، بیشتر در معرض مفاهیم CS قرار خواهید گرفت و برای هر شغل مهندسی نرم افزار آمادگی بیشتری خواهید داشت. شما تبدیل به یک مهندس نرم افزار بسیار قوی تر خواهید شد. ***************************************************************************************************** ***************************************************************************************************** --- -## Additional Books +## کتاب های اضافی These are here so you can dive into a topic you find interesting. @@ -1355,19 +1351,18 @@ You're never really done. - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment -## System Design, Scalability, Data Handling +## طراحی سیستم، مقیاس پذیری، مدیریت داده ها -**You can expect system design questions if you have 4+ years of experience.** +**اگر بیش از 4 سال تجربه دارید باید انتظار سوالات درمورد طراحی سیستم داشته باشید.** -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: - - Scalability +- مقیاس‌پذیری و طراحی سیستم موضوعات بسیار بزرگی هستند که موضوعات و منابع زیادی دارند، زیرا هنگام طراحی یک سیستم نرم‌افزاری/سخت‌افزاری که می‌تواند مقیاس‌پذیر باشد، موارد زیادی باید در نظر گرفته شود.. + انتظار داشته باشید که زمان زیادی را صرف این موضوع کنید +- ملاحظات: + - مقیاس پذیری - Distill large data sets to single values - Transform one data set to another - Handling obscenely large amounts of data - - System design + - طراحی سیستم - features sets - interfaces - class hierarchies @@ -1467,12 +1462,12 @@ You're never really done. - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) -## Additional Learning +## یادگیری بیشتر I added them to help you become a well-rounded software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. -- ### Compilers +- ### کامپایلرها - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) @@ -1513,7 +1508,7 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### نظریه اطلاعات - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - More about Markov processes: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) @@ -1534,14 +1529,14 @@ You're never really done. - Make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) -- ### Cryptography +- ### رمزنگاری - Also see videos below - Make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- ### Compression +- ### فشرده سازی - Make sure to watch information theory videos first - Computerphile (videos): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) @@ -1573,7 +1568,7 @@ You're never really done. - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ### Parallel Programming +- ### برنامه نویسی موازی - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) @@ -1745,7 +1740,7 @@ You're never really done. - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) -- ### Math for Fast Processing +- ### ریاضی برای پردازش سریع - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) @@ -1755,7 +1750,7 @@ You're never really done. - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### برنامه نویسی خطی - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) @@ -1766,12 +1761,12 @@ You're never really done. - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math +- ### ریاضی گسسته - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) -- ### Machine Learning +- ### یادگیری ماشین - Why ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) @@ -1800,7 +1795,7 @@ You're never really done. --- -## Additional Detail on Some Subjects +## جزئیات بیشتر در مورد برخی از موضوعات I added these to reinforce some ideas already presented above, but didn't want to include them above because it's just too much. It's easy to overdo it on a subject. @@ -1886,7 +1881,7 @@ You're never really done. - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## مجموعه ویدیویی Sit back and enjoy. @@ -1946,7 +1941,7 @@ Sit back and enjoy. - [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## دوره های علوم کامپیوتر - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) @@ -1956,7 +1951,7 @@ Sit back and enjoy. - [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) -## Papers +## مقالات - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) From f7ec41eff4a4e1297ab2c39a4eccc48ca1d1780d Mon Sep 17 00:00:00 2001 From: Michael Yan Date: Tue, 16 Nov 2021 15:22:16 -0800 Subject: [PATCH 331/857] Added Simplify --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index e0b9b1d158..170056c95d 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

@@ -1214,6 +1230,9 @@ Graphs can be used to represent many problems in computer science, so this secti ## Find a Job +- [Simplify](https://simplify.jobs/?utm_source=github&utm_medium=coding-interview-university&utm_campaign=find_jobs) + - Simplify is a platform that offers curated lists of jobs like *Software Roles at Unicorns* and *SWE Roles at Big Tech Companies*. They also offer a + free browser extension that helps you autofill job applications on millions of sites. - [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) ## Interview Process & General Interview Prep From b059a4c4a1adf3b4c1897a40a58d3ca9802a1dac Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 16 Nov 2021 17:33:36 -0800 Subject: [PATCH 332/857] Formatting changes Formatting changes --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 170056c95d..cfa1386667 100644 --- a/README.md +++ b/README.md @@ -60,10 +60,10 @@ Special thanks to:

- -

+ +
+ Simplify +

Applying to jobs? Autofill all your applications in 1-click. @@ -72,8 +72,8 @@

Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites.
-
-

+ +


From 9cce78ee1c22b08447229adccebb88f89962a71b Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 16 Nov 2021 17:34:33 -0800 Subject: [PATCH 333/857] Format update Format update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfa1386667..385c93955c 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@

From ee094a1936fd8cc4302adc808b8840d96b9d1fee Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 16 Nov 2021 19:48:03 -0800 Subject: [PATCH 334/857] Updates sponsors for all languages. --- translations/README-ar.md | 16 +++++++ translations/README-bn.md | 16 +++++++ translations/README-cn.md | 16 +++++++ translations/README-de.md | 16 +++++++ translations/README-es.md | 16 +++++++ translations/README-fa.md | 16 +++++++ translations/README-fr.md | 16 +++++++ translations/README-he.md | 16 +++++++ translations/README-hi.md | 16 +++++++ translations/README-id.md | 16 +++++++ translations/README-ja.md | 16 +++++++ translations/README-kh.md | 16 +++++++ translations/README-ko.md | 18 +++++++- translations/README-pl.md | 17 +++++++- translations/README-ptbr.md | 16 +++++++ translations/README-ru.md | 30 ++++++++++--- translations/README-th.md | 16 +++++++ translations/README-tr.md | 26 ++++++++--- translations/README-tw.md | 16 +++++++ translations/README-uk.md | 16 +++++++ translations/README-ur.md | 16 +++++++ translations/README-uz.md | 86 ++++++++++++++++++++++--------------- translations/README-vi.md | 16 +++++++ 23 files changed, 416 insertions(+), 49 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 9f70723efb..150dc97ac6 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -52,6 +52,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-bn.md b/translations/README-bn.md index 9f2b967ffb..5d15c55f1e 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -53,6 +53,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-cn.md b/translations/README-cn.md index 9cc20392c8..72d6b463e5 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -16,6 +16,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-de.md b/translations/README-de.md index 1d57792cb3..1651e91898 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -53,6 +53,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-es.md b/translations/README-es.md index c256a5aa76..01e0bc7e8b 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -54,6 +54,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-fa.md b/translations/README-fa.md index 5cd527cdc4..6cb575eebb 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -59,6 +59,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-fr.md b/translations/README-fr.md index 1d73ade899..80f1e0d8d4 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -13,6 +13,22 @@ Traductions:

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-he.md b/translations/README-he.md index 13f4ed3e20..cd9351b02a 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -25,6 +25,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-hi.md b/translations/README-hi.md index 38457e1e6f..0a7dd74075 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -13,6 +13,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-id.md b/translations/README-id.md index 4b551c16f0..30c202d6d4 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -10,6 +10,22 @@ Versi asli: [Bahasa Inggris](../README.md)

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-ja.md b/translations/README-ja.md index 122db78afc..3610103c80 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -42,6 +42,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-kh.md b/translations/README-kh.md index 6d05777d22..f2f4595113 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -55,6 +55,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-ko.md b/translations/README-ko.md index 7ffb3c7078..cc0976a8de 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -53,13 +53,29 @@
-
+

Become a sponsor and support Coding Interview University!

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-pl.md b/translations/README-pl.md index f467e5b8a0..06e4ead5e1 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -52,6 +52,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

- ## Co to jest? To jest mój wielomiesięczny plan nauki od przejścia od programisty (samouka, bez dyplomu CS - informatyki) do inżyniera oprogramowania dla dużej firmy. diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index fc41d769f5..304cabec9c 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -48,6 +48,22 @@ Traduções em progresso:

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-ru.md b/translations/README-ru.md index 50225fa4c6..77b559beae 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -5,11 +5,27 @@

- Станьте спонсором и поддержите Coding Interview University! + Become a sponsor and support Coding Interview University!

Особые благодарности:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

- - Изначально интегрированный с GitLab, GitHub и Bitbucket, Gitpod автоматически, продолжительно и предварительно собирает - среды разработки всех ветвей (branches). В результате члены команды могут мгновенно приступить к написанию кода с новыми - средами разработки для каждой новой задачи - независимо от того, создаете ли вы новую функцию (feature), хотите исправить ошибку - или работаете над проверкой кода (code review). - + + Изначально интегрированный с GitLab, GitHub и Bitbucket, Gitpod автоматически, продолжительно и предварительно собирает + среды разработки всех ветвей (branches). В результате члены команды могут мгновенно приступить к написанию кода с новыми + средами разработки для каждой новой задачи - независимо от того, создаете ли вы новую функцию (feature), хотите исправить ошибку + или работаете над проверкой кода (code review). +

diff --git a/translations/README-th.md b/translations/README-th.md index c8b6683541..1efa9c3de4 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -34,6 +34,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-tr.md b/translations/README-tr.md index efb974586a..01389a9775 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -53,18 +53,34 @@

- Bulut için oluşturulmuş geliştirme ortamları + Dev environments built for the cloud

- GitLab, GitHub ve Bitbucket ile yerel olarak entegre olan Gitpod, tüm branchlarınız için otomatik olarak ve sürekli olarak geliştirme ortamları oluşturur. Sonuç olarak, ekip üyeleri her yeni görev için anında yeni geliştirme ortamlarıyla kodlamaya başlayabilir - ister yeni bir özellik oluşturuyor olun, ister bir hatayı düzeltmek istiyor olun, ister bir kod incelemesi üzerinde çalışıyor olun. + Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.

diff --git a/translations/README-tw.md b/translations/README-tw.md index 270dc642bb..f76fbf57e7 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -53,6 +53,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-uk.md b/translations/README-uk.md index 7bfeb0025f..4d415ab9cd 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -61,6 +61,22 @@ Microsoft.

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-ur.md b/translations/README-ur.md index 17f4534601..e150a67026 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -53,6 +53,22 @@

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

diff --git a/translations/README-uz.md b/translations/README-uz.md index 3d671d02f1..2270a31ec3 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -13,41 +13,57 @@ Asl versiyasi: [Inglizcha](../README.md) > *Sizga omad tilayman!* +
+

+ Become a sponsor and support Coding Interview University! +

+

+ Special thanks to: +

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+
+

+ +

+
+ Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
+
+
+

+
+

+ +

+
+

+ Dev environments built for the cloud +

+
+
+ Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. +
+
+

+
+
## Bu nima uchun kerak? diff --git a/translations/README-vi.md b/translations/README-vi.md index 4d62426f32..1d8629814a 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -37,6 +37,22 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Special thanks to:

+

+ +

+
+

+ Applying to jobs? Autofill all your applications in 1-click. +

+
+
+ Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. +
+
+

+

From 27993e0047fc2282bccf3d28f6699b292772720d Mon Sep 17 00:00:00 2001 From: Joona Yoon Date: Thu, 18 Nov 2021 13:16:47 +0900 Subject: [PATCH 335/857] Update headings and sync to main --- translations/README-ko.md | 163 ++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 85 deletions(-) diff --git a/translations/README-ko.md b/translations/README-ko.md index cc0976a8de..b5b1a7c9c4 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -127,7 +127,7 @@ - [이건 대체 뭐하는 건가요?](#이건-대체-뭐하는-건가요) - [이걸 왜 해야하죠?](#이걸-왜-해야하죠) - [어떻게 하면 되나요?](#어떻게-하면-되나요) -- [머리가 나쁘다고 자책하지 마세요](#-머리가-나쁘다고-자책하지-마세요) +- [머리가 나쁘다고 자책하지 마세요](#머리가-나쁘다고-자책하지-마세요) - [영상 자료에 관하여](#영상-자료에-관하여) - [프로그래밍 언어 선택하기](#프로그래밍-언어-선택하기) - [자료구조와 알고리즘에 대한 도서](#자료구조와-알고리즘에-대한-도서) @@ -148,12 +148,12 @@ - [큐](#큐) - [해시 테이블](#해시-테이블) - [추가 지식](#추가-지식) - - [이진 탐색/이진 검색](#binary-search) - - [비트 연산](#bitwise-operations) + - [이진 탐색/이진 검색](#이진-탐색) + - [비트 연산](#비트-연산) - [트리](#트리) - - [트리 - 배경지식](#trees---notes--background) - - [이진 탐색 트리(BST)](#binary-search-trees-bsts) - - [힙 / 우선순위 큐 / 이진 힙](#heap--priority-queue--binary-heap) + - [트리 - 배경 지식](#트리---배경-지식) + - [이진 탐색 트리 (BST)](#이진-탐색-트리-BST) + - [힙 / 우선순위 큐 / 이진 힙](#힙--우선순위-큐--이진-힙) - 균형 탐색 트리 (간단한 개념) - 트리 순회: 전위 순회, 중위 순회, 후위 순회, 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) - [정렬](#정렬) @@ -168,27 +168,25 @@ - 인접 행렬 - 인접 리스트 - 그래프 순회: 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS) -- [더 많은 지식](#even-more-knowledge) - - [재귀](#recursion) - - [동적 프로그래밍](#dynamic-programming) - - [객체 지향 프로그래밍](#object-oriented-programming) - - [디자인 패턴](#design-patterns) - - [조합 & 확률](#combinatorics-n-choose-k--probability) - - [NP와 NP-완전, 그리고 근사 알고리즘](#np-np-complete-and-approximation-algorithms) - - [캐시](#caches) - - [프로세스와 쓰레드](#processes-and-threads) +- [더 많은 지식](#더-많은-지식) + - [재귀 (recursion)](#재귀-recursion) + - [동적 프로그래밍 (Dynamic Programming)](#동적-프로그래밍-Dynamic-Programming) + - [디자인-패턴](#디자인-패턴) + - [조합과 확률](#조합과-확률) + - [NP, NP-완전, 근사 알고리즘](#NP-NP-완전-근사-알고리즘) + - [컴퓨터가 프로그램을 처리하는 방식](#컴퓨터가-프로그램을-처리하는-방식) + - [캐시](#캐시) + - [프로세스와 쓰레드](#프로세스와-쓰레드) - [테스트](#테스트) - - [스케줄링](#scheduling) - - [시스템 루틴의 구현](#implement-system-routines) - - [문자열 검색 & 조작](#string-searching--manipulations) - - [트라이](#tries) - - [부동 소수점](#floating-point-numbers) - - [유니코드](#unicode) + - [문자열 검색 & 조작](#문자열-검색--조작) + - [트라이](#트라이) + - [부동 소수점](#부동-소수점) + - [유니코드](#유니코드) - [엔디언(Endianness)](#endianness) - - [네트워크](#networking) + - [네트워크](#네트워크) - [최종 검토](#최종-검토) -### 직업 구하기 +### 구직 & 취업하기 - [면접이 얼마 남지 않았을 때](#면접이-얼마-남지-않았을-때) - [이력서](#이력서) @@ -635,34 +633,31 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info 이 페이지는 포인터가 포인터를 가리키는 것을 파악하는 정도입니다. 저는 아래 목록을 순서대로 읽지 않기를 권장합니다. 가독성과 유지 보수성이 더 좋기 때문입니다. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] 구현 (저는 tail 포인터가 있는 것과 없는 것 모두 구현했었습니다.): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] size() - 리스트 안의 데이터 개수를 반환한다. + - [ ] empty() - 리스트가 비어있다면 true를 반환한다. + - [ ] value_at(index) - index번째 위치의 value을 반환한다. (가장 앞은 0부터 시작한다.) + - [ ] push_front(value) - 가장 앞에 value를 추가한다. + - [ ] pop_front() - 가장 앞에 있는 것을 제거하고, 그 value를 반환한다. + - [ ] push_back(value) - 가장 끝에 value을 추가한다. + - [ ] pop_back() - 가장 끝에 있는 것을 제거하고, 그 value를 반환한다. + - [ ] front() - 가장 앞에 있는 것의 value를 가져온다. + - [ ] back() - 가장 끝에 있는 것의 value를 가져온다. + - [ ] insert(index, value) - index번째 위치에 value를 추가한다. 즉, index번째에 새로 추가된 것이 기존의 index번째에 있던 것을 가리킨다. + - [ ] erase(index) - index번째에 있는 노드를 삭제한다. + - [ ] value_n_from_end(n) - 뒤에서부터 n번째에 있는 노드의 value를 반환한다. + - [ ] reverse() - 리스트를 뒤집는다. + - [ ] remove_value(value) - value와 같은 값을 가지는 첫 번째 노드를 제거한다. - [ ] 이중 연결 리스트 - [설명 (영상)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - 구현할 필요는 없습니다. - ### 스택 - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### 큐 - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)05_04-priorityQueuesAndDeques.mp4) - [ ] tail 포인터가 있는 연결 리스트를 사용하여 구현하기: - enqueue(value) - tail이 가리키는 곳에 value를 추가한다 - dequeue() - value를 반환하고 가장 최근에 추가된 원소(front)를 제거한다. @@ -709,7 +704,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info ## 추가 지식 -- ### Binary search +- ### 이진 탐색 - [ ] [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) - [ ] [자세한 내용](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) @@ -717,7 +712,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - (정수가 정렬된 배열에서) 이진 탐색 - 재귀를 사용한 이진 탐색 -- ### Bitwise operations +- ### 비트 연산 - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] 비트 연산자(&, |, ^, ~, >>, <<) 제대로 이해하기 - [ ] [워드](https://en.wikipedia.org/wiki/Word_(computer_architecture)) @@ -745,7 +740,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info ## 트리 -- ### Trees - Notes & Background +- ### 트리 - 배경 지식 - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - 트리 기초 형태 만들기 - 순회 @@ -766,10 +761,8 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - 후위(postorder) (DFS: 왼쪽, 오른쪽, 자신) - 전위(preorder) (DFS: 자신, 왼쪽, 오른쪽) -- ### Binary search trees: BSTs +- ### 이진 탐색 트리 (BST) - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: @@ -796,7 +789,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] delete_value - [ ] get_successor // 값이 주어지면, 다음으로 가장 큰 값을, 없으면 -1을 반환 -- ### Heap / Priority Queue / Binary Heap +- ### 힙 / 우선순위 큐 / 이진 힙 - 트리처럼 보여지지만, 보통은 선형으로 저장됩니다. (배열, 링크드리스트처럼) - [ ] [힙(Heap)](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [소개 (영상)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) @@ -962,9 +955,9 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그래프 실습을 할 수 있습니다. -## Even More Knowledge +## 더 많은 지식 -- ### Recursion +- ### 재귀 (recursion) - [ ] 재귀와 백트래킹에 대한 스탠포드 대학 강의: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) @@ -975,7 +968,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [꼬리 재귀가 무엇이고 왜 그게 좋지 않은지에 대하여](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [꼬리 재귀 (영상)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) -- ### Dynamic Programming +- ### 동적 프로그래밍 (Dynamic Programming) - 인터뷰에서 DP 문제를 접하지 않을 수도 있습니다. 하지만 알고 있는게 미뤄두는 것 보다 낫습니다. - 이 주제는 아주 어렵습니다. DP로 풀리는 각 문제마다 어떤 점화식을 정의해야 하는데 그게 까다롭습니다. - 얽혀있는 패턴들을 확실히 이해할 때까지, 많은 DP 예시 문제들을 찾아보기를 권합니다. @@ -1001,14 +994,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - -- ### Design patterns +- ### 디자인 패턴 - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: + - [ ] 아래 패턴들을 배워봅시다: - [ ] strategy - [ ] singleton - [ ] adapter @@ -1035,7 +1023,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -- ### Combinatorics (n choose k) & Probability +- ### 조합과 확률 - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) @@ -1045,7 +1033,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - Just the videos - 41 (each are simple and each are short): - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms +- ### NP, NP-완전, 근사 알고리즘 - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. @@ -1066,7 +1054,15 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. -- ### Caches +- ### 컴퓨터가 프로그램을 처리하는 방식 + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### 캐시 - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) @@ -1075,24 +1071,24 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processes and Threads +- ### 프로세스와 쓰레드 - [ ] Computer Science 162 - Operating Systems (25 videos): - for processes and threads see videos 1-11 - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching + - 알아 두어야 할 것: + - 프로세스, 쓰레드, 동시성 문제들 + - 프로세스와 쓰레드의 차이점 + - 프로세스 + - 쓰레드 + - 락(Locks) + - 뮤텍스(Mutexes) + - 세마포어(Semaphores) + - Monitors + - 각각이 어떻게 동작하는지? + - 데드락(Deadlock) + - 라이브락(Livelock) + - CPU activity, 인터럽트(interrupts), 문맥 교환(context switching) - Modern concurrency constructs with multicore processors - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) @@ -1100,8 +1096,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - - How context switching is initiated by the operating system and underlying hardware + - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] concurrency in Python (videos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) @@ -1126,11 +1123,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [테스트 어떻게 작성하는지](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - 운영체제(OS)에서 어떻게 동작하는지 - - 운영 체제 관련 영상들에서 알아보실 수 있습니다. - -- ### String searching & manipulations +- ### 문자열 검색 & 조작 - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) @@ -1142,7 +1135,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 이 주제를 더 자세히 알고 싶으시다면, [몇몇 주제에 대한 세부사항](#몇몇-주제에-대한-세부사항)에서 "문자열 매칭" 섹션을 읽어보세요. -- ### Tries +- ### 트라이 - 트라이에는 여러 종류가 있다는 것을 유의하라. 어떤 건 접두사가 있는 데, 어떤 건 그렇지 않고 또 어떤 것은 경로 추적을 위해 비트 대신에 문자열을 사용한다. - 나는 코드만 읽었고, 구현은 안 했다. - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) @@ -1159,11 +1152,11 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Floating Point Numbers +- ### 부동 소수점 - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) -- ### Unicode +- ### 유니코드 - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) @@ -1174,7 +1167,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - Very technical talk for kernel devs. Don't worry if most is over your head. - The first half is enough. -- ### Networking +- ### 네트워크 - **만약 당신이 네트워크에 대한 경험이 있거나 operations engineer 또는 믿음직한 엔지니어가 되고 싶다면 받을 수 있는 질문들** - 즉, 알면 좋은 것들이다. - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) From 02671e4cd509b1ca2abcda08433addd344a2be5a Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 21 Nov 2021 10:42:14 -0800 Subject: [PATCH 336/857] Removes Italian translation issue. --- README.md | 1 - translations/README-ar.md | 1 - translations/README-bn.md | 1 - translations/README-de.md | 1 - translations/README-es.md | 1 - translations/README-fa.md | 1 - translations/README-ja.md | 1 - translations/README-kh.md | 1 - translations/README-ko.md | 1 - translations/README-pl.md | 1 - translations/README-ptbr.md | 1 - translations/README-tr.md | 1 - translations/README-tw.md | 1 - translations/README-uk.md | 1 - translations/README-ur.md | 1 - 15 files changed, 15 deletions(-) diff --git a/README.md b/README.md index 385c93955c..862de669e5 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-ar.md b/translations/README-ar.md index 150dc97ac6..e35bfa4c21 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -39,7 +39,6 @@ - [أردو](https://github.com/jwasham/coding-interview-university/issues/140) - [التايلندية](https://github.com/jwasham/coding-interview-university/issues/156) - [اليونانية](https://github.com/jwasham/coding-interview-university/issues/166) -- [الإيطالية](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-bn.md b/translations/README-bn.md index 5d15c55f1e..d807f7ccd0 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -39,7 +39,6 @@ -[উর্দু] (https://github.com/jwasham/coding-interview-university/issues/140) -[থাই] (https://github.com/jwasham/coding-interview-university/issues/156) -[গ্রীক] (https://github.com/jwasham/coding-interview-university/issues/166) --[ইতালি] (https://github.com/jwasham/coding-interview-university/issues/170) -[মালায়ালাম] (https://github.com/jwasham/coding-interview-university/issues/239) -[জাপানীজ ( 日本語)] (https://github.com/jwasham/coding-interview-university/issues/257) diff --git a/translations/README-de.md b/translations/README-de.md index 1651e91898..af569704f4 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -39,7 +39,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) diff --git a/translations/README-es.md b/translations/README-es.md index 01e0bc7e8b..3b82d25400 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -41,7 +41,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-fa.md b/translations/README-fa.md index 6cb575eebb..b283bacabf 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -46,7 +46,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-ja.md b/translations/README-ja.md index 3610103c80..0cbfd35c7c 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -32,7 +32,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [タイ語](https://github.com/jwasham/coding-interview-university/issues/156) - [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170)

diff --git a/translations/README-kh.md b/translations/README-kh.md index f2f4595113..1d7a927862 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -41,7 +41,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) diff --git a/translations/README-ko.md b/translations/README-ko.md index cc0976a8de..25af1021e6 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -47,7 +47,6 @@ - [우르두어](https://github.com/jwasham/coding-interview-university/issues/140) - [태국어](https://github.com/jwasham/coding-interview-university/issues/156) - [그리스어](https://github.com/jwasham/coding-interview-university/issues/166) -- [이탈리아어](https://github.com/jwasham/coding-interview-university/issues/170) - [말라얄람어](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-pl.md b/translations/README-pl.md index 06e4ead5e1..381825f9d5 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -38,7 +38,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 304cabec9c..3168e95f89 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -38,7 +38,6 @@ Traduções em progresso: - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170)

diff --git a/translations/README-tr.md b/translations/README-tr.md index 01389a9775..f7c5906ed9 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -45,7 +45,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) -- [İtalyanca](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-tw.md b/translations/README-tw.md index f76fbf57e7..5d3b166d4f 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -39,7 +39,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) diff --git a/translations/README-uk.md b/translations/README-uk.md index 4d415ab9cd..f9604c11e5 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -48,7 +48,6 @@ Microsoft. - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) diff --git a/translations/README-ur.md b/translations/README-ur.md index e150a67026..90b07263c4 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -39,7 +39,6 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/170) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) From 61bd41e8222a5d96bd3471b6c1ec2af91d75b2e3 Mon Sep 17 00:00:00 2001 From: "Micael Levi (lab)" Date: Sun, 5 Dec 2021 19:18:16 -0400 Subject: [PATCH 337/857] Add github workflow to check links --- .github/workflows/links_checker.yml | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 .github/workflows/links_checker.yml diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml new file mode 100644 index 0000000000..eb9a84695c --- /dev/null +++ b/.github/workflows/links_checker.yml @@ -0,0 +1,85 @@ +name: Links Checker + +on: + ## Allow triggering this workflow manually via GitHub CLI/web + workflow_dispatch: + + ## Run this workflow automatically every month + schedule: + - cron: '0 0 1 * *' + +jobs: + link_checker: + name: Check links and create automated issue if needed + runs-on: ubuntu-latest + timeout-minutes: 5 + env: + REPORT_FILE: links-report + steps: + ## Check out code using Git + - uses: actions/checkout@v2 + + - name: Check all links at README.md and translations files + id: lychee + uses: lycheeverse/lychee-action@v1.2.0 + with: + output: ${{ env.REPORT_FILE }} + format: markdown + ## Do not fail this step on broken links + fail: false + ## Allow pages replying with 200 (Ok), 204 (No Content), + ## 206 (Partial Content) in at most 20 seconds with HTML content. + args: >- + --verbose + --accept 200,204,206 + --headers "accept=text/html" + --timeout 20 + --max-concurrency 5 + --no-progress + README.md translations/*.md + env: + ## Avoid rate limiting when checking github.com links + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Lychee's exit code + ## https://github.com/lycheeverse/lychee#exit-codes + run: echo Lychee exit with ${{ steps.lychee.outputs.exit_code }} + + - name: Find the last report issue open + uses: micalevisk/last-issue-action@v1 + id: last_issue + with: + state: open + labels: | + report + automated issue + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create issue from report file + if: ${{ steps.last_issue.outputs.has_found == 'false' }} + uses: peter-evans/create-issue-from-file@v3 + with: + title: Link checker report + content-filepath: ${{ env.REPORT_FILE }} + issue-number: ${{ steps.last_issue.outputs.issue_number }} + labels: | + report + automated issue + + - name: Update last report open issue created + if: ${{ steps.last_issue.outputs.has_found == 'true' }} + uses: peter-evans/create-issue-from-file@v3 + with: + title: Link checker report + content-filepath: ${{ env.REPORT_FILE }} + issue-number: ${{ steps.last_issue.outputs.issue_number }} + labels: | + report + automated issue + + - name: Close last report open issue + if: ${{ steps.lychee.outputs.exit_code == 0 }} + uses: peter-evans/close-issue@v1 + with: + issue-number: ${{ steps.last_issue.outputs.issue_number }} From 8b84fcdeb281eb450d64a081a2afea5fe9b6680c Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 18 Dec 2021 17:07:12 -0800 Subject: [PATCH 338/857] Removes sponsorship. --- README.md | 19 ------------------- translations/README-ar.md | 16 ---------------- translations/README-bn.md | 16 ---------------- translations/README-cn.md | 16 ---------------- translations/README-de.md | 16 ---------------- translations/README-es.md | 16 ---------------- translations/README-fa.md | 16 ---------------- translations/README-fr.md | 16 ---------------- translations/README-he.md | 16 ---------------- translations/README-hi.md | 16 ---------------- translations/README-id.md | 16 ---------------- translations/README-ja.md | 16 ---------------- translations/README-kh.md | 16 ---------------- translations/README-ko.md | 16 ---------------- translations/README-pl.md | 16 ---------------- translations/README-ptbr.md | 16 ---------------- translations/README-ru.md | 16 ---------------- translations/README-th.md | 16 ---------------- translations/README-tr.md | 16 ---------------- translations/README-tw.md | 16 ---------------- translations/README-uk.md | 16 ---------------- translations/README-ur.md | 16 ---------------- translations/README-uz.md | 16 ---------------- translations/README-vi.md | 16 ---------------- 24 files changed, 387 deletions(-) diff --git a/README.md b/README.md index f32b06d824..c937878b77 100644 --- a/README.md +++ b/README.md @@ -58,22 +58,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

@@ -1229,9 +1213,6 @@ Graphs can be used to represent many problems in computer science, so this secti ## Find a Job -- [Simplify](https://simplify.jobs/?utm_source=github&utm_medium=coding-interview-university&utm_campaign=find_jobs) - - Simplify is a platform that offers curated lists of jobs like *Software Roles at Unicorns* and *SWE Roles at Big Tech Companies*. They also offer a - free browser extension that helps you autofill job applications on millions of sites. - [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) ## Interview Process & General Interview Prep diff --git a/translations/README-ar.md b/translations/README-ar.md index e35bfa4c21..18bf55c36f 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -51,22 +51,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-bn.md b/translations/README-bn.md index d807f7ccd0..cf214c7443 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -52,22 +52,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-cn.md b/translations/README-cn.md index 72d6b463e5..9cc20392c8 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -16,22 +16,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-de.md b/translations/README-de.md index af569704f4..6faa61c226 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -52,22 +52,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-es.md b/translations/README-es.md index 3b82d25400..849fb59e53 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -53,22 +53,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-fa.md b/translations/README-fa.md index b283bacabf..7df50dec01 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -58,22 +58,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-fr.md b/translations/README-fr.md index 80f1e0d8d4..1d73ade899 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -13,22 +13,6 @@ Traductions:

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-he.md b/translations/README-he.md index cd9351b02a..13f4ed3e20 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -25,22 +25,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-hi.md b/translations/README-hi.md index 0a7dd74075..38457e1e6f 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -13,22 +13,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-id.md b/translations/README-id.md index 30c202d6d4..4b551c16f0 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -10,22 +10,6 @@ Versi asli: [Bahasa Inggris](../README.md)

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-ja.md b/translations/README-ja.md index 0cbfd35c7c..22b6bf07d7 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -41,22 +41,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-kh.md b/translations/README-kh.md index 1d7a927862..a4329b77ec 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -54,22 +54,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-ko.md b/translations/README-ko.md index 0e1019bfa7..a9ca8e05be 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -59,22 +59,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-pl.md b/translations/README-pl.md index 381825f9d5..132b6982ca 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -51,22 +51,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 3168e95f89..52864ca353 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -47,22 +47,6 @@ Traduções em progresso:

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-ru.md b/translations/README-ru.md index 77b559beae..aa5715eb23 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -10,22 +10,6 @@

Особые благодарности:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-th.md b/translations/README-th.md index 1efa9c3de4..c8b6683541 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -34,22 +34,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-tr.md b/translations/README-tr.md index f7c5906ed9..6b492feda3 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -57,22 +57,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-tw.md b/translations/README-tw.md index 5d3b166d4f..4fc173ae39 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -52,22 +52,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-uk.md b/translations/README-uk.md index f9604c11e5..6cc5747d9b 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -60,22 +60,6 @@ Microsoft.

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-ur.md b/translations/README-ur.md index 90b07263c4..2ebd833760 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -52,22 +52,6 @@

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-uz.md b/translations/README-uz.md index 2270a31ec3..77fc34c07f 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -20,22 +20,6 @@ Asl versiyasi: [Inglizcha](../README.md)

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

diff --git a/translations/README-vi.md b/translations/README-vi.md index 1d8629814a..4d62426f32 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -37,22 +37,6 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Special thanks to:

-

- -

-
-

- Applying to jobs? Autofill all your applications in 1-click. -

-
-
- Stop manually re-entering your information. Simplify’s extension helps you autofill jobs & internship applications on millions of sites. -
-
-

-

From 15532d6308be55274276e76dd455ecb10d746fb2 Mon Sep 17 00:00:00 2001 From: zehra47 <73516108+zehra47@users.noreply.github.com> Date: Sun, 19 Dec 2021 10:16:04 +0530 Subject: [PATCH 339/857] Add resources for C language --- programming-language-resources.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 39023e292a..0b9ae8ecbc 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -9,6 +9,8 @@ - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=y5JmQItfFck) - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) + - [Complete C programming for beginners](https://youtu.be/KJgsSFOSQv0) + - C++ - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) - [STL Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf) From ad80b6bdc9c55467bf889b63ddbc2ee879f08848 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 20 Dec 2021 20:22:26 +0200 Subject: [PATCH 340/857] Created README file for bulgarian translation --- translations/README-bg.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 translations/README-bg.md diff --git a/translations/README-bg.md b/translations/README-bg.md new file mode 100644 index 0000000000..e69de29bb2 From 0a32f7650857732405a07f00a81acca6d294920f Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 20 Dec 2021 20:34:07 +0200 Subject: [PATCH 341/857] Translated the introduction --- translations/README-bg.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index e69de29bb2..395a0c30a2 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -0,0 +1,11 @@ +# Coding Interview University + +> Първоначално създадох това като кратък списък с теми за учене, за ставане на софтуерен инженер, но то се разрасна до този огромен списък, който виждате в момента. След като преминах през този учебен план, [бях нает като софтуерен инженер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Най-вероятно няма да Ви се налага да учите колкото мен, но все пак всичко, от което се нуждаете е тук. +> +> Учих по около 8-12 часа на ден за няколко месеца. Това е историята ми: [Why I studies full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Моля обърнете внимание:** Няма да Ви се налага да учите колкото мен. Загубих много време, учейки неща, които нямах нужда да знам. Може да прочетете повече за това надолу. Ще Ви помогна да достигнете до крайната цел без да прахосвате скъпото си време. +> +> Темите, изредени тук, ще Ви подготвят добре за техническо интервю за почти всяка една компания, включително гигантите Amazon, Facebook, Google и Microsoft +> +> _Пожелавам Ви успех!_ From 6f39ff99343f73116d2f6cb58d50d2872b2cd9c0 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 20 Dec 2021 21:14:44 +0200 Subject: [PATCH 342/857] Translated part of the table of contents --- translations/README-bg.md | 216 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 395a0c30a2..4c81eb77d2 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -9,3 +9,219 @@ > Темите, изредени тук, ще Ви подготвят добре за техническо интервю за почти всяка една компания, включително гигантите Amazon, Facebook, Google и Microsoft > > _Пожелавам Ви успех!_ + +
+Преводи: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) + +
+ +
+Текущи преводи: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Bulgarian](https://github.com/jwasham/coding-interview-university/issues/1032) + +
+ +
+ +## Какво е това? + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Това е моят многомесечен план за ставане на софтуерен инженер към голяма компания. + +**Изисквания:** + +- Малко опит с програмиране (променливи, цикли, методи/функции и т.н) +- Търпение +- Време + +Забележете, че това е учебен план за **софтуерно инженерство**, а не уеб разработка. Големите компании като Google, Amazon, Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани с софтуерно инженерство/разработка + +--- + +## Съдържание + +### Учебният план + +- [Какво е това?](#какво-е-това) +- [Защо да го ползвате?](#защо-да-го-ползвате) +- [Как да го ползвате?](#как-да-го-ползвате) +- [Не мислете, че не сте достатъчно умни](#не-мислете-че-не-сте-достатъчно-умни) +- [Бележка за видео ресурсите](#бележка-за-видео-ресурсите) +- [Изберете език за програмиране](#изберете-език-за-програмиране) +- [Книги за структури от данни и алгоритми](#книги-за-структури-от-данни-и-алгоритми) +- [Книги за подготовка за интервю](#книги-за-подготовка-за-интервю) +- [Не повтаряйте грешките ми](#не-повтаряйте-грешките-ми) +- [Какво няма да намерите тук](#какво-няма-да-намерите-тук) +- [Дневния план](#дневния-план) +- [Подготовка за въпроси за програмиране](#подготовка-за-въпроси-за-програмиране) +- [Задачи по програмиране](#задачи-по-програмиране) + +### Теми за учене + +- [Алгоритмична сложност / Big-O / Асимптотичен анализ](#алгоритмична-сложност--big-o--асимптотичен-анализ) +- [Data Structures](#data-structures) + - [Масиви (Arrays)](#масиви) + - [Свързани списъци(Linked Lists)](#свързани-списъци) + - [Стек (Stack)](#стек) + - [Опашка (Queue)](#опашка) + - [Хеш таблици (Hash table)](#хеш-таблици) +- [Повече знания](#повече-знания) + - [Двоично търсене (Binary search)](#двоично-търсене) + - [Побитови операции (Bitwise operations)](#побитови-операции) +- [Дървета](#дървета) + - [Дървета - бележки & основи](#дървета---бележки--основи) + - [Дървета за двоично търсене: BSTs (Binary search trees)](#дървета-за-двоично-търсене-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - балансирани дървета за търсене (основна концепция, без детайли) + - обхождане: preorder, inorder, postorder, BFS, DFS +- [Сортиране (Sorting)](#сортиране) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Графи (Graphs)](#графи) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Още повече знания](#още-повече-знания) + - [Рекурсия (Recursion)](#рекурсия) + - [Динамично програмиране (Dynamic programming)](#динамично-програмиране) + - [Design Patterns](#design-patterns) + - [Комбинаторика & вероятности](#комбинаторика--вероятности) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Как компютрите обработват една програма](#как-компютрите-обработват-една-програма) + - [Кеширане (Caches)](#кеширане) + - [Processes and Threads](#processes-and-threads) + - [Тестване (Testing)](#тестване) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Уникод (Unicode)](#уникод) + - [Endianness](#endianness) + - [Мрежи (Networking)](#мрежи) +- [Последен преглед](#последен-преглед) + +### Как да спечелите позицията + +- [Актуализирайте резюмето си](#актуализирайте-резюмето-си) +- [Намерете позиция](#намерете-позиция) +- [Процесът на интервюто & обща подготовка](#процесът-на-интервюто--обща-подготовка) +- [Мислете за това, когато дойде интервюто](#мислете-за-това-когато-дойде-интервюто) +- [Подгответе въпроси за интервюиращия](#подгответе-въпроси-за-интервюиращия) +- [След като са Ви наели](#след-като-са-ви-наели) + +**---------------- Всичко оттук надолу е по желание ----------------** + +### Допълнителни теми и ресурси + +- [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A\*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- From 18c135f5f7d4dd929f99535c8f9e6c0106d69f56 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 21 Dec 2021 11:15:00 +0200 Subject: [PATCH 343/857] Translated everything to line 294 --- translations/README-bg.md | 70 +++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 21 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 4c81eb77d2..20f3ecd22d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -121,7 +121,7 @@ ### Теми за учене - [Алгоритмична сложност / Big-O / Асимптотичен анализ](#алгоритмична-сложност--big-o--асимптотичен-анализ) -- [Data Structures](#data-structures) +- [Структури от данни](#структури-от-данни) - [Масиви (Arrays)](#масиви) - [Свързани списъци(Linked Lists)](#свързани-списъци) - [Стек (Stack)](#стек) @@ -156,7 +156,7 @@ - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - [Как компютрите обработват една програма](#как-компютрите-обработват-една-програма) - [Кеширане (Caches)](#кеширане) - - [Processes and Threads](#processes-and-threads) + - [Процеси и нишки](#процеси-и-нишки) - [Тестване (Testing)](#тестване) - [String searching & manipulations](#string-searching--manipulations) - [Tries](#tries) @@ -179,29 +179,29 @@ ### Допълнителни теми и ресурси -- [Additional Books](#additional-books) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Допълнителни книги](#допълнителни-книги) +- [Системен дизайн, мащабируемост, обработка на данни](#системен-дизайн-мащабируемост-обработка-на-данни) (ако имате над 4 години опит) - [Additional Learning](#additional-learning) - - [Compilers](#compilers) + - [Компилатори](#компилатори) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) + - [Паритет & код на Хаминг](#паритет--код-на-хаминг) + - [Ентропия](#ентропия) + - [Криптография](#криптография) + - [Компресия](#компресия) + - [Компютърна сигурност](#компютърна-сигурност) - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [Паралелно програмиране](#паралелно-програмиране) + - [Системи за съобщения, сериализация и queueing](#системи-за-съобщения-сериализация-и-queueing) - [A\*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) + - [Разширени структури от данни](#разширени-структури-от-данни) + - [Балансирани дървета за търсене](#балансирани-дървета-за-търсене) - AVL trees - Splay trees - Red/black trees @@ -211,17 +211,45 @@ - B-Trees - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) + - [Мрежови потоци](#мрежови-потоци) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [Математика за бърза обработка](#математика-за-бърза-обработка) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) + - [Линейно програмиране](#линейно-програмиране) - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) + - [Дискретна математика](#дискретна-математика) - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) +- [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) +- [Видео серии](#видео-серии) +- [Курсове по компютърни науки](#курсове-по-компютърни-науки) - [Papers](#papers) --- + +## Защо да го ползвате? + +Ако искате да работите като софтуерен инженер в голяма компания, това са нещата, които трябва да знаете. + +Ако също като мен не сте учили компютърни науки в университет това ще Ви помогне да наваксате и ще Ви спести години. + +Когато започнах този проект не знаех какво е стек или опашка, нямах представа какво е Big-O, не знаех нищо за дървета или как да обхождам графи. Ако трябваше да напиша сортиращ алгоритъм мога да Ви кажа, че бих се справил ужасно. Всяка от структурите от данни, които бях използвал досега бяха имплементирани в езика, който ползвах и нямах представа как работят реално. Никога не ми се беше налагало да управлявам памет освен ако някой от процесите, които бях пуснал не връщаха грешка "out of memory"- тогава се налагаше да търся заобиколен път. Бях ползвал хиляди асоциативни масиви и многоизмерни масиви няколко пъти, но никога преди не бях имплементирал структури от данни от нулата. + +Планът е дълъг. Може да Ви отнеме месеци. Ако вече сте запознати с повечето от темите ще Ви отнеме многи по-малко + +## Как да го ползвате + +Всичко надолу е само схематично изложение и трябва да преминете през темите от горе до долу. + +## Не мислете, че не сте достатъчно умни + +- Успешните софтуерни инженери са умни, но много имат чувството, че не са достатъчно умни +- [Митът за гениалния програмист](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Опасно е да сте сами: битката с невидимите чудовища в IT](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Бележка за видео ресурсите + +Някои видеа са достъпни само след записване в курс на Coursera или EdX- т.нар. MOOCs. Понякога се налага да изчакате няколко месеца, за да стартира ново издание на курса, така че няма да имате достъп до тях. + +Би било чудесно такива ресурси да бъдат заменену с безплатни и винаги-достъпни публични източници като YouTube видеота (по възможност университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. + +## Изберете език за програмиране From b120b343d7b1cd31a66701ecebd2fb9b17d13b5f Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 21 Dec 2021 17:41:44 +0200 Subject: [PATCH 344/857] Translate everything until line 508 --- translations/README-bg.md | 196 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 20f3ecd22d..f1728b996e 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -253,3 +253,199 @@ Би било чудесно такива ресурси да бъдат заменену с безплатни и винаги-достъпни публични източници като YouTube видеота (по възможност университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. ## Изберете език за програмиране + +Трябва да изберете език за програмиране за интервютата на които ще се явявате, но също така трябва да изберете език, който можете да ползвате за учене на концепции от компютърните науки. + +Желателно е този език да е един и същ, така ще Ви се налага да владеете само един език. + +### За този учебен план + +Когато преминавах през учебния план ползвах 2 езика за по-голямата част от нещата: C и Python + +- C: Език на много ниско ниво. Дава Ви възможност да се справяте с пойнтъри и управляване на паметта, за да разберете структурите от данни и алгоритмите на много дълбоко ниво. В езици за програмиране на по-високо ниво тези неща са скрити от Вас. В ежедневната работа това е прекрасно, но когато се учите как тези структури от данни работят е хубаво да усещате как става всичко. + - C е навсякъде. Ще виждате примери в книги, лекции, видеа _навсякъде_ докато учите. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Това е кратка книга, но ще Ви даде добра представа за езика и с малко упражнения бързо ще имате добро владение над него. Ако разбирате C значи разбирате как програмите и паметта работят. + - Не трябва да се зачитате много надълбоко в книгата (или дори да я прочитате докрай). Нужно е само да сте уверени в способността си да четете и пишете в C. + - [Отговори на въпросите в книгата](https://github.com/lekkas/c-algorithms) +- Python: модерен и много експресивен. Научих го защото е наистина много полезен и ми позволява да пиша по-малко код когато съм на интервю. + +Това е моя личен избор. Вие можете да изберете каквото пожелаете, разбира се. + +Може да не Ви трябват, но ето някои сайтове за учене на нов език: + +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +### За интервюто Ви по програмиране + +Може да изберете език, в който се чувствате комфортно за интервюто Ви, но за големите компании това са най-добрите опции: + +- C++ +- Java +- Python + +Може да ползвате и тези, но поразгледайте преди това, защото може да има уловки: + +- JavaScript +- Ruby + +Това е статия, която написах за избирането на език за вашето интервю: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Това е оригиналната статия, на която базирах моя пост: 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) + +## Книги за структури от данни и алгоритми + +Тази книга ще положи вашата основа в компютърните науки. + +Просто изберете една в език, с който ще се чувствате комфортно. Ще трябва да четете и да пишете код доста. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Основни познания, структури от данни, сортиране, търсене и алгоритми за графи + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - от Goodrich, Tamassia, Goldwasser + - Тази книга ми допадна много. Покрива всичко и още нещо + - 'Питоничен' код + - Докладът ми за тази книга: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Изборът е ваш: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Безплатен курс в Coursera, който покрива материала от книгата (воден от писателите!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +Изборът е ваш: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Книги за подготовка за интервю + +Няма нужда да купувате цял куп от тези книги. Честно казано "Cracking the Coding Interview" най-вероятно ще Ви бъде достатъчна, но аз си купих повече, за да се упражня по-добре. Но аз винаги правя прекалено много. + +Купих тези двете, дадоха ми предостатъчно упражнение. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Отговори в C++ и Java + - Това е добра подготовка за "Cracking the Coding Interview" + - Не е прекалено сложна. Повечето проблеми са по-лесни от тези, които ще срещнете на интервю (от това, което аз съм прочел) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - отговори в Java + +### Ако имате изобилие от време: + +Изберете една: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +## Не повтаряйте грешките ми + +Този списък се разрасна с времето и да, нещата излязоха извън контрол. + +Споделям някои от грешките, които направих, за да имате по-добро преживяване и за да си спестите месеци с време. + +### 1. Няма да запомните всичко + +Изгледах часове с клипове и водих записки за всичко, но след месеци имаше доста неща, които не си спомнях. Прекарах 3 дена преразглеждайки бележките си, за да си припомня някои неща. Не се нуждаех от всичките тези знания. + +Моля, прочетете това, за да не повторите грешките миЛ + +[Да запазваме знания свързани с компютърни науки](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Използвайте флаш карти + +За да се справя с проблема си направих малък сайт за флаш карти, където можех да добавям 2 вида карти: общи и такива с код. Всяка карта има ралично форматиране. Направих сайта mobile-first, за да мога да ги разглеждам от телефона или таблета си, навсякъде където съм. + +Направете свои безплатно: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**НЕ ПРЕПОРЪЧВАМ да ползвате моите флаш карти.** Има прекалено много и някои от тях съдържат информация, която не е нужно да знаете. + +Но ако не искате да ме послушате, ето: + +- [Базата ми от данни с флаш карти (1200 карти)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Базата ми от данни с флаш карти (екстремно - 1800 карти)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Забележете, че аз прекалих и имам карти, които покриват всичко от assembly language и Python Trivia до machine learning и статистика. Прекалено много е за това, което се изисква. + +**Бележка за флаш картите:** Първия път когато видите, че знаете отговора, не я отбелязвайте като "позната". Трябва да видите същата карта и отговора няколко пъти, преди наистина да знаете отговора. Повторението ще накара мозъка Ви наистина да запамети знанието. + +### 3. Решавайте задачи от интервюта по програмиране докато учите + +ТОВА Е МНОГО ВАЖНО. + +Почнете да решавате задачи от интервюта по програмиране докато учите структури от данни и алгоритми. + +Трябва да прилагате това, което учите като решавате задачи иначе ще забравите. Аз направих тази грешка. + +Когато сте научили някоя тема и се чувствате що годе комфортно с нея, например **linked lists**: + +1. Отворете една от [книгите за интервю за програмиране](#interview-prep-books) (или един от сайтовете със задачи, изредени по-долу) +1. Решете 2-3 задачи свързани с linked lists. +1. Продължете към следващата тема. +1. По-късно се върнете и отново решете 2-3 задачи свързани с linked lists. +1. Повтаряйте това с всяка нова тема, която учите. + +**Продължавайте да решавате задачи докато учите всичко това, а не след това.** + +Няма да ви наемат за знанията, които имате, а за това как ги прилагате. + +Има много ресурси свързани с това надолу. Продължавайте да четете. + +### 4. Фокусирайте се + +Има много неща, които могат да отвлекат вниманието Ви и да Ви загубят ценно време. Да сте концентрирани е трудно. Пуснете си музика без текст и ще можете да се фокусирате сравнително добре. + +## Какво няма да намерите тук + +Това са широко разпространени технологии, но не и част от учебния план: + +- SQL +- Javascript +- HTML, CSS, и други front-end технологии + +## Дневния план + +Този курс преминава през множество от теми. Всяка от тях най-вероятно ще Ви отнеме няколко дена или дори седмица, или повече. Зависи от графика Ви. + +Всеки ден взимайте следващата тема в списъка, изгледайте няколко клипа по тази тема и след това напишете имплементацията на въпросната структура от данни или алгоритъм в езика за програмиране, който сте избрали за този курс. + +Можете да видите моя код тук: + +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) + +Не е нужно да помните всеки алгоритъм наизуст. Необходимо е просто да ги разбирате достатъчно добре, за да можете да напишете собствена имплементация. From 09c6459402b324d36d377b6b92c0bc7a36cb57b6 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 21 Dec 2021 17:43:52 +0200 Subject: [PATCH 345/857] Fixed typo in link --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index f1728b996e..9231e29122 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -412,7 +412,7 @@ Когато сте научили някоя тема и се чувствате що годе комфортно с нея, например **linked lists**: -1. Отворете една от [книгите за интервю за програмиране](#interview-prep-books) (или един от сайтовете със задачи, изредени по-долу) +1. Отворете една от [книгите за интервю за програмиране](#книги-за-подготовка-за-интервю) (или един от сайтовете със задачи, изредени по-долу) 1. Решете 2-3 задачи свързани с linked lists. 1. Продължете към следващата тема. 1. По-късно се върнете и отново решете 2-3 задачи свързани с linked lists. From d20e67c7622382d6ce703ae9aa4d02ba2c551c37 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 21 Dec 2021 20:48:38 +0200 Subject: [PATCH 346/857] Translated everything to line 600 --- translations/README-bg.md | 91 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 9231e29122..2a4e78286d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -449,3 +449,94 @@ - [Python](https://github.com/jwasham/practice-python) Не е нужно да помните всеки алгоритъм наизуст. Необходимо е просто да ги разбирате достатъчно добре, за да можете да напишете собствена имплементация. + +## Подготовка за въпроси за програмиране + + Защо това е тук? Аз не съм готов да се явя на интервю. + +[Тогава се върни и прочети това.](#3-решавайте-задачи-от-интервюта-по-програмиране-докато-учите) + +Защо трябва да се упражнявате да решавате задачи по програмиране: + +- Разпознаване на проблеми и знанието кога и къде да ползвате дадена структура от данни или алгоритъм +- Събиране на изискванията за задачата +- Изговаряне на мислите Ви докато решавате както ще правите на интервюто +- Писане на код върху дъска или лист хартия вместо на компютър +- Намиране на времевата и пространствената сложност на решенията Ви (вижте Big-O надолу) +- Тестване на решенията Ви + +Пишете код на дъска или лист хартия вместо на компютър. Тествайте с няколко различни входни данни. След това го напишете и тествайте на компютър. + +Ако нямате дъска за писане вкъщи можете да си купите голям тефтер от магазин за арт материали. Можете просто да седите на дивана и да се упражнявате. Това е моята "дъска за дивана". Добавих химикала към снимката за съпоставка на размера. Ако използвате химикал бързо ще ви се поиска да можеше да триете написаното- бързо става мазало. **Аз ползвам молив и гума.** + +![моята дъска за дивана](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**Когато се упражнявате да решавате задачи по програмиране не трябва да помните решенията наизуст.** + +## Задачи по програмиране + +Не забравяйте основните книги за подготовка за интервюто по програмиране [тук](#книги-за-подготовка-за-интервю) + +Решаване на задачи: + +- [Как да намерим решение](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) +- [Как да направим дисекция на условие на задача от Topcoder](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) + +Клипове за задачи от интервюта по програмиране: + +- [IDeserve (88 клипа)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 плейлисти)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Супер за насоки за решаване на задачи +- [Nick White - LeetCode Solutions (187 клипа)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Добро обяснение на решението и кода + - Можете да изгледате няколко клипа в малък прозорец от време +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Сайтове със задачи: + +- [LeetCode](https://leetcode.com/) + - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. + - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) + +## Да започваме + +Добре, стига сме говорили, нека да учим! + +Но не забравяйте да решавате задачи от източниците по-горе докато учите! + +## Алгоритмична сложност / Big-O / Асимптотичен анализ + +- Няма нищо за имплементация тук, единствено ще гледате клипове и ще си водите записки! Йей! +- Има доста клипове тук. Просто изгледайте достатъчно докато не го разберете. Винаги можете да се върнете обратно и да преговорите. +- Не се притеснявайте ако не разбирате всичката математика, която стои отзад. +- Трябва просто да можете да изразите сложността на даден алгоритъм чрез Big-O +- [ ] [Harvard CS50 - Asymptotic Notation (клип)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (общ наръчник) (клип)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (и Omega, и Theta) - най-доброто математично обяснение (клип)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](https://archive.org/details/lecture2_202008) +- [ ] [UC Berkeley Big O (клип)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Амортизиран анализ (клип)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Пищови](http://bigocheatsheet.com/) + +Е, това е достатъчно за тази тема. + +Когато четете "Cracking the Coding Interview" ще срещнете главата, която разглежда тази тема. Накрая на главата има кратък тест, който проверява дали можете да намерите сложността на различни алгоритми. Това е супер преговор и тест. + +## Структури от данни + +- ### Масиви + - [ ] За масивите: + - [Arrays (клип)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (клип)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Dynamic Arrays (клип)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (клип)](https://www.youtube.com/watch?v=1jtrQqYpt7g) From 693b8755a32cbce01c9cb8a7507f1dc456215fda Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 22 Dec 2021 22:09:12 +0200 Subject: [PATCH 347/857] Translated everything to line 709 --- translations/README-bg.md | 121 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 117 insertions(+), 4 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 2a4e78286d..34484f5c87 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -185,7 +185,7 @@ - [Компилатори](#компилатори) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) + - [Information theory](#information-theory-клипs) - [Паритет & код на Хаминг](#паритет--код-на-хаминг) - [Ентропия](#ентропия) - [Криптография](#криптография) @@ -216,7 +216,7 @@ - [Математика за бърза обработка](#математика-за-бърза-обработка) - [Treap](#treap) - [Линейно програмиране](#линейно-програмиране) - - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Geometry, Convex hull](#geometry-convex-hull-клипs) - [Дискретна математика](#дискретна-математика) - [Machine Learning](#machine-learning) - [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) @@ -496,7 +496,7 @@ - [LeetCode](https://leetcode.com/) - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. - - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. + - Вижте клиповете на Nick White и FisherCoder клипs по-горе за насоки със някои задачи. - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) @@ -519,7 +519,7 @@ - [ ] [Big O Notations (общ наръчник) (клип)](https://www.youtube.com/watch?v=V6mKVRU1evU) - [ ] [Big O Notation (и Omega, и Theta) - най-доброто математично обяснение (клип)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [клип](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [slides](https://archive.org/details/lecture2_202008) - [ ] [UC Berkeley Big O (клип)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [ ] [Амортизиран анализ (клип)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) @@ -535,8 +535,121 @@ ## Структури от данни - ### Масиви + - [ ] За масивите: - [Arrays (клип)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (клип)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - [Dynamic Arrays (клип)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Jagged Arrays (клип)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Имплементирайте вектор (променлив масив с автоматично преоразмеряване): + - [ ] Упражнявайте се да пишете код, ползвайки масиви и пойнтъри. Ползвайте пойнтъри за преместване към индекс вместо индексиране + - [ ] New raw data array with allocated memory + - 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 + - [ ] size() - номер на елементите + - [ ] capacity() - номер на елементите, които може да побира + - [ ] is_empty() + - [ ] at(index) - връща елемента на дадения индекс, ако индекса е извън границите на масива връща грешка + - [ ] push(item) + - [ ] insert(index, item) - вкарва елемента на дадения елемент, измествайки съществуващия елемент на този индекс и всички елементи след него надясно + - [ ] prepend(item) - може да добавя елементи на индекс 0 + - [ ] pop() - премахва елемент от края и връща стойността му + - [ ] delete(index) - изтрива елемента на дадения индекс и измества всички елементи след него наляво + - [ ] remove(item) - търси стойността на елемента и премахва всички индекси, които я съдържат + - [ ] find(item) - търси стойността на елемента и връща първия индекс, който я съдържа, или -1 ако няма такъв елемент + - [ ] resize(new_capacity) // private function + - когато достигнете максималния обем, преоразмерете като дублирате обема + - когато pop-вате елемент, ако обема на масива е 1/4 от капацитета му, преоразмерете масива наполовина + - [ ] Време + - O(1) за добавяне/премахване към края, индексиране или актуализиране + - O(n) за добавяне/премахване другаде + - [ ] Пространство + - contiguous in memory, so proximity helps performance + - нужно място = (капацитета на масива, който е >= n) \* размера на елемента, но дори 2n, пак е O(n) + +- ### Свързани списъци + + - [ ] Описание: + - [ ] [Единично свързани списъци (клип)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [CS 61B - Linked Lists 1 (клип)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (клип)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [Код в C (клип)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - не цялото видео, само частите за Node structs и алокация на памет + - [ ] Свързани списъци срещу масиви: + - [Core Linked Lists Vs Arrays (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Свързани списъци срещу масиви в истинския свят (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [Защо да избягваме свързаните списъци (клип)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Аха: трябват Ви pointer to pointer знания: + (за да можете да подавате pointer към функция, която може да промени адреса, към който сочи pointer-a) + Тази страница служи само да схванете ptr to ptr. Не препоръчвам този стил на обхождане на списъка. Четливостта и поддържаемостта страдат заради хитрости. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Имплементация: + - [ ] size() - връща броя на елементите + - [ ] empty() - булева стойност, връща true ако списъка е празен + - [ ] value_at(index) - връща стойността на n-тия елемент (почвайки от 0 за първия елемент) + - [ ] push_front(value) - добавя стойност към началото на списъка + - [ ] pop_front() - премахва първия елемент и връща стойността му + - [ ] push_back(value) - добавя елемент към края + - [ ] pop_back() - премахва последния елемент и връща стойността му + - [ ] front() - взима стойността на първия елемент + - [ ] back() - взима стойността на последния елемент + - [ ] insert(index, value) - вкарва елемента на дадения индекс, така че новия елемент да сочи към стария елемент на този индекс + - [ ] erase(index) - изтрива node-а на дадения индекс + - [ ] value_n_from_end(n) - връща стойността на node-а, седящ на позиция n от края на списъка + - [ ] reverse() - обръща списъка + - [ ] remove_value(value) - премахва първия елемент от списъка, съдържащ тази стойност + - [ ] Двойно свързан списък + - [Описание (клип)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Няма нужда от имплементация + +- ### Стек + + - [ ] [Стекове (клип)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Няма нужда да се имплементира. Имплементацията с масив е тривиална. + +- ### Опашка + + - [ ] [Опашка (клип)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Имплементирайте със свързан списък с tail pointer: + - enqueue(value) - добавя стойност на опашката + - dequeue() - връща стойността и премахва най-предния елемент на опашката (front) + - empty() + - [ ] Имплементрайте с масив с фиксирана големина: + - enqueue(value) - добавя елемента в края на наличното пространство + - dequeue() - връща стойността и премахва най-предния елемент на опашката + - empty() + - full() + - [ ] Разход: + - лоша имплементация, ползвайки свързан списък където правим enqueue в началото и dequeue в края би била O(n) + защото ще се нуждаете от предпоследния елемент, което ще предизвиква цялостно обхождане при всяко dequeue + - enqueue: O(1) (amortized, свъзран списък и масив [probing]) + - dequeue: O(1) (свъзран списък и масив) + - empty: O(1) (свъзран списък и масив) + +- ### Хеш таблици + + - [ ] Клипове: + + - [ ] [Hashing with Chaining (клип)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (клип)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Cryptographic Hashing (клип)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (клип)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (клип)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (клип)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(За напреднали) Perfect hashing (клип)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Онлайн курсово: + + - [ ] [Core Hash Tables (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (клип)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (клип)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (клип)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (клип)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Имплементирайте с масив, ползвайки linear probing + - hash(k, m) - m е размера на хеш таблицата + - add(key, value) - ако ключа съществува актуализирайте стойността + - exists(key) + - get(key) + - remove(key) From 15ca1340043dc4330c989a52124392e7cb0e1b59 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Sat, 25 Dec 2021 19:56:18 +0200 Subject: [PATCH 348/857] Translate everything to line 745 --- translations/README-bg.md | 46 ++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 34484f5c87..bca541894d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -185,7 +185,7 @@ - [Компилатори](#компилатори) - [Emacs and vi(m)](#emacs-and-vim) - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-клипs) + - [Information theory](#information-theory-videos) - [Паритет & код на Хаминг](#паритет--код-на-хаминг) - [Ентропия](#ентропия) - [Криптография](#криптография) @@ -216,7 +216,7 @@ - [Математика за бърза обработка](#математика-за-бърза-обработка) - [Treap](#treap) - [Линейно програмиране](#линейно-програмиране) - - [Geometry, Convex hull](#geometry-convex-hull-клипs) + - [Geometry, Convex hull](#geometry-convex-hull-videos) - [Дискретна математика](#дискретна-математика) - [Machine Learning](#machine-learning) - [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) @@ -496,7 +496,7 @@ - [LeetCode](https://leetcode.com/) - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. - - Вижте клиповете на Nick White и FisherCoder клипs по-горе за насоки със някои задачи. + - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) @@ -638,12 +638,12 @@ - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (клип)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(За напреднали) Perfect hashing (клип)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] Онлайн курсово: + - [ ] Онлайн курсовe: - [ ] [Core Hash Tables (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Data Structures (клип)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (клип)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] distributed hash tables: + - [ ] Дистрибутирани хеш таблици: - [Instant Uploads And Storage Optimization In Dropbox (клип)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (клип)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) @@ -653,3 +653,39 @@ - exists(key) - get(key) - remove(key) + +## Повече знания + +- ### Двоично търсене + - [ ] [Binary Search (клип)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Binary Search (клип)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [детайли](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] Имплементирайте: + - двоично търсене (на сортиран масив от integers) + - двоично търсене чрез рекурсия +- ### Побитови операции + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - трябва да знаете доста от степените на 2 от (2^1 до 2^16 и 2^32) + - [ ] Бъдете сигурни, че разбирате добре битовата манипулация: &, |, ^, ~, >>, << + - [ ] [думи]() + - [ ] Добро въведение: + [Bit Manipulation (клип)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (клип)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (клип)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (клип)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Преброяване на набор от битове + - [4 ways to count bits in a byte (клип)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Размяна на стойности: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Абсолютна стойност: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) From d7feaeccfb0d49cc2bc472a91e69778eae2620d2 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 27 Dec 2021 13:30:39 +0200 Subject: [PATCH 349/857] Translated everything to line 795 --- translations/README-bg.md | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index bca541894d..233bf8f3f1 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -689,3 +689,53 @@ - [Swap](https://bits.stephan-brumme.com/swap.html) - [ ] Абсолютна стойност: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Дървета + +- ### Дървета - бележки & основи + + - [ ] [Серия: Дървета (клип)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - основна структура на дървото + - обхождане + - алгоритми за манипулиране + - [ ] [BFS(обхождане в ширина) and DFS(обхождане в дълбочина) (клип)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - бележки за BFS: + - level order (BFS, using queue) + - времева сложност O(n) + - пространствена сложност: в най-добрия случай: O(1), в най-лошия случай: O(n/2)=O(n) + - бележки за DFS: + - времева сложност: O(n) + - пространствена сложност: + в най-добрия случай: O(log n) - средна височина на дървото + в най-добрия случай: O(n) + - inorder (DFS: ляво, self, дясно) + - postorder (DFS: ляво, дясно, self) + - preorder (DFS: self, ляво, дясно) + +- ### Дървета за двоично търсене: BSTs + - [ ] [Преговор над двоични дървета за търсене (клип)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Въведение (клип)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (клип)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Двоично дърво за търсене - имплементация в C/C++ (клип)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST имплементация - memory allocation in stack and heap (клип)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Намиране на мин. и макс. елемент в двоично дърво за търсенея (клип)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Намиране на височината на двоично дърво (клип)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Обхождане на двоично дърво - стратегии за обхождане по ширина и по дълбочина (клип)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Двоично дърво: преминаване на порядъка на ниво (клип)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Обхождане на двоично дърво: Preorder, Inorder, Postorder (клип)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Проверка дали двоично дърво е двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Изтриване на възел от двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Редовен наследник в двоично дърво (клип)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Имплементирайте: + - [ ] insert // вкарване на стойност в дървото + - [ ] get_node_count // вземане на бройката на запазените стойности + - [ ] print_values // принтира стойностите в дървото от най-малкия до най-големия + - [ ] delete_tree + - [ ] is_in_tree // връща true ако дадената стойност съществува в дървото + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // връща най-малката стойност, съхранявана в дървото + - [ ] get_max // връща най-голямата стойност, съхранявана в дървото + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // връща следващата най-голяма стойност след дадената, -1 ако такава не съществува From 719017be03e1fc1335dc6160f57118092b1318d4 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 27 Dec 2021 13:55:06 +0200 Subject: [PATCH 350/857] Translated everything to line 898 --- translations/README-bg.md | 110 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 233bf8f3f1..1471a878cc 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -713,6 +713,7 @@ - preorder (DFS: self, ляво, дясно) - ### Дървета за двоично търсене: BSTs + - [ ] [Преговор над двоични дървета за търсене (клип)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Въведение (клип)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (клип)](https://www.youtube.com/watch?v=9Jry5-82I68) @@ -739,3 +740,112 @@ - [ ] is_binary_search_tree - [ ] delete_value - [ ] get_successor // връща следващата най-голяма стойност след дадената, -1 ако такава не съществува + +- ### Heap / Priority Queue / Binary Heap + - визуализира се като дърво, но обикновенно е линейна структура (масив, свързан списък) + - [ ] [Heap]() + - [ ] [Въведение (клип)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Наивни имплементации (клип)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Двоични дървета (клип)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (клип)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Основни операции (клип)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Завършени двоични дървета (клип)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Псевдокод (клип)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (клип)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (клип)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Създаване на heap (клип)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (клип)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (клип)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Имплементирайте max-heap: + - [ ] insert + - [ ] sift_up - нужно е за insert + - [ ] get_max - връща най-голямата стойност без да я премахва + - [ ] get_size() - връща броя на елементите + - [ ] is_empty() - връща true ако heap-a не съдържа елементи + - [ ] extract_max - връща най-големия елемент и го премахва + - [ ] sift_down - нужно е за extract_max + - [ ] remove(x) - премахва елемента на индекс x + - [ ] heapify - създава heap от масив от елементи, нужно е за heap_sort + - [ ] heap_sort() - превръща несортиран масив в сортиран такъв, ползвайки max heap или min heap + +## Сортиране + +- [ ] Бележки: + + - Имплементирайте алгоритми за сортиране и знайте сложността в средния/ най-добрия/ най-лошия случай: + - без bubble sort - ужасен алгоритъм е - O(n^2), освен когато n <= 16 + - [ ] Стабилност при сортиращите алгоритми ("Стабилен ли е Quicksort?") + - [Стабилност на сортиращите алгоритми](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Стабилност на сортиращите алгоритми](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Стабилност на сортиращите алгоритми](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Стабилност на сортиращите алгоритми](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Кои алгоритми могат да се ползват чрез свързани списъци? Кои чрез масиви? Кои чрез двете? + - Не бих препоръчал да сортирате свързан списък, но би станало с merge sort. + - [Merge Sort за свързани списъци](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- За heapsort, вижте Heap структурата от данни по-горе. Heapsort е чудесен, но не е стабилен + +- [ ] [Sedgewick - Mergesort (5 клипа)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Сортираща сложност](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Компаратори](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Стабилност](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 клипа)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Селекция](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Дублиращи се ключове](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + + - [ ] [CS 61B Lecture 29: Sorting I (клип)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (клип)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (клип)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (клип)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (клип)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Анализ на Bubble Sort (клип)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (клип)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (клип)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (клип)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (клип)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (клип)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Код за Merge sort: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Код за Quick sort: + + - [ ] [Имплементация (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Имплементация (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Имплементация (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Имплементирайте: + + - [ ] Mergesort: O(n log n) сложност в средния/ най-лошия случай + - [ ] Quicksort O(n log n) сложност в средния случай + - Selection sort и insertion sort са със сложност O(n^2) в средния/ най-лошия случай + - За heapsort, вижте Heap структурата от данни нагоре + +- [ ] Не е задължително, но препоръчвам: + - [ ] [Sedgewick - Radix Sorts (6 клипа)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Низове в Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Сортиране в линейно време (клип)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Като обобщение, това е визуализация на [15 алгоритъма за сортиране](https://www.youtube.com/watch?v=kPRA0W1kECg). +Ако ви трябват повече детайли на тази тема вижте секцията "Сортиране" в[Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) From 3dc646e2d82d45ea56cc15cad91581ca1701b716 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 28 Dec 2021 12:57:39 +0200 Subject: [PATCH 351/857] Fixed errors and typos as pointed out by @KiwiB0y --- translations/README-bg.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 1471a878cc..4c80ca09d2 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1,8 +1,8 @@ # Coding Interview University -> Първоначално създадох това като кратък списък с теми за учене, за ставане на софтуерен инженер, но то се разрасна до този огромен списък, който виждате в момента. След като преминах през този учебен план, [бях нает като софтуерен инженер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Най-вероятно няма да Ви се налага да учите колкото мен, но все пак всичко, от което се нуждаете е тук. +> Първоначално създадох това като кратък списък с теми за учене, за това как се става софтуерен инженер, но то прерасна в този огромен списък, който виждате в момента. След като преминах през този учебен план, [бях нает като софтуерен инженер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Най-вероятно няма да Ви се налага да учите колкото на мен, но все пак всичко, от което се нуждаете е тук. > -> Учих по около 8-12 часа на ден за няколко месеца. Това е историята ми: [Why I studies full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> Учих между 8-12 часа на ден в продължение на няколко месеца. Това е историята ми: [Why I studies full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > **Моля обърнете внимание:** Няма да Ви се налага да учите колкото мен. Загубих много време, учейки неща, които нямах нужда да знам. Може да прочетете повече за това надолу. Ще Ви помогна да достигнете до крайната цел без да прахосвате скъпото си време. > @@ -96,7 +96,7 @@ - Търпение - Време -Забележете, че това е учебен план за **софтуерно инженерство**, а не уеб разработка. Големите компании като Google, Amazon, Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани с софтуерно инженерство/разработка +Обърнете внимание, че това е учебен план за **софтуерно инженерство**, а не за уеб разработка. Големите компании като Google, Amazon, Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани със софтуерно инженерство/разработка --- @@ -193,7 +193,7 @@ - [Компютърна сигурност](#компютърна-сигурност) - [Garbage collection](#garbage-collection) - [Паралелно програмиране](#паралелно-програмиране) - - [Системи за съобщения, сериализация и queueing](#системи-за-съобщения-сериализация-и-queueing) + - [Системи за съобщения, сериализация и последователност](#системи-за-съобщения-сериализация-и-последователност) - [A\*](#a) - [Fast Fourier Transform](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) @@ -234,7 +234,7 @@ Когато започнах този проект не знаех какво е стек или опашка, нямах представа какво е Big-O, не знаех нищо за дървета или как да обхождам графи. Ако трябваше да напиша сортиращ алгоритъм мога да Ви кажа, че бих се справил ужасно. Всяка от структурите от данни, които бях използвал досега бяха имплементирани в езика, който ползвах и нямах представа как работят реално. Никога не ми се беше налагало да управлявам памет освен ако някой от процесите, които бях пуснал не връщаха грешка "out of memory"- тогава се налагаше да търся заобиколен път. Бях ползвал хиляди асоциативни масиви и многоизмерни масиви няколко пъти, но никога преди не бях имплементирал структури от данни от нулата. -Планът е дълъг. Може да Ви отнеме месеци. Ако вече сте запознати с повечето от темите ще Ви отнеме многи по-малко +Планът е дълъг. Може да Ви отнеме месеци. Ако вече сте запознати с повечето от темите ще Ви отнеме много по-малко ## Как да го ползвате @@ -250,7 +250,7 @@ Някои видеа са достъпни само след записване в курс на Coursera или EdX- т.нар. MOOCs. Понякога се налага да изчакате няколко месеца, за да стартира ново издание на курса, така че няма да имате достъп до тях. -Би било чудесно такива ресурси да бъдат заменену с безплатни и винаги-достъпни публични източници като YouTube видеота (по възможност университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. +Би било чудесно такива ресурси да бъдат заменени с безплатни и свободнодостъпни публични източници като YouTube видеа (по възможност университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. ## Изберете език за програмиране From 003a31cb0a749831bdb1d5188b698d67527c0f71 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 28 Dec 2021 13:28:00 +0200 Subject: [PATCH 352/857] Translated everything up to line 958 --- translations/README-bg.md | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 4c80ca09d2..1e3f924d42 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -849,3 +849,67 @@ Като обобщение, това е визуализация на [15 алгоритъма за сортиране](https://www.youtube.com/watch?v=kPRA0W1kECg). Ако ви трябват повече детайли на тази тема вижте секцията "Сортиране" в[Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) + +## Графи + +Графите могат да се ползват за онагледяване на много проблеми в компютърните науки, така че тази секция е дълга, също както тази за дърветата и сортирането.. + +- Бележки: + + - Има 4 основни начина една графа да бъде представена в паметта: + - обекти и пойнтъри + - матрици на съседство + - списъци на съседство + - мап на съседство + - Запознайте се с всяка от начините за представяне и плюсовете, и минусите, които предоставят + - BFS и DFS - знайте изчислителната им сложност, компромисите, които носят и как да ги имплементирате в истински код + - Когато Ви зададат въпрос, първо потърсете решение с граф и преминете нататък ако няма такова + +- [ ] MIT(клипове): + + - [ ] [Обхождане по ширина](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Обхождане по дълбочина](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - чудесно въведение: + + - [ ] [CSE373 2012 - Лекция 11 - Граф като структура от данни (клип)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Лекция 12 - Обхождане по ширина (клип)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Лекция 13 - Алгоритми за графи (клип)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Лекция 14 - Алгоритми за графи (продължение) (клип)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 15 - Алгоритми за графи (продължение 2) (клип)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 16 - Алгоритми за графи (продължение 3) (клип)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Графи (преговор и повече): + + - [ ] [6.006 Задача за най-кратък път от един източник (клип)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Дейкстра (клип)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Белман-Форд (клип)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Как да забързаме Дейкстра (клип)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Алгоритми за графи I - Топологично сортиране, Минимално обхващащи дървета, Алгоритъм на Прим - Лекция 6 (клип)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Алгоритми за графи II - DFS, BFS, Алгоритъм на Крускал, Union Find структура от данни - Лекция 7 (клип)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Алгоритми за графи III: Най-кратък път - Лекция 8 (клип)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Алгоритми за графи IV: Въведение в геометричните алгоритми - Лекция 9 (клип)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (от 58:09) (клип)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Претеглени графи (клип)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Алчни алгоритми: Минимално обхващащо дърво (клип)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Алгоритъм за граф на Kosaraju за силно свързани компоненти (клип)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Пълен курс в Coursera: + + - [ ] [Алгоритми за графи (клип)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Аз ще имплементирам: + - [ ] DFS със списък на съседство (рекурсивно) + - [ ] DFS със списък на съседство (итеративно със стек) + - [ ] DFS с матрица на съседство (рекурсивно) + - [ ] DFS с матрица на съседство (итеративно със стек) + - [ ] BFS със списък на съседство + - [ ] BFS с матрица на съседство + - [ ] най-кратък път от един източник (Дейкстра) + - [ ] минимално обхващащо дърво + - Алгоритми основани върху DFS (вижте клиповете на Aduni по-горе): + - [ ] проверка за цикъл (нужно за топологичното сортиране, защото ще проверяваме за цикъла преди стартиране) + - [ ] топологично сортиране + - [ ] преброяване на свързаните компоненти в графа + - [ ] изреждане на силно свързаните компоненти + - [ ] проверка за двустранна графа From 84a432b84a9ed5fdc0fd502f4d97c6e3a35a53ed Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 28 Dec 2021 13:41:05 +0200 Subject: [PATCH 353/857] Translated everything to line 998 --- translations/README-bg.md | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 1e3f924d42..1fab650657 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -913,3 +913,43 @@ - [ ] преброяване на свързаните компоненти в графа - [ ] изреждане на силно свързаните компоненти - [ ] проверка за двустранна графа + +## Още повече знания + +- ### Рекурсия + + - [ ] Лекции от Stanford за рекурсия и backtracking: + - [ ] [Лекция 8 | Абстракции за програмиране (клип)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Лекция 9 | Абстракции за програмиране (клип)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Лекция 10 | Абстракции за програмиране (клип)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Лекция 11 | Абстракции за програмиране (клип)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Кога е подходящо да се използва? + - Как опашковата рекурсия е по-добра отколкото без? + - [ ] [Какво е опашкова рекурсия и защо е толкова лоша?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Опашкова рекурсия (клип)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + +- ### Динамично програмиране + - Най-вероятно няма да срещнете задачи с динамично програмиране в интервютата си, но си струва да можете да разпознавате задачи, които са годни за решаване с динамично програмиране. + - Тази тема може да е доста сложна защото всяка задача, която може да се решава с ДП трябва да бъде дефинирана чрез рекурсивна връзка, а понякога може да е сложно да се измисли такава. + - Препоръчвам да разгледате много примери за задачи с ДП докато имате стабилно разбиране на структурата им. + - [ ] Клипове: + - клиповете от Skiena могат да бъдат сложни за проследяване, тъй като той понякога ползва дъската, която е прекалено малка, за да се види + - [ ] [Skiena: CSE373 2012 - Лекция 19 - Въведение в динамичното програмиране (клип)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Лекция 20 - Edit Distance (клип)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Лекция 21 - Примери за динамично програмиране (клип)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Лекция 22 - Приложение на динамичното програмиране (клип)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Динамично програмиране 0 (starts at 59:18) (клип)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Динамично програмиране I - Лекция 11 (клип)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Динамично програмиране II - Лекия 12 (клип)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Списък с единични задачи за динамично програмиране (кратки са): + [Динамично програмиране (клип)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Бележки от лекции в Yale: + - [ ] [Динамично програмиране](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [Алгоритъм за динамично програмиране (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Илюстриране на алгоритъма за ДП (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Време за изпълнение на алгоритъма за ДП (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [ДП срещу рекурсивна имплементация (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Глобално подравняване на последователности по двойки (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Локално подравняване на последователности по двойки (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) From 7638d2548b8831505e10a8ec735a8d68af915761 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 28 Dec 2021 13:47:35 +0200 Subject: [PATCH 354/857] Translated everything to line 1027 --- translations/README-bg.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 1fab650657..536b580ecb 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -929,6 +929,7 @@ - [ ] [Опашкова рекурсия (клип)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Динамично програмиране + - Най-вероятно няма да срещнете задачи с динамично програмиране в интервютата си, но си струва да можете да разпознавате задачи, които са годни за решаване с динамично програмиране. - Тази тема може да е доста сложна защото всяка задача, която може да се решава с ДП трябва да бъде дефинирана чрез рекурсивна връзка, а понякога може да е сложно да се измисли такава. - Препоръчвам да разгледате много примери за задачи с ДП докато имате стабилно разбиране на структурата им. @@ -953,3 +954,32 @@ - [ ] [ДП срещу рекурсивна имплементация (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [Глобално подравняване на последователности по двойки (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Локално подравняване на последователности по двойки (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Design patterns + - [ ] [Бърз преговор върху UML (клип)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Научете тези схеми: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Глава Част 1) - Patterns (клип)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Глава 6 (Част 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (клип)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Глава 6 (Част 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (клип)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Поредица от клипове (27 клипа)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Знам, че каноничната книга е "Design Patterns: Elements of Reusable Object-Oriented Software", но Head First е чудесна за начинаещи в ОО. + - [ ] [Удобен справочник: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns за хора](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) From d5763c1212602f9844be6a2b39435e24506b5d08 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Tue, 28 Dec 2021 14:00:35 +0200 Subject: [PATCH 355/857] Translated everything to line 1066 --- translations/README-bg.md | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 536b580ecb..168d7409cf 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -956,6 +956,7 @@ - [ ] [Локално подравняване на последователности по двойки (клип)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Design patterns + - [ ] [Бърз преговор върху UML (клип)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Научете тези схеми: - [ ] strategy @@ -983,3 +984,43 @@ - Знам, че каноничната книга е "Design Patterns: Elements of Reusable Object-Oriented Software", но Head First е чудесна за начинаещи в ОО. - [ ] [Удобен справочник: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns за хора](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + +- ### Комбинаторика & вероятности + + - [ ] [Математични умения: как да намираме пермутации, вариации и комбинации (клип)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Вероятности (клип)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: Още вероятности и Марковски вериги (клип)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Оформление на курса: + - [ ] [Основна теоритична вероятност](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Само клиповете - 41 (всичките са прости и къси): + - [ ] [Вероятностите- обяснени (клип)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + + - Знайте за най-известните задачи за NP-завършеност като пътуващия търговец и бъдете сигурни, че можете да ги разпознавате, когато интервюиращия ви ги даде прикрити + - Знайте какво означава NP-завършен. + - [ ] [Изчислителна сложност (клип)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Алчни алгоритми II & Въведение в NP-завършеността (клип)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP-завършеност II & Редукции (клип)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-завършеност III (клип)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-завършеност IV (клип)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Лекция 23 - Въведение в NP-завършеността (клип)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Лекция 24 - Доказване на NP-завършеност (клип)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Лекция 25 - Предизвикателство NP-завършеност (клип)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Сложност: P, NP, NP-завършеност, редукции (клип)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Сложност: Алгоритми за приближаване (клип)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Сложност: Алгоритми с фиксирани параметри (клип)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig обсъжда почти оптимални решения на задачата за пътуващия търговец: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Страници 1048 - 1140 в CLRS ако я имате. + +- ### Как компютрите обработват една програма + + - [ ] [Как CPU-то изпълнява програми (клип)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [Как компютрите пресмятат - ALU (клип)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Регистри и RAM (клип)](https://youtu.be/fpnE6UAfbtU) + - [ ] [Централният процесор (CPU) (клип)](https://youtu.be/FZGugFqdr60) + - [ ] [Инструкции и програми (клип)](https://youtu.be/zltgXvg6r3k) From 6f2e3641f494a1990d8713cfa5c3f3268d2517c2 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 29 Dec 2021 12:06:55 +0200 Subject: [PATCH 356/857] Translated everything to line 1139 --- translations/README-bg.md | 77 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index 168d7409cf..bdc53e9312 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1024,3 +1024,80 @@ - [ ] [Регистри и RAM (клип)](https://youtu.be/fpnE6UAfbtU) - [ ] [Централният процесор (CPU) (клип)](https://youtu.be/FZGugFqdr60) - [ ] [Инструкции и програми (клип)](https://youtu.be/zltgXvg6r3k) + +- ### Кеширане + + - [ ] LRU кеширане: + - [ ] [Магията на LRU кеширането (100 Days of Google Dev) (клип)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Имплементиране на LRU (клип)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Кеширане (C++) (клип)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: Йерархията на паметта (клип)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Проблеми с кеширането (клип)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Процеси и нишки + + - [ ] Computer Science 162 - Операционни системи (25 клипа): + - за процеси и нишки вижте клипове 1-11 + - [Операционни системи и системно програмиране (клип)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [Каква е разликата между процес и нишка?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Покрива: + - Процеси, нишки, проблеми с concurrency + - Разликата между процеси и нишки + - Процеси + - Нишки + - Locks + - Мутекси + - Семафори + - Монитори + - Как работят? + - Deadlock + - Livelock + - CPU дейност, interrupts, смяна на контекста + - Модерни конструкции за concurrency с многоядрени процесори + - [Пейджинг, сегментация и виртуална памет (клип)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (клип)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Ресурси, от които се нуждаят процесите (памет: код, статично пространство, стек, heap, и file descriptors, i/o) + - Ресурси, от които се нуждаят нишките (споделя същите като по-горе (без стек) с други нишки в същия процес, но всяка има свой pc, стек брояч, регистри и стек) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Смяна на контекста + - Как смяната на контекста се инициира от операционната система и хардуера? + - [ ] [Нишки в C++ (серия - 10 клипа)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Операционни системи от University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] concurrency в Python (клипове): + - [ ] [Кратка серия върху нишки](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python нишки](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Да разберем Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [справка](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency от горе до долу: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Мутекс в Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Тестване + + - Да се покрие: + - как работи unit тестването + - какво са mock обекти + - какво е integration тестването + - какво е dependency injection + - [ ] [Agile Software Testing с James Bach (клип)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Лекция от James Bach върху софтуерното тестване (клип)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (клип)](https://vimeo.com/83960706) + - [презентация](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [клип](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [Как да пишем тестове](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String searching & manipulations + + - [ ] [Sedgewick - Суфиксни масиви (клип)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (клипове)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Въведение в Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Кнут-Морис-Прат](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Бойер-Мур](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Рабин-Карп](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Търсене на на шаблон в текст (клип)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + Ако ви трябват допълнителни детайли по тази тема вижте секцията "String Matching" в [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми). From 7ea30f10544b4bda0a69178c05c3d0dcfbe772c8 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 29 Dec 2021 12:23:40 +0200 Subject: [PATCH 357/857] Translated everything to line 1191 --- translations/README-bg.md | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index bdc53e9312..ebb46a6561 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1101,3 +1101,56 @@ - [ ] [Търсене на на шаблон в текст (клип)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) Ако ви трябват допълнителни детайли по тази тема вижте секцията "String Matching" в [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми). + +- ### Tries + + - Обърнете внимание, че има различни видове tries. Някои имат prefixes, а други нямат, също така някои ползват низове вместо битове за да следят пътеката + - Разгледах кода, но няма да го имплементирам + - [ ] [Sedgewick - Tries (3 клипа)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Бележки върху структурите от данни и техники за програмиране](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Малък курс с клипове: + - [ ] [Въведение в Tries (клип)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Производителност на Tries (клип)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Имплементиране на Trie (клип)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [Trie: неглежираната структура от данни](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - използване на Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford лекция (приложение в истинския живот) (клип)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Структури от данни за напреднали, Низове (може да има доста неяснота към половината на клипа) (клип)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + + - [ ] simple 8-bit: [Репрезентация на Floating Point числа - 1 (клип - има грешка в изчисленията - вижте описанието на клипа)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (клип)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Уникод + + - [ ] [Абсолютният минимум от знания всеки софтуерен разработчик трабва да има за уникод и набори от символи ](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [Какво трябва всеки програмист да знае за кодирането и наборите от символи за да работи с текст](http://kunststube.net/encoding/) + +- ### Endianness + + - [ ] [Голям и малък Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Голям Endian срещу Малък Endian (клип)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Голям и малък Endian отвътре-навън (клип)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Много техничен разговор за kernel разработчици. Не се тревожете ако не схващате повечето неща. + - Първата половина е достатъчна. + +- ### Мрежи + - **очаквайте въпроси по тази тема ако имте опит с мрежи или искате да бъдете reliability engineer/ operations engineer** + - Иначе това са неща, които е добре да се знаят + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP и TCP: Сравнение на протоколи за пренос на информация (клип)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP и OSI моделът обяснени! (клип)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Пренос на пакети през интернет. Ръководство за мрежи & TCP/IP. (клип)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (клип)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL и HTTPS (клип)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (клип)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (клип)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Видеосерия (21 клипа) (клип)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (клип)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Въведение (клип)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket програмиране (клип)](https://www.youtube.com/watch?v=G75vN2mnJeQ) From 148d1609f889a88c05dd2f5ba0230135141c8bba Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 29 Dec 2021 12:29:23 +0200 Subject: [PATCH 358/857] Translated everything to line 1218 --- translations/README-bg.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index ebb46a6561..f2edba3b11 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1154,3 +1154,30 @@ - [ ] Sockets: - [ ] [Java - Sockets - Въведение (клип)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket програмиране (клип)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Последен преглед + + Тази секция съдържа по-кратки клипове за най-важните понятия, които можете да изгледате сравнително бързо. Полезни са ако искате да си припомните нещо от време на време. + +- [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) + - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (18 клипа): + - [Клипове](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Алгоритми II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Актуализирайте резюмето си + +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- Не знам колко важно е това (можете сами да си направите проучване), но ето една статия за това как да направим резюмето си ATS Compliant: + - [Как да проверим дали резюмето ни е ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" от Gayle McDowell (авторът на Cracking the Coding Interview)](https://www.careercup.com/resume), + - Бележка от автора: "Това се отнася към резюмета за САЩ. Към CV-тата за Индия и други държави има различни изисквания, но много от точките ще са същите." + +## Намерете позиция + +- [Сайтове за намиране на работа](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) From 018ef280de5726ea98941b66ffbff8b0d614d5e9 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 29 Dec 2021 12:52:45 +0200 Subject: [PATCH 359/857] Translated everything to line 1306 --- translations/README-bg.md | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index f2edba3b11..c6b86db2b0 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1181,3 +1181,89 @@ ## Намерете позиция - [Сайтове за намиране на работа](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Процесът на интервюто & обща подготовка + +- [ ] [Как да минем през интервюто за инженер през 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Демистифициране на Tech рекрутинга](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Как да намерим работа в Големите 4: + - [ ] [Как да намерим работа в Големите 4 - Amazon, Facebook, Google & Microsoft (клип)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Как да намерим работа в Големите 4.1 (продължение)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (клип)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview с авторът Gayle Laakmann McDowell (клип)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [Подходът](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Преминаване през задачи](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Курсове за подготовка: + - [Software Engineer Interview Unleashed (платен курс)](https://www.udemy.com/software-engineer-interview-unleashed): + - Научете как да се подготвяте за интервюта за софтуерен разработчик от бивш интервюиращ в Google + - [Python for Data Structures, Algorithms, and Interviews (платен курс)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Курс, ориентиран към Python, който покрива структури от данни, алгоритми, mock интервюта и много повече. + - [Intro to Data Structures and Algorithms using Python (безплатен курс от Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Безплатен курс върху структури от данни и алгоритми, ориентиран към Python. + - [Data Structures and Algorithms Nanodegree! (платен Nanodegree от Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (безплатен курс от Educative)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Много често, не техническата Ви компетентност, а личностното интервю Ви спират да започнете мечтаната си работа. + +Mock интервюта: + +- [Gainlo.co: Mock интервюта от големи компании](http://www.gainlo.co/) - Използвах това и ми помогна да се успокоя за телефонното, screen и on-site интервютата +- [Pramp: Mock интервюта от/с връсници](https://www.pramp.com/) - модел за подготовка за интервю с връсници +- [interviewing.io: Mock интервюта за подготовка със senior инженери](https://interviewing.io) - анонимни интервюта за дизайн на алгоритми/системи със senior инженери от FAANG компаниите + +## Мислете за това, когато дойде интервюто + +Помислете за около 20 въпроса за интервю, които може да ви се паднат и редовете надолу. Имайте поне един отговор за всеки от тях. Имайте история, а не само данни за нещо, което сте постигнали. + +- Защо искате тази работа? +- Дайте пример за труден проблем, който сте разрешили. +- Кое е най-голямото предизвикателство, с което сте се сблъсквали? +- Best/worst designs seen? +- Дайте идея за подобрение на съществуващ продукт. +- Как работите най ефективно- самостоятелно или като част от екип? +- Кои от уменията Ви ще са важни активи в позицията и защо? +- Какво най-много Ви хареса на [работа x / проейт y]? +- Какво беше най-голямото предизвикателство, с което се сблъскахте на [работа x / проект y]? +- Кой е най-трудния bug, с който сте се сблъсквали на [работа x / проект y]? +- Какво научихте на [работа x / проект y]? +- Какво можехте да направите по-добре на [работа x / проект y]? + +- Ако Ви се струва трудно да давате отговор на подобни въпроси, ето някои идеи: + - [Общи въпроси за интервю и отговорите им](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Подгответе въпроси за интервюиращия + +Ето някои от моите (може вече да знам отговорът им когато ги задавам, но искам да чуя тяхното мнение и да видя перспективата им): + +- Колко е голям екипът Ви? +- What does your dev cycle look like? Ползвате ли waterfall/sprints/agile методологии? +- Често ли се случва да гоните срокове? Или има гъвкавост? +- Как вземате решения във вашия екип? +- Колко срещи имате на седмица? +- Как работната среда Ви помага да се концентрирате, според Вас? +- Върху какво работите в момента? +- Какво Ви харесва за него? +- Как е работният Ви живот? +- Как е балансът Ви работа/свободно време? + +## След като са Ви наели + +Поздравления! + +Продължавайте да учите. + +Никога не сте свършили наистина. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Всичко оттук надолу е по желание. НЕ е нужно за entry-level интервю, но ако научите тези неща ще сте изложени пред повече концепции от компютърните науки и ще сте добре подготвени за всяка работа за софтуерно инженерство. Ще сте много по-добър софтуерен инженер. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- From fe6480c4010e823a82d41046321964389beb4af7 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 1 Jan 2022 18:09:27 -0800 Subject: [PATCH 360/857] Updates link checker timeout. --- .github/workflows/links_checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index eb9a84695c..c8f8a957fa 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -12,7 +12,7 @@ jobs: link_checker: name: Check links and create automated issue if needed runs-on: ubuntu-latest - timeout-minutes: 5 + timeout-minutes: 10 env: REPORT_FILE: links-report steps: From 282aa05258765bfb21b2bb08d77930ae3575a409 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 1 Jan 2022 18:17:34 -0800 Subject: [PATCH 361/857] Updates link checker concurrency. --- .github/workflows/links_checker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index c8f8a957fa..f1d1688d6c 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -12,7 +12,7 @@ jobs: link_checker: name: Check links and create automated issue if needed runs-on: ubuntu-latest - timeout-minutes: 10 + timeout-minutes: 5 env: REPORT_FILE: links-report steps: @@ -34,7 +34,7 @@ jobs: --accept 200,204,206 --headers "accept=text/html" --timeout 20 - --max-concurrency 5 + --max-concurrency 10 --no-progress README.md translations/*.md env: From ada3ddb2e2c6c0e5f3486de0c96f5ea3cd6431a8 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 1 Jan 2022 18:37:59 -0800 Subject: [PATCH 362/857] Updates broken link. --- README.md | 2 +- translations/README-ar.md | 2 +- translations/README-bn.md | 2 +- translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fa.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index c937878b77..61547a4023 100644 --- a/README.md +++ b/README.md @@ -1241,7 +1241,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously diff --git a/translations/README-ar.md b/translations/README-ar.md index 18bf55c36f..0241228181 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1358,7 +1358,7 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. diff --git a/translations/README-bn.md b/translations/README-bn.md index cf214c7443..f2e194e30e 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1465,7 +1465,7 @@ -[পাইথনে ইন্টারেক্টিভ কোডিং সাক্ষাত্কারের চ্যালেঞ্জগুলি] (https://github.com/donnemartin/interactive-coding-challenges) মক সাক্ষাত্কার: --[গেইনলোক.কম: বড় সংস্থাগুলির মক সাক্ষাত্কার]] (http://www.gainlo.co/)-আমি এটি ব্যবহার করেছি এবং এটি আমাকে ফোনের স্ক্রিন এবং সাইটে সাক্ষাত্কারের জন্য শিথিল করতে সহায়তা করেছে। +-[গেইনলোক.কম: বড় সংস্থাগুলির মক সাক্ষাত্কার]] (http://www.gainlo.co/#!/)-আমি এটি ব্যবহার করেছি এবং এটি আমাকে ফোনের স্ক্রিন এবং সাইটে সাক্ষাত্কারের জন্য শিথিল করতে সহায়তা করেছে। -[প্র্যাম্প: সহকর্মীদের কাছ থেকে / সাথে মক সাক্ষাত্কার] (https://www.pramp.com/)-অনুশীলন সাক্ষাত্কারগুলির পিয়ার-টু-পিয়ার মডেল -[রেফড্যাশ: মক সাক্ষাত্কার এবং তাত্ক্ষণিক সাক্ষাত্কার]] (https://refdash.com/)-প্রযুক্তিবিদদের সাথে একাধিক সাক্ষাত্কার এড়িয়ে প্রার্থীদের দ্রুত ট্র্যাক করতে সহায়তা করে। diff --git a/translations/README-cn.md b/translations/README-cn.md index 9cc20392c8..f070037140 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1292,7 +1292,7 @@ 模拟面试: -- [Gainlo.co:来自大公司的模拟面试官](http://www.gainlo.co/)──我使用了它,它帮助我减轻了电话屏幕和现场面试的压力 +- [Gainlo.co:来自大公司的模拟面试官](http://www.gainlo.co/#!/)──我使用了它,它帮助我减轻了电话屏幕和现场面试的压力 - [Pramp:模拟来自/与同行的面试](https://www.pramp.com/)──点对点方式练习面试 - [Refdash:模拟面试和加急面试](https://refdash.com/)──跳过与科技公司的多次面试,帮助求职者快速追踪 - [interviewing.io:与高级工程师进行模拟面试](https://interviewing.io/)──与来自 FAANG(译者注:Facebook, Amazon, Apple, Netflix and Google) 的高级工程师进行匿名算法/系统设计面试。 diff --git a/translations/README-de.md b/translations/README-de.md index 6faa61c226..40c9fc20f7 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1476,7 +1476,7 @@ Wettbewerbsrepos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - Das habe ich benutzt und es hat mir dabei geholfen vor den Telefon- und Vor-Ort-Gesprächen besser zu entspannen. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - Das habe ich benutzt und es hat mir dabei geholfen vor den Telefon- und Vor-Ort-Gesprächen besser zu entspannen. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer Modell um Vorstellungsgespräche zu üben - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - hilft auch Kandidaten den Prozess zu beschleunigen indem mehrere Vorstellungsgespräche bei Techfirmen übersprungen werden. diff --git a/translations/README-es.md b/translations/README-es.md index 849fb59e53..b2e7c04a49 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1436,7 +1436,7 @@ Repos de desafíos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Bosquejos de entrevista: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - [Refdash: Mock interviews](https://refdash.com/) diff --git a/translations/README-fa.md b/translations/README-fa.md index 7df50dec01..aeba13ffbc 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1236,7 +1236,7 @@ Choose one: - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously diff --git a/translations/README-fr.md b/translations/README-fr.md index 1d73ade899..559994e3ac 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1406,7 +1406,7 @@ Challenge sites: - [InterviewBit](https://www.interviewbit.com) Maybe: -- [Mock interviewers from big companies](http://www.gainlo.co/) +- [Mock interviewers from big companies](http://www.gainlo.co/#!/) ## Once you're closer to the interview diff --git a/translations/README-he.md b/translations/README-he.md index 13f4ed3e20..d40c5dcbad 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1422,7 +1422,7 @@ See [Book List above](#book-list) ראיונות דמה: - [Pramp - להתאמן בראיונות קידוד עם אחרים, בחינם](https://www.pramp.com/) -- [Mock interviewers from big companies](http://www.gainlo.co/) +- [Mock interviewers from big companies](http://www.gainlo.co/#!/) ## Once you're closer to the interview diff --git a/translations/README-hi.md b/translations/README-hi.md index 38457e1e6f..d589286316 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1750,7 +1750,7 @@ Sit back and enjoy. "netflix and skill" :P ## शायद -http://www.gainlo.co/ - बड़ी कंपनी के मोक इंटरव्यू +http://www.gainlo.co/#!/ - बड़ी कंपनी के मोक इंटरव्यू --- diff --git a/translations/README-id.md b/translations/README-id.md index 4b551c16f0..4fe71ff9db 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1296,7 +1296,7 @@ Repo tantangan: - [Tantangan Interview Coding Interaktif dengan Python](https://github.com/donnemartin/interactive-coding-challenges) Wawancara Mock: -- [Gainlo.co: Mock pewawancara dari perusahaan besar](http://www.gainlo.co/) - Saya menggunakan ini dan itu membantu saya bersantai untuk layar ponsel dan wawancara di tempat +- [Gainlo.co: Mock pewawancara dari perusahaan besar](http://www.gainlo.co/#!/) - Saya menggunakan ini dan itu membantu saya bersantai untuk layar ponsel dan wawancara di tempat - [Pramp: Wawancara mengejek dari / dengan teman sebaya](https://www.pramp.com/) - model wawancara praktik peer-to-peer - [Refdash: Wawancara tiruan dan wawancara yang dipercepat](https://refdash.com/) - juga membantu kandidat mempercepat dengan melewatkan beberapa wawancara dengan perusahaan teknologi - [interviewing.io: Berlatih wawancara tiruan dengan insinyur senior](https://interviewing.io) - wawancara desain algoritme / sistem tanpa nama dengan insinyur senior dari FAANG secara anonim. diff --git a/translations/README-ja.md b/translations/README-ja.md index 22b6bf07d7..7212767ffb 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1357,7 +1357,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Pythonでインタラクティブなコーディング面接の課題](https://github.com/donnemartin/interactive-coding-challenges) 疑似面接: -- [Gainlo.co:大企業の疑似面接官](http://www.gainlo.co/) +- [Gainlo.co:大企業の疑似面接官](http://www.gainlo.co/#!/) - [Pramp:仲間との面接](https://www.pramp.com/) - [Refdash:疑似面接](https://refdash.com/) diff --git a/translations/README-kh.md b/translations/README-kh.md index a4329b77ec..f12eefd2cc 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1374,7 +1374,7 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. diff --git a/translations/README-ko.md b/translations/README-ko.md index a9ca8e05be..01f9a5066f 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1393,7 +1393,7 @@ Challenge repos: 모의 면접: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. diff --git a/translations/README-pl.md b/translations/README-pl.md index 132b6982ca..a8f698d417 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1347,7 +1347,7 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 52864ca353..d10c3190fe 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1449,7 +1449,7 @@ Repositórios de desafios: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) (Desafios Interativos de Entrevista de Programação em Python) Entrevistas Simuladas: -- [Gainlo.co: Entrevistas simuladas com entrevistadores de grandes empresas](http://www.gainlo.co/) +- [Gainlo.co: Entrevistas simuladas com entrevistadores de grandes empresas](http://www.gainlo.co/#!/) - [Pramp: Entrevistas simuladas com colegas](https://www.pramp.com/) - [Refdash: Entrevistas simuladas](https://refdash.com/) diff --git a/translations/README-ru.md b/translations/README-ru.md index aa5715eb23..f484e99acf 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1412,7 +1412,7 @@ Google не возьмёт тебя на работу. - [InterviewBit](https://www.interviewbit.com) Возможно: -- [Тестовые интервьюверы из больших компаний](http://www.gainlo.co/) +- [Тестовые интервьюверы из больших компаний](http://www.gainlo.co/#!/) ## Перед собеседованием diff --git a/translations/README-th.md b/translations/README-th.md index c8b6683541..4b6af49494 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1419,7 +1419,7 @@ Challenge sites: - [Sphere Online Judge (spoj)](http://www.spoj.com/) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) ## Once you're closer to the interview diff --git a/translations/README-tr.md b/translations/README-tr.md index 6b492feda3..0432133ec3 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1353,7 +1353,7 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously. diff --git a/translations/README-tw.md b/translations/README-tw.md index 4fc173ae39..79f05a7119 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1312,7 +1312,7 @@ Coding面試題目影片: - [Python互動式coding面試解題](https://github.com/donnemartin/interactive-coding-challenges) 更多面試: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - 點對點面試練習 - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - 同樣能藉由跳過跟多家科技公司的面試,幫助你快速步上軌道, diff --git a/translations/README-uk.md b/translations/README-uk.md index 6cc5747d9b..b56d6da460 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1469,7 +1469,7 @@ Challenge sites: - [Sphere Online Judge (spoj)](http://www.spoj.com/) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) ## Once you're closer to the interview diff --git a/translations/README-ur.md b/translations/README-ur.md index 2ebd833760..181c7f4089 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1359,7 +1359,7 @@ Challenge repos: - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview. - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. diff --git a/translations/README-uz.md b/translations/README-uz.md index 77fc34c07f..53176b9d03 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1336,7 +1336,7 @@ Mashqlar repolari - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Mock intervyular -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - Men buni ishlatdim va u menga phone screen va on-site intervyularga ruhan tayyorladi +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - Men buni ishlatdim va u menga phone screen va on-site intervyularga ruhan tayyorladi - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - foydalanuvchilararo intervyuga tayyorlanish modeli - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - kandidatlarga tech kompaniyalar bilan bo'ladigan bir nechta intervyulardan sakrab o'tishga ham yordam beradi - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANG-dan senior injinerlar bilan anonim algoritm/tizim dizayn intervyulari diff --git a/translations/README-vi.md b/translations/README-vi.md index 4d62426f32..f307909f35 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1452,7 +1452,7 @@ Các trang giải toán lập trình: - [InterviewBit](https://www.interviewbit.com) Xem thêm: -- [Phỏng vấn thử nghiệm](http://www.gainlo.co/) +- [Phỏng vấn thử nghiệm](http://www.gainlo.co/#!/) ## Khi bạn tiến gần đến kỳ phỏng vấn From 3119deca4eb35f45d80fce93de0e0231a9c576f6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 1 Jan 2022 18:41:57 -0800 Subject: [PATCH 363/857] Updates broken link. --- README.md | 2 +- translations/README-ar.md | 2 +- translations/README-de.md | 2 +- translations/README-fa.md | 2 +- translations/README-id.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 61547a4023..2084f54ba1 100644 --- a/README.md +++ b/README.md @@ -1684,7 +1684,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-ar.md b/translations/README-ar.md index 0241228181..9932c724ed 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1706,7 +1706,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-de.md b/translations/README-de.md index 40c9fc20f7..161f1e9a44 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1820,7 +1820,7 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [ ] [Aduni - Algorithms - Lecture 4 (Link springt direkt zum Anfang) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - [ ] **2-3 Bäume** - In der Praxis: diff --git a/translations/README-fa.md b/translations/README-fa.md index aeba13ffbc..86828226da 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1676,7 +1676,7 @@ Mock Interviews: - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-id.md b/translations/README-id.md index 4fe71ff9db..b085cd59ea 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1634,7 +1634,7 @@ Anda tidak pernah benar-benar selesai. - [Aduni - Algoritma - Kuliah 4 (link lompat ke titik awal) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algoritma - Kuliah 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [Pengantar Pencarian Biner Dan Red-Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [Pengantar Pencarian Biner Dan Red-Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - Dalam praktek: diff --git a/translations/README-kh.md b/translations/README-kh.md index f12eefd2cc..d5960af6d0 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1717,7 +1717,7 @@ Mock Interviews: - [Aduni - Algorithms - Lecture 4 (តំណភ្ជាប់លោតទៅចំណុចចាប់ផ្តើម) (វីដេអូ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (វីដេអូ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - ក្នុងការអនុវត្ត ៖ diff --git a/translations/README-ko.md b/translations/README-ko.md index 01f9a5066f..7a650fb60e 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1737,7 +1737,7 @@ Challenge repos: - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-pl.md b/translations/README-pl.md index a8f698d417..f733353319 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1693,7 +1693,7 @@ Tak na prawdę nigdy nie skończyłeś. - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (wideo)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (wideo)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-tr.md b/translations/README-tr.md index 0432133ec3..e1482b4271 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1711,7 +1711,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-tw.md b/translations/README-tw.md index 79f05a7119..5a86b224b5 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1624,7 +1624,7 @@ Coding面試題目影片: - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (影片)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (影片)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3搜尋樹** - 實際上: diff --git a/translations/README-ur.md b/translations/README-ur.md index 181c7f4089..3acba50311 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1705,7 +1705,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search trees** - In practice: diff --git a/translations/README-uz.md b/translations/README-uz.md index 53176b9d03..c0d3a794eb 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1682,7 +1682,7 @@ Hech qachon tugatgan bo'lmaymiz. - [Aduni - Algorithms - Lecture 4 (link videoni kerakli joyidan boshlaydi) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - **2-3 search tree-lar** - Amalda: From 5b4920891600ea284d100013e1b52da10fec49fb Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Sun, 2 Jan 2022 12:25:04 +0200 Subject: [PATCH 364/857] Translated everything to line 1530 --- translations/README-bg.md | 720 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 720 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index c6b86db2b0..1396d46da6 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1267,3 +1267,723 @@ Mock интервюта: ***************************************************************************************************** --- + +## Допълнителни книги + + Книгите тук ще ви позволят да се гмурнете в теми, които са интересни за вас. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions]() + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Additional Learning + + Добавих тези теми, за да Ви помогна да бъдете по-добри софтуерни инженери и да сте наясно с определени технологии и алгоритми, което ще разшири "инструментите", с които можете да работите + +- ### Компилатори + + - [Как работи един компилатор в ~1 минута (клип)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Компилатори (клип)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (клип)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Да разберем оптимизирането на компилатори (C++) (клип)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + + - Запознайте се с някой unix-базиран кодов редактор + - vi(m): + - [Редактиране с vim 01 - Инсталация, настройване и различните режими (клип)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM приключения](http://vim-adventures.com/) + - 4 клипа: + - [The vi/vim editor - Урок 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Урок 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Урок 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Урок 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Използване на Vi вместо Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Основите на Emacs (клип)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3 клипа: + - [Emacs ръководство (За начинаещи) -Част 1- файлови команди, cut/copy/paste, cursor команди](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs ръководство (За начинаещи) -Част 2- Управление на буфера, търсене, M-x grep и rgrep режими](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs въководство (За начинаещи) -Част 3- Изрази, Твърдения, ~/.emacs файлове и пакети](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Зъл режиим: Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [(по желание) Org режима в подробности: Управление на структурата (клип)](https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### Unix command line tools + + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - Повече за Марковските процеси: + - [Основите на Марковския текст](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Основите на имплементацията на Марковския текст](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Проект = Ръководство за Марковския текст](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - Вижте повече в серията Information and Entropy MIT 6.050J надолу + +- ### Паритет & код на Хаминг (клипове) + + - [Въведение](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Паритет](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Код на Хаминг: + - [Откриване на грешки](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Поправяне на грешки](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Проверка за грешко](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Ентропия + + - Вижте също клиповете надолу + - Първо изгледайте клиповете за information theory + - [Information Theory, Клод Шанън, Ентропия, Redundancy, Компресия на данни & Битове (клип)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Криптография + + - Вижте също клиповете надолу + - Първо изгледайте клиповете за information theory + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Криптография: Функции за хеширане](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Криптография: Криптиране](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Компресия + + - Първо изгледайте клиповете за information theory + - Computerphile (клипове): + - [Компресия](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Ентропия в компресията](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Дървета на Хъфман)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Дървета на Хъфман](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Елегантна компресия на текст (LZ 77 методът)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Компресията на текст среща вероятностите](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head клипове](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(по желание) Google Developers Live: GZIP не е достатъчен!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Компютърна сигурност + + - [MIT (23 клипа)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A\* + + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A\* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A\* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) + + - **2-3 search trees** + + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + +- ### k-D Trees + + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- **Union-Find** + + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- CSE373 - Analysis of Algorithms (25 videos) + + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From ecdb75428a803bbb51830311c922aac40ad81f00 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Sun, 2 Jan 2022 17:08:56 +0200 Subject: [PATCH 365/857] Translated everything to line 1623 --- translations/README-bg.md | 86 +++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 1396d46da6..2de9c1312f 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1529,48 +1529,48 @@ Mock интервюта: - ### Компютърна сигурност - [MIT (23 клипа)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Въведение, модели на заплахи](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Контролирайте атаките за "отвличане"](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Експлоатация и защита за препълване на буфер](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Разделение на привилегиите](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Възможности](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Моделът за уеб сигурност](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Да подсигурим уеб апликация](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Мрежова сигурност](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Мрежови протоколи](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel атаки](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [GC в Python (клип)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (клип)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -- ### Parallel Programming +- ### Паралелно програмиране - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (клип)](https://www.youtube.com/watch?v=uY85GkaYzBk) -- ### Messaging, Serialization, and Queueing Systems +- ### Системи за съобщения, сериализация и последователност - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Ръководство](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [Ръководства](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 за Java разработчици (клип)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) + - [Ръководство](http://try.redis.io/) - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Да започнем](https://www.rabbitmq.com/getstarted.html) - [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [Първи стъпки със Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [Въведение - Прочетете наръчника](http://zeromq.org/intro:read-the-manual) - [ActiveMQ](http://activemq.apache.org/) - [Kafka](http://kafka.apache.org/documentation.html#introduction) - [MessagePack](http://msgpack.org/index.html) @@ -1578,48 +1578,48 @@ Mock интервюта: - ### A\* - - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A\* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A\* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [Алгоритъм за търсене](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A\* Ръководство за търсене на пътеки (клип)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A\* Търсене на пътеки (E01: обяснение на алгоритъм) (клип)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [Интерактивно ръководство за Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Какво е Fourier transform? За какво се ползва?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Какво е Fourier Transform? (клип)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Разделяй и владей: FFT (клип)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Да разберем FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - [Bloom Filters (клип)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | "Копаене" на големи dataset-ове | Stanford University (клип)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Ръководство](http://billmill.org/bloomfilter-tutorial/) + - [Как да напишем Bloom Filter приложение](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [Как да преброим един милиард различни обекта ползвайки само 1.5KB памет](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - Използва се за преценяването на сходността на документи + - Обратното на MD5 или SHA, които се ползват за преценяване дали два документа/низа са напълно еднакви - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) + - [Разделяй и владей: van Emde Boas Trees (клип)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [Бележки от лекции към MIT](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) -- ### Augmented Data Structures +- ### Разширени структури от данни - - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [CS 61B Лекция 39: Разширяване на структури от данни](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) -- ### Balanced search trees +- ### Балансирани дървета за търсене - - Know at least one type of balanced binary tree (and know how it's implemented): + - Познавайте поне един вид двоични балансирани дървета(и как се имплементират): - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena From e1bd146e18b16982c2ec7fc492523a8d2633bd8c Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Mon, 3 Jan 2022 13:42:46 +0200 Subject: [PATCH 366/857] Translated some more lines --- translations/README-bg.md | 73 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 2de9c1312f..e69ce74996 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1744,17 +1744,17 @@ Mock интервюта: - ### Treap - - Combination of a binary search tree and a heap + - Комбинация от двоично дърво за търсене и heap - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Структури от данни: Treaps обяснени (клип)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Линейно програмиране (клипове) - - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [Линейно програмиране](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Намиране на минимална цена](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Намиране на максимална стойност](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Решаване на линейни уравнения с Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometry, Convex hull (videos) @@ -1769,7 +1769,7 @@ Mock интервюта: - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - ### Machine Learning - - Why ML? + - Защо ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) @@ -1795,11 +1795,10 @@ Mock интервюта: --- -## Additional Detail on Some Subjects +## Допълнителни детайли по някои теми - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? +Добавих тези, за да подкрепя някои от темите и материалите посочени по горе, но не исках да ги добавям там, защото са прекалено много. Лесно е да научите прекалено много по някоя тема. +Искате да Ви наемат този век, нали? - **SOLID** @@ -1826,22 +1825,22 @@ Mock интервюта: - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- **More Dynamic Programming** (videos) +- **Още динамично програмиране** (клипове) - - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + - [6.006: Динамично програмиране I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Динамично програмиране II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: ДП III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: ДП IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Динамично програмиране & ДП за напреднали](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Динамично програмиране: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Динамично програмиране (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - **Advanced Graph Processing** (videos) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Вероятности** (съдържа доста математика, минавайте бавно през този материал) (клипове): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) @@ -1872,23 +1871,23 @@ Mock интервюта: - nice explanation of tries - can be skipped -- **Sorting** +- **Сортиране** - - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Stanford лекции за сортиране: + - [Лекция 15 | Programming Abstractions (клип)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Лекция 16 | Programming Abstractions (клип)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [Алгоритми - Сортиране - Лекция 2 (клип)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Алгоритми - Сортиране II - Лекция 3 (vклип](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena лекции за сортиране: + - [Лекцията започва на 26:46 (клип)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [Лекцията започва на27:40 (клип)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [Лекцията започва на35:00 (клип)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [Лекцията започва на23:50 (клип)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -## Video Series +## Видео серии -Sit back and enjoy. +Настанете се удобно и се наслаждавайте. - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1898,7 +1897,7 @@ Sit back and enjoy. - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- CSE373 - Analysis of Algorithms (25 videos) +- CSE373 - Анализ на алгоритми (25 клипа) - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) @@ -1948,12 +1947,12 @@ Sit back and enjoy. - [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## Курсове по компютърни науки - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) -## Algorithms implementation +## Имплементация на алгоритми - [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) From 6fde2db4e2e2265b7cc2692254c27d38ab0c76d8 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 12:36:42 +0100 Subject: [PATCH 367/857] =?UTF-8?q?Fix=20typo=20in=20'v=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=BF'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index e69ce74996..4c80ed6672 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1878,7 +1878,7 @@ Mock интервюта: - [Лекция 16 | Programming Abstractions (клип)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - [Алгоритми - Сортиране - Лекция 2 (клип)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Алгоритми - Сортиране II - Лекция 3 (vклип](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [Алгоритми - Сортиране II - Лекция 3 (клип)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - Steven Skiena лекции за сортиране: - [Лекцията започва на 26:46 (клип)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - [Лекцията започва на27:40 (клип)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) From 6b8cc0b238e74e5b867d1b39c814ca9ed6129184 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 13:17:20 +0100 Subject: [PATCH 368/857] Translate lines about string matching --- translations/README-bg.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 4c80ed6672..157ab88d21 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1853,23 +1853,23 @@ Mock интервюта: - [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) -- **String Matching** +- **Съвпадение на низове** - - Rabin-Karp (videos): + - Алгоритъм на Рабин-Карп (видеа): - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - Knuth-Morris-Pratt (KMP): + - Алгоритъм на Кнут-Морис-Прaт (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - Boyer–Moore string search algorithm + - Алгоритъм на Бойер-Мур - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped + - Започва супер, но след KMP започва да става излишно сложен + - Добро обяснение на префиксни дървета + - Може да го пропуснете - **Сортиране** From 6488add7ef446607f789744340dd254190d4f02d Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 13:19:09 +0100 Subject: [PATCH 369/857] Update a few missing definitions --- translations/README-bg.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 157ab88d21..8add6647cf 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1833,9 +1833,9 @@ Mock интервюта: - [6.006: ДП IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [6.046: Динамично програмиране & ДП за напреднали](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [6.046: Динамично програмиране: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: Динамично програмиране (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + - [6.046: Динамично програмиране (студентско упражнение)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Работа с Графи за напреднали** (видеа) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) From a16270d587d6337d183de2b107854e2b7e465516 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 13:20:38 +0100 Subject: [PATCH 370/857] =?UTF-8?q?Update=20definition=20videos=20to=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B5=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-bg.md | 50 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 8add6647cf..21a8862cf3 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1889,11 +1889,11 @@ Mock интервюта: Настанете се удобно и се наслаждавайте. -- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [Лист с различни Dynamic Programming проблеми (за всеки на кратко)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 видеа)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 видеа)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) @@ -1901,51 +1901,51 @@ Mock интервюта: - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 видеа)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 видеа)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 видеа)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 видеа)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 видеа)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [MIT 6.004: Computation Structures (49 видеа)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39 видеа)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 видеа)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 видеа)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 видеа)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 видеа)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 видеа)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 видеа)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) -- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 видеа)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 видеа)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 видеа)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 видеа)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 видеа)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) -- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) +- [Въведение в криптографията от Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + - [Сайтът на курса с презентации и задачи](http://www.crypto-textbook.com/) -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 видеа)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Теория на графите от Sarada Herke (67 видеа)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Курсове по компютърни науки From 9de5eedd44d0f60476c28ec8454c2e9b7abb8194 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 13:21:45 +0100 Subject: [PATCH 371/857] Translate the last missing lines from the README-bg --- translations/README-bg.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 21a8862cf3..b964f40863 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1949,40 +1949,40 @@ Mock интервюта: ## Курсове по компютърни науки -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Папка с онлайн курсове по компютърни науки](https://github.com/open-source-society/computer-science) +- [Папка с курсове по компютърни науки (много от които с онлайн лекции)](https://github.com/prakhar1989/awesome-courses) ## Имплементация на алгоритми -- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) +- [Имплементации на различни алгоритми от принстънския университет](https://algs4.cs.princeton.edu/code) -## Papers +## Статии и други ресурси - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 + - сменено от Colossus през 2012 - [2004: MapReduce: Simplified Data Processing on Large Clusters](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? + - сменено от Cloud Dataflow? - [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution + - Dynamo е статията която стартира NoSQL революцията. - [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [статия](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [видео](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) + - [статия](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [видео](https://www.usenix.org/node/170855) - [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf) - [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) +- Още материал: [1,000 статии](https://github.com/0voice/computer_expert_paper) -## LICENSE +## Лиценз [CC-BY-SA-4.0](./LICENSE.txt) From f3d44b3dbfce7d484c56283e24f7f4c7129a40a1 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 13:32:08 +0100 Subject: [PATCH 372/857] Fix came up with a better word for translation --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index b964f40863..07c11ad266 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1889,7 +1889,7 @@ Mock интервюта: Настанете се удобно и се наслаждавайте. -- [Лист с различни Dynamic Programming проблеми (за всеки на кратко)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [Списък с различни Dynamic Programming проблеми (за всеки на кратко)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [x86 Architecture, Assembly, Applications (11 видеа)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) From 9f583194f7d0ae0075969e7cd687e406f31549b9 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Tue, 4 Jan 2022 19:59:40 +0100 Subject: [PATCH 373/857] =?UTF-8?q?Fix=20typo=20'=D0=BD=D0=B0=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BA=D0=BE'=20&=20better=20word=20for=20translati?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 07c11ad266..12030c1729 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1889,7 +1889,7 @@ Mock интервюта: Настанете се удобно и се наслаждавайте. -- [Списък с различни Dynamic Programming проблеми (за всеки на кратко)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [Списък с различни Dynamic Programming задачи (за всички накратко)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [x86 Architecture, Assembly, Applications (11 видеа)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) From 7ed3b94e86f31cb69ce7069bd7ab784054c22d53 Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 5 Jan 2022 08:07:06 +0200 Subject: [PATCH 374/857] Added bulgarian --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 12030c1729..a1faa56d5c 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -21,6 +21,7 @@ - [繁體中文](translations/README-tw.md) - [Japanese (日本語)](translations/README-ja.md) - [Russian](translations/README-ru.md) +- [Bulgarian](https://github.com/jwasham/coding-interview-university/issues/1032) - [German](translations/README-de.md) - [Bahasa Indonesia](translations/README-id.md) - [ខ្មែរ - Khmer](translations/README-kh.md) @@ -43,7 +44,6 @@ - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Bulgarian](https://github.com/jwasham/coding-interview-university/issues/1032) From 8e13e798a67593277a8a2527dd500de1de0ab8bb Mon Sep 17 00:00:00 2001 From: Dimo Dimchev Date: Wed, 5 Jan 2022 08:09:36 +0200 Subject: [PATCH 375/857] Fixed link to Bulgarian translation --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index a1faa56d5c..c0c1461b47 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -21,7 +21,7 @@ - [繁體中文](translations/README-tw.md) - [Japanese (日本語)](translations/README-ja.md) - [Russian](translations/README-ru.md) -- [Bulgarian](https://github.com/jwasham/coding-interview-university/issues/1032) +- [Bulgarian](translations/README-bg.md) - [German](translations/README-de.md) - [Bahasa Indonesia](translations/README-id.md) - [ខ្មែរ - Khmer](translations/README-kh.md) From dbd75b3d0c98246b86d3da83e413d14347cc35d6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 5 Jan 2022 08:13:22 -0800 Subject: [PATCH 376/857] Adds Bulgarian translation. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2084f54ba1..f579a9b9f2 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ - [Bahasa Indonesia](translations/README-id.md) - [ខ្មែរ - Khmer](translations/README-kh.md) - [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) From 238b0ba8449b838b0f1262b26f903d954930f1a4 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 16 Jan 2022 12:37:00 -0800 Subject: [PATCH 377/857] Updates design patterns section. --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f579a9b9f2..3820b35613 100644 --- a/README.md +++ b/README.md @@ -1016,14 +1016,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - ### Combinatorics (n choose k) & Probability - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) From 167f9dacb5368743ec135a8047c7124026b16db7 Mon Sep 17 00:00:00 2001 From: njmsaikat Date: Mon, 24 Jan 2022 18:35:06 +0600 Subject: [PATCH 378/857] link broken fixed and structure updated --- README.md | 1 + translations/README-bn.md | 1736 +++++++++++++++++++------------------ 2 files changed, 874 insertions(+), 863 deletions(-) diff --git a/README.md b/README.md index 3820b35613..2c9198bed9 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ - [ខ្មែរ - Khmer](translations/README-kh.md) - [Uzbek](translations/README-uz.md) - [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) diff --git a/translations/README-bn.md b/translations/README-bn.md index f2e194e30e..501581a555 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -2,10 +2,10 @@ > আমি এটি প্রথমে একটি সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য অধ্যয়নের বিষয়গুলির একটি স্বল্প-করণীয় তালিকা হিসাবে তৈরি করেছি, > তবে এটি আজ আপনি যে বৃহত তালিকায় দেখতে পেলেন grew এই অধ্যয়নের পরিকল্পনাটি পেরিয়ে যাওয়ার পরে, [আমি নিয়োগ পেয়েছি -> অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে] (https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> [অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। > -> আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্য আমি কেন ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি] (https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google সাক্ষাৎকার-cc662ce9bb13) +> আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্য আমি কেন ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > এখানে তালিকাভুক্ত আইটেমগুলি কোনও সফ্টওয়্যার সংস্থার সম্পর্কে আপনাকে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে, > জায়ান্ট সহ: অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট। @@ -15,32 +15,38 @@
অনুবাদ: --[ 中文 版本] (অনুবাদগুলি / README-cn.md) --[টিউইং ভাই-ভিয়েতনামী] (অনুবাদসমূহ / পুনঃনির্মাণ-ভি.এমডি) --[এস্পাওল] (অনুবাদগুলি / README-es.md) --[পর্তুগিজ ব্রাজিলিও] (অনুবাদসমূহ / README-ptbr.md) +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md)
অনুবাদ অগ্রগতি: --[ हिन्दी ] ( https://github.com/jwasham/coding-interview-university/issues/81) --[ עברית] (Https://github.com/jwasham/coding-interview-university/issues/82) --[বাহাসা ইন্দোনেশিয়া] (https://github.com/jwasham/coding-interview-university/issues/101) --[আরবি] (https://github.com/jwasham/coding-interview-university/issues/98) --[তুর্কি] (https://github.com/jwasham/coding-interview-university/issues/90) --[ফরাসি] (https://github.com/jwasham/coding-interview-university/issues/89) --[রাশিয়ান] (https://github.com/jwasham/coding-interview-university/issues/87) --[ইউক্রেনীয়] (https://github.com/jwasham/coding-interview-university/issues/106) --[কোরিয়ান ( 한국어 )] (https://github.com/jwasham/coding-interview-university/issues/118) --[তেলেগু] (https://github.com/jwasham/coding-interview-university/issues/117) --[পোলিশ] (https://github.com/jwasham/coding-interview-university/issues/122) --[উর্দু] (https://github.com/jwasham/coding-interview-university/issues/140) --[থাই] (https://github.com/jwasham/coding-interview-university/issues/156) --[গ্রীক] (https://github.com/jwasham/coding-interview-university/issues/166) --[মালায়ালাম] (https://github.com/jwasham/coding-interview-university/issues/239) --[জাপানীজ ( 日本語)] (https://github.com/jwasham/coding-interview-university/issues/257) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239)
@@ -82,13 +88,15 @@
##এটা কি? - + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + কোনও বড় প্রতিষ্ঠানের সফটওয়্যার ইঞ্জিনিয়ারের কাছে ওয়েব বিকাশকারী (স্ব-শিক্ষিত, কোনও সিএস ডিগ্রি) থেকে যাওয়ার জন্য এটি আমার বহু মাসের অধ্যয়ন পরিকল্পনা। -! [হোয়াইটবোর্ডে কোডিং-এইচবিওর সিলিকন ভ্যালি থেকে] (https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -এটি ** নতুন সফটওয়্যার ইঞ্জিনিয়ার ** বা যাঁরা স্যুইচ করছেন তাদের জন্য -সফ্টওয়্যার / ওয়েব ডেভলপমেন্ট সফটওয়্যার ইঞ্জিনিয়ারিং (যেখানে কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন)। যদি তোমার থাকে +এটি +* নতুন সফটওয়্যার ইঞ্জিনিয়ার +* বা যাঁরা স্যুইচ করছেন তাদের জন্য +* সফ্টওয়্যার / ওয়েব ডেভলপমেন্ট সফটওয়্যার ইঞ্জিনিয়ারিং (যেখানে কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন)। যদি তোমার থাকে বহু বছরের অভিজ্ঞতা রয়েছে এবং সফটওয়্যার ইঞ্জিনিয়ারিংয়ের বহু বছরের অভিজ্ঞতা দাবি করছেন, আরও একটি কঠিন সাক্ষাত্কারের প্রত্যাশা করুন। আপনার যদি অনেক বছরের সফ্টওয়্যার / ওয়েব বিকাশের অভিজ্ঞতা থাকে তবে নোট করুন যে গুগল, অ্যামাজন, @@ -100,100 +108,100 @@ ##সুচিপত্র --[এটি কী?] (#এটি-কী) --[কেন এটি ব্যবহার করবেন?] (#এটি-কেন-ব্যবহার-করুন) --[এটি কীভাবে ব্যবহার করবেন] (#এটি-কীভাবে-ব্যবহার-করবেন) --[মনে হয় আপনি যথেষ্ট স্মার্ট নন] (#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) --[ভিডিও সংস্থান সম্পর্কে] (#ভিডিও-সংস্থান-সম্পর্কে) --[সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি] (#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) --[সাক্ষাত্কারের জন্য একটি ভাষা বাছুন] (#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) --[বইয়ের তালিকা] (#বুক-তালিকা) --[আপনি শুরু করার আগে] (#আপনি-আগে-শুরু করার আগে) --[যা আপনি আবৃত দেখবেন না] (#কী-আপনি-দেখতে-পাবেন-না) --[পূর্বশর্ত জ্ঞান] (#পূর্বশর্ত-জ্ঞান) --[দৈনিক পরিকল্পনা] (#দৈনিক-পরিকল্পনা) --[অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ] (#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) --[ডেটা স্ট্রাকচার] (#ডেটা-স্ট্রাকচার) - -[অ্যারে] (#অ্যারে) - -[লিঙ্কযুক্ত তালিকা] (#লিঙ্কযুক্ত-তালিকাগুলি) - -[স্ট্যাক] (#স্ট্যাক) - -[সারি] (#সারি) - -[হ্যাশ টেবিল] (#হ্যাশ-টেবিল) --[আরও জ্ঞান] (#আরও-জ্ঞান) - -[বাইনারি অনুসন্ধান] (#বাইনারি-অনুসন্ধান) - -[বিটওয়াইজ অপারেশন] (#বিটওয়াইস-অপারেশন) --[গাছ] (#গাছ) - -[গাছ-নোট ও পটভূমি] (#গাছ-নোট-পটভূমি) - -[বাইনারি অনুসন্ধান গাছ: বিএসটিএস] (#বাইনারি-অনুসন্ধান-গাছ-বুস্ট) - -[গাদা / অগ্রাধিকার সারি / বাইনারি হিপ] (#হিপ-অগ্রাধিকার-সারি-বাইনারি-হিপ) +- [এটি কী?](#এটি-কী) +- [কেন এটি ব্যবহার করবেন?](#এটি-কেন-ব্যবহার-করুন) +- [এটি কীভাবে ব্যবহার করবেন](#এটি-কীভাবে-ব্যবহার-করবেন) +- [মনে হয় আপনি যথেষ্ট স্মার্ট নন](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) +- [ভিডিও সংস্থান সম্পর্কে](#ভিডিও-সংস্থান-সম্পর্কে) +- [সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) +- [সাক্ষাত্কারের জন্য একটি ভাষা বাছুন](#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) +- [বইয়ের তালিকা](#বুক-তালিকা) +- [আপনি শুরু করার আগে](#আপনি-আগে-শুরু-করার-আগে) +- [যা আপনি আবৃত দেখবেন না](#কী-আপনি-দেখতে-পাবেন-না) +- [পূর্বশর্ত জ্ঞান](#পূর্বশর্ত-জ্ঞান) +- [দৈনিক পরিকল্পনা](#দৈনিক-পরিকল্পনা) +- [অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ](#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) +- [ডেটা স্ট্রাকচার](#ডেটা-স্ট্রাকচার) + -[অ্যারে](#অ্যারে) + -[লিঙ্কযুক্ত তালিকা](#লিঙ্কযুক্ত-তালিকাগুলি) + -[স্ট্যাক](#স্ট্যাক) + -[সারি](#সারি) + -[হ্যাশ টেবিল](#হ্যাশ-টেবিল) +- [আরও জ্ঞান](#আরও-জ্ঞান) + -[বাইনারি অনুসন্ধান](#বাইনারি-অনুসন্ধান) + -[বিটওয়াইজ অপারেশন](#বিটওয়াইস-অপারেশন) +- [গাছ](#গাছ) + -[গাছ-নোট ও পটভূমি](#গাছ-নোট-পটভূমি) + -[বাইনারি অনুসন্ধান গাছ: বিএসটিএস](#বাইনারি-অনুসন্ধান-গাছ-বুস্ট) + -[গাদা / অগ্রাধিকার সারি / বাইনারি হিপ](#হিপ-অগ্রাধিকার-সারি-বাইনারি-হিপ) -সুষম অনুসন্ধান গাছ (সাধারণ ধারণা, বিশদ নয়) -ট্র্যাভারসাল: প্রির্ডার, ইনর্ডার, পোস্টর্ডার, বিএফএস, ডিএফএস --[বাছাই করা] (#বাছাই-করা) +- [বাছাই করা](#বাছাই-করা) -নির্বাচন -সন্নিবেশ -হিপসোর্ট - -quicksort + -দ্রুত বাছাই -মার্জ সাজান --[গ্রাফ] (#গ্রাফ) +- [গ্রাফ](#গ্রাফ) -পরিচালিত -পুনর্নির্দেশ -অন্তিক ম্যাট্রিক্স -সংলগ্ন তালিকা -ট্র্যাভারসাল: বিএফএস, ডিএফএস --[আরও বেশি জ্ঞান] (#আরও-বেশি-জ্ঞান) - -[পুনরাবৃত্তি] (#পুনরাবৃত্তি) - -[ডায়নামিক প্রোগ্রামিং] (#ডায়নামিক-প্রোগ্রামিং) - -[অবজেক্ট-ওরিয়েন্টড প্রোগ্রামিং] (#অবজেক্ট-ওরিয়েন্টেড-প্রোগ্রামিং) - -[নকশার ধরণগুলি] (#ডিজাইন-নিদর্শন) - -[সংযুক্তি (এন কে নির্বাচন করুন) এবং সম্ভাবনা] (#সংযুক্তি-এন-পছন্দ-কে-সম্ভাবনা) - -[এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম] (#এনপি-এনপি-সম্পূর্ণ-এবং-আনুমানিক-অ্যালগোরিদম) - -[ক্যাশে] (#ক্যাশে) - -[প্রক্রিয়া এবং থ্রেড] (#প্রক্রিয়া-এবং-থ্রেড) - -[পরীক্ষা] (#পরীক্ষা) - -[সময়সূচী] (#সময়সূচী) - -[স্ট্রিং সন্ধান এবং ম্যানিপুলেশনস] (#স্ট্রিং-সন্ধান-ম্যানিপুলেশনস) - -[চেষ্টা] (#চেষ্টা) - -[ভাসমান পয়েন্ট নম্বর] (#ভাসমান-পয়েন্ট নম্বর) - -[ইউনিকোড] (#ইউনিকোড) - -[অন্তিমারতা] (#শেষতা) - -[নেটওয়ার্কিং] (#নেটওয়ার্কিং) --[সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং] (#সিস্টেম-ডিজাইন-স্কেলাবিলিটি-ডেটা-হ্যান্ডলিং) (যদি আপনার 4+ বছরের অভিজ্ঞতা থাকে) --[চূড়ান্ত পর্যালোচনা] (#চূড়ান্ত-পর্যালোচনা) --[কোডিং প্রশ্ন অনুশীলন] (#কোডিং-প্রশ্ন-অনুশীলন) --[কোডিং অনুশীলন / চ্যালেঞ্জ] (#কোডিং-এক্সারসাইজেশনগুলি) --[একবার আপনি সাক্ষাত্কারের কাছাকাছি এসেছেন] (#একবার-আপনি-সাক্ষাত্কারের-কাছাকাছি-এসেছেন) --[আপনার জীবনবৃত্তান্ত] (#আপনার-জীবনবৃত্তান্ত) --[সাক্ষাত্কারটি আসার জন্য চিন্তাভাবনা করুন] (#সাক্ষাত্কারটি-কখন-আসবে-এর-জন্য-চিন্তাভাবনা-করুন) --[সাক্ষাত্কারকারীর জন্য প্রশ্ন রয়েছে] (#সাক্ষাত্কারকারীর-জন্য-প্রশ্ন-রয়েছে) --[একবার আপনি কাজটি পেয়ে যাবেন] (#একবার-আপনি-কাজটি-পেয়েছেন) - -----------------এই পয়েন্টের নীচে থাকা সমস্ত কিছুই alচ্ছিক---------------- +- [আরও বেশি জ্ঞান](#আরও-বেশি-জ্ঞান) + -[পুনরাবৃত্তি](#পুনরাবৃত্তি) + -[ডায়নামিক প্রোগ্রামিং](#ডায়নামিক-প্রোগ্রামিং) + -[অবজেক্ট-ওরিয়েন্টড প্রোগ্রামিং](#অবজেক্ট-ওরিয়েন্টেড-প্রোগ্রামিং) + -[নকশার ধরণগুলি](#ডিজাইন-নিদর্শন) + -[সংযুক্তি (এন কে নির্বাচন করুন) এবং সম্ভাবনা](#সংযুক্তি-এন-পছন্দ-কে-সম্ভাবনা) + -[এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম](#এনপি-এনপি-সম্পূর্ণ-এবং-আনুমানিক-অ্যালগোরিদম) + -[ক্যাশে](#ক্যাশে) + -[প্রক্রিয়া এবং থ্রেড](#প্রক্রিয়া-এবং-থ্রেড) + -[পরীক্ষা](#পরীক্ষা) + -[সময়সূচী](#সময়সূচী) + -[স্ট্রিং সন্ধান এবং ম্যানিপুলেশনস](#স্ট্রিং-সন্ধান-ম্যানিপুলেশনস) + -[চেষ্টা](#চেষ্টা) + -[ভাসমান পয়েন্ট নম্বর](#ভাসমান-পয়েন্ট নম্বর) + -[ইউনিকোড](#ইউনিকোড) + -[অন্তিমারতা](#শেষতা) + -[নেটওয়ার্কিং](#নেটওয়ার্কিং) +- [সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং](#সিস্টেম-ডিজাইন-স্কেলাবিলিটি-ডেটা-হ্যান্ডলিং) (যদি আপনার 4+ বছরের অভিজ্ঞতা থাকে) +- [চূড়ান্ত পর্যালোচনা](#চূড়ান্ত-পর্যালোচনা) +- [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) +- [কোডিং অনুশীলন / চ্যালেঞ্জ](#কোডিং-এক্সারসাইজেশনগুলি) +- [একবার আপনি সাক্ষাত্কারের কাছাকাছি এসেছেন](#একবার-আপনি-সাক্ষাত্কারের-কাছাকাছি-এসেছেন) +- [আপনার জীবনবৃত্তান্ত](#আপনার-জীবনবৃত্তান্ত) +- [সাক্ষাত্কারটি আসার জন্য চিন্তাভাবনা করুন](#সাক্ষাত্কারটি-কখন-আসবে-এর-জন্য-চিন্তাভাবনা-করুন) +- [সাক্ষাত্কারকারীর জন্য প্রশ্ন রয়েছে](#সাক্ষাত্কারকারীর-জন্য-প্রশ্ন-রয়েছে) +- [একবার আপনি কাজটি পেয়ে যাবেন](#একবার-আপনি-কাজটি-পেয়েছেন) + +----------------এই পয়েন্টের নীচে থাকা সমস্ত কিছুই ঐচ্ছিক----------------
অতিরিক্ত সংস্থান --[অতিরিক্ত বই] (#অতিরিক্ত-বই) --[অতিরিক্ত শিক্ষা] (#অতিরিক্ত-শিক্ষণ) - -[সংকলক] (#সংকলক) - -[ইম্যাকস এবং ভিআই (এম)] (#ইম্যাকস এবং ভিএম) - -[ইউনিক্স কমান্ড লাইন সরঞ্জাম] (#ইউনিক্স-কমান্ড-লাইন-সরঞ্জাম) - -[তথ্য তত্ত্ব] (#তথ্য-তত্ত্ব-ভিডিও) - -[সমতা এবং হামিং কোড] (#সমতা-হামিং-কোড-ভিডিও) - -[এন্ট্রপি] (#এনট্রপি) - -[ক্রিপ্টোগ্রাফি] (#ক্রিপ্টোগ্রাফি) - -[সংক্ষেপণ] (#সংক্ষেপণ) - -[কম্পিউটার সুরক্ষা] (#কম্পিউটার-সুরক্ষা) - -[আবর্জনা সংগ্রহ] (#জঞ্জাল-সংগ্রহ) - -[সমান্তরাল প্রোগ্রামিং] (#সমান্তরাল-প্রোগ্রামিং) - -[মেসেজিং, সিরিয়ালাইজেশন, এবং কুইউিং সিস্টেম] (#মেসেজিং-সিরিয়ালাইজেশন-এবং-কুইউং-সিস্টেম) - -[এ *] (#ক) - -[ফাস্ট ফুরিয়ার ট্রান্সফর্ম] (#ফাস্ট-ফুরিয়ার-ট্রান্সফর্ম) - -[ব্লুম ফিল্টার] (#ব্লুম-ফিল্টার) - -[হাইপারলগলগ] (#হাইপারলগলগ) - -[স্থানীয়তা-সংবেদনশীল হ্যাশিং] (#লোকাল-সংবেদনশীল-হ্যাশিং) - -[ভ্যান এমডে বোস ট্রি] (#ভ্যান-এমডি-বোস-ট্রি) - -[অগমেন্টেড ডেটা স্ট্রাকচার] (#সংযুক্ত-ডেটা-কাঠামো) - -[ভারসাম্যযুক্ত অনুসন্ধান গাছ] (#সুষম-অনুসন্ধান-গাছ) +-[অতিরিক্ত বই](#অতিরিক্ত-বই) +-[অতিরিক্ত শিক্ষা](#অতিরিক্ত-শিক্ষণ) + -[সংকলক](#সংকলক) + -[ইম্যাকস এবং ভিআই (এম)](#ইম্যাকস-এবং-ভিএম) + -[ইউনিক্স কমান্ড লাইন সরঞ্জাম](#ইউনিক্স-কমান্ড-লাইন-সরঞ্জাম) + -[তথ্য তত্ত্ব](#তথ্য-তত্ত্ব-ভিডিও) + -[সমতা এবং হামিং কোড](#সমতা-হামিং-কোড-ভিডিও) + -[এন্ট্রপি](#এনট্রপি) + -[ক্রিপ্টোগ্রাফি](#ক্রিপ্টোগ্রাফি) + -[সংক্ষেপণ](#সংক্ষেপণ) + -[কম্পিউটার সুরক্ষা](#কম্পিউটার-সুরক্ষা) + -[আবর্জনা সংগ্রহ](#জঞ্জাল-সংগ্রহ) + -[সমান্তরাল প্রোগ্রামিং](#সমান্তরাল-প্রোগ্রামিং) + -[মেসেজিং, সিরিয়ালাইজেশন, এবং কুইউিং সিস্টেম](#মেসেজিং-সিরিয়ালাইজেশন-এবং-কুইউং-সিস্টেম) + -[এ *](#ক) + -[ফাস্ট ফুরিয়ার ট্রান্সফর্ম](#ফাস্ট-ফুরিয়ার-ট্রান্সফর্ম) + -[ব্লুম ফিল্টার](#ব্লুম-ফিল্টার) + -[হাইপারলগলগ](#হাইপারলগলগ) + -[স্থানীয়তা-সংবেদনশীল হ্যাশিং](#লোকাল-সংবেদনশীল-হ্যাশিং) + -[ভ্যান এমডে বোস ট্রি](#ভ্যান-এমডি-বোস-ট্রি) + -[অগমেন্টেড ডেটা স্ট্রাকচার](#সংযুক্ত-ডেটা-কাঠামো) + -[ভারসাম্যযুক্ত অনুসন্ধান গাছ](#সুষম-অনুসন্ধান-গাছ) -এভিএল গাছ -গাছ স্প্লে -লাল / কালো গাছ @@ -201,20 +209,20 @@ -২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ) -এন-আরি (কে-আরি, এম-আরি) গাছ -বি-ট্রি - -[কেডি গাছ] (#কেডি-ট্রি) - -[তালিকাগুলি বাদ দিন] (#এড়িয়ে যাওয়া-তালিকাগুলি) - -[নেটওয়ার্ক প্রবাহ] (#নেটওয়ার্ক-প্রবাহ) - -[বিচ্ছিন্ন সেট এবং ইউনিয়ন সন্ধান করুন] (#বিভেদ-সেট-ইউনিয়ন-অনুসন্ধান) - -[দ্রুত প্রক্রিয়াকরণের জন্য গণিত] (#দ্রুত-প্রক্রিয়াজাতকরণের-জন্য-গণিত) - -[ট্রিপ] (#ট্রাপ) - -[লিনিয়ার প্রোগ্রামিং] (#লিনিয়ার-প্রোগ্রামিং-ভিডিও) - -[জ্যামিতি, উত্তল হাল] [#জ্যামিতি-উত্তল-হাল-ভিডিও) - -[স্বতন্ত্র গণিত] (#স্বতন্ত্র-গণিত) - -[মেশিন লার্নিং] (#মেশিন-লার্নিং) --[কয়েকটি বিষয়ে অতিরিক্ত বিশদ বিবরণ] (#কিছু-বিষয়ে-কিছু-অতিরিক্ত-বিশদ-বিবরণ) --[ভিডিও সিরিজ] (#ভিডিও-সিরিজ) --[কম্পিউটার বিজ্ঞান কোর্স] (#কম্পিউটার-বিজ্ঞান-কোর্স) --[কাগজপত্র] (#কাগজপত্র) + -[কেডি গাছ](#কেডি-ট্রি) + -[তালিকাগুলি বাদ দিন](#এড়িয়ে-যাওয়া-তালিকাগুলি) + -[নেটওয়ার্ক প্রবাহ](#নেটওয়ার্ক-প্রবাহ) + -[বিচ্ছিন্ন সেট এবং ইউনিয়ন সন্ধান করুন](#বিভেদ-সেট-ইউনিয়ন-অনুসন্ধান) + -[দ্রুত প্রক্রিয়াকরণের জন্য গণিত](#দ্রুত-প্রক্রিয়াজাতকরণের-জন্য-গণিত) + -[ট্রিপ](#ট্রাপ) + -[লিনিয়ার প্রোগ্রামিং](#লিনিয়ার-প্রোগ্রামিং-ভিডিও) + -[জ্যামিতি, উত্তল হাল](#জ্যামিতি-উত্তল-হাল-ভিডিও) + -[স্বতন্ত্র গণিত](#স্বতন্ত্র-গণিত) + -[মেশিন লার্নিং](#মেশিন-লার্নিং) +-[কয়েকটি বিষয়ে অতিরিক্ত বিশদ বিবরণ](#কিছু-বিষয়ে-কিছু-অতিরিক্ত-বিশদ-বিবরণ) +-[ভিডিও সিরিজ](#ভিডিও-সিরিজ) +-[কম্পিউটার বিজ্ঞান কোর্স](#কম্পিউটার-বিজ্ঞান-কোর্স) +-[কাগজপত্র](#কাগজপত্র)
@@ -259,16 +267,16 @@ `git rebase jwasham/main` `git push--force` -[গিথুব-স্বাদযুক্ত মার্কডাউন সম্পর্কে আরও] (https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[গিথুব-স্বাদযুক্ত মার্কডাউন সম্পর্কে আরও](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ##মনে হয় না আপনি যথেষ্ট স্মার্ট নন -সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। --[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী] (https://www.youtube.com/watch?v=0SARbwvhupQ) --[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই] [https://www.youtube.com/watch?v=1i8ylq4j_EY) --[বিশ্বাস আপনি পরিবর্তন করতে পারেন] (http://www.aaronsw.com/weblog/dweck) --[ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন] (https://www.youtube.com/watch?v=uPOJ1PR50ag) +-[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) +-[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই][https://www.youtube.com/watch?v=1i8ylq4j_EY) +-[বিশ্বাস আপনি পরিবর্তন করতে পারেন](http://www.aaronsw.com/weblog/dweck) +-[ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন](https://www.youtube.com/watch?v=uPOJ1PR50ag) ##ভিডিও সংস্থান সম্পর্কে @@ -284,24 +292,24 @@
<সুমারী> সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কারের প্রস্তুতি --[] [এ বি সি: সর্বদা কোডিং থাকুন] (https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) --[] [হোয়াইটবোর্ডিং] (https://medium.com/@dpup/ whiteboarding-4df873dbba2e#.hf6jn45g1) --[] [প্রোগ্রামিং সাক্ষাত্কারের সময় কার্যকর হোয়াইটবোর্ডিং] (http://www.coderust.com/blog/2014/04/10/Effective-Witeboarding-during-programming-interviews/) --[] [টেক রিক্রুটিং কে ক্ষমা করা] (https://www.youtube.com/watch?v=N233T0epWTs) --[] কোডিং সাক্ষাত্কারটি ক্র্যাক করা 1: - -[] [গেইল এল ম্যাকডোয়েল-কোডিং সাক্ষাত্কারের ক্র্যাকিং (ভিডিও)] (https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - -[] [লেখক গেইল লাকম্যান ম্যাকডোভেল (ভিডিও) এর সাথে কোডিং সাক্ষাত্কার ক্র্যাক করা] [https://www.youtube.com/watch?v=aClxtDcdpsQ) --[] বিগ 4 এ কীভাবে চাকরী পাবেন? - -[] [বিগ 4 এ কীভাবে চাকরী পাবেন-অ্যামাজন, ফেসবুক, গুগল এবং মাইক্রোসফ্ট (ভিডিও)] (https://www.youtube.com/watch?v=YJZCUhxNCv8) - --[] প্রস্তুতি কোর্স: - -[] [সফটওয়্যার ইঞ্জিনিয়ার সাক্ষাত্কার প্রকাশিত (বেতনভুক্ত কোর্স)] (https://www.udemy.com/software-engineer-interview-unleashed): +- [এ বি সি: সর্বদা কোডিং থাকুন](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [হোয়াইটবোর্ডিং](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [প্রোগ্রামিং সাক্ষাত্কারের সময় কার্যকর হোয়াইটবোর্ডিং](http://www.coderust.com/blog/2014/04/10/Effective-Witeboarding-during-programming-interviews/) +- [টেক রিক্রুটিং কে ক্ষমা করা](https://www.youtube.com/watch?v=N233T0epWTs) +- কোডিং সাক্ষাত্কারটি ক্র্যাক করা 1: +- [গেইল এল ম্যাকডোয়েল-কোডিং সাক্ষাত্কারের ক্র্যাকিং (ভিডিও)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [লেখক গেইল লাকম্যান ম্যাকডোভেল (ভিডিও) এর সাথে কোডিং সাক্ষাত্কার ক্র্যাক করা](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- বিগ 4 এ কীভাবে চাকরী পাবেন? + - [বিগ 4 এ কীভাবে চাকরী পাবেন-অ্যামাজন, ফেসবুক, গুগল এবং মাইক্রোসফ্ট (ভিডিও)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + +- প্রস্তুতি কোর্স: + - [সফটওয়্যার ইঞ্জিনিয়ার সাক্ষাত্কার প্রকাশিত (বেতনভুক্ত কোর্স)](https://www.udemy.com/software-engineer-interview-unleashed): -একজন প্রাক্তন গুগল সাক্ষাত্কারকারীর থেকে কীভাবে নিজেকে সফটওয়্যার ইঞ্জিনিয়ার সাক্ষাত্কারের জন্য প্রস্তুত করবেন তা শিখুন। - -[] [ডেটা স্ট্রাকচার, অ্যালগরিদম এবং সাক্ষাত্কারের জন্য পাইথন! (প্রদত্ত কোর্স)] (https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - [ডেটা স্ট্রাকচার, অ্যালগরিদম এবং সাক্ষাত্কারের জন্য পাইথন! (প্রদত্ত কোর্স)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): -পাইথন কেন্দ্রিক সাক্ষাত্কার প্রস্তুতির কোর্সে ডেটা স্ট্রাকচার, অ্যালগরিদম, মক সাক্ষাত্কার এবং আরও অনেক কিছু রয়েছে। - -[] [পাইথন ব্যবহার করে ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলিতে ইন্ট্রো! (উদাসীনতা মুক্ত কোর্স)] (https://www.udacity.com/cورس/data-structures-এবং-algorithms-in-python--ud513): + - [পাইথন ব্যবহার করে ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলিতে ইন্ট্রো! (উদাসীনতা মুক্ত কোর্স)](https://www.udacity.com/cورس/data-structures-এবং-algorithms-in-python--ud513): -একটি ফ্রি পাইথন কেন্দ্রিক ডেটা স্ট্রাকচার এবং অ্যালগরিদম কোর্স। - -[] [ডেটা স্ট্রাকচার এবং অ্যালগোরিদম ন্যানোডগ্রি! (উদাস্তিটি ন্যানোডগ্রি প্রদান করেছে)] (https://www.udacity.com/course/data-structures-এবং-algorithms-nanodegree--nd256): + - [ডেটা স্ট্রাকচার এবং অ্যালগোরিদম ন্যানোডগ্রি! (উদাস্তিটি ন্যানোডগ্রি প্রদান করেছে)](https://www.udacity.com/course/data-structures-এবং-algorithms-nanodegree--nd256): -100 টিরও বেশি ডেটা স্ট্রাকচার এবং অ্যালগরিদম অনুশীলন এবং আপনাকে একটি সাক্ষাত্কারের জন্য এবং কাজের সুযোগে দৃশ্যের জন্য আপনাকে প্রস্তুত করতে ডেডিকেটেড পরামর্শদাতার দিকনির্দেশ দিয়ে অনুশীলন পান।
@@ -319,7 +327,9 @@ -জাভাস্ক্রিপ্ট -রুবি -এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: [কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন] (https://startupnextdoor.com/important-pick-one-language-for-tod-কোডিং-ইন্টারভিউ /) +এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: [কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) + +এই মূল নিবন্ধটি আমার পোস্টের উপর ভিত্তি করে ছিল: http://blog.codingforinterviews.com/best-programming-language-jobs/ আপনার ভাষায় খুব স্বাচ্ছন্দ্য বোধ করা এবং বুদ্ধিমান হওয়া দরকার। @@ -337,28 +347,28 @@ ###সাক্ষাত্কার প্রস্তুতি --[] [প্রোগ্রামিং সাক্ষাত্কারগুলি উদ্ভাসিত হয়েছে: সাক্ষাত্কারের মাধ্যমে আপনার কোডের কোডিং, ৪ র্থ সংস্করণ] (https://www.amazon.com/Programming-Interviews-এক্সপোজড-থ্রু-ইন্টারভিউ / ডিপি / 111941847X/) +- [প্রোগ্রামিং সাক্ষাত্কারগুলি উদ্ভাসিত হয়েছে: সাক্ষাত্কারের মাধ্যমে আপনার কোডের কোডিং, ৪ র্থ সংস্করণ](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) -সি ++ এবং জাভাতে উত্তর -কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি -খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) --[] [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ] (http://www.amazon.com/Cracking-Coding-Interview-6th-প্রোগ্রামামিং / ডিপি/0984782850/) +- [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) -জাভা উত্তর
-আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে +আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে একটি নির্বাচন করুন: --[] [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)] (https://www.amazon.com/ উপাদানসমূহ-প্রোগ্রামিং-ইন্টারভিউগুলি-তথ্যদাতা-গুয়াইড / ডিপি / 1479274836) --[] প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ) - -[বই] (https://www.amazon.com/ উপাদানসমূহ-প্রোগ্রামিং-ইন্টারভিউগুলি-জাভা-ইনসাইডার্স / ডিপি / 1517435803/) - -[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস] (https://github.com/gardncl/eitions-of-programming-inviewview) +- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ) + -[বই](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) + -[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews)
###কম্পিউটার আর্কিটেকচার --[] [গ্রেট কোড লিখুন: খণ্ড ১: মেশিনটি বোঝা] (https://www.amazon.com/Write-Great-Code-Unders સમજ-ম্যাচাইন / ডিপি / 1593270038) +- [গ্রেট কোড লিখুন: খণ্ড ১: মেশিনটি বোঝা] (https://www.amazon.com/Write-Great-Code-Unders સમજ-ম্যাচাইন / ডিপি / 1593270038) -বইটি 2004 সালে প্রকাশিত হয়েছিল এবং এটি কিছুটা পুরানো হলেও সংক্ষেপে কম্পিউটার বোঝার জন্য এটি এক ভয়ঙ্কর উত্স। -লেখক আবিষ্কার করেছেন [এইচএলএ] (https://en.wikedia.org/wiki/High_Level_As आशीर्वाद), তাই লবণের দানা দিয়ে এইচএলএ-তে উল্লেখ এবং উদাহরণ নিন। বিস্তৃতভাবে ব্যবহৃত হয় না, তবে সমাবেশটি কেমন লাগে তার শালীন উদাহরণ। -এই অধ্যায়গুলি আপনাকে একটি সুন্দর ভিত্তি দেওয়ার জন্য মূল্যবান: @@ -396,8 +406,8 @@ আমি এই দুটি পড়িনি, তবে সেডজেউইক দ্বারা তারা উচ্চ মানের এবং রচিত। সে দুর্দান্ত। --[] [সি ++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) --[] [সি ++ পার্ট 5 এ অ্যালগরিদম: গ্রাফ অ্যালগরিদম] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- [সি ++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) +- [সি ++ পার্ট 5 এ অ্যালগরিদম: গ্রাফ অ্যালগরিদম] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) আপনার যদি সি ++ এর জন্য আরও ভাল প্রস্তাবনা থাকে তবে দয়া করে আমাকে জানান। একটি বিস্তৃত রিসোর্স খুঁজছি। @@ -408,14 +418,14 @@
জাভা --[] [অ্যালগোরিদম (সেডজউইক এবং ওয়েইন)] (https://www.amazon.com/Algorithms-4th-রবার্ট-সেজজউইক / dp/032157351X/) +- [অ্যালগোরিদম (সেডজউইক এবং ওয়েইন)] (https://www.amazon.com/Algorithms-4th-রবার্ট-সেজজউইক / dp/032157351X/) -পাঠ্যক্রমের বইয়ের সামগ্রী (এবং সেডজউইক!) সহ ভিডিও: -[অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) -[অ্যালগোরিদম II] (https://www.coursera.org/learn/algorithms-part2) বা: --[] [জাভাতে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Data-Structures-Algorithms-Michael-গুডরিচ/dp/1118771338/) +- [জাভাতে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Data-Structures-Algorithms-Michael-গুডরিচ/dp/1118771338/) -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা -ইউসি বার্কলে সিএস ইন্ট্রো কোর্সের জন্য textচ্ছিক পাঠ্য হিসাবে ব্যবহৃত -নীচে পাইথন সংস্করণে আমার বইয়ের প্রতিবেদনটি দেখুন। এই বইটিতে একই বিষয় রয়েছে। @@ -427,7 +437,7 @@
পাইথন --[] [পাইথনে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Structures-অ্যালগোরিদমস-পাইথন-মিশেল-গুডরিচ / ডিপি / 1118290275/) +- [পাইথনে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Structures-অ্যালগোরিদমস-পাইথন-মিশেল-গুডরিচ / ডিপি / 1118290275/) -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা -আমি এই বই পছন্দ। এটি সব কিছুর আওতায় পড়ে। -পাইথোনিক কোড @@ -528,19 +538,19 @@
<সংশ্লেষ> পূর্বশর্ত জ্ঞান << সংক্ষিপ্ত> --[] ** সি ** শিখুন +- ** সি ** শিখুন -সি সর্বত্র আছে। আপনি অধ্যয়নরত অবস্থায় আপনি বই, বক্তৃতা, ভিডিও, * সর্বত্র * এর উদাহরণ দেখতে পাবেন। - -[] [সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, খণ্ড ২] (https://www.amazon.com/Programming-Language-ব্রায়ান-ডব্লিউ-কর্নিগান/dp/0131103628) + - [সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, খণ্ড ২] (https://www.amazon.com/Programming-Language-ব্রায়ান-ডব্লিউ-কর্নিগান/dp/0131103628) -এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষায় দুর্দান্ত হ্যান্ডেল দেবে এবং যদি আপনি এটি কিছুটা অনুশীলন করেন আপনি দ্রুত দক্ষ হয়ে উঠবেন। সি বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কীভাবে কাজ করে তা বুঝতে সহায়তা করে। -[প্রশ্নের উত্তর] (https://github.com/lekkas/c-algorithms) --[] ** কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে: ** - -[] [সিপিইউ কীভাবে একটি প্রোগ্রাম (ভিডিও) চালায়]] (https://www.youtube.com/watch?v=XM4lGflQFvA) - -[] [কম্পিউটারগুলি কীভাবে গণনা করে-ALU (ভিডিও)] (https://youtu.be/1I5ZMmrOfnA) - -[] [নিবন্ধসমূহ এবং র‌্যাম (ভিডিও)] (https://youtu.be/fpnE6UAfbtU) - -[] [সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) (ভিডিও)] (https://youtu.be/FZGugFqdr60) - -[] [নির্দেশাবলী এবং প্রোগ্রামগুলি (ভিডিও)] (https://youtu.be/zltgXvg6r3k) +- ** কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে: ** + - [সিপিইউ কীভাবে একটি প্রোগ্রাম (ভিডিও) চালায়]] (https://www.youtube.com/watch?v=XM4lGflQFvA) + - [কম্পিউটারগুলি কীভাবে গণনা করে-ALU (ভিডিও)] (https://youtu.be/1I5ZMmrOfnA) + - [নিবন্ধসমূহ এবং র‌্যাম (ভিডিও)] (https://youtu.be/fpnE6UAfbtU) + - [সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) (ভিডিও)] (https://youtu.be/FZGugFqdr60) + - [নির্দেশাবলী এবং প্রোগ্রামগুলি (ভিডিও)] (https://youtu.be/zltgXvg6r3k)
@@ -552,23 +562,23 @@ -বাস্তবায়নের কিছুই নেই -এখানে প্রচুর ভিডিও রয়েছে। যতক্ষণ না আপনি এটি বুঝতে পারছেন ঠিক ততক্ষণ দেখুন। আপনি সর্বদা ফিরে এসে পর্যালোচনা করতে পারেন। -কিছু বক্তৃতা যদি খুব ম্যাথিক হয় তবে আপনি ব্যাকগ্রাউন্ডের জ্ঞান পেতে নীচে নেমে গিয়ে আলাদা গণিতের ভিডিওগুলি দেখতে পারেন। --[] [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=iOq5kSKqeR4) --[] [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)] (https://www.youtube.com/watch?v=V6mKVRU1evU) --[] [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) --[] স্কিয়েনা: +- [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)] (https://www.youtube.com/watch?v=V6mKVRU1evU) +- [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- স্কিয়েনা: -[ভিডিও] (https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -[স্লাইডস] (http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) --[] [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা] (http://discrete.gr/complexity/) --[] [বৃদ্ধির অর্ডার (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) --[] [অ্যাসিপটোটিকস (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) --[] [ইউসি বার্কলে বিগ ও (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) --[] [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) --[] [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)] (https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) --[] [চিত্রিত "বিগ ও" (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) --[] টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): +- [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা] (http://discrete.gr/complexity/) +- [বৃদ্ধির অর্ডার (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [অ্যাসিপটোটিকস (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) +- [ইউসি বার্কলে বিগ ও (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)] (https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [চিত্রিত "বিগ ও" (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) +- টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): -[গণনামূলক জটিলতা: বিভাগ 1] (https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) -[গণনামূলক জটিলতা: বিভাগ 2] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) --[] [চিট শিট] (http://bigocheatsheet.com/) +- [চিট শিট] (http://bigocheatsheet.com/)
@@ -580,7 +590,7 @@ -###অ্যারে -একটি স্বয়ংক্রিয় আকার পরিবর্তনকারী ভেক্টর প্রয়োগ করুন। - -[] বিবরণ: + - বিবরণ: -[অ্যারে (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন //sBSF/arrays) -[ইউসি বার্কলে সিএস 61 বি-লিনিয়ার এবং মাল্টি-ডিম অ্যারে (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s থেকে দেখা শুরু করুন) -[বেসিক অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) @@ -589,86 +599,86 @@ -[জেগড অ্যারে (ভিডিও)] (https://www.youtube.com/watch?v=1jtrQqYpt7g) -[জেগড অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/02_06-জ্যাজডআরাই.আরএম 4) -[পুনরায় আকার দেওয়ার অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - -[] একটি ভেক্টর প্রয়োগ করুন (স্বয়ংক্রিয় আকার পুনরায় আকারের সাথে পরিবর্তনীয় অ্যারে): - -[] অ্যারে এবং পয়েন্টার ব্যবহার করে কোডিং অনুশীলন করুন, এবং সূচক ব্যবহারের পরিবর্তে সূচীতে ঝাঁপ দেওয়ার জন্য পয়েন্টার ম্যাথ th - -[] বরাদ্দ মেমরি সহ নতুন কাঁচা ডেটা অ্যারে + - একটি ভেক্টর প্রয়োগ করুন (স্বয়ংক্রিয় আকার পুনরায় আকারের সাথে পরিবর্তনীয় অ্যারে): + - অ্যারে এবং পয়েন্টার ব্যবহার করে কোডিং অনুশীলন করুন, এবং সূচক ব্যবহারের পরিবর্তে সূচীতে ঝাঁপ দেওয়ার জন্য পয়েন্টার ম্যাথ th + - বরাদ্দ মেমরি সহ নতুন কাঁচা ডেটা অ্যারে -হুডের অধীনে ইন অ্যারে বরাদ্দ করতে পারে, কেবল তার বৈশিষ্ট্যগুলি ব্যবহার করবেন না -16 দিয়ে শুরু করুন, বা যদি শুরুর সংখ্যাটি বেশি হয় তবে 2-16, 32, 64, 128 এর শক্তি ব্যবহার করুন - -[] আকার ()-আইটেমের সংখ্যা - -[] ক্ষমতা ()-এটি ধরে রাখতে পারে এমন আইটেমের সংখ্যা + - আকার ()-আইটেমের সংখ্যা + - ক্ষমতা ()-এটি ধরে রাখতে পারে এমন আইটেমের সংখ্যা -[ ] খালি() - -[] এ (সূচক)-প্রদত্ত সূচকে আইটেমটি ফেরত দেয়, সূচক সীমা ছাড়িয়ে গেলে ফুটিয়ে উঠে - -[] ধাক্কা (আইটেম) - -[] সন্নিবেশ (সূচক, আইটেম)-সূচীতে আইটেম সন্নিবেশ করায়, সূচকের মান এবং পিছনের উপাদানগুলি ডানদিকে সরিয়ে দেয় - -[] প্রিপেন্ড (আইটেম)-উপরে সূচক 0 এ সন্নিবেশ ব্যবহার করতে পারেন - -[] পপ ()-শেষ থেকে সরান, ফেরতের মান - -[] মুছুন (সূচী)-সূচি অনুসারে আইটেম মুছুন, সমস্ত অনুবর্তনীয় উপাদান বাম দিকে সরিয়ে - -[] সরান (আইটেম)-মান সন্ধান করে এবং এটি ধরে রাখা সূচকটি সরিয়ে দেয় (এমনকি একাধিক জায়গায় থাকলেও) - -[] সন্ধান করুন (আইটেম)-মানটির সন্ধান করে এবং সেই মানটির সাথে প্রথম সূচকটি প্রদান করে,-১ পাওয়া না গেলে - -[] পুনরায় আকার দিন (নতুন_ক্ষমতা) // ব্যক্তিগত ফাংশন + - এ (সূচক)-প্রদত্ত সূচকে আইটেমটি ফেরত দেয়, সূচক সীমা ছাড়িয়ে গেলে ফুটিয়ে উঠে + - ধাক্কা (আইটেম) + - সন্নিবেশ (সূচক, আইটেম)-সূচীতে আইটেম সন্নিবেশ করায়, সূচকের মান এবং পিছনের উপাদানগুলি ডানদিকে সরিয়ে দেয় + - প্রিপেন্ড (আইটেম)-উপরে সূচক 0 এ সন্নিবেশ ব্যবহার করতে পারেন + - পপ ()-শেষ থেকে সরান, ফেরতের মান + - মুছুন (সূচী)-সূচি অনুসারে আইটেম মুছুন, সমস্ত অনুবর্তনীয় উপাদান বাম দিকে সরিয়ে + - সরান (আইটেম)-মান সন্ধান করে এবং এটি ধরে রাখা সূচকটি সরিয়ে দেয় (এমনকি একাধিক জায়গায় থাকলেও) + - সন্ধান করুন (আইটেম)-মানটির সন্ধান করে এবং সেই মানটির সাথে প্রথম সূচকটি প্রদান করে,-১ পাওয়া না গেলে + - পুনরায় আকার দিন (নতুন_ক্ষমতা) // ব্যক্তিগত ফাংশন -যখন আপনি সক্ষমতা পৌঁছেছেন, আকার দ্বিগুণ করার জন্য পুনরায় আকার দিন -কোনও আইটেমটি পপ করার সময়, আকারটি যদি 1/4 ধারণক্ষমতা হয় তবে আকারটি অর্ধেক করুন - -[] সময় + - সময় -ও (1) শেষে অন্তর্ভুক্ত / অপসারণ (আরও স্থানের জন্য বরাদ্দের জন্য সূক্ষ্ম), সূচক বা আপডেট -ও (এন) অন্যত্র সন্নিবেশ / অপসারণ করতে - -[] স্পেস + - স্পেস -স্মৃতিতে সামঞ্জস্যপূর্ণ তাই নৈকট্য পারফরম্যান্সে সহায়তা করে -স্থান প্রয়োজন = (অ্যারে ক্ষমতা, যা> = এন) * আইটেমের আকার, তবে 2n হলেও এখনও হে (এন) -###লিঙ্কযুক্ত তালিকাগুলি - -[] বিবরণ: - -[] [একক লিঙ্কযুক্ত তালিকাগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - -[] [সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 1 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - -[] সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 2 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - -[] [সি কোড (ভিডিও)] (https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - বিবরণ: + - [একক লিঙ্কযুক্ত তালিকাগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 1 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 2 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [সি কোড (ভিডিও)] (https://www.youtube.com/watch?v=QN6FPiD0Gzo) -পুরো ভিডিও নয়, নোড স্ট্রাক্ট এবং মেমরির বরাদ্দ সম্পর্কে কেবল অংশ। - -[] লিঙ্কযুক্ত তালিকা বনাম অ্যারে: + - লিঙ্কযুক্ত তালিকা বনাম অ্যারে: -[কোর লিঙ্কযুক্ত তালিকা বনাম অ্যারেগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) -[রিয়েল ওয়ার্ল্ডের লিঙ্কযুক্ত তালিকায় বনাম অ্যারেগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - -[] [কেন আপনার লিঙ্কযুক্ত তালিকাগুলি (ভিডিও) এড়ানো উচিত]] (https://www.youtube.com/watch?v=YQs6IC-vgmo) - -[] গোটচা: আপনার পয়েন্টার জ্ঞানের জন্য পয়েন্টার প্রয়োজন: + - [কেন আপনার লিঙ্কযুক্ত তালিকাগুলি (ভিডিও) এড়ানো উচিত]] (https://www.youtube.com/watch?v=YQs6IC-vgmo) + - গোটচা: আপনার পয়েন্টার জ্ঞানের জন্য পয়েন্টার প্রয়োজন: (আপনি যখন কোনও ফাংশনটিতে কোনও পয়েন্টার পাস করেন যা ঠিকানা পরিবর্তন করতে পারে যেখানে সেই পয়েন্টারটি নির্দেশ করে) এই পৃষ্ঠাটি কেবল পিটিআর থেকে পিটিআর এ উপলব্ধি পেতে। আমি এই তালিকাটি ট্র্যাভার্সাল স্টাইলের প্রস্তাব দিই না। পড়ার যোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা চতুরতার কারণে ভোগে। -[পয়েন্টারগুলিতে নির্দেশক] (https://www.eskimo.com/~scs/cclass/int/sx8.html) - -[] বাস্তবায়ন করুন (আমি টেইল পয়েন্টার দিয়ে ও ছাড়াই করেছি): - -[] আকার ()-তালিকায় ডাটা উপাদানগুলির সংখ্যা প্রদান করে - -[] খালি ()-শূন্য হলে বুল সত্য দেয় - -[] মান_আট (সূচক)-নবম আইটেমটির মান প্রদান করে (প্রথমটির জন্য 0 থেকে শুরু করে) - -[] পুশ_ফ্রন্ট (মান)-তালিকার সামনের অংশে একটি আইটেম যুক্ত করে - -[] পপ_ফ্রন্ট ()-সামনের আইটেমটি সরিয়ে তার মানটি ফিরিয়ে দিন - -[] পুশ_ব্যাক (মান)-শেষে একটি আইটেম যুক্ত করে - -[] পপ_ব্যাক ()-শেষ আইটেমটি সরিয়ে দেয় এবং এর মান প্রদান করে - -[] সামনের ()-সামনের আইটেমটির মান পান - -[] ফিরে ()-শেষ আইটেমটির মান পান - -[] সন্নিবেশ (সূচক, মান)-সূচকে মূল্য সন্নিবেশ করানো হয়, সুতরাং সেই সূচীতে বর্তমান আইটেমটি সূচীতে নতুন আইটেম দ্বারা নির্দেশিত - -[] মুছুন (সূচক)-প্রদত্ত সূচকে নোড সরান s - -[] মান_ন_ফ্রম_েন্ড (এন)-তালিকার শেষে থেকে নবম অবস্থানে নোডের মান প্রদান করে - -[] বিপরীত ()-তালিকার বিপরীতে - -[] সরান_মূল্য (মান)-এই মান সহ তালিকার প্রথম আইটেমটি সরিয়ে দেয় - -[] দ্বিগুণভাবে সংযুক্ত তালিকা + - বাস্তবায়ন করুন (আমি টেইল পয়েন্টার দিয়ে ও ছাড়াই করেছি): + - আকার ()-তালিকায় ডাটা উপাদানগুলির সংখ্যা প্রদান করে + - খালি ()-শূন্য হলে বুল সত্য দেয় + - মান_আট (সূচক)-নবম আইটেমটির মান প্রদান করে (প্রথমটির জন্য 0 থেকে শুরু করে) + - পুশ_ফ্রন্ট (মান)-তালিকার সামনের অংশে একটি আইটেম যুক্ত করে + - পপ_ফ্রন্ট ()-সামনের আইটেমটি সরিয়ে তার মানটি ফিরিয়ে দিন + - পুশ_ব্যাক (মান)-শেষে একটি আইটেম যুক্ত করে + - পপ_ব্যাক ()-শেষ আইটেমটি সরিয়ে দেয় এবং এর মান প্রদান করে + - সামনের ()-সামনের আইটেমটির মান পান + - ফিরে ()-শেষ আইটেমটির মান পান + - সন্নিবেশ (সূচক, মান)-সূচকে মূল্য সন্নিবেশ করানো হয়, সুতরাং সেই সূচীতে বর্তমান আইটেমটি সূচীতে নতুন আইটেম দ্বারা নির্দেশিত + - মুছুন (সূচক)-প্রদত্ত সূচকে নোড সরান s + - মান_ন_ফ্রম_েন্ড (এন)-তালিকার শেষে থেকে নবম অবস্থানে নোডের মান প্রদান করে + - বিপরীত ()-তালিকার বিপরীতে + - সরান_মূল্য (মান)-এই মান সহ তালিকার প্রথম আইটেমটি সরিয়ে দেয় + - দ্বিগুণভাবে সংযুক্ত তালিকা -[বিবরণ (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) -বাস্তবায়নের দরকার নেই -###স্ট্যাক - -[] [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - -[] [সর্বশেষে প্রথম-আউট স্ট্যাকগুলি ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_01-Stacks forLast-inFirst-out.mp4) - -[]] বাস্তবায়ন করবে না। অ্যারের সাথে প্রয়োগ করা তুচ্ছ। + - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [সর্বশেষে প্রথম-আউট স্ট্যাকগুলি ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_01-Stacks forLast-inFirst-out.mp4) + - ] বাস্তবায়ন করবে না। অ্যারের সাথে প্রয়োগ করা তুচ্ছ। -###কিউ - -[] [প্রথম সারিতে প্রথম সারিতে ক্যু ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - -[] [সারি (ভিডিও)] (https://www.coursera.org/lecture/data-structures/queues-EShpq) - -[] [বিজ্ঞপ্তি বাফার / ফিফো] (https://en.wikedia.org/wiki/Circular_buffer) - -[] [অগ্রাধিকারের সারি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnav/05_04-priorityQueuesAndDeques.mp4) - -[] লেজ পয়েন্টার সহ লিঙ্কযুক্ত-তালিকা ব্যবহার করে প্রয়োগ করুন: + - [প্রথম সারিতে প্রথম সারিতে ক্যু ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [সারি (ভিডিও)] (https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [বিজ্ঞপ্তি বাফার / ফিফো] (https://en.wikedia.org/wiki/Circular_buffer) + - [অগ্রাধিকারের সারি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnav/05_04-priorityQueuesAndDeques.mp4) + - লেজ পয়েন্টার সহ লিঙ্কযুক্ত-তালিকা ব্যবহার করে প্রয়োগ করুন: -এনকুই (মান)-লেজের স্থানে মান যোগ করে -ডেকিউ ()-মান ফেরত দেয় এবং সর্বশেষে যুক্ত হওয়া উপাদান (সামনে) সরিয়ে দেয় -খালি () - -[] স্থির আকারের অ্যারে ব্যবহার করে প্রয়োগ করুন: + - স্থির আকারের অ্যারে ব্যবহার করে প্রয়োগ করুন: -এনকুই (মান)-উপলব্ধ স্টোরেজ শেষে আইটেম যুক্ত করে -ডেকিউ ()-মান প্রদান করে এবং সম্প্রতি যুক্ত হওয়া উপাদানকে সরিয়ে দেয় -খালি () -সম্পূর্ণ() - -[] খরচ: + - খরচ: -লিঙ্কযুক্ত তালিকার সাহায্যে একটি খারাপ বাস্তবায়ন যেখানে আপনি মাথার দিকে tailুকিয়ে রাখুন এবং লেজটিতে শেরোনামটি হবে O (n) কারণ আপনার শেষ উপাদানটির পরেরটি দরকার, প্রতিটি ডেকিউকে পুরো ট্র্যাভারসাল সৃষ্টি করে -এনকুই: ও (1) (সূচিত, লিঙ্কযুক্ত তালিকা এবং অ্যারে [প্রোবিং]) @@ -676,27 +686,27 @@ -খালি: O (1) (লিঙ্কযুক্ত তালিকা এবং অ্যারে) -###হ্যাশ টেবিল - -[] ভিডিওগুলি: - -[] [চেইনিংয়ের সাথে হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - -[] [সারণী দ্বিগুণ, কার্প-রবিন (ভিডিও)] (https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [ঠিকানা খুলুন, ক্রিপ্টোগ্রাফিক হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [পাইকন ২০১০: দ্য মাইটি ডিকশনারী (ভিডিও)] (https://www.youtube.com/watch?v=C4Kc8xzcA68) - -[] [(উন্নত) র্যান্ডমাইজেশন: ইউনিভার্সাল এবং পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - -[] [(উন্নত) পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEWKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - -[] অনলাইন কোর্স: - -[] [হ্যাশ ফাংশনগুলি বোঝার (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_02-বোঝা হ্যাশফুনেশন.এমপি 4) - -[] [হ্যাশ টেবিলগুলি (ভিডিও) ব্যবহার করে] (https://archive.org/details/0102WhatYouShouldKnow/06_03-USHashTables.mp4) - -[] [হ্যাশিং (ভিডিও) সমর্থন করে] (https://archive.org/details/0102WhatYouShouldKnow/06_04-SupportingHashing.mp4) - -[] [ভাষা সমর্থন হ্যাশ টেবিলগুলি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - -[] [কোর হ্যাশ টেবিল (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - -[] [ডেটা স্ট্রাকচার (ভিডিও)] (https://www.coursera.org/learn/data-structures/home/week/3) - -[] [ফোন বুক সমস্যা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / NYZZP/ iPhone-book-সমস্যা) - -[] হ্যাশ টেবিল বিতরণ: + - ভিডিওগুলি: + - [চেইনিংয়ের সাথে হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [সারণী দ্বিগুণ, কার্প-রবিন (ভিডিও)] (https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ঠিকানা খুলুন, ক্রিপ্টোগ্রাফিক হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [পাইকন ২০১০: দ্য মাইটি ডিকশনারী (ভিডিও)] (https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [(উন্নত) র্যান্ডমাইজেশন: ইউনিভার্সাল এবং পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [(উন্নত) পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEWKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - অনলাইন কোর্স: + - [হ্যাশ ফাংশনগুলি বোঝার (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_02-বোঝা হ্যাশফুনেশন.এমপি 4) + - [হ্যাশ টেবিলগুলি (ভিডিও) ব্যবহার করে] (https://archive.org/details/0102WhatYouShouldKnow/06_03-USHashTables.mp4) + - [হ্যাশিং (ভিডিও) সমর্থন করে] (https://archive.org/details/0102WhatYouShouldKnow/06_04-SupportingHashing.mp4) + - [ভাষা সমর্থন হ্যাশ টেবিলগুলি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [কোর হ্যাশ টেবিল (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ডেটা স্ট্রাকচার (ভিডিও)] (https://www.coursera.org/learn/data-structures/home/week/3) + - [ফোন বুক সমস্যা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / NYZZP/ iPhone-book-সমস্যা) + - হ্যাশ টেবিল বিতরণ: -[ড্রপবক্সে তাত্ক্ষণিক আপলোড এবং স্টোরেজ অপ্টিমাইজেশন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-stores-optimization-in-rodbox) -[বিতরণ করা হ্যাশ টেবিলগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributes-hash-tables) - -[] লিনিয়ার প্রোব ব্যবহার করে অ্যারে প্রয়োগ করুন + - লিনিয়ার প্রোব ব্যবহার করে অ্যারে প্রয়োগ করুন -হ্যাশ (কে, মি)-মি হ্যাশ টেবিলের আকার -যোগ করুন (কী, মান)-কীটি ইতিমধ্যে উপস্থিত থাকলে মান আপডেট করুন -বিদ্যমান (কী) @@ -711,38 +721,38 @@ আরও জ্ঞান << সংক্ষিপ্ত> -###বাইনারি অনুসন্ধান - -[] [বাইনারি অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=D5SrAga1pno) - -[] [বাইনারি সন্ধান (ভিডিও)] (https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - -[] [বিস্তারিত] (https://www.topcoder.com/commune/competitive-programming/tutorials/binary-search/) - -[] বাস্তবায়ন: + - [বাইনারি অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=D5SrAga1pno) + - [বাইনারি সন্ধান (ভিডিও)] (https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [বিস্তারিত] (https://www.topcoder.com/commune/competitive-programming/tutorials/binary-search/) + - বাস্তবায়ন: -বাইনারি অনুসন্ধান (পূর্ণসংখ্যার সাজানো অ্যারেতে) -পুনরাবৃত্তি ব্যবহার করে বাইনারি অনুসন্ধান -###বিটওয়াস অপারেশন - -[] [বিটস চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bit-cheat-sheet.pdf)-আপনার অনেকগুলি জানা উচিত 2 এর ক্ষমতা (2 ^ 1 থেকে 2 ^ 16 এবং 2 ^ 32) - -[] এর সাথে বিটগুলি ম্যানিপুলেটেড সম্পর্কে সত্যই উপলব্ধি পান: &, |, ^, ~, >> >> << - -[] [শব্দ] (https://en.wikedia.org/wiki/Word_ (কম্পিউটার_আরকিটেকচার)) - -[] ভাল পরিচয়: + - [বিটস চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bit-cheat-sheet.pdf)-আপনার অনেকগুলি জানা উচিত 2 এর ক্ষমতা (2 ^ 1 থেকে 2 ^ 16 এবং 2 ^ 32) + - এর সাথে বিটগুলি ম্যানিপুলেটেড সম্পর্কে সত্যই উপলব্ধি পান: &, |, ^, ~, >> >> << + - [শব্দ] (https://en.wikedia.org/wiki/Word_ (কম্পিউটার_আরকিটেকচার)) + - ভাল পরিচয়: [বিট ম্যানিপুলেশন (ভিডিও)] (https://www.youtube.com/watch?v=7jkIUgLC29I) - -[] [সি প্রোগ্রামিং টিউটোরিয়াল 2-10: বিটওয়াস অপারেটর (ভিডিও)] (https://www.youtube.com/watch?v=d0AwjSpNXR0) - -[] [বিট ম্যানিপুলেশন] (https://en.wikedia.org/wiki/Bit_manipulation) - -[] [বিটওয়াইজ অপারেশন] (https://en.wikedia.org/wiki/ বিটওয়াইজ_অপারেশন) - -[] [বিথ্যাকস] (https://ographicics.stanford.edu/~seender/bithacks.html) - -[] [বিট টুইডলার] (https://bit.stephan-brumme.com/) - -[] [বিট টুইডলার ইন্টারেক্টিভ] (https://bit.stephan-brumme.com/interactive.html) - -[] 2 এস এবং 1 এস পরিপূরক + - [সি প্রোগ্রামিং টিউটোরিয়াল 2-10: বিটওয়াস অপারেটর (ভিডিও)] (https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [বিট ম্যানিপুলেশন] (https://en.wikedia.org/wiki/Bit_manipulation) + - [বিটওয়াইজ অপারেশন] (https://en.wikedia.org/wiki/ বিটওয়াইজ_অপারেশন) + - [বিথ্যাকস] (https://ographicics.stanford.edu/~seender/bithacks.html) + - [বিট টুইডলার] (https://bit.stephan-brumme.com/) + - [বিট টুইডলার ইন্টারেক্টিভ] (https://bit.stephan-brumme.com/interactive.html) + - 2 এস এবং 1 এস পরিপূরক -[বাইনারি: প্লাসসেস এবং মিনিনস (কেন আমরা দু'জনের কমপ্লিমেন্ট ব্যবহার করি) (ভিডিও)] (https://www.youtube.com/watch?v=lKTsv6iVxV4) -[১ এস পরিপূরক] (https://en.wikedia.org/wiki/Ones%27_complement) -[2 এস পরিপূরক] (https://en.wikedia.org/wiki/Two%27s_complement) - -[] সেট বিট গণনা করুন + - সেট বিট গণনা করুন -[বাইট (ভিডিও) এ বিট গণনা করার 4 টি উপায়] (https://youtu.be/Hzuzo9NJrlc) -[বিট গণনা করুন) (https://ographicics.stanford.edu/~seender/bithacks.html#CountBitsSetKernighan) -[32 বিট পূর্ণসংখ্যায় সেট বিটের সংখ্যা কীভাবে গণনা করবেন] (http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-િટ-in-a-32-বিট-পূর্ণসংখ্যা) - -[] পরের পাওয়ার 2 এর রাউন্ড: + - পরের পাওয়ার 2 এর রাউন্ড: -[দু'জনের পরের শক্তিতে রাউন্ড আপ] (https://bit.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - -[[] অদলবদল মান: + -[ অদলবদল মান: -[অদলবদল (https://bit.stephan-brumme.com/swap.html) - -[] নিখুঁত মান: + - নিখুঁত মান: -[নিখুঁত পূর্ণসংখ্যার] (https://bit.stephan-brumme.com/absInteger.html)
@@ -753,11 +763,11 @@ গাছ -###গাছ-নোট ও পটভূমি - -[] [সিরিজ: গাছ (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 95qda/trees) + - [সিরিজ: গাছ (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 95qda/trees) -মৌলিক গাছ নির্মাণ -traversal -ম্যানিপুলেশন আলগোরিদিম - -[] [বিএফএস (প্রস্থের প্রথম সন্ধান) এবং ডিএফএস (গভীরতা-প্রথম অনুসন্ধান) (ভিডিও)] (https://www.youtube.com/watch?v=uWL6FJhq5fM) + - [বিএফএস (প্রস্থের প্রথম সন্ধান) এবং ডিএফএস (গভীরতা-প্রথম অনুসন্ধান) (ভিডিও)] (https://www.youtube.com/watch?v=uWL6FJhq5fM) -বিএফএস নোট: -স্তর আদেশ (বিএফএস, সারি ব্যবহার করে) -সময়ের জটিলতা: ও (এন) @@ -772,62 +782,62 @@ -প্রির্ডার (ডিএফএস: স্ব, বাম, ডান) -###বাইনারি অনুসন্ধান গাছ: বিএসটি - -[] [বাইনারি অনুসন্ধান বৃক্ষ পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - -[] [সিরিজ (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-intr پيداوار-to-binary-search-trees) + - [বাইনারি অনুসন্ধান বৃক্ষ পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [সিরিজ (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-intr پيداوار-to-binary-search-trees) -প্রতীক টেবিল দিয়ে শুরু হয় এবং বিএসটি অ্যাপ্লিকেশনগুলির মধ্য দিয়ে যায় - -[] [পরিচিতি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/E7cXP/intr پيداوار) - -[] [এমআইটি (ভিডিও)] (https://www.youtube.com/watch?v=9Jry5-82I68) + - [পরিচিতি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/E7cXP/intr پيداوار) + - [এমআইটি (ভিডিও)] (https://www.youtube.com/watch?v=9Jry5-82I68) -সি / সি ++: - -[] [বাইনারি অনুসন্ধান ট্রি-সি / সি ++ (ভিডিও) তে বাস্তবায়ন]] (https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - -[] [বিএসটি বাস্তবায়ন-স্ট্যাক এবং হিপ (ভিডিও) এ মেমরি বরাদ্দ] (https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - -[] [একটি বাইনারি অনুসন্ধান গাছে নূন্যতম এবং সর্বাধিক উপাদান সন্ধান করুন (ভিডিও)] (https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - -[] [একটি বাইনারি গাছের উচ্চতার সন্ধান করুন (ভিডিও)] (https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - -[] [বাইনারি ট্রি ট্রভারসাল-প্রস্থ এবং প্রথম গভীরতার প্রথম কৌশলগুলি (ভিডিও)] (https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - -[] [বাইনারি ট্রি: লেভেল অর্ডার ট্র্যাভারসাল (ভিডিও)] (https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - -[] [বাইনারি ট্রি ট্র্যাভারসাল: প্রির্ডার, অর্ডার, পোস্টর্ডার (ভিডিও)] (https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - -[] [একটি বাইনারি গাছ বাইনারি অনুসন্ধানের গাছ কিনা (ভিডিও) তা পরীক্ষা করুন] (https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - -[] [বাইনারি অনুসন্ধান ট্রি (ভিডিও) থেকে একটি নোড মুছুন] (https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - -[] [একটি বাইনারি অনুসন্ধান গাছের ইনঅর্ডার উত্তরসূরি (ভিডিও)] (https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - -[] বাস্তবায়ন: - -[] সন্নিবেশ করুন // গাছে মান সন্নিবেশ করান - -[] get_node_count // সঞ্চিত মানের গণনা পান - -[] মুদ্রণ_মূল্য // গাছের মানগুলি ন্যূনতম থেকে সর্বোচ্চ পর্যন্ত মুদ্রণ করে - -[] মোছা_ট্রি - -[[] is_in_tree // টি দেওয়া যদি গাছটিতে থাকে তবে তা সত্য হয় returns - -[] get_height // নোডগুলিতে উচ্চতা ফেরায় (একক নোডের উচ্চতা 1) - -[] get_min // গাছে সঞ্চিত সর্বনিম্ন মান প্রদান করে - -[] get_max // গাছের মধ্যে সঞ্চিত সর্বোচ্চ মান প্রদান করে returns - -[] হ'ল_বাইনারি_সার্ক_ট্রি - -[] মুছুন_মূল্য - -[] get_successor // প্রদত্ত মানের পরে গাছের পরবর্তী-সর্বোচ্চ মান প্রদান করে,-1 না হলে + - [বাইনারি অনুসন্ধান ট্রি-সি / সি ++ (ভিডিও) তে বাস্তবায়ন]] (https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [বিএসটি বাস্তবায়ন-স্ট্যাক এবং হিপ (ভিডিও) এ মেমরি বরাদ্দ] (https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [একটি বাইনারি অনুসন্ধান গাছে নূন্যতম এবং সর্বাধিক উপাদান সন্ধান করুন (ভিডিও)] (https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [একটি বাইনারি গাছের উচ্চতার সন্ধান করুন (ভিডিও)] (https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [বাইনারি ট্রি ট্রভারসাল-প্রস্থ এবং প্রথম গভীরতার প্রথম কৌশলগুলি (ভিডিও)] (https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [বাইনারি ট্রি: লেভেল অর্ডার ট্র্যাভারসাল (ভিডিও)] (https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [বাইনারি ট্রি ট্র্যাভারসাল: প্রির্ডার, অর্ডার, পোস্টর্ডার (ভিডিও)] (https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [একটি বাইনারি গাছ বাইনারি অনুসন্ধানের গাছ কিনা (ভিডিও) তা পরীক্ষা করুন] (https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [বাইনারি অনুসন্ধান ট্রি (ভিডিও) থেকে একটি নোড মুছুন] (https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [একটি বাইনারি অনুসন্ধান গাছের ইনঅর্ডার উত্তরসূরি (ভিডিও)] (https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - বাস্তবায়ন: + - সন্নিবেশ করুন // গাছে মান সন্নিবেশ করান + - get_node_count // সঞ্চিত মানের গণনা পান + - মুদ্রণ_মূল্য // গাছের মানগুলি ন্যূনতম থেকে সর্বোচ্চ পর্যন্ত মুদ্রণ করে + - মোছা_ট্রি + -[ is_in_tree // টি দেওয়া যদি গাছটিতে থাকে তবে তা সত্য হয় returns + - get_height // নোডগুলিতে উচ্চতা ফেরায় (একক নোডের উচ্চতা 1) + - get_min // গাছে সঞ্চিত সর্বনিম্ন মান প্রদান করে + - get_max // গাছের মধ্যে সঞ্চিত সর্বোচ্চ মান প্রদান করে returns + - হ'ল_বাইনারি_সার্ক_ট্রি + - মুছুন_মূল্য + - get_successor // প্রদত্ত মানের পরে গাছের পরবর্তী-সর্বোচ্চ মান প্রদান করে,-1 না হলে -###গাদা / অগ্রাধিকার সারি / বাইনারি হিপ -গাছ হিসাবে ভিজ্যুয়ালাইজড, তবে সাধারণত সঞ্চয়স্থানে লিনিয়ার থাকে (অ্যারে, লিঙ্কযুক্ত তালিকা) - -[] [গাদা] (https://en.wikedia.org/wiki/Heap_ (ডেটা_ স্ট্রাস্ট্রাকচার)) - -[] [ভূমিকা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 2 অপ্টস / সিন্ট্রোকশন) - -[] [নিষ্পাপ বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-বাস্তবায়ন) - -[] [বাইনারি ট্রি (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / জিআরভি 2 কিউ / বাইনারি-গাছগুলি) - -[] [গাছের উচ্চতা মন্তব্য (ভিডিও)] (https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - -[] [বেসিক অপারেশনস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operation) - -[] [সম্পূর্ণ বাইনারি গাছগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/gl5Ni/ কমপ্লিট-বাইনারি-ট্রিগুলি) - -[] [সিউডোকোড (ভিডিও)] (https://www.coursera.org/learn/data-structures/ ਚੋਣ / HxQo9/pseudocode) - -[] [স্তূপের বাছাই-শুরু করতে লাফিয়ে লাফালাফি (ভিডিও)] (https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - -[] [গাদা সাজান (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - -[] [একটি হিপ তৈরি করা (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - -[] [এমআইটি: হিপস এবং হিপ সাজান (ভিডিও)] (https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [সিএস 61 বি লেকচার 24: অগ্রাধিকার ক্যু (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - -[] [লিনিয়ার টাইম বিল্ডহীপ (সর্বাধিক হিপ)] (https://www.youtube.com/watch?v=MiyLo8adrWw) - -[] একটি সর্বোচ্চ গাদা প্রয়োগ করুন: - -[] sertোকান - -[] সিফ্ট_আপ-.োকানোর জন্য প্রয়োজনীয় - -[] get_max-সর্বাধিক আইটেমটি এটি সরিয়ে না দিয়ে ফিরিয়ে দেয় - -[] get_size ()-সঞ্চিত উপাদানগুলির ফিরতি সংখ্যা - -[] is_empty ()-গাদাতে কোনও উপাদান না থাকলে সত্য প্রত্যাবর্তন করে - -[] extract_max-সরিয়ে সর্বাধিক আইটেমটি দেয় - -[] সিফ্ট ডাউন-এক্সট্র্যাক্ট_ম্যাক্সের জন্য প্রয়োজনীয় needed - -[] সরান (i)-এক্স এক্স এ আইটেম সরান - -[] হিপিফাই-হিপ_সোর্টের জন্য প্রয়োজনীয় উপাদানের একটি অ্যারে থেকে একটি গাদা তৈরি করুন - -[] হিপ_সোর্ট ()-একটি অরসেটেড অ্যারে নিয়ে যান এবং সর্বাধিক হিপ ব্যবহার করে এটিকে স্থানে সাজানো অ্যারেতে পরিণত করুন + - [গাদা] (https://en.wikedia.org/wiki/Heap_ (ডেটা_ স্ট্রাস্ট্রাকচার)) + - [ভূমিকা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 2 অপ্টস / সিন্ট্রোকশন) + - [নিষ্পাপ বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-বাস্তবায়ন) + - [বাইনারি ট্রি (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / জিআরভি 2 কিউ / বাইনারি-গাছগুলি) + - [গাছের উচ্চতা মন্তব্য (ভিডিও)] (https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [বেসিক অপারেশনস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operation) + - [সম্পূর্ণ বাইনারি গাছগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/gl5Ni/ কমপ্লিট-বাইনারি-ট্রিগুলি) + - [সিউডোকোড (ভিডিও)] (https://www.coursera.org/learn/data-structures/ ਚੋਣ / HxQo9/pseudocode) + - [স্তূপের বাছাই-শুরু করতে লাফিয়ে লাফালাফি (ভিডিও)] (https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [গাদা সাজান (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [একটি হিপ তৈরি করা (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [এমআইটি: হিপস এবং হিপ সাজান (ভিডিও)] (https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [সিএস 61 বি লেকচার 24: অগ্রাধিকার ক্যু (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [লিনিয়ার টাইম বিল্ডহীপ (সর্বাধিক হিপ)] (https://www.youtube.com/watch?v=MiyLo8adrWw) + - একটি সর্বোচ্চ গাদা প্রয়োগ করুন: + - sertোকান + - সিফ্ট_আপ-.োকানোর জন্য প্রয়োজনীয় + - get_max-সর্বাধিক আইটেমটি এটি সরিয়ে না দিয়ে ফিরিয়ে দেয় + - get_size ()-সঞ্চিত উপাদানগুলির ফিরতি সংখ্যা + - is_empty ()-গাদাতে কোনও উপাদান না থাকলে সত্য প্রত্যাবর্তন করে + - extract_max-সরিয়ে সর্বাধিক আইটেমটি দেয় + - সিফ্ট ডাউন-এক্সট্র্যাক্ট_ম্যাক্সের জন্য প্রয়োজনীয় needed + - সরান (i)-এক্স এক্স এ আইটেম সরান + - হিপিফাই-হিপ_সোর্টের জন্য প্রয়োজনীয় উপাদানের একটি অ্যারে থেকে একটি গাদা তৈরি করুন + - হিপ_সোর্ট ()-একটি অরসেটেড অ্যারে নিয়ে যান এবং সর্বাধিক হিপ ব্যবহার করে এটিকে স্থানে সাজানো অ্যারেতে পরিণত করুন -দ্রষ্টব্য: পরিবর্তে একটি মিনিটের গাদা ব্যবহার করা অপারেশনগুলি সাশ্রয় করতে পারে, তবে প্রয়োজনীয় জায়গার দ্বিগুণ (স্থানে করতে পারে না)। @@ -840,72 +850,72 @@ -[ ] নোট: -প্রকারভেদ প্রয়োগ করুন এবং সর্বোত্তম কেস / নিকৃষ্টতম কেস, প্রত্যেকের গড় জটিলতা জানেন: -কোনও বুদ্বুদ বাছাই নয়-এটি ভয়ানক-হে (n ^ 2), যখন এন <= 16 বাদে - -[] অ্যালগরিদম বাছাইয়ের স্থায়িত্ব ("কুইকসোর্ট স্থিতিশীল?") + - অ্যালগরিদম বাছাইয়ের স্থায়িত্ব ("কুইকসোর্ট স্থিতিশীল?") -[অ্যালগোরিদম স্থিতিশীলতা বাছাই করা হচ্ছে) (https://en.wikedia.org/wiki/Sorting_algorithm#Stability) -[অ্যালগরিদমগুলি বাছাইয়ে স্থিতিশীলতা] (http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) -[অ্যালগোরিদম বাছাইয়ে স্থায়িত্ব] (http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) -[অ্যালগরিদম বাছাই-স্থিতিশীলতা] (http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - -[] লিঙ্কযুক্ত তালিকায় কোন অ্যালগরিদম ব্যবহার করা যেতে পারে? অ্যারেতে কোনটি? উভয় উপর? + - লিঙ্কযুক্ত তালিকায় কোন অ্যালগরিদম ব্যবহার করা যেতে পারে? অ্যারেতে কোনটি? উভয় উপর? -আমি একটি লিঙ্কযুক্ত তালিকা বাছাইয়ের প্রস্তাব দেব না, তবে মার্জ সারণি করণীয়। -[লিঙ্কযুক্ত তালিকার জন্য বাছাই করুন মার্জ করুন] (http://www.geeksforgeeks.org/ নিমেষে-অনুসারে-লিঙ্কড-তালিকা /) -হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। হিপ সাজানো দুর্দান্ত তবে স্থিতিশীল নয়। --[] [সেডজউইক-মার্জেসোর্ট (৫ টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/3) - -[] [১। Mergesort] (https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) - -[] [২। নীচে আপ মার্জেস্টর্ট] (https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-ستمsort) - -[] [3। জটিলতা বাছাই করা] (https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - -[] [৪। Comparators] (https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) - -[] [৫। স্টেবিলিটি] (https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - --[] [সেডজউইক-কুইকোর্ট (4 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/3) - -[] [১। Quicksort] (https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - -[] [২। নির্বাচন] (https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - -[] [3। সদৃশ কী]] (https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/d નકલate-keys) - -[] [৪। সিস্টেম সাজস] (https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - --[] ইউসি বার্কলে: - -[] [সিএস 61 বি লেকচার 29: আই বাছাই করা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - -[] [সিএস 61 বি লেকচার 30: বাছাই II (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - -[] [সিএস 61 বি লেকচার 32: বাছাই III (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - -[] [সিএস 61 বি লেকচার 33: বাছাই করা ভি (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - --[] [বাবল সাজান (ভিডিও)] (https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) --[] [বুদ্বুদ সাজানোর (ভিডিও) বিশ্লেষণ]] (https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) --[] [সন্নিবেশ বাছাই, মার্জ করুন বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) --[] [সন্নিবেশ অনুসারে বাছাই করুন (ভিডিও)] (https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) --[] [বাছাই করুন (ভিডিও)] (https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) --[] [কুইকসোর্ট (ভিডিও)] (https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) --[] [বাছাই বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - --[] সাজানোর কোডটি মার্জ করুন: - -[] [আউটপুট অ্যারে (সি) ব্যবহার করে] (http://www.cs.yale.edu/homes/aspnes/classes/223/example/sorting/ নিমsort.c) - -[] [আউটপুট অ্যারে (পাইথন) ব্যবহার করা]] (https://github.com/jwasham/pੈਕਟ-python/blob/master/lays_sort/ विसর_সোর্ট.পি) - -[] [ইন-প্লেস (সি ++)] (https://github.com/jwasham/pੈਕਟ-cpp/blob/master/ विसর_সোর্ট / নিমজ্জন_সোর্ট.সি) --[] দ্রুত সাজানোর কোড: - -[] [বাস্তবায়ন (সি)] (http://www.cs.yale.edu/homes/aspnes/class/223/exults/randomization/quick.c) - -[] [বাস্তবায়ন (সি)] (https://github.com/jwasham/pੈਕਟ-c/blob/master/quick_sort/quick_sort.c) - -[] [বাস্তবায়ন (পাইথন)] (https://github.com/jwasham/pੈਕਟ-python/blob/master/quick_sort/quick_sort.py) - --[] বাস্তবায়ন: - -[] মার্জোর্ট: ও (এন লগ এন) গড় এবং সবচেয়ে খারাপ অবস্থা case - -[] কুইকসোর্ট ও (এন লগ এন) গড় কেস +- [সেডজউইক-মার্জেসোর্ট (৫ টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [১। Mergesort] (https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [২। নীচে আপ মার্জেস্টর্ট] (https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-ستمsort) + - [3। জটিলতা বাছাই করা] (https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [৪। Comparators] (https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [৫। স্টেবিলিটি] (https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [সেডজউইক-কুইকোর্ট (4 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [১। Quicksort] (https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [২। নির্বাচন] (https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [3। সদৃশ কী]] (https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/d નકલate-keys) + - [৪। সিস্টেম সাজস] (https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- ইউসি বার্কলে: + - [সিএস 61 বি লেকচার 29: আই বাছাই করা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [সিএস 61 বি লেকচার 30: বাছাই II (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [সিএস 61 বি লেকচার 32: বাছাই III (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [সিএস 61 বি লেকচার 33: বাছাই করা ভি (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [বাবল সাজান (ভিডিও)] (https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [বুদ্বুদ সাজানোর (ভিডিও) বিশ্লেষণ]] (https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [সন্নিবেশ বাছাই, মার্জ করুন বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [সন্নিবেশ অনুসারে বাছাই করুন (ভিডিও)] (https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [বাছাই করুন (ভিডিও)] (https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [কুইকসোর্ট (ভিডিও)] (https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [বাছাই বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- সাজানোর কোডটি মার্জ করুন: + - [আউটপুট অ্যারে (সি) ব্যবহার করে] (http://www.cs.yale.edu/homes/aspnes/classes/223/example/sorting/ নিমsort.c) + - [আউটপুট অ্যারে (পাইথন) ব্যবহার করা]] (https://github.com/jwasham/pੈਕਟ-python/blob/master/lays_sort/ विसর_সোর্ট.পি) + - [ইন-প্লেস (সি ++)] (https://github.com/jwasham/pੈਕਟ-cpp/blob/master/ विसর_সোর্ট / নিমজ্জন_সোর্ট.সি) +- দ্রুত সাজানোর কোড: + - [বাস্তবায়ন (সি)] (http://www.cs.yale.edu/homes/aspnes/class/223/exults/randomization/quick.c) + - [বাস্তবায়ন (সি)] (https://github.com/jwasham/pੈਕਟ-c/blob/master/quick_sort/quick_sort.c) + - [বাস্তবায়ন (পাইথন)] (https://github.com/jwasham/pੈਕਟ-python/blob/master/quick_sort/quick_sort.py) + +- বাস্তবায়ন: + - মার্জোর্ট: ও (এন লগ এন) গড় এবং সবচেয়ে খারাপ অবস্থা case + - কুইকসোর্ট ও (এন লগ এন) গড় কেস -বাছাই বাছাই এবং সন্নিবেশ বাছাই উভয় হে (এন ^ 2) গড় এবং সবচেয়ে খারাপ ক্ষেত্রে -হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। --[] প্রয়োজন হয় না, তবে আমি তাদের সুপারিশ করেছি: - -[] [সেডজউইক-র‌্যাডিক্স সোর্টস (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/3) - -[] [১। জাভাতে স্ট্রিংস (https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - -[] [২। মূল সূচক গণনা] (https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - -[] [3। সর্বনিম্ন গুরুত্বপূর্ণ অঙ্কের প্রথম স্ট্রিং রেডিক্সের সাজান] (https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - -[] [৪। সর্বাধিক উল্লেখযোগ্য অঙ্কের প্রথম স্ট্রিং রেডিক্স সাজান] (https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - -[] [৫। 3 ওয়ে রেডিক্স কুইকসোর্ট] (https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) - -[] [।। প্রত্যয় অ্যারে] (https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - -[] [রেডিক্স বাছাই] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - -[] [রেডিক্স বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=xhr26ia4k38) - -[] [রেডিক্স বাছাই, গণনা অনুসারে বাছাই (রৈখিক সময় দেওয়া সীমাবদ্ধতা) (ভিডিও)] (https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [র্যান্ডমাইজেশন: ম্যাট্রিক্স গুণ, কুইকোর্ট, ফ্রেইভ্যাল্ডস অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -[] [লিনিয়ার সময় অনুসারে বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) +- প্রয়োজন হয় না, তবে আমি তাদের সুপারিশ করেছি: + - [সেডজউইক-র‌্যাডিক্স সোর্টস (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [১। জাভাতে স্ট্রিংস (https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [২। মূল সূচক গণনা] (https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [3। সর্বনিম্ন গুরুত্বপূর্ণ অঙ্কের প্রথম স্ট্রিং রেডিক্সের সাজান] (https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [৪। সর্বাধিক উল্লেখযোগ্য অঙ্কের প্রথম স্ট্রিং রেডিক্স সাজান] (https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [৫। 3 ওয়ে রেডিক্স কুইকসোর্ট] (https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [।। প্রত্যয় অ্যারে] (https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [রেডিক্স বাছাই] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [রেডিক্স বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=xhr26ia4k38) + - [রেডিক্স বাছাই, গণনা অনুসারে বাছাই (রৈখিক সময় দেওয়া সীমাবদ্ধতা) (ভিডিও)] (https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [র্যান্ডমাইজেশন: ম্যাট্রিক্স গুণ, কুইকোর্ট, ফ্রেইভ্যাল্ডস অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [লিনিয়ার সময় অনুসারে বাছাই (ভিডিও)] (https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) সংক্ষিপ্তসার হিসাবে, এখানে [১৫ টি বাছাই করা অ্যালগরিদম] (https://www.youtube.com/watch?v=kPRA0W1kECg) এর ভিজ্যুয়াল উপস্থাপনা রয়েছে। আপনার যদি এই বিষয়ে আরও বিশদ প্রয়োজন, [কিছু বিষয়ের উপর অতিরিক্ত বিশদ] এর "বাছাই করা" বিভাগটি দেখুন (কিছু বিষয়ে-কিছু-অতিরিক্ত-বিশদ) @@ -929,51 +939,51 @@ -বিএফএস এবং ডিএফএস-তাদের কম্পিউটেশনাল জটিলতা, তাদের ট্রেডঅফস এবং কীভাবে এগুলিকে বাস্তব কোডে প্রয়োগ করতে হয় তা জানেন -যখন কোন প্রশ্ন জিজ্ঞাসা করা হয়, প্রথমে একটি গ্রাফ-ভিত্তিক সমাধান সন্ধান করুন, তারপরে কোনওটি না হলে এগিয়ে যান। --[] এমআইটি (ভিডিও): - -[] [প্রস্থ-প্রথম অনুসন্ধান] (https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - -[] [গভীরতা-প্রথম অনুসন্ধান] (https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - --[] স্কিয়েনা বক্তৃতা-দুর্দান্ত ভূমিকা: - -[] [সিএসই 373 2012-লেকচার 11-গ্রাফ ডেটা স্ট্রাকচার (ভিডিও)] (https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - -[] [সিএসই 373 2012-লেকচার 12-চওড়া-প্রথম অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - -[] [সিএসই 373 2012-লেকচার 13-গ্রাফ অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - -[] [সিএসই 373 2012-বক্তৃতা 14-গ্রাফ অ্যালগরিদম (কনট) (ভিডিও)] (https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [সিএসই 373 2012-বক্তৃতা 15-গ্রাফ অ্যালগরিদম (কনট 2) (ভিডিও)] (https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [সিএসই 373 2012-বক্তৃতা 16-গ্রাফ অ্যালগরিদম (3 নন) (ভিডিও)] (https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - --[] গ্রাফ (পর্যালোচনা এবং আরও): - - -[] [00.০০০০ একক উত্সের সবচেয়ে ছোটতম পাথ সমস্যা (ভিডিও)] (https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] 6..০০০০ ডিজকস্ট্রা (ভিডিও)] (https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [6.006 বেলম্যান-ফোর্ড (ভিডিও)] (https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - -[] [00.০০০০ ডিজকস্ট্রা (ভিডিও) গতি বাড়িয়েছে] (https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - -[] [আদুনি: গ্রাফ অ্যালগরিদমস প্রথম-টপোলজিকাল বাছাই, ন্যূনতম স্প্যানিং ট্রি, প্রাইমের অ্যালগরিদম-লেকচার 6 (ভিডিও)] (https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnBGSyx3C3x1C3u3 - -[] [আদুনি: গ্রাফ অ্যালগরিদমস দ্বিতীয়-ডিএফএস, বিএফএস, ক্রুসকলের অ্যালগরিদম, ইউনিয়ন ডেটা স্ট্রাকচার সন্ধান করুন-লেকচার ((ভিডিও)] (https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxu7-9BSy2&yndy ) - -[] [আদুনি: গ্রাফ অ্যালগরিদম III: সংক্ষিপ্ত পথ-বক্তৃতা 8 (ভিডিও)] (https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - -[] [আদুনি: গ্রাফ আলগ চতুর্থ: জ্যামিতিক অ্যালগোরিদমগুলিতে পরিচিতি-বক্তৃতা 9 (ভিডিও)] (https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - -[] ~~ [সিএস 61 বি 2014 (58:09 থেকে শুরু) (ভিডিও)] (https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) ~~ - -[] [সিএস 61 বি 2014: ওজনযুক্ত গ্রাফ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - -[] [লোভী অ্যালগরিদম: ন্যূনতম বিস্তৃত গাছ (ভিডিও)] (https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -[] [দৃr়ভাবে সংযুক্ত উপাদানগুলি কোসারাজুর অ্যালগোরিদম গ্রাফ আলগোরিদিম (ভিডিও)] (https://www.youtube.com/watch?v=RpgcYiky7uw) +- এমআইটি (ভিডিও): + - [প্রস্থ-প্রথম অনুসন্ধান] (https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [গভীরতা-প্রথম অনুসন্ধান] (https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- স্কিয়েনা বক্তৃতা-দুর্দান্ত ভূমিকা: + - [সিএসই 373 2012-লেকচার 11-গ্রাফ ডেটা স্ট্রাকচার (ভিডিও)] (https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [সিএসই 373 2012-লেকচার 12-চওড়া-প্রথম অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [সিএসই 373 2012-লেকচার 13-গ্রাফ অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [সিএসই 373 2012-বক্তৃতা 14-গ্রাফ অ্যালগরিদম (কনট) (ভিডিও)] (https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [সিএসই 373 2012-বক্তৃতা 15-গ্রাফ অ্যালগরিদম (কনট 2) (ভিডিও)] (https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [সিএসই 373 2012-বক্তৃতা 16-গ্রাফ অ্যালগরিদম (3 নন) (ভিডিও)] (https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- গ্রাফ (পর্যালোচনা এবং আরও): + + - [00.০০০০ একক উত্সের সবচেয়ে ছোটতম পাথ সমস্যা (ভিডিও)] (https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - 6..০০০০ ডিজকস্ট্রা (ভিডিও)] (https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.006 বেলম্যান-ফোর্ড (ভিডিও)] (https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [00.০০০০ ডিজকস্ট্রা (ভিডিও) গতি বাড়িয়েছে] (https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [আদুনি: গ্রাফ অ্যালগরিদমস প্রথম-টপোলজিকাল বাছাই, ন্যূনতম স্প্যানিং ট্রি, প্রাইমের অ্যালগরিদম-লেকচার 6 (ভিডিও)] (https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnBGSyx3C3x1C3u3 + - [আদুনি: গ্রাফ অ্যালগরিদমস দ্বিতীয়-ডিএফএস, বিএফএস, ক্রুসকলের অ্যালগরিদম, ইউনিয়ন ডেটা স্ট্রাকচার সন্ধান করুন-লেকচার ((ভিডিও)] (https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxu7-9BSy2&yndy ) + - [আদুনি: গ্রাফ অ্যালগরিদম III: সংক্ষিপ্ত পথ-বক্তৃতা 8 (ভিডিও)] (https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [আদুনি: গ্রাফ আলগ চতুর্থ: জ্যামিতিক অ্যালগোরিদমগুলিতে পরিচিতি-বক্তৃতা 9 (ভিডিও)] (https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - ~~ [সিএস 61 বি 2014 (58:09 থেকে শুরু) (ভিডিও)] (https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) ~~ + - [সিএস 61 বি 2014: ওজনযুক্ত গ্রাফ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [লোভী অ্যালগরিদম: ন্যূনতম বিস্তৃত গাছ (ভিডিও)] (https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [দৃr়ভাবে সংযুক্ত উপাদানগুলি কোসারাজুর অ্যালগোরিদম গ্রাফ আলগোরিদিম (ভিডিও)] (https://www.youtube.com/watch?v=RpgcYiky7uw) -সম্পূর্ণ কোর্সেরা কোর্স: - -[] [গ্রাফগুলিতে অ্যালগরিদমগুলি (ভিডিও)] (https://www.coursera.org/learn/algorithms-on-অনুচ্ছেদ / হোম / উপস্ব) + - [গ্রাফগুলিতে অ্যালগরিদমগুলি (ভিডিও)] (https://www.coursera.org/learn/algorithms-on-অনুচ্ছেদ / হোম / উপস্ব) -আমি বাস্তবায়ন করব: - -[] সংলগ্ন তালিকার সাথে ডিএফএস (পুনরাবৃত্ত) - -[] সংলগ্ন তালিকার সাথে ডিএফএস (স্ট্যাক সহ পুনরাবৃত্ত) - -[] সংলগ্ন ম্যাট্রিক্স সহ ডিএফএস (পুনরাবৃত্ত) - -[] সংলগ্ন ম্যাট্রিক্স সহ ডিএফএস (স্ট্যাক সহ পুনরাবৃত্ত) - -[] সংলগ্ন তালিকা সহ বিএফএস - -[] সংলগ্ন ম্যাট্রিক্স সহ বিএফএস - -[] একক উত্সের সংক্ষিপ্ততম পথ (ডিজকস্ট্র) - -[] সর্বনিম্ন বিস্তৃত গাছ + - সংলগ্ন তালিকার সাথে ডিএফএস (পুনরাবৃত্ত) + - সংলগ্ন তালিকার সাথে ডিএফএস (স্ট্যাক সহ পুনরাবৃত্ত) + - সংলগ্ন ম্যাট্রিক্স সহ ডিএফএস (পুনরাবৃত্ত) + - সংলগ্ন ম্যাট্রিক্স সহ ডিএফএস (স্ট্যাক সহ পুনরাবৃত্ত) + - সংলগ্ন তালিকা সহ বিএফএস + - সংলগ্ন ম্যাট্রিক্স সহ বিএফএস + - একক উত্সের সংক্ষিপ্ততম পথ (ডিজকস্ট্র) + - সর্বনিম্ন বিস্তৃত গাছ -ডিএফএস-ভিত্তিক অ্যালগরিদম (উপরে অ্যাডুনি ভিডিও দেখুন): - -[] চক্র পরীক্ষা করুন (টপোলজিকাল সাজানোর জন্য প্রয়োজনীয়, যেহেতু আমরা শুরু করার আগে চক্রটি পরীক্ষা করব) - -[] টপোলজিকাল সাজান - -[] একটি গ্রাফে সংযুক্ত উপাদানগুলি গণনা করুন - -[] দৃ strongly়ভাবে সংযুক্ত উপাদানগুলির তালিকা করুন - -[] দ্বিপক্ষীয় গ্রাফ পরীক্ষা করুন + - চক্র পরীক্ষা করুন (টপোলজিকাল সাজানোর জন্য প্রয়োজনীয়, যেহেতু আমরা শুরু করার আগে চক্রটি পরীক্ষা করব) + - টপোলজিকাল সাজান + - একটি গ্রাফে সংযুক্ত উপাদানগুলি গণনা করুন + - দৃ strongly়ভাবে সংযুক্ত উপাদানগুলির তালিকা করুন + - দ্বিপক্ষীয় গ্রাফ পরীক্ষা করুন @@ -983,135 +993,135 @@ আরও জ্ঞান << সংক্ষিপ্ত> -###পুনরাবৃত্তি - -[] পুনরাবৃত্তি ও ব্যাকট্র্যাকিংয়ের উপর স্ট্যানফোর্ডের বক্তৃতা: - -[] [বক্তৃতা 8 | প্রোগ্রামিং বিমূর্তকরণ (ভিডিও)] (https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - -[] [বক্তৃতা 9 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - -[] [বক্তৃতা 10 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - -[] [বক্তৃতা 11 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - পুনরাবৃত্তি ও ব্যাকট্র্যাকিংয়ের উপর স্ট্যানফোর্ডের বক্তৃতা: + - [বক্তৃতা 8 | প্রোগ্রামিং বিমূর্তকরণ (ভিডিও)] (https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [বক্তৃতা 9 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [বক্তৃতা 10 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [বক্তৃতা 11 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) -যখন এটি ব্যবহার করা উপযুক্ত হবে -টেল রিকার্সন এর চেয়ে ভাল কীভাবে? - -[] [লেজ পুনরাবৃত্তি কি এটি এত খারাপ কেন?] (Https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - -[] [টেল রিকার্সন (ভিডিও)] (https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [লেজ পুনরাবৃত্তি কি এটি এত খারাপ কেন?] (Https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [টেল রিকার্সন (ভিডিও)] (https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) -###ডায়নামিক প্রোগ্রামিং -আপনি সম্ভবত আপনার সাক্ষাত্কারে কোনও গতিশীল প্রোগ্রামিং সমস্যা দেখতে পাবেন না, তবে ডায়নামিক প্রোগ্রামিংয়ের প্রার্থী হিসাবে কোনও সমস্যাটি স্বীকৃতি দেওয়ার পক্ষে এটি মূল্যবান। -এই বিষয়টি বেশ কঠিন হতে পারে, কারণ প্রতিটি ডিপি দ্রবণীয় সমস্যাটিকে অবশ্যই পুনরাবৃত্তির সম্পর্ক হিসাবে সংজ্ঞায়িত করা উচিত এবং এটির সাথে আসাটি জটিল হতে পারে। -আমি জড়িত প্যাটার্ন সম্পর্কে দৃ understanding় ধারণা না পাওয়া পর্যন্ত আমি ডিপি সমস্যার অনেক উদাহরণ দেখার পরামর্শ দিই। - -[] ভিডিওগুলি: + - ভিডিওগুলি: -স্কিয়েনা ভিডিওগুলি অনুসরণ করা শক্ত কারণ তিনি কখনও কখনও হোয়াইটবোর্ড ব্যবহার করেন যা দেখতে খুব ছোট - -[] [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 19-ডায়নামিক প্রোগ্রামিংয়ের পরিচিতি (ভিডিও)] (https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - -[] [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 20-দূরত্ব সম্পাদনা করুন (ভিডিও)] (https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - -[] [স্কিয়েনা: সিএসই 373 2012-লেকচার 21-গতিশীল প্রোগ্রামিং উদাহরণ (ভিডিও)] (https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - -[] [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 22-ডায়নামিক প্রোগ্রামিংয়ের অ্যাপ্লিকেশন (ভিডিও)] (https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - -[] [সিমসন: ডায়নামিক প্রোগ্রামিং 0 (59:18 এ শুরু হয়) (ভিডিও)] (https://youtu.be/J5aJEcOr6Eo?list=PLFDnelG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - -[] [সাইমনসন: ডায়নামিক প্রোগ্রামিং আই-লেকচার 11 (ভিডিও)] (https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - -[] [সায়মনসন: ডায়নামিক প্রোগ্রামিং II-লেকচার 12 (ভিডিও)] (https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - -[] পৃথক ডিপি সমস্যার তালিকা (প্রতিটি সংক্ষিপ্ত): + - [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 19-ডায়নামিক প্রোগ্রামিংয়ের পরিচিতি (ভিডিও)] (https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 20-দূরত্ব সম্পাদনা করুন (ভিডিও)] (https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [স্কিয়েনা: সিএসই 373 2012-লেকচার 21-গতিশীল প্রোগ্রামিং উদাহরণ (ভিডিও)] (https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 22-ডায়নামিক প্রোগ্রামিংয়ের অ্যাপ্লিকেশন (ভিডিও)] (https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [সিমসন: ডায়নামিক প্রোগ্রামিং 0 (59:18 এ শুরু হয়) (ভিডিও)] (https://youtu.be/J5aJEcOr6Eo?list=PLFDnelG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [সাইমনসন: ডায়নামিক প্রোগ্রামিং আই-লেকচার 11 (ভিডিও)] (https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [সায়মনসন: ডায়নামিক প্রোগ্রামিং II-লেকচার 12 (ভিডিও)] (https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - পৃথক ডিপি সমস্যার তালিকা (প্রতিটি সংক্ষিপ্ত): [ডায়নামিক প্রোগ্রামিং (ভিডিও)] (https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -[] ইয়েল লেকচার নোট: - -[] [ডায়নামিক প্রোগ্রামিং] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamic প্রোগ্রামগ্রাম) - -[] কোর্সেরা: - -[] [আরএনএ মাধ্যমিক কাঠামো সমস্যা (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/ নির্বাচন / 80RrW/the-rna-secondary-কাঠামো-সমস্যা) - -[] [একটি গতিশীল প্রোগ্রামিং অ্যালগরিদম (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - -[] [ডিপি অ্যালগরিদম (ভিডিও) উদাহরণস্বরূপ] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - -[] [ডিপি অ্যালগরিদমের চলমান সময় (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - -[] [ডিপি বনাম পুনরাবৃত্তিমূলক বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-বাস্তবায়ন) - -[] [গ্লোবাল পেয়ারওয়াইজ সিকোয়েন্স অ্যালাইনমেন্ট (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - -[] [স্থানীয় যুগের ক্রম সারিবদ্ধকরণ প্রান্তিককরণ (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - ইয়েল লেকচার নোট: + - [ডায়নামিক প্রোগ্রামিং] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamic প্রোগ্রামগ্রাম) + - কোর্সেরা: + - [আরএনএ মাধ্যমিক কাঠামো সমস্যা (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/ নির্বাচন / 80RrW/the-rna-secondary-কাঠামো-সমস্যা) + - [একটি গতিশীল প্রোগ্রামিং অ্যালগরিদম (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ডিপি অ্যালগরিদম (ভিডিও) উদাহরণস্বরূপ] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ডিপি অ্যালগরিদমের চলমান সময় (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ডিপি বনাম পুনরাবৃত্তিমূলক বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-বাস্তবায়ন) + - [গ্লোবাল পেয়ারওয়াইজ সিকোয়েন্স অ্যালাইনমেন্ট (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [স্থানীয় যুগের ক্রম সারিবদ্ধকরণ প্রান্তিককরণ (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -###অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং - -[] ptionচ্ছিক: ইউএমএল ২.০ সিরিজ (ভিডিও)] (https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - -[] অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার ইঞ্জিনিয়ারিং: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও): + - ptionচ্ছিক: ইউএমএল ২.০ সিরিজ (ভিডিও)] (https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার ইঞ্জিনিয়ারিং: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও): -আপনার যদি OO এবং OO ডিজাইনের অনুশীলনগুলির দুর্দান্ত উপলব্ধি থাকে তবে এড়িয়ে যেতে পারেন। -[ওওএসই: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (ভিডিও)] (https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -[] সলিড ওওপি নীতিগুলি: - -[] [বব মার্টিন সলিউড অবজেক্ট অরিয়েন্টেড অ্যান্ড এগ্রিল ডিজাইনের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=TMuno5RZNeE) - -[] [সলাইড নীতি (ভিডিও)] (https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - -[] এস-[একক দায়িত্বের নীতি] (http://www.oodesign.com/single-দায়িত্বজ্ঞাপন-প্রিন্সিপাল html) | [প্রতিটি বস্তুর একক দায়িত্ব] (http://www.javacodegeeks.com/2011/11/solid-single-দায়বদ্ধতা-নীতি-নীতি html) + - সলিড ওওপি নীতিগুলি: + - [বব মার্টিন সলিউড অবজেক্ট অরিয়েন্টেড অ্যান্ড এগ্রিল ডিজাইনের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=TMuno5RZNeE) + - [সলাইড নীতি (ভিডিও)] (https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - এস-[একক দায়িত্বের নীতি] (http://www.oodesign.com/single-দায়িত্বজ্ঞাপন-প্রিন্সিপাল html) | [প্রতিটি বস্তুর একক দায়িত্ব] (http://www.javacodegeeks.com/2011/11/solid-single-দায়বদ্ধতা-নীতি-নীতি html) -[আরও স্বাদ] (https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - -[] ও-[ওপেন / ক্লোজড অধ্যক্ষ] (http://www.oodesign.com/open-close-prصولle.html) | [উত্পাদন স্তরে অবজেক্টগুলি এক্সটেনশনের জন্য প্রস্তুত তবে পরিবর্তনের জন্য নয়] (https://en.wikedia.org/wiki/Open/closed_prصول) + - ও-[ওপেন / ক্লোজড অধ্যক্ষ] (http://www.oodesign.com/open-close-prصولle.html) | [উত্পাদন স্তরে অবজেক্টগুলি এক্সটেনশনের জন্য প্রস্তুত তবে পরিবর্তনের জন্য নয়] (https://en.wikedia.org/wiki/Open/closed_prصول) -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUTNThhGG1Y&hzGiY) - -[] এল-[লিসকোভ সাবস্টিটিউশন অধ্যক্ষ] (http://www.oodesign.com/liskov-s-substedia-prصولle.html) | [বেস ক্লাস এবং ডারাইভড ক্লাস 'আইএস এ' প্রিন্সিপাল অনুসরণ করে] (http://stackoverflow.com/questions/56860/ কি-is-the-liskov-subst येशू-প্রিন্সিপাল) + - এল-[লিসকোভ সাবস্টিটিউশন অধ্যক্ষ] (http://www.oodesign.com/liskov-s-substedia-prصولle.html) | [বেস ক্লাস এবং ডারাইভড ক্লাস 'আইএস এ' প্রিন্সিপাল অনুসরণ করে] (http://stackoverflow.com/questions/56860/ কি-is-the-liskov-subst येशू-প্রিন্সিপাল) -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtTDhhenU5ZZll55) - -[] আমি-[ইন্টারফেস বিভাজন নীতি] (http://www.oodesign.com/interface-segregation-prصولle.html) | ক্লায়েন্টরা তাদের ব্যবহার না করে এমন ইন্টারফেস প্রয়োগ করতে বাধ্য করা উচিত নয় + - আমি-[ইন্টারফেস বিভাজন নীতি] (http://www.oodesign.com/interface-segregation-prصولle.html) | ক্লায়েন্টরা তাদের ব্যবহার না করে এমন ইন্টারফেস প্রয়োগ করতে বাধ্য করা উচিত নয় -[5 মিনিটের মধ্যে ইন্টারফেস পৃথককরণের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=3CtAfl7aXAQ) -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5i&jdc5i&jdc5i) - -[] ডি-[নির্ভরতা বিপরীতার নীতি] (http://www.oodesign.com/d dependency-inversion-prصولle.html) | নির্ভরতা হ্রাস করুন বস্তুর সংমিশ্রণে। + - ডি-[নির্ভরতা বিপরীতার নীতি] (http://www.oodesign.com/d dependency-inversion-prصولle.html) | নির্ভরতা হ্রাস করুন বস্তুর সংমিশ্রণে। -[নির্ভরতা বিপরীতকরণের মূলনীতি কেন এবং কেন এটি গুরুত্বপূর্ণ] (http://stackoverflow.com/questions/62539/ কি-এটি-নির্ভরতা-রূপান্তর-নীতি-এবং-কেন-কেন-গুরুত্বপূর্ণ-গুরুত্বপূর্ণ) -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjhhddlljrhmdlljrhmdlljdlmljrlm पर -###নকশা নিদর্শন - -[] [কুইক ইউএমএল পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - -[] এই নিদর্শনগুলি শিখুন: - -[] কৌশল - -[] সিঙ্গলটন - -[] অ্যাডাপ্টার - -[] প্রোটোটাইপ - -[] শোভাকর - -[] দর্শনার্থী - -[] কারখানা, বিমূর্ত কারখানা - -[] সম্মুখ - -[] পর্যবেক্ষক - -[] প্রক্সি - -[] প্রতিনিধি - -[] আদেশ + - [কুইক ইউএমএল পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - এই নিদর্শনগুলি শিখুন: + - কৌশল + - সিঙ্গলটন + - অ্যাডাপ্টার + - প্রোটোটাইপ + - শোভাকর + - দর্শনার্থী + - কারখানা, বিমূর্ত কারখানা + - সম্মুখ + - পর্যবেক্ষক + - প্রক্সি + - প্রতিনিধি + - আদেশ -[ ] অবস্থা - -[] স্মৃতিচারণ - -[] পুনরাবৃত্তিকারী - -[] সংমিশ্রিত - -[] ফ্লাইওয়েট - -[] অধ্যায় 6 (পর্ব 1)-প্যাটার্নস (ভিডিও)] (https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - -[] অধ্যায় ((দ্বিতীয় খণ্ড)-বিমূর্ততা-ঘটনা, জেনারেল হায়ারার্কি, প্লেয়ার-রোল, সিঙ্গলটন, অবজারভার, ডেলিগেশন (ভিডিও)] (https://www.youtube.com/watch?v=U8-PGsjvZc4&index= 12 & তালিকা = PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -[] অধ্যায় ((অংশ 3)-অ্যাডাপ্টার, সম্মুখ, অপরিবর্তনীয়, কেবলমাত্র পঠন ইন্টারফেস, প্রক্সি (ভিডিও)] (https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -[] [ভিডিওগুলির সিরিজ (২ videos টি ভিডিও)] (https://www.youtube.com/playlist?list=PLF206E906175C7E07) - -[] [প্রথম প্রথম নকশার প্যাটার্নস] (https://www.amazon.com/Head-প্রথম-ডিজাইন-প্যাটার্নস-ফ্রিম্যান / ডিপি/0596007124) + - স্মৃতিচারণ + - পুনরাবৃত্তিকারী + - সংমিশ্রিত + - ফ্লাইওয়েট + - অধ্যায় 6 (পর্ব 1)-প্যাটার্নস (ভিডিও)] (https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - অধ্যায় ((দ্বিতীয় খণ্ড)-বিমূর্ততা-ঘটনা, জেনারেল হায়ারার্কি, প্লেয়ার-রোল, সিঙ্গলটন, অবজারভার, ডেলিগেশন (ভিডিও)] (https://www.youtube.com/watch?v=U8-PGsjvZc4&index= 12 & তালিকা = PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - অধ্যায় ((অংশ 3)-অ্যাডাপ্টার, সম্মুখ, অপরিবর্তনীয়, কেবলমাত্র পঠন ইন্টারফেস, প্রক্সি (ভিডিও)] (https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ভিডিওগুলির সিরিজ (২ videos টি ভিডিও)] (https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [প্রথম প্রথম নকশার প্যাটার্নস] (https://www.amazon.com/Head-প্রথম-ডিজাইন-প্যাটার্নস-ফ্রিম্যান / ডিপি/0596007124) -আমি জানি যে ক্যানোনিকাল বইটি "ডিজাইনের প্যাটার্নস: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টেড সফ্টওয়্যার এর উপাদানসমূহ" তবে হেড ফার্স্ট ওওর শুরুতে নতুনদের জন্য দুর্দান্ত। - -[] সহজ রেফারেন্স: 101 বিকাশকারীদের জন্য নকশার প্যাটার্নস এবং টিপস] (https://sourcemaking.com/design-patterns-এবং-tips) - -[] [মানুষের জন্য নকশার নকশাগুলি] (https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + - সহজ রেফারেন্স: 101 বিকাশকারীদের জন্য নকশার প্যাটার্নস এবং টিপস] (https://sourcemaking.com/design-patterns-এবং-tips) + - [মানুষের জন্য নকশার নকশাগুলি] (https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) -###সম্মিলক (n কে নির্বাচন করুন) এবং সম্ভাবনা - -[] [গণিত দক্ষতা: কীভাবে ফ্যাক্টরিয়াল, অনুমান এবং সংমিশ্রণ (চয়ন করুন) (ভিডিও)] (https://www.youtube.com/watch?v=8RRo6Ti9d0U) - -[] [স্কুল তৈরি করুন: সম্ভাবনা (ভিডিও)] (https://www.youtube.com/watch?v=sZkAAk9Wwa4) - -[] [স্কুল তৈরি করুন: আরও সম্ভাবনা এবং মার্কভ চেইন (ভিডিও)] (https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [গণিত দক্ষতা: কীভাবে ফ্যাক্টরিয়াল, অনুমান এবং সংমিশ্রণ (চয়ন করুন) (ভিডিও)] (https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [স্কুল তৈরি করুন: সম্ভাবনা (ভিডিও)] (https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [স্কুল তৈরি করুন: আরও সম্ভাবনা এবং মার্কভ চেইন (ভিডিও)] (https://www.youtube.com/watch?v=dNaJg-mLobQ) -[ ] খান একাডেমি: -কোর্স লেআউট: - -[] [বেসিক তাত্ত্বিক সম্ভাবনা] (https://www.khanacademy.org/math/probability/probability-and-combinatorics-টপিক) + - [বেসিক তাত্ত্বিক সম্ভাবনা] (https://www.khanacademy.org/math/probability/probability-and-combinatorics-টপিক) -কেবল ভিডিওগুলি-41 (প্রতিটি সহজ এবং প্রতিটি স্বল্প): - -[] [সম্ভাব্যতার ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [সম্ভাব্যতার ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -###এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম -এনপি-সম্পূর্ণ সমস্যার সর্বাধিক বিখ্যাত শ্রেণীর সম্পর্কে জানুন, যেমন ভ্রমণ ভ্রমণ এবং ন্যাপস্যাক সমস্যা, এবং যখন কোনও সাক্ষাত্কার আপনাকে ছদ্মবেশে জিজ্ঞাসা করে তখন সেগুলি সনাক্ত করতে সক্ষম হোন। -এনপি-সম্পূর্ণ অর্থ কী তা জানুন। - -[] [গণনামূলক জটিলতা (ভিডিও)] (https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - -[] সাইমনসন: - -[] [লোভী অ্যালগস। এনপি সম্পূর্ণতা (ভিডিও) তে II এবং ইন্ট্রো] (https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - -[] [এনপি সম্পূর্ণতা দ্বিতীয় এবং হ্রাস (ভিডিও)] (https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - -[] [এনপি সম্পূর্ণতা তৃতীয় (ভিডিও)] (https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - -[] [এনপি সম্পূর্ণতা চতুর্থ (ভিডিও)] (https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - -[] স্কিয়েনা: - -[] [সিএসই 373 2012-লেকচার 23-এনপি-সম্পূর্ণতার পরিচয় (ভিডিও)] (https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - -[] [সিএসই 373 2012-লেকচার 24-এনপি-সম্পূর্ণতা প্রমাণ (ভিডিও)] (https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [সিএসই 373 2012-বক্তৃতা 25-এনপি-সম্পূর্ণতা চ্যালেঞ্জ (ভিডিও)] (https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [জটিলতা: পি, এনপি, এনপি-সম্পূর্ণতা, হ্রাস (ভিডিও)] (https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - -[] [জটিলতা: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - -[] [জটিলতা: স্থির-প্যারামিটার অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [গণনামূলক জটিলতা (ভিডিও)] (https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - সাইমনসন: + - [লোভী অ্যালগস। এনপি সম্পূর্ণতা (ভিডিও) তে II এবং ইন্ট্রো] (https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [এনপি সম্পূর্ণতা দ্বিতীয় এবং হ্রাস (ভিডিও)] (https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [এনপি সম্পূর্ণতা তৃতীয় (ভিডিও)] (https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [এনপি সম্পূর্ণতা চতুর্থ (ভিডিও)] (https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - স্কিয়েনা: + - [সিএসই 373 2012-লেকচার 23-এনপি-সম্পূর্ণতার পরিচয় (ভিডিও)] (https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [সিএসই 373 2012-লেকচার 24-এনপি-সম্পূর্ণতা প্রমাণ (ভিডিও)] (https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [সিএসই 373 2012-বক্তৃতা 25-এনপি-সম্পূর্ণতা চ্যালেঞ্জ (ভিডিও)] (https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [জটিলতা: পি, এনপি, এনপি-সম্পূর্ণতা, হ্রাস (ভিডিও)] (https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [জটিলতা: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [জটিলতা: স্থির-প্যারামিটার অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -পিটার নরভিগ বিক্রয়কর্মী সমস্যার ভ্রমণের নিকটতম সর্বোত্তম সমাধানগুলি নিয়ে আলোচনা করেছেন: -[বৃহস্পতি নোটবুক] (http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) -সিএলআরএসে 1048-1140 পৃষ্ঠা রয়েছে যদি তা থাকে। -###ক্যাচ - -[] এলআরইউ ক্যাশে: - -[] [এলআরইউ ক্যাশে যাদু (গুগল দেবের 100 দিন) (ভিডিও)] (https://www.youtube.com/watch?v=R5ON3iwx78M) - -[] [এলআরইউ বাস্তবায়ন করছে (ভিডিও)] (https://www.youtube.com/watch?v=bq6N7Ym81iI) - -[] [লেটকোড-146 এলআরইউ ক্যাশে (সি ++) (ভিডিও)] (https://www.youtube.com/watch?v=8-FZRAjR7qU) - -[] সিপিইউ ক্যাশে: - -[] [এমআইটি 6.004 এল 15: মেমোরি হায়ারার্কি (ভিডিও)] (https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - -[] [এমআইটি 00.০০৪ এল এল: ক্যাশে ইস্যু (ভিডিও)] (https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - এলআরইউ ক্যাশে: + - [এলআরইউ ক্যাশে যাদু (গুগল দেবের 100 দিন) (ভিডিও)] (https://www.youtube.com/watch?v=R5ON3iwx78M) + - [এলআরইউ বাস্তবায়ন করছে (ভিডিও)] (https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [লেটকোড-146 এলআরইউ ক্যাশে (সি ++) (ভিডিও)] (https://www.youtube.com/watch?v=8-FZRAjR7qU) + - সিপিইউ ক্যাশে: + - [এমআইটি 6.004 এল 15: মেমোরি হায়ারার্কি (ভিডিও)] (https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [এমআইটি 00.০০৪ এল এল: ক্যাশে ইস্যু (ভিডিও)] (https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -###প্রক্রিয়া এবং থ্রেডস - -[] কম্পিউটার বিজ্ঞান 162-অপারেটিং সিস্টেম (25 টি ভিডিও): + - কম্পিউটার বিজ্ঞান 162-অপারেটিং সিস্টেম (25 টি ভিডিও): -প্রক্রিয়া এবং থ্রেডগুলির জন্য ভিডিওগুলি 1-11 দেখুন -[অপারেটিং সিস্টেমস এবং সিস্টেম প্রোগ্রামিং (ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) -[প্রক্রিয়া এবং একটি থ্রেডের মধ্যে পার্থক্য কী?] (Https://www.quora.com/What-is-the-differences-between-a-process-and-a-thread) @@ -1137,15 +1147,15 @@ -নতুন প্রক্রিয়া মেমরিটিতে লেখার আগ পর্যন্ত ফোর্কিং সত্যই লেখার অনুলিপি (কেবল পঠনযোগ্য) হয়, তবে এটি একটি সম্পূর্ণ অনুলিপি করে। -প্রসঙ্গে স্যুইচিং -কীভাবে প্রসঙ্গের স্যুইচিং অপারেটিং সিস্টেম এবং অন্তর্নিহিত হার্ডওয়্যার দ্বারা শুরু করা হয় - -[] [সি ++ (সিরিজ-10 টি ভিডিও) এর থ্রেড]] (https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - -[] পাইথনে সম্মতি (ভিডিও): - -[] [থ্রেডগুলিতে সংক্ষিপ্ত সিরিজ] (https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - -[] [পাইথন থ্রেডস] (https://www.youtube.com/watch?v=Bs7vPNbB9JM) - -[] [পাইথন জিআইএল বোঝা (২০১০)] (https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [সি ++ (সিরিজ-10 টি ভিডিও) এর থ্রেড]] (https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - পাইথনে সম্মতি (ভিডিও): + - [থ্রেডগুলিতে সংক্ষিপ্ত সিরিজ] (https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [পাইথন থ্রেডস] (https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [পাইথন জিআইএল বোঝা (২০১০)] (https://www.youtube.com/watch?v=Obt-vMVdM8s) -[রেফারেন্স] (http://www.dabeaz.com/GIL) - -[] [ডেভিড বেজলি-গ্রাউন্ড আপ থেকে পাইথন কনক্যুরન્સી: লাইভ!-পাইকন 2015] (https://www.youtube.com/watch?v=MCs5OvhV9S4) - -[] [মূল ডেভিড বেজলি-আগ্রহের বিষয় (পাইথন অ্যাসিনসিও)] (https://www.youtube.com/watch?v=ZzfHjytDceU) - -[] [পাইথনে নিবিড়] (https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ডেভিড বেজলি-গ্রাউন্ড আপ থেকে পাইথন কনক্যুরન્સી: লাইভ!-পাইকন 2015] (https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [মূল ডেভিড বেজলি-আগ্রহের বিষয় (পাইথন অ্যাসিনসিও)] (https://www.youtube.com/watch?v=ZzfHjytDceU) + - [পাইথনে নিবিড়] (https://www.youtube.com/watch?v=0zaPs8OtyKY) -###পরীক্ষামূলক -ঢাকতে: @@ -1153,32 +1163,32 @@ -মক অবজেক্টস কী -সংহতকরণ পরীক্ষা কি -নির্ভরতা ইনজেকশন কি - -[] [জেমস বাচ (ভিডিও) এর সাথে চতুর সফ্টওয়্যার পরীক্ষা করা] (https://www.youtube.com/watch?v=SAhJf36_u5U) - -[] [সফটওয়্যার টেস্টিং (ভিডিও) এ জেমস বাচের লিখিত বক্তব্য খুলুন] (https://www.youtube.com/watch?v=ILkT_HV9DVU) - -[] [স্টিভ ফ্রিম্যান-টেস্ট-চালিত বিকাশ (এটি আমরা বোঝাতে চাইনি) (ভিডিও)] (https://vimeo.com/83960706) + - [জেমস বাচ (ভিডিও) এর সাথে চতুর সফ্টওয়্যার পরীক্ষা করা] (https://www.youtube.com/watch?v=SAhJf36_u5U) + - [সফটওয়্যার টেস্টিং (ভিডিও) এ জেমস বাচের লিখিত বক্তব্য খুলুন] (https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [স্টিভ ফ্রিম্যান-টেস্ট-চালিত বিকাশ (এটি আমরা বোঝাতে চাইনি) (ভিডিও)] (https://vimeo.com/83960706) -[স্লাইডস] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDe વિકાસmentThatNotWhatWeMeant.pdf) - -[] [টিডিডি মারা গেছে। দীর্ঘ লাইভ টেস্টিং।] (Http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - -[] [টিডিডি মারা গেছে? (ভিডিও)] (https://www.youtube.com/watch?v=z9quxZsLcfo) - -[] [ভিডিও সিরিজ (152 টি ভিডিও)-সবার প্রয়োজন নেই (ভিডিও)] (https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - -[] [পাইথনের সাথে পরীক্ষিত-চালিত ওয়েব বিকাশ] (http://www.obeythetestinggoat.com/pages/book.html#toc) + - [টিডিডি মারা গেছে। দীর্ঘ লাইভ টেস্টিং।] (Http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) + - [টিডিডি মারা গেছে? (ভিডিও)] (https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ভিডিও সিরিজ (152 টি ভিডিও)-সবার প্রয়োজন নেই (ভিডিও)] (https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [পাইথনের সাথে পরীক্ষিত-চালিত ওয়েব বিকাশ] (http://www.obeythetestinggoat.com/pages/book.html#toc) -[ ] ইনজেকশন নির্ভরতা: - -[] [ভিডিও] (https://www.youtube.com/watch?v=IKD2-MAkXyQ) - -[] [পরীক্ষার তাও] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - -[] [পরীক্ষাগুলি কীভাবে লিখবেন] (http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ভিডিও] (https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [পরীক্ষার তাও] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [পরীক্ষাগুলি কীভাবে লিখবেন] (http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -###তফসিল -কোনও ওএসে, এটি কীভাবে কাজ করে -অপারেটিং সিস্টেমের ভিডিওগুলি থেকে সংগ্রহ করা যায় -###স্ট্রিং অনুসন্ধান এবং ম্যানিপুলেশনগুলি - -[] [সেডজউইক-প্রত্যয় অ্যারে (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - -[] [সেডজউইক-সাবস্ট্রিং অনুসন্ধান (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) - -[] [১। সাবস্ট্রিং অনুসন্ধানের পরিচিতি] (https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/intr پيداوار-to-substring-search) - -[] [২। ব্রুট-ফোর্স সাবস্ট্রিং অনুসন্ধান] (https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - -[] [3। নূথ-মরিস প্র্যাট] (https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - -[] [৪। বুইয়ার মুর] (https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - -[] [৫। রবিন-Karp] (https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - -[] [পাঠ্যের প্যাটার্ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [সেডজউইক-প্রত্যয় অ্যারে (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [সেডজউইক-সাবস্ট্রিং অনুসন্ধান (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [১। সাবস্ট্রিং অনুসন্ধানের পরিচিতি] (https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/intr پيداوار-to-substring-search) + - [২। ব্রুট-ফোর্স সাবস্ট্রিং অনুসন্ধান] (https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [3। নূথ-মরিস প্র্যাট] (https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [৪। বুইয়ার মুর] (https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [৫। রবিন-Karp] (https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [পাঠ্যের প্যাটার্ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) আপনার যদি এই বিষয়ে আরও বিশদ প্রয়োজন, [কিছু বিষয়ের উপর অতিরিক্ত বিবরণ] "স্ট্রিং ম্যাচিং" বিভাগটি দেখুন (কিছু-বিষয়ে-কিছু-অতিরিক্ত) @@ -1186,51 +1196,51 @@ -নোট করুন বিভিন্ন ধরণের চেষ্টা আছে। কারও কারও কাছে উপসর্গ আছে, কারও কাছে কিছু নেই, আবার কিছু বিটের পরিবর্তে স্ট্রিং ব্যবহার করে পথ ট্র্যাক। -আমি কোডের মাধ্যমে পড়েছি, তবে বাস্তবায়ন করব না। - -[] [সেডজউইক-চেষ্টা (3 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) - -[] [১। আর ওয়ে চেষ্টা করে] (https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - -[] [২। টার্নারি অনুসন্ধানের চেষ্টা] (https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - -[] [3। চরিত্র ভিত্তিক অপারেশন] (https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-ভিত্তিক-অপারেশন) - -[] [ডেটা স্ট্রাকচার এবং প্রোগ্রামিং কৌশল সম্পর্কিত নোটসমূহ] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#চেষ্টা) - -[] শর্ট কোর্সের ভিডিও: - -[] [চেষ্টা করার চেষ্টা (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-intr پيداوار-to-tries) - -[] [চেষ্টা সম্পাদনা (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-দক্ষতা / নির্বাচন / PvlZW/core-performance-of-tries) - -[] [একটি ট্রাই প্রয়োগ করে (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - -[] [ট্রাই: একটি অবহেলিত ডেটা স্ট্রাকচার] (https://www.toptal.com/java/the-trie-a-neglected-data-st संरचना) - -[] [টপকোডার-চেষ্টা ব্যবহার করে] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/ using-tries/) - -[] [স্ট্যানফোর্ড লেকচার (রিয়েল ওয়ার্ল্ড ইউজ কেস) (ভিডিও)] (https://www.youtube.com/watch?v=TJ8SkcUSdbU) - -[] [এমআইটি, উন্নত ডেটা স্ট্রাকচার, স্ট্রিংস (প্রায় অর্ধেক পথ ধরেই বেশ অস্পষ্টতা পেতে পারে) (ভিডিও)] (https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [সেডজউইক-চেষ্টা (3 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [১। আর ওয়ে চেষ্টা করে] (https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [২। টার্নারি অনুসন্ধানের চেষ্টা] (https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [3। চরিত্র ভিত্তিক অপারেশন] (https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-ভিত্তিক-অপারেশন) + - [ডেটা স্ট্রাকচার এবং প্রোগ্রামিং কৌশল সম্পর্কিত নোটসমূহ] (http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#চেষ্টা) + - শর্ট কোর্সের ভিডিও: + - [চেষ্টা করার চেষ্টা (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-intr پيداوار-to-tries) + - [চেষ্টা সম্পাদনা (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-দক্ষতা / নির্বাচন / PvlZW/core-performance-of-tries) + - [একটি ট্রাই প্রয়োগ করে (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ট্রাই: একটি অবহেলিত ডেটা স্ট্রাকচার] (https://www.toptal.com/java/the-trie-a-neglected-data-st संरचना) + - [টপকোডার-চেষ্টা ব্যবহার করে] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/ using-tries/) + - [স্ট্যানফোর্ড লেকচার (রিয়েল ওয়ার্ল্ড ইউজ কেস) (ভিডিও)] (https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [এমআইটি, উন্নত ডেটা স্ট্রাকচার, স্ট্রিংস (প্রায় অর্ধেক পথ ধরেই বেশ অস্পষ্টতা পেতে পারে) (ভিডিও)] (https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -###ভাসমান পয়েন্ট নম্বর - -[] সাধারণ 8-বিট: [ভাসমান পয়েন্ট সংখ্যাগুলির প্রতিনিধিত্ব-1 (ভিডিও-গণনায় একটি ত্রুটি রয়েছে-ভিডিও বর্ণনা দেখুন)] (https://www.youtube.com/watch?v=ji3SfClm8TU) - -[] 32 বিট: [আইইইই 7575 32-বিট ভাসমান পয়েন্ট বাইনারি (ভিডিও)] (https://www.youtube.com/watch?v=50ZYcZebIec) + - সাধারণ 8-বিট: [ভাসমান পয়েন্ট সংখ্যাগুলির প্রতিনিধিত্ব-1 (ভিডিও-গণনায় একটি ত্রুটি রয়েছে-ভিডিও বর্ণনা দেখুন)] (https://www.youtube.com/watch?v=ji3SfClm8TU) + - 32 বিট: [আইইইই 7575 32-বিট ভাসমান পয়েন্ট বাইনারি (ভিডিও)] (https://www.youtube.com/watch?v=50ZYcZebIec) -###ইউনিকোড - -[] [সর্বনিম্ন ন্যূনতম প্রতিটি সফ্টওয়্যার বিকাশকারী অবশ্যই, ইউনিকোড এবং চরিত্রের সেট সম্পর্কে ইতিবাচকভাবে অবশ্যই জানতে হবে] (http://www.joelonsoftware.com/articles/Unicode.html) - -[] [প্রতিটি প্রোগ্রামার একেবারে নিখুঁতভাবে, এনকোডিংগুলি এবং পাঠ্যের সাথে কাজ করার জন্য চরিত্রের সেটগুলি সম্পর্কে ইতিবাচক প্রয়োজন] [http://kunststube.net/encoding/) + - [সর্বনিম্ন ন্যূনতম প্রতিটি সফ্টওয়্যার বিকাশকারী অবশ্যই, ইউনিকোড এবং চরিত্রের সেট সম্পর্কে ইতিবাচকভাবে অবশ্যই জানতে হবে] (http://www.joelonsoftware.com/articles/Unicode.html) + - [প্রতিটি প্রোগ্রামার একেবারে নিখুঁতভাবে, এনকোডিংগুলি এবং পাঠ্যের সাথে কাজ করার জন্য চরিত্রের সেটগুলি সম্পর্কে ইতিবাচক প্রয়োজন] [http://kunststube.net/encoding/) -###শেষ - -[] [বড় এবং ছোট এন্ডিয়ান] (https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian। এইচটিএমএল) - -[] [বিগ এন্ডিয়ান বনাম লিটল এন্ডিয়ান (ভিডিও)] (https://www.youtube.com/watch?v=JrNF0KRAlyo) - -[] [বিগ এবং লিটল এন্ডিয়ান ইনসাইড / আউট (ভিডিও)] (https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [বড় এবং ছোট এন্ডিয়ান] (https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian। এইচটিএমএল) + - [বিগ এন্ডিয়ান বনাম লিটল এন্ডিয়ান (ভিডিও)] (https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [বিগ এবং লিটল এন্ডিয়ান ইনসাইড / আউট (ভিডিও)] (https://www.youtube.com/watch?v=oBSuXP-1Tc0) -কার্নেল দেবদের জন্য খুব প্রযুক্তিগত আলাপ। বেশিরভাগ আপনার মাথার উপরে থাকলে চিন্তা করবেন না। -প্রথমার্ধ যথেষ্ট। -###নেটওয়ার্কিং -** আপনার যদি নেটওয়ার্কিংয়ের অভিজ্ঞতা থাকে বা কোনও নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে প্রশ্নগুলি আশা করুন ** -অন্যথায়, এটি জেনে রাখা ভাল - -[] [খান একাডেমি] (https://www.khanacademy.org/computing/computer-science/internet-intro) - -[] [ইউডিপি এবং টিসিপি: পরিবহন প্রোটোকলের তুলনা (ভিডিও)] (https://www.youtube.com/watch?v=Vdc8TCESIg8) - -[] [টিসিপি / আইপি এবং ওএসআই মডেলটি ব্যাখ্যা করা হয়েছে! (ভিডিও)] (https://www.youtube.com/watch?v=e5DEVa9eSN0) - -[] [পুরো ইন্টারনেট জুড়ে প্যাকেট ট্রান্সমিশন। নেটওয়ার্কিং এবং টিসিপি / আইপি টিউটোরিয়াল। (ভিডিও)] (https://www.youtube.com/watch?v=nomyRJehhnM) - -[] [এইচটিটিপি (ভিডিও)] (https://www.youtube.com/watch?v=WGJrLqtX7As) - -[] [এসএসএল এবং এইচটিটিপিএস (ভিডিও)] (https://www.youtube.com/watch?v=S2iBR2ZlZf0) - -[] [এসএসএল / টিএলএস (ভিডিও)] (https://www.youtube.com/watch?v=Rp3iZUvXWlM) - -[] [এইচটিটিপি ২.০ (ভিডিও)] (https://www.youtube.com/watch?v=E9FxNzv1Tr8) - -[] [ভিডিও সিরিজ (21 টি ভিডিও) (ভিডিও)] (https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - -[] [সাবনেটিং ডেমাইসাইডেড-পার্ট 5 সিআইডিআর নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=t5xYI0jzOf4) - -[] সকেট: - -[] [জাভা-সকেটস-পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - -[] [সকেট প্রোগ্রামিং (ভিডিও)] (https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [খান একাডেমি] (https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ইউডিপি এবং টিসিপি: পরিবহন প্রোটোকলের তুলনা (ভিডিও)] (https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [টিসিপি / আইপি এবং ওএসআই মডেলটি ব্যাখ্যা করা হয়েছে! (ভিডিও)] (https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [পুরো ইন্টারনেট জুড়ে প্যাকেট ট্রান্সমিশন। নেটওয়ার্কিং এবং টিসিপি / আইপি টিউটোরিয়াল। (ভিডিও)] (https://www.youtube.com/watch?v=nomyRJehhnM) + - [এইচটিটিপি (ভিডিও)] (https://www.youtube.com/watch?v=WGJrLqtX7As) + - [এসএসএল এবং এইচটিটিপিএস (ভিডিও)] (https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [এসএসএল / টিএলএস (ভিডিও)] (https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [এইচটিটিপি ২.০ (ভিডিও)] (https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ভিডিও সিরিজ (21 টি ভিডিও) (ভিডিও)] (https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [সাবনেটিং ডেমাইসাইডেড-পার্ট 5 সিআইডিআর নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=t5xYI0jzOf4) + - সকেট: + - [জাভা-সকেটস-পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [সকেট প্রোগ্রামিং (ভিডিও)] (https://www.youtube.com/watch?v=G75vN2mnJeQ) @@ -1257,81 +1267,81 @@ -সরলতা এবং দৃust়তা -বাণিজ্য -কর্মক্ষমতা বিশ্লেষণ এবং অপ্টিমাইজেশন --[] ** এখানে শুরু করুন **: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) --[] [হায়ারডিনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) --[] [আমি কীভাবে কোনও প্রযুক্তিগত ইনভারভিউতে নকশার প্রশ্নের উত্তর দিতে প্রস্তুত করব?] (Https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview? redirected_qid = 1500023) --[] [সিস্টেম ডিজাইনের সাক্ষাত্কারের আগে আপনার যে 8 টি বিষয়গুলি জানতে হবে]] (http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system ডিজাইন-সাক্ষাৎকার /) --[] [অ্যালগরিদম নকশা] (http://www.hiredintech.com/algorithm-design/) --[] [ডাটাবেস নরমালাইজেশন-1NF, 2NF, 3NF এবং 4NF (ভিডিও)] (https://www.youtube.com/watch?v=UYYLYV7WSHM) --[] [সিস্টেম ডিজাইনের সাক্ষাত্কার] (https://github.com/checkcheckzz/system-design-interview)-এটির মধ্যে প্রচুর সংস্থান রয়েছে। নিবন্ধ এবং উদাহরণের মাধ্যমে দেখুন। আমি তাদের কিছু নীচে রাখলাম। --[] [সিস্টেম ডিজাইনের সাক্ষাত্কারটি কীভাবে টেকাবেন] (http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) --[] [প্রত্যেকের জানা উচিত নাম্বার] (http://eirtythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) --[] [কনটেক্সট স্যুইচ করতে কতক্ষণ সময় লাগে?] (Http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) --[] [ডাটাসেন্টারস জুড়ে লেনদেন (ভিডিও)] (https://www.youtube.com/watch?v=srOgpXECblk) --[] [সিএপি উপপাদ্যের একটি সরল ইংরেজী ভূমিকা] (http://ksat.me/a-plain-english-intr پيداوار-to-cap-theorem/) --[] সম্মতিসূচক অ্যালগরিদম: - -[] প্যাক্সোস-[প্যাকসোস চুক্তি-কম্পিউটারফিলি (ভিডিও)] (https://www.youtube.com/watch?v=s8JqcZtvnsM) - -[] ভেলা-[রাফট বিতরণ সম্মতি অ্যালগরিদমের একটি পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=P9Ydif5_qvE) - -[] [সহজেই পঠনযোগ্য কাগজ] (https://raft.github.io/) - -[] [ইনফোগ্রাফিক] (http://thesecretlivesofdata.com/raft/) --[] [ধারাবাহিকভাবে হ্যাশিং] (http://www.tom-e-white.com/2007/11/cons Contin-hashing.html) --[] [নোএসকিউএল প্যাটার্নস] (http://horicky.blogspot.com/2009/11/nosql-patterns.html) --[] স্কেলাবিলিটি: +- ** এখানে শুরু করুন **: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) +- [হায়ারডিনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) +- [আমি কীভাবে কোনও প্রযুক্তিগত ইনভারভিউতে নকশার প্রশ্নের উত্তর দিতে প্রস্তুত করব?] (Https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview? redirected_qid = 1500023) +- [সিস্টেম ডিজাইনের সাক্ষাত্কারের আগে আপনার যে 8 টি বিষয়গুলি জানতে হবে]] (http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system ডিজাইন-সাক্ষাৎকার /) +- [অ্যালগরিদম নকশা] (http://www.hiredintech.com/algorithm-design/) +- [ডাটাবেস নরমালাইজেশন-1NF, 2NF, 3NF এবং 4NF (ভিডিও)] (https://www.youtube.com/watch?v=UYYLYV7WSHM) +- [সিস্টেম ডিজাইনের সাক্ষাত্কার] (https://github.com/checkcheckzz/system-design-interview)-এটির মধ্যে প্রচুর সংস্থান রয়েছে। নিবন্ধ এবং উদাহরণের মাধ্যমে দেখুন। আমি তাদের কিছু নীচে রাখলাম। +- [সিস্টেম ডিজাইনের সাক্ষাত্কারটি কীভাবে টেকাবেন] (http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [প্রত্যেকের জানা উচিত নাম্বার] (http://eirtythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [কনটেক্সট স্যুইচ করতে কতক্ষণ সময় লাগে?] (Http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ডাটাসেন্টারস জুড়ে লেনদেন (ভিডিও)] (https://www.youtube.com/watch?v=srOgpXECblk) +- [সিএপি উপপাদ্যের একটি সরল ইংরেজী ভূমিকা] (http://ksat.me/a-plain-english-intr پيداوار-to-cap-theorem/) +- সম্মতিসূচক অ্যালগরিদম: + - প্যাক্সোস-[প্যাকসোস চুক্তি-কম্পিউটারফিলি (ভিডিও)] (https://www.youtube.com/watch?v=s8JqcZtvnsM) + - ভেলা-[রাফট বিতরণ সম্মতি অ্যালগরিদমের একটি পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [সহজেই পঠনযোগ্য কাগজ] (https://raft.github.io/) + - [ইনফোগ্রাফিক] (http://thesecretlivesofdata.com/raft/) +- [ধারাবাহিকভাবে হ্যাশিং] (http://www.tom-e-white.com/2007/11/cons Contin-hashing.html) +- [নোএসকিউএল প্যাটার্নস] (http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- স্কেলাবিলিটি: -আপনার এসবের দরকার নেই। আপনার আগ্রহের কিছু বেছে নিন। - -[] [দুর্দান্ত ওভারভিউ (ভিডিও)] (https://www.youtube.com/watch?v=-W9F__D3oY4) - -[] সংক্ষিপ্ত সিরিজ: + - [দুর্দান্ত ওভারভিউ (ভিডিও)] (https://www.youtube.com/watch?v=-W9F__D3oY4) + - সংক্ষিপ্ত সিরিজ: -[ক্লোনস] (http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) -[ডাটাবেস] (http://www.lecloud.net/post/7994751381/scalability-জন্য-ডামি-পার্ট ২--ডেটাবেস) -[ক্যাশে] (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) - -[] [বিতরণকৃত কম্পিউটিংয়ের ভুল ব্যাখ্যা] (https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - -[] [প্র্যাকমেটিক প্রোগ্রামিং কৌশল] (http://horicky.blogspot.com/2010/10/scalable-সিস্টেমে-ডিজাইন-পত্রিকা html) + - [স্কেলযোগ্য ওয়েব আর্কিটেকচার এবং বিতরণ সিস্টেমসমূহ] (http://www.aosabook.org/en/distsys.html) + - [বিতরণকৃত কম্পিউটিংয়ের ভুল ব্যাখ্যা] (https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [প্র্যাকমেটিক প্রোগ্রামিং কৌশল] (http://horicky.blogspot.com/2010/10/scalable-সিস্টেমে-ডিজাইন-পত্রিকা html) -[অতিরিক্ত: গুগল প্রেগেল গ্রাফ প্রসেসিং] (http://horicky.blogspot.com/2010/07/google-pregel-راف-প্রসেসিং html) - -[] [জেফ ডিন-গুগল এ বিল্ডিং সফটওয়্যার সিস্টেম এবং পাঠ শিখেছে (ভিডিও)] (https://www.youtube.com/watch?v=modXC5IWTJI) - -[] [আকারের জন্য আর্কিটেকটিং সিস্টেমের পরিচিতি] (http://lethain.com/intr Productions-to-architecting-সিস্টেমে-for-স্কেল/) - -[] [অ্যাপ ইঞ্জিন এবং ক্লাউড ডেটাস্টোর (ভিডিও) ব্যবহার করে বিশ্বব্যাপী দর্শকদের কাছে মোবাইল গেমস স্কেলিং]] (https://www.youtube.com/watch?v=9nWyWwY2Onc) - -[] [গুগল কীভাবে প্ল্যানেট-স্কেল ইনফ্রা (ভিডিও) এর জন্য প্ল্যানেট-স্কেল ইঞ্জিনিয়ারিং করে]] (https://www.youtube.com/watch?v=H4vMcD7zKM0) - -[] [অ্যালগরিদমের তাত্পর্য] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/the-Importance-of-algorithms/) - -[] [ভাগ করে নেওয়া] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-आगामी-of-the.html) - -[] [ফেসবুকে স্কেল (2012), "বিলিয়ন ব্যবহারকারীদের জন্য বিল্ডিং" (ভিডিও)] (https://www.youtube.com/watch?v=oodS71YtkGU) - -[] [লং গেমের জন্য ইঞ্জিনিয়ারিং-অ্যাস্ট্রিড অ্যাটকিনসন কীনোট (ভিডিও)] (https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - -[] [৩০ মিনিটের মধ্যে ইউটিউব স্কেলিবিলিটি পাঠের 7 বছরের বছর] (http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) + - [জেফ ডিন-গুগল এ বিল্ডিং সফটওয়্যার সিস্টেম এবং পাঠ শিখেছে (ভিডিও)] (https://www.youtube.com/watch?v=modXC5IWTJI) + - [আকারের জন্য আর্কিটেকটিং সিস্টেমের পরিচিতি] (http://lethain.com/intr Productions-to-architecting-সিস্টেমে-for-স্কেল/) + - [অ্যাপ ইঞ্জিন এবং ক্লাউড ডেটাস্টোর (ভিডিও) ব্যবহার করে বিশ্বব্যাপী দর্শকদের কাছে মোবাইল গেমস স্কেলিং]] (https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [গুগল কীভাবে প্ল্যানেট-স্কেল ইনফ্রা (ভিডিও) এর জন্য প্ল্যানেট-স্কেল ইঞ্জিনিয়ারিং করে]] (https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [অ্যালগরিদমের তাত্পর্য] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/the-Importance-of-algorithms/) + - [ভাগ করে নেওয়া] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-आगामी-of-the.html) + - [ফেসবুকে স্কেল (2012), "বিলিয়ন ব্যবহারকারীদের জন্য বিল্ডিং" (ভিডিও)] (https://www.youtube.com/watch?v=oodS71YtkGU) + - [লং গেমের জন্য ইঞ্জিনিয়ারিং-অ্যাস্ট্রিড অ্যাটকিনসন কীনোট (ভিডিও)] (https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [৩০ মিনিটের মধ্যে ইউটিউব স্কেলিবিলিটি পাঠের 7 বছরের বছর] (http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) -[ভিডিও] (https://www.youtube.com/watch?v=G-lGCC4KKok) - -[] [পেপাল কীভাবে দৈনিক মাত্র 8 ভিএম ব্যবহার করে বিলিয়ন বিলিয়ন লেনদেনের পরিমাণকে বাড়িয়েছে] (http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transferences-daily-using-ju.html) - -[] [বৃহত্তর ডেটাসেটে নকলগুলি কীভাবে সরানো যায়] (https://blog.clevertap.com/how-to-remove-d નકલ-in-large-datasets/) - -[] [জোন কাউই (ভিডিও) এর সাথে এটসির স্কেল এবং ইঞ্জিনিয়ারিং সংস্কৃতির ভিতরে এক ঝলক দেখুন] (https://www.youtube.com/watch?v=3vV4YiqKm1o) - -[] [কীভাবে অ্যামাজনকে তার নিজস্ব মাইক্রোসার্ভেসেস আর্কিটেকচারে নেতৃত্ব দিয়েছে] (http://thenewstack.io/led-amazon-microservices-architecture/) - -[] [সংকোচনের জন্য বা সংকুচিত না করার জন্য, যা উবারের প্রশ্ন ছিল] (https://eng.uber.com/trip-data-squeeze/) - -[] [অসিনসিও ট্যারান্টুল ক্যু, কাতারে উঠুন] (http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - -[] [আনুমানিক ক্যোয়ারী প্রসেসিং কখন ব্যবহার করা উচিত?] (Http://highscalability.com/blog/2016/2/25/When-should-approtimate-query-processing-be-used.html) - -[] [গুগলের একক ডাটাসেন্টার থেকে রূপান্তর, ব্যর্থতায়, নেটিভ মাল্টিহোমড আর্কিটেকচারে] [http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-টু-an.html) - -[] [স্প্যানার] (http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - -[] [মেশিন লার্নিং ড্রাইভন প্রোগ্রামিং: একটি নতুন ওয়ার্ল্ডের জন্য একটি নতুন প্রোগ্রামিং] (http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - -[] [চিত্র অপ্টিমাইজেশন প্রযুক্তি যা প্রতিদিন কয়েক মিলিয়ন অনুরোধগুলি সরবরাহ করে] [http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .html) - -[] [একটি প্যাট্রিয়নের আর্কিটেকচার শর্ট] (http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - -[] টিন্ডার: সবচেয়ে বড় প্রস্তাবের ইঞ্জিনগুলির মধ্যে একটি কীভাবে সিদ্ধান্ত নেয় যে আপনি পরবর্তী কে দেখবেন?] (Http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-বৃহত্তম প্রস্তাবনা-ইঞ্জিন-de.html) - -[] [একটি আধুনিক ক্যাশের নকশা] (http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - -[] [ফেসবুক স্কেলে সরাসরি ভিডিও স্ট্রিমিং] (http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - -[] [অ্যামাজনের এডাব্লুএসে 11 মিলিয়ন + ব্যবহারকারীদের স্কেলিংয়ের জন্য একটি শিক্ষানবিশ গাইড] (http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-ব্যবহারকারীদের-অন-amazons.html) - -[] [কীভাবে দোকারের প্রভাব বিলম্বিত করে?] (Http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-efect-latency.html) - -[] [পুরো নেটফ্লিক্স স্ট্যাকের একটি 360 ডিগ্রি ভিউ] (http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) - -[] [লেটেন্সি সর্বত্র রয়েছে এবং এটি আপনার বিক্রয় ব্যয় করে-এটি কীভাবে কাটাবেন] (http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - -[] [সার্ভারলেস (খুব দীর্ঘ, কেবল টুকরো টুকরো দরকার)] (http://martinfowler.com/articles/serverless.html) - -[] [ইনস্টাগ্রাম কী শক্তি দেয়: কয়েকশো উদাহরণ, কয়েক ডজন প্রযুক্তি] (http://instagram-engineering.tumblr.com/post/13649370142/ কি-পাওয়ারগুলি-ইনস্টাগ্রাম-কয়েকশত-বিষয়গুলি) - -[] সিনচকাস্ট আর্কিটেকচার-প্রতিদিন ১,০০০ ঘন্টা অডিও উত্পাদন করা] (http://highscalability.com/blog/2012/7/16/cinchcast-architecture-প্রোডাকশন-1500-hours-of-audio-every-d। এইচটিএমএল) - -[] [জাস্টিন.টিভির লাইভ ভিডিও সম্প্রচারের আর্কিটেকচার] (http://highscalability.com/blog/2010/3/16/justintvs-live-video-সম্প্রসারণ-আর্কিটেকচার html) - -[] [প্লেফিশের সামাজিক গেমিং আর্কিটেকচার-50 মিলিয়ন মাসিক ব্যবহারকারী এবং ক্রমবর্ধমান] (http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html ) - -[] ট্রিপএডভাইজার আর্কিটেকচার-40 এম ভিজিটর, 200 এম ডায়নামিক পেজ ভিউ, 30 টিবি ডেটা] (http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view .html) - -[] [প্রচুর পরিমাণে ফিশ আর্কিটেকচার] (http://highscalability.com/pletyoffish-architecture) - -[] [সেলসফোর্স আর্কিটেকচার-তারা কীভাবে একদিন ১.৩ বিলিয়ন লেনদেন পরিচালনা করে] [http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) - -[] [ইএসপিএন এর আর্কিটেকচার স্কেল-100,000 ডুহ নুহ নুহ্হ্ প্রতি সেকেন্ডে অপারেটিং] [http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - -[] পরিষেবাগুলিকে একসাথে আটকানো যেতে পারে এমন কয়েকটি প্রযুক্তির তথ্যের জন্য নীচে "বার্তা, সিরিয়ালাইজেশন এবং কুইউনিং সিস্টেম" দেখুন See + - [পেপাল কীভাবে দৈনিক মাত্র 8 ভিএম ব্যবহার করে বিলিয়ন বিলিয়ন লেনদেনের পরিমাণকে বাড়িয়েছে] (http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transferences-daily-using-ju.html) + - [বৃহত্তর ডেটাসেটে নকলগুলি কীভাবে সরানো যায়] (https://blog.clevertap.com/how-to-remove-d નકલ-in-large-datasets/) + - [জোন কাউই (ভিডিও) এর সাথে এটসির স্কেল এবং ইঞ্জিনিয়ারিং সংস্কৃতির ভিতরে এক ঝলক দেখুন] (https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [কীভাবে অ্যামাজনকে তার নিজস্ব মাইক্রোসার্ভেসেস আর্কিটেকচারে নেতৃত্ব দিয়েছে] (http://thenewstack.io/led-amazon-microservices-architecture/) + - [সংকোচনের জন্য বা সংকুচিত না করার জন্য, যা উবারের প্রশ্ন ছিল] (https://eng.uber.com/trip-data-squeeze/) + - [অসিনসিও ট্যারান্টুল ক্যু, কাতারে উঠুন] (http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [আনুমানিক ক্যোয়ারী প্রসেসিং কখন ব্যবহার করা উচিত?] (Http://highscalability.com/blog/2016/2/25/When-should-approtimate-query-processing-be-used.html) + - [গুগলের একক ডাটাসেন্টার থেকে রূপান্তর, ব্যর্থতায়, নেটিভ মাল্টিহোমড আর্কিটেকচারে] [http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-টু-an.html) + - [স্প্যানার] (http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [মেশিন লার্নিং ড্রাইভন প্রোগ্রামিং: একটি নতুন ওয়ার্ল্ডের জন্য একটি নতুন প্রোগ্রামিং] (http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [চিত্র অপ্টিমাইজেশন প্রযুক্তি যা প্রতিদিন কয়েক মিলিয়ন অনুরোধগুলি সরবরাহ করে] [http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .html) + - [একটি প্যাট্রিয়নের আর্কিটেকচার শর্ট] (http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - টিন্ডার: সবচেয়ে বড় প্রস্তাবের ইঞ্জিনগুলির মধ্যে একটি কীভাবে সিদ্ধান্ত নেয় যে আপনি পরবর্তী কে দেখবেন?] (Http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-বৃহত্তম প্রস্তাবনা-ইঞ্জিন-de.html) + - [একটি আধুনিক ক্যাশের নকশা] (http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ফেসবুক স্কেলে সরাসরি ভিডিও স্ট্রিমিং] (http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [অ্যামাজনের এডাব্লুএসে 11 মিলিয়ন + ব্যবহারকারীদের স্কেলিংয়ের জন্য একটি শিক্ষানবিশ গাইড] (http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-ব্যবহারকারীদের-অন-amazons.html) + - [কীভাবে দোকারের প্রভাব বিলম্বিত করে?] (Http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-efect-latency.html) + - [পুরো নেটফ্লিক্স স্ট্যাকের একটি 360 ডিগ্রি ভিউ] (http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) + - [লেটেন্সি সর্বত্র রয়েছে এবং এটি আপনার বিক্রয় ব্যয় করে-এটি কীভাবে কাটাবেন] (http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [সার্ভারলেস (খুব দীর্ঘ, কেবল টুকরো টুকরো দরকার)] (http://martinfowler.com/articles/serverless.html) + - [ইনস্টাগ্রাম কী শক্তি দেয়: কয়েকশো উদাহরণ, কয়েক ডজন প্রযুক্তি] (http://instagram-engineering.tumblr.com/post/13649370142/ কি-পাওয়ারগুলি-ইনস্টাগ্রাম-কয়েকশত-বিষয়গুলি) + - সিনচকাস্ট আর্কিটেকচার-প্রতিদিন ১,০০০ ঘন্টা অডিও উত্পাদন করা] (http://highscalability.com/blog/2012/7/16/cinchcast-architecture-প্রোডাকশন-1500-hours-of-audio-every-d। এইচটিএমএল) + - [জাস্টিন.টিভির লাইভ ভিডিও সম্প্রচারের আর্কিটেকচার] (http://highscalability.com/blog/2010/3/16/justintvs-live-video-সম্প্রসারণ-আর্কিটেকচার html) + - [প্লেফিশের সামাজিক গেমিং আর্কিটেকচার-50 মিলিয়ন মাসিক ব্যবহারকারী এবং ক্রমবর্ধমান] (http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html ) + - ট্রিপএডভাইজার আর্কিটেকচার-40 এম ভিজিটর, 200 এম ডায়নামিক পেজ ভিউ, 30 টিবি ডেটা] (http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view .html) + - [প্রচুর পরিমাণে ফিশ আর্কিটেকচার] (http://highscalability.com/pletyoffish-architecture) + - [সেলসফোর্স আর্কিটেকচার-তারা কীভাবে একদিন ১.৩ বিলিয়ন লেনদেন পরিচালনা করে] [http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) + - [ইএসপিএন এর আর্কিটেকচার স্কেল-100,000 ডুহ নুহ নুহ্হ্ প্রতি সেকেন্ডে অপারেটিং] [http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - পরিষেবাগুলিকে একসাথে আটকানো যেতে পারে এমন কয়েকটি প্রযুক্তির তথ্যের জন্য নীচে "বার্তা, সিরিয়ালাইজেশন এবং কুইউনিং সিস্টেম" দেখুন See -[ ] টুইটার: -[ও'রিলি মাইএসকিউএল সিই 2011: জেরেমি কোল, "টুইটারে বড় এবং ছোট তথ্য" (ভিডিও)] (https://www.youtube.com/watch?v=5cKTP36HVgI) -[স্কেলে টাইমলাইন] (https://www.infoq.com/preferencesations/Twitter-Timeline-সক্ষমতা) -আরও তথ্যের জন্য, [ভিডিও সিরিজ] (#ভিডিও-সিরিজ) বিভাগে "মাইনিং ম্যাসিভ ডেটাসেটস" ভিডিও সিরিজটি দেখুন। --[] সিস্টেম ডিজাইন প্রক্রিয়াটির অনুশীলন: কাগজে কাজ করার চেষ্টা করার জন্য এখানে কয়েকটি ধারণা দেওয়া হয়েছে, প্রত্যেকটি আসল বিশ্বে কীভাবে এটি পরিচালনা করা হয়েছিল সে সম্পর্কে কিছু ডকুমেন্টেশন সহ: +- সিস্টেম ডিজাইন প্রক্রিয়াটির অনুশীলন: কাগজে কাজ করার চেষ্টা করার জন্য এখানে কয়েকটি ধারণা দেওয়া হয়েছে, প্রত্যেকটি আসল বিশ্বে কীভাবে এটি পরিচালনা করা হয়েছিল সে সম্পর্কে কিছু ডকুমেন্টেশন সহ: -পর্যালোচনা: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) -[হাইরেডইনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) -[চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) @@ -1376,12 +1386,12 @@ এই বিভাগে সংক্ষিপ্ত ভিডিও থাকবে যা আপনি বেশিরভাগ গুরুত্বপূর্ণ ধারণাটি পর্যালোচনা করতে খুব দ্রুত দেখতে পারেন। আপনি প্রায়শই একটি রিফ্রেশার চাইলে এটি দুর্দান্ত। --[] শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) +- শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) --[] 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল (18 টি ভিডিও): +- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল (18 টি ভিডিও): -[ভিডিও] (https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --[] [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) --[] [সেজেজিক ভিডিও-দ্বিতীয় অ্যালগোরিদম] (https://www.coursera.org/learn/algorithms-part2) +- [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) +- [সেজেজিক ভিডিও-দ্বিতীয় অ্যালগোরিদম] (https://www.coursera.org/learn/algorithms-part2) @@ -1423,9 +1433,9 @@ ** প্রোগ্রামিং সমস্যাগুলি পড়ুন এবং করুন (এই ক্রমে): ** --[] [প্রোগ্রামিং সাক্ষাত্কার উন্মোচিত: আপনার পরবর্তী কাজ ল্যান্ডিংয়ের গোপনীয়তা, ২ য় সংস্করণ] (http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [প্রোগ্রামিং সাক্ষাত্কার উন্মোচিত: আপনার পরবর্তী কাজ ল্যান্ডিংয়ের গোপনীয়তা, ২ য় সংস্করণ] (http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) -সি, সি ++ এবং জাভাতে উত্তর --[] [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ] (http://www.amazon.com/Cracking-Coding-Interview-6th-প্রোগ্রামামিং / ডিপি/0984782850/) +- [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ] (http://www.amazon.com/Cracking-Coding-Interview-6th-প্রোগ্রামামিং / ডিপি/0984782850/) -জাভা উত্তর [উপরে বুক তালিকা] দেখুন (#বুক-তালিকা) @@ -1440,8 +1450,8 @@ একবার আপনি আপনার মস্তিষ্ক শিখে ফেললে, সেই মস্তিষ্কগুলিকে কাজে লাগান। প্রতিদিন যতটা সম্ভব কোডিং চ্যালেঞ্জ নিন। --[] [কীভাবে সমাধান সন্ধান করবেন] (https://www.topcoder.com/commune/competitive-programming/tutorials/how-to-find-a-solution/) --[] [কীভাবে টপকোডার সমস্যার বিবরণটি সংক্রামিত করবেন] (https://www.topcoder.com/commune/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [কীভাবে সমাধান সন্ধান করবেন] (https://www.topcoder.com/commune/competitive-programming/tutorials/how-to-find-a-solution/) +- [কীভাবে টপকোডার সমস্যার বিবরণটি সংক্রামিত করবেন] (https://www.topcoder.com/commune/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) কোডিং সাক্ষাত্কার প্রশ্ন ভিডিও: -[আইডিজার (৮৮ টি ভিডিও)] (https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) @@ -1473,7 +1483,7 @@ ##একবার আপনি সাক্ষাত্কারের কাছাকাছি চলে আসবেন --[] কোডিং সাক্ষাত্কার সেট 2 (ভিডিও) ক্র্যাক করা: +- কোডিং সাক্ষাত্কার সেট 2 (ভিডিও) ক্র্যাক করা: -[কোড সাক্ষাত্কারে ক্র্যাকিং] (https://www.youtube.com/watch?v=4NIb9l3imAo) -[কোডিং সাক্ষাত্কার ক্র্যাকিং-ফুলস্ট্যাক স্পিকার সিরিজ] (https://www.youtube.com/watch?v=Eg5-tdAwclo) @@ -1598,10 +1608,10 @@ সফ্টওয়্যার ইঞ্জিনিয়ার, এবং নির্দিষ্ট প্রযুক্তি এবং অ্যালগরিদম সম্পর্কে সচেতন হতে যাতে আপনার কাছে একটি বড় টুলবক্স থাকে। -###সংকলক - -[] [একটি সংকলক কীভাবে ~ 1 মিনিটে (ভিডিও) কাজ করে] [https://www.youtube.com/watch?v=IhC7sdYe-Jg) - -[] [হার্ভার্ড সিএস 50-সংকলক (ভিডিও)] (https://www.youtube.com/watch?v=CSZLNYF4Klo) - -[] [সি ++ (ভিডিও)] (https://www.youtube.com/watch?v=twodd1KFfGk) - -[] [সংকলন অপ্টিমাইজেশন (সি ++) (ভিডিও) বোঝা] (https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [একটি সংকলক কীভাবে ~ 1 মিনিটে (ভিডিও) কাজ করে] [https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [হার্ভার্ড সিএস 50-সংকলক (ভিডিও)] (https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [সি ++ (ভিডিও)] (https://www.youtube.com/watch?v=twodd1KFfGk) + - [সংকলন অপ্টিমাইজেশন (সি ++) (ভিডিও) বোঝা] (https://www.youtube.com/watch?v=FnGCDLhaxKU) -###ইম্যাক্স এবং ভিআই (মি) -ইউনিক্স ভিত্তিক কোড সম্পাদকের সাথে নিজেকে পরিচিত করুন @@ -1626,115 +1636,115 @@ -###ইউনিক্স কমান্ড লাইন সরঞ্জাম -আমি ভাল সরঞ্জামগুলি থেকে নীচে তালিকায় পূর্ণ করেছি। - -[] বাশ - -[] বিড়াল - -[] গ্রেপ - -[] সেড - -[] অজানা - -[] কার্ল বা উইজেট + - বাশ + - বিড়াল + - গ্রেপ + - সেড + - অজানা + - কার্ল বা উইজেট -[ ] সাজান - -[] ট্র - -[] ইউনিক - -[] [স্ট্রেস] (https://en.wikedia.org/wiki/Strace) - -[] [tcpdump] (https://danielmiessler.com/study/tcpdump/) + - ট্র + - ইউনিক + - [স্ট্রেস] (https://en.wikedia.org/wiki/Strace) + - [tcpdump] (https://danielmiessler.com/study/tcpdump/) -###তথ্য তত্ত্ব (ভিডিও) - -[] [খান একাডেমি] (https://www.khanacademy.org/computing/computer-s विज्ञान / তথ্যসূত্র) - -[] মার্কভ প্রক্রিয়া সম্পর্কে আরও: - -[] [কোর মার্কভ টেক্সট জেনারেশন] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - -[] [মার্কেভ টেক্সট জেনারেশনের মূল প্রয়োগকারী] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - -[] [প্রকল্প = মার্কভ টেক্সট জেনারেশন ওয়াক থ্রো] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [খান একাডেমি] (https://www.khanacademy.org/computing/computer-s विज्ञान / তথ্যসূত্র) + - মার্কভ প্রক্রিয়া সম্পর্কে আরও: + - [কোর মার্কভ টেক্সট জেনারেশন] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [মার্কেভ টেক্সট জেনারেশনের মূল প্রয়োগকারী] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [প্রকল্প = মার্কভ টেক্সট জেনারেশন ওয়াক থ্রো] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) -নীচে এমআইটি 6.050J তথ্য এবং এন্ট্রপি সিরিজে আরও দেখুন। -###সমতা এবং হামিং কোড (ভিডিও) - -[] [পরিচয়] (https://www.youtube.com/watch?v=q-3BctoUpHE) - -[] [সমতা] (https://www.youtube.com/watch?v=DdMcAUlxh1M) - -[] হামিং কোড: + - [পরিচয়] (https://www.youtube.com/watch?v=q-3BctoUpHE) + - [সমতা] (https://www.youtube.com/watch?v=DdMcAUlxh1M) + - হামিং কোড: -[ত্রুটি সনাক্তকরণ] (https://www.youtube.com/watch?v=1A_NcXxdoCc) -[ত্রুটি সংশোধন] (https://www.youtube.com/watch?v=JAMLuxdHH8o) - -[] [ত্রুটি পরীক্ষা করা] (https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [ত্রুটি পরীক্ষা করা] (https://www.youtube.com/watch?v=wbH2VxzmoZk) -###এন্ট্রপি -নীচে ভিডিও দেখুন -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - -[] [তথ্য তত্ত্ব, ক্লড শ্যানন, এন্ট্রপি, রিডানডেন্সি, ডেটা সংক্ষেপণ এবং বিটস (ভিডিও)] (https://youtu.be/JnJq3Py0dyM?t=176) + - [তথ্য তত্ত্ব, ক্লড শ্যানন, এন্ট্রপি, রিডানডেন্সি, ডেটা সংক্ষেপণ এবং বিটস (ভিডিও)] (https://youtu.be/JnJq3Py0dyM?t=176) -###ক্রিপ্টোগ্রাফি -নীচে ভিডিও দেখুন -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - -[] [খান একাডেমি সিরিজ] (https://www.khanacademy.org/computing/computer-s विज्ञान/cryptography) - -[] [ক্রিপ্টোগ্রাফি: হ্যাশ ফাংশন] (https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - -[] [ক্রিপ্টোগ্রাফি: এনক্রিপশন] (https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [খান একাডেমি সিরিজ] (https://www.khanacademy.org/computing/computer-s विज्ञान/cryptography) + - [ক্রিপ্টোগ্রাফি: হ্যাশ ফাংশন] (https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [ক্রিপ্টোগ্রাফি: এনক্রিপশন] (https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -###সঙ্কোচন -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - -[] কম্পিউটারফিল (ভিডিও): - -[] [সংক্ষেপণ] (https://www.youtube.com/watch?v=Lto-ajuqW3w) - -[] [সংকোচনে এন্ট্রপি] (https://www.youtube.com/watch?v=M5c_RFKVkko) - -[] [উপরে গাছগুলি (হাফম্যান গাছ)] (https://www.youtube.com/watch?v=umTbivyJoiI) - -[] [অতিরিক্ত বিটস / ট্রিটস-হাফম্যান ট্রি] (https://www.youtube.com/watch?v=DV8efuB3h2g) - -[] [পাঠ্যে মার্জিত সংকোচনের (এলজেড 77 77 পদ্ধতি)] (https://www.youtube.com/watch?v=goOa3DGezUA) - -[] [পাঠ্য সংক্ষেপণ সম্ভাবনার সাথে মিলিত হয়) (https://www.youtube.com/watch?v=cCDCfoHTsaU) - -[] [সংক্ষেপক প্রধান ভিডিও] (https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - -[] [(alচ্ছিক) গুগল বিকাশকারীদের লাইভ: জিজেপআইপি যথেষ্ট নয়!] (https://www.youtube.com/watch?v=whGwm0Lky2s) + - কম্পিউটারফিল (ভিডিও): + - [সংক্ষেপণ] (https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [সংকোচনে এন্ট্রপি] (https://www.youtube.com/watch?v=M5c_RFKVkko) + - [উপরে গাছগুলি (হাফম্যান গাছ)] (https://www.youtube.com/watch?v=umTbivyJoiI) + - [অতিরিক্ত বিটস / ট্রিটস-হাফম্যান ট্রি] (https://www.youtube.com/watch?v=DV8efuB3h2g) + - [পাঠ্যে মার্জিত সংকোচনের (এলজেড 77 77 পদ্ধতি)] (https://www.youtube.com/watch?v=goOa3DGezUA) + - [পাঠ্য সংক্ষেপণ সম্ভাবনার সাথে মিলিত হয়) (https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [সংক্ষেপক প্রধান ভিডিও] (https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(alচ্ছিক) গুগল বিকাশকারীদের লাইভ: জিজেপআইপি যথেষ্ট নয়!] (https://www.youtube.com/watch?v=whGwm0Lky2s) -###কম্পিউটার নিরাপত্তা -[এমআইটি (২৩ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [ভূমিকা, হুমকির মডেল] (https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [হাইজ্যাকিং আক্রমণকে নিয়ন্ত্রণ করুন] (https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - -[] [বাফার ওভারফ্লো শোষণ এবং প্রতিরক্ষা] (https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - -[] [প্রিভিলেজ বিচ্ছেদ] (https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [সক্ষমতা] (https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [স্যান্ডবক্সিং নেটিভ কোড] (https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - -[] [ওয়েব সুরক্ষা মডেল] (https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [ওয়েব অ্যাপ্লিকেশনগুলি সুরক্ষিত করা] (https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [সিম্বলিক এক্সিকিউশন] (https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [নেটওয়ার্ক সুরক্ষা] (https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [নেটওয়ার্ক প্রোটোকল] (https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -[] [সাইড-চ্যানেল আক্রমণগুলি) (https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ভূমিকা, হুমকির মডেল] (https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [হাইজ্যাকিং আক্রমণকে নিয়ন্ত্রণ করুন] (https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [বাফার ওভারফ্লো শোষণ এবং প্রতিরক্ষা] (https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [প্রিভিলেজ বিচ্ছেদ] (https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [সক্ষমতা] (https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [স্যান্ডবক্সিং নেটিভ কোড] (https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [ওয়েব সুরক্ষা মডেল] (https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ওয়েব অ্যাপ্লিকেশনগুলি সুরক্ষিত করা] (https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [সিম্বলিক এক্সিকিউশন] (https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [নেটওয়ার্ক সুরক্ষা] (https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [নেটওয়ার্ক প্রোটোকল] (https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [সাইড-চ্যানেল আক্রমণগুলি) (https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -###আবর্জনা সংগ্রহ - -[] [পাইথনে জিসি (ভিডিও)] (https://www.youtube.com/watch?v=iHVs_HkjdmI) - -[] [ডিপ ডাইভ জাভা: আবর্জনা সংগ্রহ ভাল!] (Https://www.infoq.com/preferencesations/garbage-colલેક્--সুবিধা) - -[] [ডিপ ডাইভ পাইথন: সিপিথনে আবর্জনা সংগ্রহ (ভিডিও)] (https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [পাইথনে জিসি (ভিডিও)] (https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ডিপ ডাইভ জাভা: আবর্জনা সংগ্রহ ভাল!] (Https://www.infoq.com/preferencesations/garbage-colલેક્--সুবিধা) + - [ডিপ ডাইভ পাইথন: সিপিথনে আবর্জনা সংগ্রহ (ভিডিও)] (https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) -###সমান্তরাল প্রোগ্রামিং - -[] [কোর্সেরা (স্কালা)] (https://www.coursera.org/learn/parprog1/home/week/1) - -[] [উচ্চ পারফরম্যান্স প্যারালাল কম্পিউটিংয়ের জন্য দক্ষ পাইথন (ভিডিও)] (https://www.youtube.com/watch?v=uY85GkaYzBk) + - [কোর্সেরা (স্কালা)] (https://www.coursera.org/learn/parprog1/home/week/1) + - [উচ্চ পারফরম্যান্স প্যারালাল কম্পিউটিংয়ের জন্য দক্ষ পাইথন (ভিডিও)] (https://www.youtube.com/watch?v=uY85GkaYzBk) -###মেসেজিং, সিরিয়ালাইজেশন এবং কুইউিং সিস্টেম - -[] [থ্রিফট] (https://thrift.apache.org/) + - [থ্রিফট] (https://thrift.apache.org/) -[টিউটোরিয়াল] (http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - -[] [প্রোটোকল বাফারস) (https://developers.google.com/protocol-buffers/) + - [প্রোটোকল বাফারস) (https://developers.google.com/protocol-buffers/) -[টিউটোরিয়াল] (https://developers.google.com/protocol-buffers/docs/tutorials) - -[] [জিআরপিসি] (http://www.grpc.io/) + - [জিআরপিসি] (http://www.grpc.io/) -[জাভা ডেভেলপারদের (ভিডিও) জন্য জিআরপিসি 101] (https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJOL&index=1) - -[] [রেডিস] (http://redis.io/) + - [রেডিস] (http://redis.io/) -[টিউটোরিয়াল] (http://try.redis.io/) - -[] [আমাজন এসকিউএস (সারি)] (https://aws.amazon.com/sqs/) - -[] [অ্যামাজন এসএনএস (পাব সাব)] (https://aws.amazon.com/sns/) - -[] [র‌্যাবিট এমকিউ] (https://www.rabbitmq.com/) + - [আমাজন এসকিউএস (সারি)] (https://aws.amazon.com/sqs/) + - [অ্যামাজন এসএনএস (পাব সাব)] (https://aws.amazon.com/sns/) + - [র‌্যাবিট এমকিউ] (https://www.rabbitmq.com/) -[শুরু করুন] (https://www.rabbitmq.com/getstarted.html) - -[] [সেলারি] (http://www.celeryproject.org/) + - [সেলারি] (http://www.celeryproject.org/) -[সিলারির সাথে প্রথম পদক্ষেপ] (http://docs.celeryproject.org/en/latest/getting-st সূত্র / প্রথম পদক্ষেপ-উইথ-সিলারি html) - -[] [জিরো কিউ] (http://zeromq.org/) + - [জিরো কিউ] (http://zeromq.org/) -[পরিচয়-ম্যানুয়াল পড়ুন] (http://zeromq.org/intro:read-the-manual) - -[] [অ্যাক্টিভ এমকিউ] (http://activemq.apache.org/) - -[] [কাফকা] (http://kafka.apache.org/docamentation.html#intr پيداوار) - -[] [বার্তা প্যাক] (http://msgpack.org/index.html) - -[] [অভ্র] (https://avro.apache.org/) + - [অ্যাক্টিভ এমকিউ] (http://activemq.apache.org/) + - [কাফকা] (http://kafka.apache.org/docamentation.html#intr پيداوار) + - [বার্তা প্যাক] (http://msgpack.org/index.html) + - [অভ্র] (https://avro.apache.org/) -###এ * - -[] [একটি অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/A*_search_algorithm) - -[] [একটি * প্যাথফাইন্ডিং টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=KNXfSOx4eEE) - -[] [এ * প্যাথফাইন্ডিং (E01: অ্যালগরিদম ব্যাখ্যা) (ভিডিও)] (https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [একটি অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/A*_search_algorithm) + - [একটি * প্যাথফাইন্ডিং টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [এ * প্যাথফাইন্ডিং (E01: অ্যালগরিদম ব্যাখ্যা) (ভিডিও)] (https://www.youtube.com/watch?v=-L-WgKMFuhE) -###ফাস্ট ফোরিয়ার ট্রান্সফর্ম - -[] [ফুরিয়ার ট্রান্সফর্মের জন্য একটি ইন্টারেক্টিভ গাইড] (https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - -[] [ফুরিয়ার রূপান্তর কী? এটি কীসের জন্য ব্যবহার করা হয়েছে?] (Http://www.askamathematician.com/2012/09/q-কি-is-a-fourier-transform-কি-is-it-used-for/) - -[] [ফুরিয়ার ট্রান্সফর্ম কী? (ভিডিও)] (https://www.youtube.com/watch?v=Xxut2PN-V8Q) - -[] [ভাগ করুন এবং বিজয়: এফএফটি (ভিডিও)] (https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - -[] [এফএফটি বোঝা] (http://jakevdp.github.io/blog/2013/08/28/ বোঝা-the-fft/) + - [ফুরিয়ার ট্রান্সফর্মের জন্য একটি ইন্টারেক্টিভ গাইড] (https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [ফুরিয়ার রূপান্তর কী? এটি কীসের জন্য ব্যবহার করা হয়েছে?] (Http://www.askamathematician.com/2012/09/q-কি-is-a-fourier-transform-কি-is-it-used-for/) + - [ফুরিয়ার ট্রান্সফর্ম কী? (ভিডিও)] (https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ভাগ করুন এবং বিজয়: এফএফটি (ভিডিও)] (https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [এফএফটি বোঝা] (http://jakevdp.github.io/blog/2013/08/28/ বোঝা-the-fft/) -###ব্লুম ফিল্টার -এম বিট এবং কে হ্যাশিং ফাংশন সহ একটি ব্লুম ফিল্টার দেওয়া, সন্নিবেশ এবং সদস্যপদ পরীক্ষা উভয়ই হ'ল (কে) @@ -1752,11 +1762,11 @@ -[সিমহাশিং (আশাবাদী) সহজ করে]] (http://ferd.ca/simhashing-hopefully-made-simple.html) -###ভ্যান এমডে বোস ট্রি - -[] [ভাগ করুন এবং জয়লাভ করুন: ভ্যান এমডে বোস ট্রি (ভিডিও)] (https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - -[] [এমআইটি লেকচার নোটস] (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) + - [ভাগ করুন এবং জয়লাভ করুন: ভ্যান এমডে বোস ট্রি (ভিডিও)] (https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [এমআইটি লেকচার নোটস] (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) -###সংযুক্ত ডেটা কাঠামো - -[] [সিএস 61 বি লেকচার 39: ডেটা স্ট্রাকচারগুলিকে বাড়িয়ে তোলা] (https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [সিএস 61 বি লেকচার 39: ডেটা স্ট্রাকচারগুলিকে বাড়িয়ে তোলা] (https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) -###ভারসাম্যযুক্ত অনুসন্ধান গাছ -কমপক্ষে এক ধরণের সুষম বাইনারি ট্রি জানুন (এবং এটি কীভাবে প্রয়োগ করা হয় তা জানুন): @@ -1770,31 +1780,31 @@ যদি আপনি লাল / কালো গাছ প্রয়োগ করে শেষ করেন তবে এইগুলি ব্যবহার করে দেখুন: -অনুসন্ধান এবং সন্নিবেশ ফাংশন, মুছুন এড়ানো -আমি বি-ট্রি সম্পর্কে আরও জানতে চাই যেহেতু এটি খুব বড় ডেটা সেটগুলির সাথে এত ব্যাপকভাবে ব্যবহৃত হয়। - -[] [স্ব-ভারসাম্য বাইনারি অনুসন্ধান বৃক্ষ] (https://en.wikedia.org/wiki/S سیل-ব্যালেন্সিং_বাইনারি_সার্চ_ট্রি) + - [স্ব-ভারসাম্য বাইনারি অনুসন্ধান বৃক্ষ] (https://en.wikedia.org/wiki/S سیل-ব্যালেন্সিং_বাইনারি_সার্চ_ট্রি) - -[] ** এভিএল গাছ ** + - ** এভিএল গাছ ** -প্রস্তুতিতে: আমি যা বলতে পারি, সেগুলি থেকে অনুশীলনে এগুলি বেশি ব্যবহার করা হয় না, তবে আমি দেখতে পেতাম তারা কোথায় থাকবে: এভিএল ট্রি ও (লগ এন) অনুসন্ধান, সন্নিবেশ এবং অপসারণকে সমর্থনকারী আরেকটি কাঠামো। এটি আরও কঠোরভাবে হয় লাল – কালো গাছের চেয়ে সুষম, ধীরে ধীরে সন্নিবেশ এবং অপসারণ কিন্তু দ্রুত পুনরুদ্ধারের দিকে পরিচালিত করে। এটি এটি তোলে ডেটা স্ট্রাকচারের জন্য আকর্ষণীয় যা একবারে তৈরি করা যেতে পারে এবং ভাষা যেমন পুনর্গঠন ছাড়াই লোড করা যেতে পারে অভিধানগুলি (বা প্রোগ্রামের অভিধান, যেমন কোনও এসেম্বলার বা দোভাষীর অপকডস)। - -[] [এমআইটি এভিএল গাছ / এভিএল সাজান (ভিডিও)] (https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - -[] [এভিএল ট্রি (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Qq5E0/avl-trees) - -[] [এভিএল ট্রি বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-বাস্তবায়ন) - -[] [স্প্লিট এবং মার্জ করুন] (https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-विसর) + - [এমআইটি এভিএল গাছ / এভিএল সাজান (ভিডিও)] (https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [এভিএল ট্রি (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Qq5E0/avl-trees) + - [এভিএল ট্রি বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-বাস্তবায়ন) + - [স্প্লিট এবং মার্জ করুন] (https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-विसর) - -[] ** গাছ স্প্লে ** + - ** গাছ স্প্লে ** -প্রস্তুতিতে: স্প্লে গাছগুলি সাধারণত ক্যাশে, মেমরি বরাদ্দকারী, রাউটার, আবর্জনা সংগ্রহকারী, উইন্ডোজ এনটি-তে (ভার্চুয়াল মেমরির মধ্যে, ডেটা সংক্ষেপণ, দড়ি (দীর্ঘ পাঠ্য স্ট্রিংয়ের জন্য ব্যবহৃত স্ট্রিংয়ের প্রতিস্থাপন)) নেটওয়ার্কিং এবং ফাইল সিস্টেম কোড) ইত্যাদি - -[] [সিএস 61 বি: স্প্লে ট্রি (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - -[] এমআইটি বক্তৃতা: স্প্লে ট্রি: + - [সিএস 61 বি: স্প্লে ট্রি (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - এমআইটি বক্তৃতা: স্প্লে ট্রি: -খুব ম্যাথী পেয়েছে তবে নিশ্চিত হয়ে 10 মিনিট দেখুন। -[ভিডিও] (https://www.youtube.com/watch?v=QnPl_Y6EqMo) - -[] ** লাল / কালো গাছ ** + - ** লাল / কালো গাছ ** -এটি একটি 2-3 গাছের অনুবাদ (নীচে দেখুন) -প্রস্তুতিতে: লাল – কালো গাছগুলি সন্নিবেশের সময়, মোছার সময় এবং অনুসন্ধানের সময়ের জন্য সবচেয়ে খারাপ গ্যারান্টি সরবরাহ করে। @@ -1804,48 +1814,48 @@ বর্তমান লিনাক্স কার্নেলগুলিতে ব্যবহৃত সম্পূর্ণ ফেয়ার সিডিউলার লাল-কালো গাছ ব্যবহার করে। জাভার 8 সংস্করণে, সংগ্রহের হ্যাশম্যাপটি এমনভাবে সংশোধন করা হয়েছে যে দুর্বলদের সাথে অভিন্ন উপাদানগুলি সংরক্ষণ করতে লিংকডলিস্ট ব্যবহার না করে হ্যাশকোডস, একটি লাল-কালো গাছ ব্যবহৃত হয়। - -[] [আদুনি-অ্যালগরিদম-লেকচার 4 (সূচনার পয়েন্টে লিংক লাফ করুন) (ভিডিও)] (https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - -[] [আদুনি-অ্যালগরিদম-লেকচার 5 (ভিডিও)] (https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - -[] [লাল-কালো বৃক্ষ] (https://en.wikedia.org/wiki/Red%E2%80%93 ব্ল্যাক_ট্রি) - -[] [বাইনারি অনুসন্ধান এবং লাল কালো গাছের পরিচিতি] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/an-intr Produc-to-binary-search-and-red-black-trees /) + - [আদুনি-অ্যালগরিদম-লেকচার 4 (সূচনার পয়েন্টে লিংক লাফ করুন) (ভিডিও)] (https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [আদুনি-অ্যালগরিদম-লেকচার 5 (ভিডিও)] (https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [লাল-কালো বৃক্ষ] (https://en.wikedia.org/wiki/Red%E2%80%93 ব্ল্যাক_ট্রি) + - [বাইনারি অনুসন্ধান এবং লাল কালো গাছের পরিচিতি] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/an-intr Produc-to-binary-search-and-red-black-trees /) - -[] ** ২-৩ টি অনুসন্ধান গাছ ** + - ** ২-৩ টি অনুসন্ধান গাছ ** -প্রস্তুতিতে: ধীরে ধীরে অনুসন্ধানের ব্যয়ে 2-3 টি গাছে দ্রুত সন্নিবেশ থাকে (যেহেতু এভিএল গাছের তুলনায় উচ্চতা বেশি)। -আপনি খুব সহজেই 2-3 গাছ ব্যবহার করবেন কারণ এর প্রয়োগে নোডের বিভিন্ন ধরণের জড়িত। পরিবর্তে লোকে লোহিত কালো গাছ ব্যবহার করে। - -[] [২৩-গাছের অন্তর্দৃষ্টি এবং সংজ্ঞা (ভিডিও)] (https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - -[] [২৩-গাছের দ্বিখণ্ডিত ভিউ] (https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - -[] [২-৩ টি গাছ (ছাত্র আবৃত্তি) (ভিডিও)] (https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [২৩-গাছের অন্তর্দৃষ্টি এবং সংজ্ঞা (ভিডিও)] (https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [২৩-গাছের দ্বিখণ্ডিত ভিউ] (https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [২-৩ টি গাছ (ছাত্র আবৃত্তি) (ভিডিও)] (https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -[] ** ২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ) ** + - ** ২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ) ** -প্রস্তুতিতে: প্রতি 2-4 টি গাছের জন্য, একই ক্রমে ডেটা উপাদানগুলির সাথে সম্পর্কিত লাল – কালো গাছ রয়েছে। সন্নিবেশ এবং মোছা 2-4 টি গাছের ক্রিয়াকলাপগুলি রঙ-ফ্লিপিং এবং লাল-কালো গাছে ঘূর্ণনের সমতুল্য। এটি 2-4 গাছ একটি করে লাল-কালো গাছগুলির পিছনে যুক্তি বোঝার জন্য গুরুত্বপূর্ণ সরঞ্জাম এবং এ কারণেই অনেক সূচনা অ্যালগরিদম পাঠগুলি প্রবর্তন করে লাল-কালো গাছের ঠিক আগে 2-4 টি গাছ, যদিও ** 2-4 টি গাছ সাধারণত অনুশীলনে ব্যবহৃত হয় না **। - -[] [সিএস 61 বি লেকচার 26: ভারসাম্যযুক্ত অনুসন্ধান গাছ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - -[] [নীচে 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - -[] [শীর্ষস্থানীয় 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [সিএস 61 বি লেকচার 26: ভারসাম্যযুক্ত অনুসন্ধান গাছ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [নীচে 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [শীর্ষস্থানীয় 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - -[] ** এন-অ্যারি (কে-আরি, এম-আরি) গাছগুলি ** + - ** এন-অ্যারি (কে-আরি, এম-আরি) গাছগুলি ** -দ্রষ্টব্য: এন বা কে শাখা প্রশাখার উপাদান (সর্বাধিক শাখা) -বাইনারি গাছগুলি একটি 2-অ্যারি গাছ, যার শাখা ফ্যাক্টর = 2 থাকে -2-3 গাছ 3-ary হয় - -[] [কে-আর্য গাছ] (https://en.wikedia.org/wiki/K-ary_tree) + - [কে-আর্য গাছ] (https://en.wikedia.org/wiki/K-ary_tree) - -[] ** বি-ট্রিস ** + - ** বি-ট্রিস ** -মজার ঘটনা: এটি একটি রহস্য, তবে বি বোয়িং, ভারসাম্যহীন বা বায়ারের পক্ষে (সহ-উদ্ভাবক) দাঁড়াতে পারে -প্রস্তুতিতে: বি-ট্রিগুলি ডেটাবেজে ব্যাপকভাবে ব্যবহৃত হয়। বেশিরভাগ আধুনিক ফাইল সিস্টেমগুলি বি-ট্রি (বা ভেরিয়েন্ট) ব্যবহার করে। এ ছাড়াও ডাটাবেসগুলিতে এর ব্যবহার, বি-ট্রি ফাইল সিস্টেমে একটি স্বতন্ত্রভাবে দ্রুত এলোমেলো অ্যাক্সেসের জন্য ব্যবহৃত হয় allow একটি নির্দিষ্ট ফাইল ব্লক। মূল সমস্যাটি হ'ল ফাইল ব্লক আই ঠিকানাটিকে ডিস্ক ব্লকে পরিণত করে into (বা সম্ভবত একটি সিলিন্ডার-মাথা-সেক্টর) ঠিকানা। - -[] [বি-ট্রি] (https://en.wikedia.org/wiki/B-tree) - -[] [বি-ট্রি ডেটাস্ট্রাকচার] (http://btechsmartclass.com/data_structures/b-trees.html) - -[] [বি-ট্রিগুলির পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=I22wEC1tToGO&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - -[] [বি-ট্রি সংজ্ঞা এবং সন্নিবেশ (ভিডিও)] (https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - -[] [বি-ট্রি মুছে ফেলা (ভিডিও)] (https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - -[] [এমআইটি 85.৮৫১-মেমরি হায়ারার্কি মডেলগুলি (ভিডিও)] (https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [বি-ট্রি] (https://en.wikedia.org/wiki/B-tree) + - [বি-ট্রি ডেটাস্ট্রাকচার] (http://btechsmartclass.com/data_structures/b-trees.html) + - [বি-ট্রিগুলির পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=I22wEC1tToGO&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [বি-ট্রি সংজ্ঞা এবং সন্নিবেশ (ভিডিও)] (https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [বি-ট্রি মুছে ফেলা (ভিডিও)] (https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [এমআইটি 85.৮৫১-মেমরি হায়ারার্কি মডেলগুলি (ভিডিও)] (https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -ক্যাশে-বিস্মৃত বি-গাছগুলি কভার করে, খুব আকর্ষণীয় ডেটা স্ট্রাকচার -প্রথম 37 মিনিট খুব প্রযুক্তিগত, এড়িয়ে যেতে পারে (বি ব্লকের আকার, ক্যাশে লাইনের আকার) @@ -1853,57 +1863,57 @@ -###কেডি গাছ -একটি আয়তক্ষেত্র বা উচ্চ মাত্রার অবজেক্টে পয়েন্ট সংখ্যা সন্ধানের জন্য দুর্দান্ত -কে-নিকটতম প্রতিবেশীদের জন্য ভাল ফিট - -[] [কেডি ট্রিস (ভিডিও)] (https://www.youtube.com/watch?v=W94M9D_yXKk) - -[] [কেএনএন কেডি ট্রি অ্যালগোরিদম (ভিডিও)] (https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [কেডি ট্রিস (ভিডিও)] (https://www.youtube.com/watch?v=W94M9D_yXKk) + - [কেএনএন কেডি ট্রি অ্যালগোরিদম (ভিডিও)] (https://www.youtube.com/watch?v=Y4ZgLlDfKDg) -###তালিকা বাদ দিন -"এগুলি কিছুটা কাল্ট ডেটা কাঠামো"-স্কিয়েনা - -[] [র্যান্ডমাইজেশন: তালিকাগুলি বাদ দিন (ভিডিও)] (https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -[] [অ্যানিমেশন এবং আরও বিশদ জন্য] (https://en.wikedia.org/wiki/Skip_list) + - [র্যান্ডমাইজেশন: তালিকাগুলি বাদ দিন (ভিডিও)] (https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [অ্যানিমেশন এবং আরও বিশদ জন্য] (https://en.wikedia.org/wiki/Skip_list) -###নেটওয়ার্ক প্রবাহ - -[] [5 মিনিটে ফোর্ড-ফুলকারসন-ধাপে ধাপে উদাহরণ (ভিডিও)] (https://www.youtube.com/watch?v=Tl90tNtKvxs) - -[] [ফোর্ড-ফুলকারসন অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=v1VgJmkEJW0) - -[] [নেটওয়ার্ক প্রবাহ (ভিডিও)] (https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [5 মিনিটে ফোর্ড-ফুলকারসন-ধাপে ধাপে উদাহরণ (ভিডিও)] (https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [ফোর্ড-ফুলকারসন অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [নেটওয়ার্ক প্রবাহ (ভিডিও)] (https://www.youtube.com/watch?v=2vhN4Ice5jI) -###অসম্পূর্ণ সেট ও ইউনিয়ন অনুসন্ধান করুন - -[] [ইউসিবি 61 বি-বিচ্ছিন্ন সেটগুলি; বাছাই ও নির্বাচন (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - -[] [সেডজউইক অ্যালগরিদম-ইউনিয়ন-সন্ধান (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [ইউসিবি 61 বি-বিচ্ছিন্ন সেটগুলি; বাছাই ও নির্বাচন (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [সেডজউইক অ্যালগরিদম-ইউনিয়ন-সন্ধান (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/1) -###দ্রুত প্রক্রিয়াজাতকরণের জন্য গণিত - -[] [পূর্ণসংখ্যার গাণিতিক, করাতসুবা গুণ (ভিডিও)] (https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] [চীনা রেমেন্ডার উপপাদ্য (ক্রিপ্টোগ্রাফিতে ব্যবহৃত) (ভিডিও)] (https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [পূর্ণসংখ্যার গাণিতিক, করাতসুবা গুণ (ভিডিও)] (https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [চীনা রেমেন্ডার উপপাদ্য (ক্রিপ্টোগ্রাফিতে ব্যবহৃত) (ভিডিও)] (https://www.youtube.com/watch?v=ru7mWZJlRQg) -###ট্রেপ -একটি বাইনারি অনুসন্ধান গাছ এবং একটি গাদা সংমিশ্রণ - -[] [ট্রেপ] (https://en.wikedia.org/wiki/Treap) - -[] [ডেটা স্ট্রাকচার: ট্র্যাপগুলি ব্যাখ্যা করা হয়েছে (ভিডিও)] (https://www.youtube.com/watch?v=6podLUYinH8) - -[] [সেট অপারেশনে অ্যাপ্লিকেশন] (https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [ট্রেপ] (https://en.wikedia.org/wiki/Treap) + - [ডেটা স্ট্রাকচার: ট্র্যাপগুলি ব্যাখ্যা করা হয়েছে (ভিডিও)] (https://www.youtube.com/watch?v=6podLUYinH8) + - [সেট অপারেশনে অ্যাপ্লিকেশন] (https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -###লিনিয়ার প্রোগ্রামিং (ভিডিও) - -[] [লিনিয়ার প্রোগ্রামিং] (https://www.youtube.com/watch?v=M4K6HYLHREQ) - -[] [সর্বনিম্ন ব্যয় সন্ধান করা] (https://www.youtube.com/watch?v=2ACJ9ewUC6U) - -[] [সর্বাধিক মান সন্ধান করা] (https://www.youtube.com/watch?v=8AA_81xI3ik) - -[] [পাইথনের সাথে লিনিয়ার সমীকরণগুলি সমাধান করুন-সিম্প্লেক্স অ্যালগরিদম] (https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [লিনিয়ার প্রোগ্রামিং] (https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [সর্বনিম্ন ব্যয় সন্ধান করা] (https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [সর্বাধিক মান সন্ধান করা] (https://www.youtube.com/watch?v=8AA_81xI3ik) + - [পাইথনের সাথে লিনিয়ার সমীকরণগুলি সমাধান করুন-সিম্প্লেক্স অ্যালগরিদম] (https://www.youtube.com/watch?v=44pAWI7v5Zk) -###জ্যামিতি, উত্তল হাল (ভিডিও) - -[] [গ্রাফ আলগ চতুর্থ: জ্যামিতিক অ্যালগোরিদমগুলিতে পরিচিতি-বক্তৃতা 9] (https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - -[] [জ্যামিতিক অ্যালগোরিদম: গ্রাহাম এবং জার্ভিস-প্রবন্ধ 10] (https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - -[] [ভাগ করুন এবং জয়লাভ করুন: উত্তল হাল, মিডিয়ান ফাইন্ডিং] (https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [গ্রাফ আলগ চতুর্থ: জ্যামিতিক অ্যালগোরিদমগুলিতে পরিচিতি-বক্তৃতা 9] (https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [জ্যামিতিক অ্যালগোরিদম: গ্রাহাম এবং জার্ভিস-প্রবন্ধ 10] (https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ভাগ করুন এবং জয়লাভ করুন: উত্তল হাল, মিডিয়ান ফাইন্ডিং] (https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -###স্বতন্ত্র গণিত -নীচে ভিডিও দেখুন -###মেশিন লার্নিং - -[] কেন এমএল? - -[] [গুগল নিজেকে মেশিন লার্নিং ফার্স্ট সংস্থা হিসাবে নিজেকে কীভাবে স্মরণ করছে] (https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - -[] [ইন্টেলিজেন্ট কম্পিউটার সিস্টেমের জন্য বৃহত্তর স্কেল গভীর শিক্ষা (ভিডিও)] (https://www.youtube.com/watch?v=QSaZGT4-6EY) - -[] [পিটার নরভিগের দ্বারা ডিপ লার্নিং অ্যান্ড বোধগম্যতা বনাম সফটওয়্যার ইঞ্জিনিয়ারিং এবং যাচাইকরণ] (https://www.youtube.com/watch?v=X769cyzBNVw) - -[] [গুগলের ক্লাউড মেশিন শেখার সরঞ্জামগুলি (ভিডিও)] (https://www.youtube.com/watch?v=Ja2hxBAwG_0) - -[] [গুগল বিকাশকারীদের মেশিন লার্নিং রেসিপি (সাইকিট শিখুন এবং টেনস্রোফ্লো) (ভিডিও)] (https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - -[] [টেনসরফ্লো (ভিডিও)] (https://www.youtube.com/watch?v=oZikw5k_2FM) - -[] [টেনসরফ্লো টিউটোরিয়াল] (https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - -[] [পাইথনে নিউরাল নেটওয়ার্ক বাস্তবায়নের ব্যবহারিক গাইড (থিওনো ব্যবহার করে)] (http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - কেন এমএল? + - [গুগল নিজেকে মেশিন লার্নিং ফার্স্ট সংস্থা হিসাবে নিজেকে কীভাবে স্মরণ করছে] (https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [ইন্টেলিজেন্ট কম্পিউটার সিস্টেমের জন্য বৃহত্তর স্কেল গভীর শিক্ষা (ভিডিও)] (https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [পিটার নরভিগের দ্বারা ডিপ লার্নিং অ্যান্ড বোধগম্যতা বনাম সফটওয়্যার ইঞ্জিনিয়ারিং এবং যাচাইকরণ] (https://www.youtube.com/watch?v=X769cyzBNVw) + - [গুগলের ক্লাউড মেশিন শেখার সরঞ্জামগুলি (ভিডিও)] (https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [গুগল বিকাশকারীদের মেশিন লার্নিং রেসিপি (সাইকিট শিখুন এবং টেনস্রোফ্লো) (ভিডিও)] (https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [টেনসরফ্লো (ভিডিও)] (https://www.youtube.com/watch?v=oZikw5k_2FM) + - [টেনসরফ্লো টিউটোরিয়াল] (https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [পাইথনে নিউরাল নেটওয়ার্ক বাস্তবায়নের ব্যবহারিক গাইড (থিওনো ব্যবহার করে)] (http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) -কোর্স: -[দুর্দান্ত স্টার্টার কোর্স: মেশিন লার্নিং] (https://www.coursera.org/learn/machine-learning) -[কেবলমাত্র ভিডিও] (https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) @@ -1934,69 +1944,69 @@ উপরে কারণ এটি ঠিক অনেক বেশি। কোনও বিষয়ে এটি অতিরিক্ত পরিমাণে নেওয়া সহজ। আপনি এই শতাব্দীতে ভাড়া পেতে চান, তাই না? --[] ** ইউনিয়ন-সন্ধান করুন ** - -[] [ওভারভিউ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / জেএসএসওয়াই / ওভারভিউ) - -[] [নিষ্পাপ বাস্তবায়ন] (https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-আইনীকরণ) - -[] [গাছগুলি] (https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - -[] [র‌্যাঙ্ক অনুসারে ইউনিয়ন] (https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - -[] [পথ সংক্ষেপণ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Q9CVI/path-compression) - -[] [বিশ্লেষণ বিকল্পসমূহ) (https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - --[] ** আরও ডায়নামিক প্রোগ্রামিং ** (ভিডিও) - -[] 6..০০০০: ডায়নামিক প্রোগ্রামিং আই: ফিবোনাচি, সবচেয়ে ছোট পাথ] (https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - -[] 6..০০০০: ডায়নামিক প্রোগ্রামিং II: পাঠ্য সমর্থন, ব্ল্যাকজ্যাক] (https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - -[] 6..০০০০: ডিপি তৃতীয়: প্যারেন্টেসাইজেশন, দূরত্ব সম্পাদনা, ন্যাপস্যাক] (https://www.youtube.com/watch?v=ocZMDMZWCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - -[] 6..০০০০: ডিপি চতুর্থ: গিটার ফিঙ্গারিং, টেট্রিস, সুপার মারিও ব্রোস।] (https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - -[] 6.০4646: ডায়নামিক প্রোগ্রামিং ও অ্যাডভান্সড ডিপি] (https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -[] [.0.০4646: ডায়নামিক প্রোগ্রামিং: সর্ব-সংক্ষিপ্ততম পথ] [https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - -[] 6.০4646: ডায়নামিক প্রোগ্রামিং (শিক্ষার্থী আবৃত্তি)] (https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - --[] ** উন্নত গ্রাফ প্রসেসিং ** (ভিডিও) - -[] [সিঙ্ক্রোনাস বিতরণ করা অ্যালগরিদম: প্রতিসাম্যতা-ব্রেকিং। সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - -[] [অ্যাসিনক্রোনাস বিতরণ করা অ্যালগরিদম: সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - --[] এমআইটি ** সম্ভাবনা ** (ম্যাথি, এবং ধীরে ধীরে যান, যা ম্যাথিক জিনিসগুলির পক্ষে ভাল) (ভিডিও): - -[] [এমআইটি 6.042 জ-সম্ভাবনার পরিচিতি] (https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জে-শর্তাধীন সম্ভাবনা] (https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জ-স্বাধীনতা] (https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জে-র্যান্ডম ভেরিয়েবলস] (https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - -[] [এমআইটি 6.042 জ-প্রত্যাশা আই] (https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জ-প্রত্যাশা II] (https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জে-বড় বিচ্যুতি] (https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - -[] [এমআইটি 6.042 জে-র্যান্ডম ওয়াকস] (https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - --[] [সিমসন: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - --[] ** স্ট্রিং ম্যাচিং ** - -[] রবিন-কার্প (ভিডিও): +- ** ইউনিয়ন-সন্ধান করুন ** + - [ওভারভিউ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / জেএসএসওয়াই / ওভারভিউ) + - [নিষ্পাপ বাস্তবায়ন] (https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-আইনীকরণ) + - [গাছগুলি] (https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [র‌্যাঙ্ক অনুসারে ইউনিয়ন] (https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [পথ সংক্ষেপণ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Q9CVI/path-compression) + - [বিশ্লেষণ বিকল্পসমূহ) (https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- ** আরও ডায়নামিক প্রোগ্রামিং ** (ভিডিও) + - 6..০০০০: ডায়নামিক প্রোগ্রামিং আই: ফিবোনাচি, সবচেয়ে ছোট পাথ] (https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - 6..০০০০: ডায়নামিক প্রোগ্রামিং II: পাঠ্য সমর্থন, ব্ল্যাকজ্যাক] (https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - 6..০০০০: ডিপি তৃতীয়: প্যারেন্টেসাইজেশন, দূরত্ব সম্পাদনা, ন্যাপস্যাক] (https://www.youtube.com/watch?v=ocZMDMZWCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - 6..০০০০: ডিপি চতুর্থ: গিটার ফিঙ্গারিং, টেট্রিস, সুপার মারিও ব্রোস।] (https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - 6.০4646: ডায়নামিক প্রোগ্রামিং ও অ্যাডভান্সড ডিপি] (https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [.0.০4646: ডায়নামিক প্রোগ্রামিং: সর্ব-সংক্ষিপ্ততম পথ] [https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - 6.০4646: ডায়নামিক প্রোগ্রামিং (শিক্ষার্থী আবৃত্তি)] (https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- ** উন্নত গ্রাফ প্রসেসিং ** (ভিডিও) + - [সিঙ্ক্রোনাস বিতরণ করা অ্যালগরিদম: প্রতিসাম্যতা-ব্রেকিং। সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [অ্যাসিনক্রোনাস বিতরণ করা অ্যালগরিদম: সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- এমআইটি ** সম্ভাবনা ** (ম্যাথি, এবং ধীরে ধীরে যান, যা ম্যাথিক জিনিসগুলির পক্ষে ভাল) (ভিডিও): + - [এমআইটি 6.042 জ-সম্ভাবনার পরিচিতি] (https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জে-শর্তাধীন সম্ভাবনা] (https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জ-স্বাধীনতা] (https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জে-র্যান্ডম ভেরিয়েবলস] (https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [এমআইটি 6.042 জ-প্রত্যাশা আই] (https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জ-প্রত্যাশা II] (https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জে-বড় বিচ্যুতি] (https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [এমআইটি 6.042 জে-র্যান্ডম ওয়াকস] (https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [সিমসন: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- ** স্ট্রিং ম্যাচিং ** + - রবিন-কার্প (ভিডিও): -[রবিন কার্পস অ্যালগরিদম] (https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) -[প্রিকম্পুটিং] (https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) -[অপ্টিমাইজেশন: বাস্তবায়ন এবং বিশ্লেষণ] (https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-বাস্তবায়ন-এবং-বিশ্লেষণ) -[টেবিল ডাবলিং, কার্প-রবিন] (https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) -[রোলিং হ্যাশস, ইমোর্টাইজড বিশ্লেষণ] (https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - -[] নুথ-মরিস-প্র্যাট (কেএমপি): + - নুথ-মরিস-প্র্যাট (কেএমপি): -[টিউথ-মরিস-প্র্যাট (কেএমপি) স্ট্রিং ম্যাচিং অ্যালগরিদম] (https://www.youtube.com/watch?v=5i7oKodCRJo) - -[] বায়ার – মুর স্ট্রিং অনুসন্ধানের অ্যালগরিদম + - বায়ার – মুর স্ট্রিং অনুসন্ধানের অ্যালগরিদম -[বয়ূর-মুর স্ট্রিং অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/Boyer%E2%80%93 মুর_স্ট্রিং_সার্চ_ালগোরিদম) -[অ্যাডভান্সড স্ট্রিং বয়েয়ার-মুর-হর্সপুল অ্যালগরিদমস (ভিডিও) অনুসন্ধান করছে] [https://www.youtube.com/watch?v=QDZpzctPf10) - -[] [কোর্সেরা: স্ট্রিংগুলিতে অ্যালগরিদম] (https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - [কোর্সেরা: স্ট্রিংগুলিতে অ্যালগরিদম] (https://www.coursera.org/learn/algorithms-on-strings/home/week/1) -দুর্দান্ত শুরু হয় তবে কেএমপি কেটে যাওয়ার সময় এটি যতটা প্রয়োজন তত বেশি জটিল হয়ে যায় -চেষ্টা সুন্দর ব্যাখ্যা -এড়িয়ে যেতে পারে -[ ] **শ্রেণীবিভাজন** - -[] স্ট্যানফোর্ড বাছাই সম্পর্কিত বক্তৃতা: - -[] [বক্তৃতা 15 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - -[] [বক্তৃতা 16 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - -[] শাই সায়মনসন, [অ্যাডুনি.আর।] (Http://www.aduni.org/): - -[] [অ্যালগরিদম-বাছাই-লেকচার 2 (ভিডিও)] (https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - -[] [অ্যালগরিদম-দ্বিতীয়টি বাছাই-লেকচার 3 (ভিডিও)] (https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - -[[] স্টিভেন স্কিয়েনা বাছাই সম্পর্কিত বক্তৃতা: - -[] [বক্তৃতা 26:46 এ শুরু হয় (ভিডিও)] (https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - -[] [বক্তৃতা 27:40 এ শুরু হয় (ভিডিও)] (https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [বক্তৃতা শুরু হয় ৩৫:০০ এ (ভিডিও)] (https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[] [বক্তৃতা 23:50 (ভিডিও) এ শুরু হচ্ছে] (https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - স্ট্যানফোর্ড বাছাই সম্পর্কিত বক্তৃতা: + - [বক্তৃতা 15 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [বক্তৃতা 16 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - শাই সায়মনসন, [অ্যাডুনি.আর।] (Http://www.aduni.org/): + - [অ্যালগরিদম-বাছাই-লেকচার 2 (ভিডিও)] (https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [অ্যালগরিদম-দ্বিতীয়টি বাছাই-লেকচার 3 (ভিডিও)] (https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + -[ স্টিভেন স্কিয়েনা বাছাই সম্পর্কিত বক্তৃতা: + - [বক্তৃতা 26:46 এ শুরু হয় (ভিডিও)] (https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [বক্তৃতা 27:40 এ শুরু হয় (ভিডিও)] (https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [বক্তৃতা শুরু হয় ৩৫:০০ এ (ভিডিও)] (https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [বক্তৃতা 23:50 (ভিডিও) এ শুরু হচ্ছে] (https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) @@ -2007,65 +2017,65 @@
<সুমারী> ভিডিও সিরিজ
--[] [স্বতন্ত্র ডায়নামিক প্রোগ্রামিং সমস্যার তালিকা (প্রত্যেকটি সংক্ষিপ্ত)] (https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [স্বতন্ত্র ডায়নামিক প্রোগ্রামিং সমস্যার তালিকা (প্রত্যেকটি সংক্ষিপ্ত)] (https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) --[] [x86 আর্কিটেকচার, সমাবেশ, অ্যাপ্লিকেশনগুলি (১১ টি ভিডিও)] (https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 আর্কিটেকচার, সমাবেশ, অ্যাপ্লিকেশনগুলি (১১ টি ভিডিও)] (https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) --[] [এমআইটি 18.06 লিনিয়ার বীজগণিত, বসন্ত 2005 (35 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [এমআইটি 18.06 লিনিয়ার বীজগণিত, বসন্ত 2005 (35 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) --[] [দুর্দান্ত-এমআইটি ক্যালকুলাস পুনর্বিবেচনা: একক চলক ক্যালকুলাস] (https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [দুর্দান্ত-এমআইটি ক্যালকুলাস পুনর্বিবেচনা: একক চলক ক্যালকুলাস] (https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) --[] [কম্পিউটার বিজ্ঞান 70, 001-বসন্ত 2015-বিচ্ছিন্ন গণিত এবং সম্ভাবনা তত্ত্ব] (http://www.infocobuild.com/education/audio-video-courses/computer-sज्ञान/cs70-spring2015-berkeley.html) +- [কম্পিউটার বিজ্ঞান 70, 001-বসন্ত 2015-বিচ্ছিন্ন গণিত এবং সম্ভাবনা তত্ত্ব] (http://www.infocobuild.com/education/audio-video-courses/computer-sज्ञान/cs70-spring2015-berkeley.html) --[] [শায়ে সাইমনসন দ্বারা পৃথক গণিত (19 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) +- [শায়ে সাইমনসন দ্বারা পৃথক গণিত (19 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) --[] [সারদা হার্কের স্বতন্ত্র গণিতের প্রথম ভাগ (৫ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [সারদা হার্কের স্বতন্ত্র গণিতের প্রথম ভাগ (৫ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) --[] সিএসই 373-অ্যালগরিদমের বিশ্লেষণ (25 টি ভিডিও) +- সিএসই 373-অ্যালগরিদমের বিশ্লেষণ (25 টি ভিডিও) -[আলগোরিদম ডিজাইন ম্যানুয়াল থেকে স্কিয়েনা বক্তৃতা] (https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) --[] [ইউসি বার্কলে 61 বি (স্প্রিং 2014): ডেটা স্ট্রাকচার (25 টি ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [ইউসি বার্কলে 61 বি (স্প্রিং 2014): ডেটা স্ট্রাকচার (25 টি ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) --[] [ইউসি বার্কলে B১ বি (পতন 2006): ডেটা স্ট্রাকচার (39 ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [ইউসি বার্কলে B১ বি (পতন 2006): ডেটা স্ট্রাকচার (39 ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) --[] [ইউসি বার্কলে 61 সি: মেশিন স্ট্রাকচারস (26 টি ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [ইউসি বার্কলে 61 সি: মেশিন স্ট্রাকচারস (26 টি ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) --[] ওওএসই: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- ওওএসই: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) --[] U [ইউসি বার্কলে সিএস 152: কম্পিউটার আর্কিটেকচার অ্যান্ড ইঞ্জিনিয়ারিং (20 টি ভিডিও)] (https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXW-2Fuo32qr) ~~ +- U [ইউসি বার্কলে সিএস 152: কম্পিউটার আর্কিটেকচার অ্যান্ড ইঞ্জিনিয়ারিং (20 টি ভিডিও)] (https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXW-2Fuo32qr) ~~ --[] [এমআইটি 00.০০০০: গণনা কাঠামো (৪৯ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [এমআইটি 00.০০০০: গণনা কাঠামো (৪৯ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) --[] [কার্নেগি মেলন-কম্পিউটার আর্কিটেকচার লেকচার (39 টি ভিডিও)] (https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [কার্নেগি মেলন-কম্পিউটার আর্কিটেকচার লেকচার (39 টি ভিডিও)] (https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) --[] [এমআইটি 00.০০০০: অ্যালগরিদমগুলিতে পরিচয় (৪ videos টি ভিডিও)] (https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [এমআইটি 00.০০০০: অ্যালগরিদমগুলিতে পরিচয় (৪ videos টি ভিডিও)] (https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) --[] [এমআইটি .0.০৩৩৩: কম্পিউটার সিস্টেম ইঞ্জিনিয়ারিং (২২ টি ভিডিও)] (https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [এমআইটি .0.০৩৩৩: কম্পিউটার সিস্টেম ইঞ্জিনিয়ারিং (২২ টি ভিডিও)] (https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) --[] [এমআইটি 6.034 কৃত্রিম বুদ্ধিমত্তা, পতন 2010 (30 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [এমআইটি 6.034 কৃত্রিম বুদ্ধিমত্তা, পতন 2010 (30 টি ভিডিও)] (https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) --[] [এমআইটি 6.042 জ: কম্পিউটার বিজ্ঞানের জন্য গণিত, পতন 2010 (25 টি ভিডিও)] (https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [এমআইটি 6.042 জ: কম্পিউটার বিজ্ঞানের জন্য গণিত, পতন 2010 (25 টি ভিডিও)] (https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) --[] [এমআইটি .0.০4646: অ্যালগরিদমের নকশা ও বিশ্লেষণ (৩৪ টি ভিডিও)] (https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [এমআইটি .0.০4646: অ্যালগরিদমের নকশা ও বিশ্লেষণ (৩৪ টি ভিডিও)] (https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) --[] [এমআইটি 6.050J: তথ্য ও এন্ট্রপি, স্প্রিং 2008 (19 টি ভিডিও)] (https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [এমআইটি 6.050J: তথ্য ও এন্ট্রপি, স্প্রিং 2008 (19 টি ভিডিও)] (https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) --[] [এমআইটি 85.৮৮১: উন্নত ডেটা স্ট্রাকচার (২২ টি ভিডিও)] (https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [এমআইটি 85.৮৮১: উন্নত ডেটা স্ট্রাকচার (২২ টি ভিডিও)] (https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) --[] [এমআইটি 6.854: অ্যাডভান্সড অ্যালগরিদম, স্প্রিং 2016 (24 ভিডিও)] (https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [এমআইটি 6.854: অ্যাডভান্সড অ্যালগরিদম, স্প্রিং 2016 (24 ভিডিও)] (https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) --[] [হার্ভার্ড COMPSCI 224: উন্নত অ্যালগরিদম (25 টি ভিডিও)] (https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [হার্ভার্ড COMPSCI 224: উন্নত অ্যালগরিদম (25 টি ভিডিও)] (https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) --[] [এমআইটি 6.858 কম্পিউটার সিস্টেমস সুরক্ষা, পতন 2014] (https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [এমআইটি 6.858 কম্পিউটার সিস্টেমস সুরক্ষা, পতন 2014] (https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) --[] [স্ট্যানফোর্ড: প্রোগ্রামিং প্যারাডিজমস (২ videos টি ভিডিও)] (https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [স্ট্যানফোর্ড: প্রোগ্রামিং প্যারাডিজমস (২ videos টি ভিডিও)] (https://www.youtube.com/playlist?list=PL9D558D49CA734A02) --[] [ক্রিস্টোফ পার দ্বারা ক্রিপ্টোগ্রাফির পরিচিতি] (https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) +- [ক্রিস্টোফ পার দ্বারা ক্রিপ্টোগ্রাফির পরিচিতি] (https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) -[স্লাইডস এবং সমস্যা সেটের পাশাপাশি কোর্স ওয়েবসাইট] (http://www.crypto-textbook.com/) --[] [মাইনিং ম্যাসিভ ডেটাসেটস-স্ট্যানফোর্ড বিশ্ববিদ্যালয় (৯৯ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [মাইনিং ম্যাসিভ ডেটাসেটস-স্ট্যানফোর্ড বিশ্ববিদ্যালয় (৯৯ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) --[] [সারদা হার্কের গ্রাফ থিওরি (videos 67 টি ভিডিও)] (https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [সারদা হার্কের গ্রাফ থিওরি (videos 67 টি ভিডিও)] (https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) @@ -2080,34 +2090,34 @@ পেপারস -[ক্লাসিক কাগজগুলি ভালবাসেন?] (Https://www.cs.cmu.edu/~crary/819-f09/) --[] [1978: সিক্যুয়ালাল প্রক্রিয়াগুলি যোগাযোগ করে] (http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) +- [1978: সিক্যুয়ালাল প্রক্রিয়াগুলি যোগাযোগ করে] (http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) -[গো প্রয়োগ করা হয়েছে] (https://godoc.org/github.com/thomas11/csp) --[] [2003: গুগল ফাইল সিস্টেম] (http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) +- [2003: গুগল ফাইল সিস্টেম] (http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) -2012 সালে কলসাস দ্বারা প্রতিস্থাপিত --[] [২০০৪: ম্যাপ্রেডস: বড় ক্লাস্টারগুলিতে সরলীকৃত ডেটা প্রসেসিং] (http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) +- [২০০৪: ম্যাপ্রেডস: বড় ক্লাস্টারগুলিতে সরলীকৃত ডেটা প্রসেসিং] (http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) -বেশিরভাগ ক্লাউড ডেটাফ্লো দ্বারা প্রতিস্থাপিত হয়? --[] [২০০:: বিগ টেবিল: স্ট্রাকচার্ড ডেটার জন্য বিতরণযোগ্য স্টোরেজ সিস্টেম] (https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [২০০:: বিগ টেবিল: স্ট্রাকচার্ড ডেটার জন্য বিতরণযোগ্য স্টোরেজ সিস্টেম] (https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -[গুগল বিগকুইয়ারির অভ্যন্তরীণ চেহারা] (https://cloud.google.com/files/BigQueryTechnicalWP.pdf) --[] [২০০:: আলগা-কাপল ডিস্ট্রিবিউটেড সিস্টেমগুলির জন্য নিবিড় লক পরিষেবা] (https://research.google.com/archive/chubby-osdi06.pdf) --[] [২০০:: ডায়নামো: অ্যামাজনের সর্বোচ্চ উপলব্ধ কী-মান স্টোর] (http://s3.amazonaws.com/AllThingsDistributes/sosp/amazon-dynamo-sosp2007.pdf) +- [২০০:: আলগা-কাপল ডিস্ট্রিবিউটেড সিস্টেমগুলির জন্য নিবিড় লক পরিষেবা] (https://research.google.com/archive/chubby-osdi06.pdf) +- [২০০:: ডায়নামো: অ্যামাজনের সর্বোচ্চ উপলব্ধ কী-মান স্টোর] (http://s3.amazonaws.com/AllThingsDistributes/sosp/amazon-dynamo-sosp2007.pdf) -ডায়নামো কাগজটি নোএসকিউএল বিপ্লবটিকে সরিয়ে দিয়েছে --[] [২০০:: প্রতিটি প্রোগ্রামার মেমোরি সম্পর্কে যা জানতে হবে (খুব দীর্ঘ, এবং লেখক কিছু বিভাগ বাদ দেওয়া উত্সাহিত করে)] (https://www.akkadia.org/drepper/cpumemory.pdf) --[] [২০১০: ড্যাপার, একটি বৃহত্তর স্কেল বিতরণযোগ্য সিস্টেম ট্র্যাকিংয়ের পরিকাঠামো] (https://research.google.com/pubs/archive/36356.pdf) --[] [২০১০: ড্রিমেল: ওয়েব-স্কেল ডেটাসেটের ইন্টারেক্টিভ বিশ্লেষণ] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) --[] [২০১২: গুগলের কলসাস] (https://www.wired.com/2012/07/google-colossus/) +- [২০০:: প্রতিটি প্রোগ্রামার মেমোরি সম্পর্কে যা জানতে হবে (খুব দীর্ঘ, এবং লেখক কিছু বিভাগ বাদ দেওয়া উত্সাহিত করে)] (https://www.akkadia.org/drepper/cpumemory.pdf) +- [২০১০: ড্যাপার, একটি বৃহত্তর স্কেল বিতরণযোগ্য সিস্টেম ট্র্যাকিংয়ের পরিকাঠামো] (https://research.google.com/pubs/archive/36356.pdf) +- [২০১০: ড্রিমেল: ওয়েব-স্কেল ডেটাসেটের ইন্টারেক্টিভ বিশ্লেষণ] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) +- [২০১২: গুগলের কলসাস] (https://www.wired.com/2012/07/google-colossus/) -কাগজ পাওয়া যায় না --[] 2012: অ্যাড্রেস স্যানিটাইজার: একটি দ্রুত ঠিকানা স্যানিটি পরীক্ষক: +- 2012: অ্যাড্রেস স্যানিটাইজার: একটি দ্রুত ঠিকানা স্যানিটি পরীক্ষক: -[কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) -[ভিডিও] (https://www.usenix.org/conferences/atc12/technical-sessions/preferencesation/serebryany) --[] 2013: স্প্যানার: গুগলের বিশ্বব্যাপী বিতরণ ডেটাবেস: +- 2013: স্প্যানার: গুগলের বিশ্বব্যাপী বিতরণ ডেটাবেস: -[কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) -[ভিডিও] (https://www.usenix.org/node/170855) --[] [২০১৪: মেশিন লার্নিং: প্রযুক্তিগত tণের উচ্চ-আগ্রহের ক্রেডিট কার্ড] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) --[] [২০১৫: গুগলে অবিচ্ছিন্ন পাইপলাইন] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) --[] [২০১৫: বৃহত্তর স্কেলে উচ্চ-প্রাপ্যতা: বিজ্ঞাপনগুলির জন্য গুগলের ডেটা অবকাঠামো তৈরি করা] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) --[] [২০১৫: টেনসরফ্লো: বিজাতীয় বিতরণকারী সিস্টেমে বৃহত্তর স্কেল মেশিন লার্নিং] (http://download.tensorflow.org/paper/ whitepaper2015.pdf) --[] [২০১৫: কীভাবে ডেভলপাররা কোড অনুসন্ধান করে: একটি কেস স্টাডি] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) --[] [২০১:: বোর্গ, ওমেগা এবং কুবারনেটস] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) +- [২০১৪: মেশিন লার্নিং: প্রযুক্তিগত tণের উচ্চ-আগ্রহের ক্রেডিট কার্ড] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [২০১৫: গুগলে অবিচ্ছিন্ন পাইপলাইন] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [২০১৫: বৃহত্তর স্কেলে উচ্চ-প্রাপ্যতা: বিজ্ঞাপনগুলির জন্য গুগলের ডেটা অবকাঠামো তৈরি করা] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [২০১৫: টেনসরফ্লো: বিজাতীয় বিতরণকারী সিস্টেমে বৃহত্তর স্কেল মেশিন লার্নিং] (http://download.tensorflow.org/paper/ whitepaper2015.pdf) +- [২০১৫: কীভাবে ডেভলপাররা কোড অনুসন্ধান করে: একটি কেস স্টাডি] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [২০১:: বোর্গ, ওমেগা এবং কুবারনেটস] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) From def475f1bca33d11bac383a72ed577b38cd77c6d Mon Sep 17 00:00:00 2001 From: Michele Ceccacci <75946413+michelececcacci@users.noreply.github.com> Date: Thu, 27 Jan 2022 10:36:17 +0100 Subject: [PATCH 379/857] added leetcode blueprint --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2c9198bed9..d7a1b5bfd9 100644 --- a/README.md +++ b/README.md @@ -714,6 +714,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion From 82e296c73dfae5b30d0f4c17a523faf03f375997 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 2 Feb 2022 08:39:46 -0800 Subject: [PATCH 380/857] Adds link to Persian (Farsi) translation in progress. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3820b35613..d6a37babcc 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) From 58dc02e0ade7a753558798a642128f39f70f661c Mon Sep 17 00:00:00 2001 From: Colin McCormack <80981213+NorthernSantan@users.noreply.github.com> Date: Wed, 9 Feb 2022 15:16:16 -0500 Subject: [PATCH 381/857] update titles --- translations/README-fr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 559994e3ac..b56518b730 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -277,10 +277,10 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo J'aime utiliser les cours universitaires. -## Interview Process & General Interview Prep +## Processus pour l'interview et Préparation -- [ ] Videos: - - [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) +- [ ] Vidéos: + - [ ] [Comment travailler à Google: Prepare pour une interview d'ingenieur (Anglais : Vidéo)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) From 8c38d12dae042cd5a66cd24d25879d1d76f9854b Mon Sep 17 00:00:00 2001 From: Colin McCormack <80981213+NorthernSantan@users.noreply.github.com> Date: Wed, 9 Feb 2022 19:04:32 -0500 Subject: [PATCH 382/857] =?UTF-8?q?update=20Vid=C3=A9os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/README-fr.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index b56518b730..ee394da73d 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -281,16 +281,16 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo - [ ] Vidéos: - [ ] [Comment travailler à Google: Prepare pour une interview d'ingenieur (Anglais : Vidéo)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw) - - [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8) + - [ ] [Comment travailler à Google: Example pour une interview de coding/ingenieur (Anglais : Vidéo)](https://www.youtube.com/watch?v=XKu_SEDAykw) + - [ ] [Comment travailler à Google: Preparation pour la candidat (Anglais : Vidéo)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) + - [ ] [Les conseils pour les interviews par les employés (Anglais : Vidéo)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) + - [ ] [Comment travailler à Google: Preparation pour ton résumé (Anglais : Vidéo)](https://www.youtube.com/watch?v=8npJLXkcmu8) - [ ] Articles: - - [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - all the things he mentions that you need to know are listed below - - [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) + - [ ] [Comment etre un Googler dans trois etapes](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) + - [ ] [Recoit cette emploi à Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) + - tous les choses mentionne par lui sont en forme de liste en dessous + - [ ] _(très vieux)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - [ ] Prep Courses: From e4b86eb9b4938bddb8c816e5c6c2017f28df9dce Mon Sep 17 00:00:00 2001 From: Colin McCormack <80981213+NorthernSantan@users.noreply.github.com> Date: Thu, 10 Feb 2022 19:56:26 -0500 Subject: [PATCH 383/857] complete process and preparation --- translations/README-fr.md | 56 +++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index ee394da73d..31f002b1f8 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -277,38 +277,38 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo J'aime utiliser les cours universitaires. -## Processus pour l'interview et Préparation +## Processus pour l'entrevue et Préparation - [ ] Vidéos: - - [ ] [Comment travailler à Google: Prepare pour une interview d'ingenieur (Anglais : Vidéo)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) - - [ ] [Comment travailler à Google: Example pour une interview de coding/ingenieur (Anglais : Vidéo)](https://www.youtube.com/watch?v=XKu_SEDAykw) - - [ ] [Comment travailler à Google: Preparation pour la candidat (Anglais : Vidéo)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) - - [ ] [Les conseils pour les interviews par les employés (Anglais : Vidéo)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) - - [ ] [Comment travailler à Google: Preparation pour ton résumé (Anglais : Vidéo)](https://www.youtube.com/watch?v=8npJLXkcmu8) + - [ ] [Comment travailler à Google: Prépare pour une interview d'ingénieur (vidéo)](https://www.youtube.com/watch?v=ko-KkSmp-Lk) + - [ ] [Comment travailler à Google: Exemple pour une entrevue de coding/ingénieur (vidéo)](https://www.youtube.com/watch?v=XKu_SEDAykw) + - [ ] [Comment travailler à Google: Préparation pour le candidat (vidéo)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be) + - [ ] [Les conseils pour les interviews par les employés (vidéo)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be) + - [ ] [Comment travailler à Google: Préparation pour ton résumé (vidéo)](https://www.youtube.com/watch?v=8npJLXkcmu8) - [ ] Articles: - - [ ] [Comment etre un Googler dans trois etapes](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) - - [ ] [Recoit cette emploi à Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) - - tous les choses mentionne par lui sont en forme de liste en dessous - - [ ] _(très vieux)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) - - [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) - -- [ ] Prep Courses: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - -- [ ] Additional (not suggested by Google but I added): - - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - - [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - - [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - - [ ] How to Get a Job at the Big 4: - - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/) + - [ ] [Comment être un Googler dans trois étapes](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/) + - [ ] [Reçoit cet emploi à Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html) + - Toutes les choses mentionnent par lui est en forme de liste en dessous + - [ ] _(très vieux)_ [Comment avoir un emploi à Google, Questions d'Interview, Processus d'Embauchement](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html) + - [ ] [Questions pour l'appeler de sélection](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions) + +- [ ] Cours pour préparer: + - [ ] [Comment réussir dans une interview d'ingénieur logiciel (besoin de payer)](https://www.udemy.com/software-engineer-interview-unleashed): + - Apprends comment être pret pour l'entrevue de quelqu'un qui était responsable de l'embauche pour Google. + +- [ ] Supplémentaires (ne sont pas suggéré par Google, mais je l'ai ajouté): + - [ ] [Toujours en train de faire le codage (Anglais ABC: Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) + - [ ] [Quatre étapes à Google, sans un diplôme](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) + - [ ] [Tableau blanc](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) + - [ ] [Comment Google pense à propos de l'embauche, gestion, et culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) + - [ ] [Tableau blanc efficace lors des entretiens de codage](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) + - [ ] Réussis dans une entrevue de codage: + - [ ] [Gayle L McDowell - Réussi l'entretien de codage (vidéo)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Réussi l'entretien de codage avec auteur Author Gayle Laakmann McDowell (vidéo)](https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [ ] Comment obtenir un emploi à Google, Microsoft, Amazon ou Facebook: + - [ ] ['Comment obtenir un emploi aux grandes quatre - Amazon, Facebook, Google & Microsoft' (vidéo)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Échouer à une entrevue de Google](http://alexbowe.com/failing-at-google-interviews/) ## Pick One Language for the Interview From 2a149f5933473fea96b94ac10dc9fc349afba3d2 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 11 Feb 2022 19:01:00 -0800 Subject: [PATCH 384/857] Removed broken Emacs link. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e52ab330ed..e542126292 100644 --- a/README.md +++ b/README.md @@ -1499,7 +1499,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. From 6a98b266f0150d16806e925d7518b34da97a273a Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 11 Feb 2022 19:03:12 -0800 Subject: [PATCH 385/857] Removed broken Emacs link. --- translations/README-ar.md | 1 - translations/README-de.md | 1 - translations/README-es.md | 1 - translations/README-fa.md | 1 - translations/README-fr.md | 1 - translations/README-he.md | 1 - translations/README-ko.md | 1 - translations/README-ptbr.md | 1 - translations/README-th.md | 1 - translations/README-tr.md | 1 - translations/README-uk.md | 1 - translations/README-ur.md | 1 - translations/README-uz.md | 1 - translations/README-vi.md | 1 - 14 files changed, 14 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 9932c724ed..a10836ca0f 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1521,7 +1521,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-de.md b/translations/README-de.md index 161f1e9a44..92219a1a78 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1635,7 +1635,6 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix Kommandozeilenwerkzeuge - Ich habe in die Liste unten nützliche Werkzeuge gepackt. diff --git a/translations/README-es.md b/translations/README-es.md index b2e7c04a49..c1126d1945 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1543,7 +1543,6 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix: Herramientas para la línea de comandos - Llene la lista inferior con buenas herramientas. diff --git a/translations/README-fa.md b/translations/README-fa.md index 86828226da..b2e5c01e0d 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1491,7 +1491,6 @@ Mock Interviews: - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-fr.md b/translations/README-fr.md index 559994e3ac..21df157dd7 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1560,7 +1560,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. diff --git a/translations/README-he.md b/translations/README-he.md index d40c5dcbad..1eb35cccf9 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1576,7 +1576,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. diff --git a/translations/README-ko.md b/translations/README-ko.md index 7a650fb60e..7ec5c9365b 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1552,7 +1552,6 @@ Challenge repos: - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index d10c3190fe..35a6ec148b 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1561,7 +1561,6 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) (Tutorial de Emacs (Iniciantes) - Parte 3 - Expressões, Declarações, arquivo ~/. emacs e pacotes) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) (Modo Evil: Ou, Como Eu Aprendi A Parar De Me Preocupar E Amar O Emacs - vídeo) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) (Escrevendo Programas Em C Com Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) ((talvez) Análise Profunda do Modo Org: Gerenciando Estrutura - vídeo) - ### Ferramentas de linha de comando do Unix - Eu preenchi a lista abaixo com boas ferramentas. diff --git a/translations/README-th.md b/translations/README-th.md index 4b6af49494..dac16647b9 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1532,7 +1532,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-tr.md b/translations/README-tr.md index e1482b4271..dd084533a1 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1526,7 +1526,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-uk.md b/translations/README-uk.md index b56d6da460..c6bc8e6cf8 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1582,7 +1582,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-ur.md b/translations/README-ur.md index 3acba50311..d41c75e836 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1520,7 +1520,6 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix command line tools - I filled in the list below from good tools. diff --git a/translations/README-uz.md b/translations/README-uz.md index c0d3a794eb..012ea379c2 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1498,7 +1498,6 @@ Hech qachon tugatgan bo'lmaymiz. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unix uchun buyruqlar ro'yxati - Quyidagi ro'yxatni yaxshi vositalardan to'ldirdim. diff --git a/translations/README-vi.md b/translations/README-vi.md index f307909f35..226a723176 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1568,7 +1568,6 @@ Bạn không bao giờ thực sự học xong! - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Các công cụ chạy trên dòng lệnh của Unix - Được đề xuất bởi Yegge, từ một bài đăng tuyển dụng cũ của Amazon. From 495c74fcafefc2025d2d479391c5b72cc5187182 Mon Sep 17 00:00:00 2001 From: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> Date: Sat, 12 Feb 2022 13:49:11 +0100 Subject: [PATCH 386/857] Add "The Absolute Beginner's Guide to Emacs" video & notes source Signed-off-by: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e542126292..655d241c92 100644 --- a/README.md +++ b/README.md @@ -1499,6 +1499,8 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Unix command line tools - I filled in the list below from good tools. From ab5d833226ce98659f059e1a65bd52c1d7f8f42e Mon Sep 17 00:00:00 2001 From: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> Date: Mon, 14 Feb 2022 17:02:55 +0100 Subject: [PATCH 387/857] Fix typo in the Bulgarian translation README-bg.md file Signed-off-by: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index c0c1461b47..2020c5ebe2 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1463,7 +1463,7 @@ Mock интервюта: - [Emacs ръководство (За начинаещи) -Част 1- файлови команди, cut/copy/paste, cursor команди](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs ръководство (За начинаещи) -Част 2- Управление на буфера, търсене, M-x grep и rgrep режими](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs въководство (За начинаещи) -Част 3- Изрази, Твърдения, ~/.emacs файлове и пакети](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Зъл режиим: Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Зъл режим: Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [(по желание) Org режима в подробности: Управление на структурата (клип)](https://www.youtube.com/watch?v=nsGYet02bEk) From f558c8da724486914936f4b88183137486e70997 Mon Sep 17 00:00:00 2001 From: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> Date: Mon, 14 Feb 2022 17:04:45 +0100 Subject: [PATCH 388/857] =?UTF-8?q?Fix=20literal=20translation=20of=20"?= =?UTF-8?q?=D0=97=D1=8A=D0=BB=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC"=20in=20Bul?= =?UTF-8?q?garian?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 2020c5ebe2..b0c5188dd1 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1463,7 +1463,7 @@ Mock интервюта: - [Emacs ръководство (За начинаещи) -Част 1- файлови команди, cut/copy/paste, cursor команди](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs ръководство (За начинаещи) -Част 2- Управление на буфера, търсене, M-x grep и rgrep режими](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs въководство (За начинаещи) -Част 3- Изрази, Твърдения, ~/.emacs файлове и пакети](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Зъл режим: Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Зъл режим(Evil mode): Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [(по желание) Org режима в подробности: Управление на структурата (клип)](https://www.youtube.com/watch?v=nsGYet02bEk) From 87fef65f3bb8b8f774c428e97e49810755114b4a Mon Sep 17 00:00:00 2001 From: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> Date: Mon, 14 Feb 2022 17:16:54 +0100 Subject: [PATCH 389/857] Update Bulgarian translation Signed-off-by: KiwiB0y <42769725+KiwiB0y@users.noreply.github.com> --- translations/README-bg.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/translations/README-bg.md b/translations/README-bg.md index b0c5188dd1..689aac2d07 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1466,6 +1466,8 @@ Mock интервюта: - [Зъл режим(Evil mode): Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [(по желание) Org режима в подробности: Управление на структурата (клип)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [Emacs-Наръчник за начинаещи (видео от David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [Emacs-Наръчник за начинаещи (записки на David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Unix command line tools From 60c12d03df8a2dc71cc5447a1622da98c8e09aaa Mon Sep 17 00:00:00 2001 From: Alibek Datbayev Date: Tue, 15 Feb 2022 17:34:43 +0100 Subject: [PATCH 390/857] Create README-kk.md Initial readme for Kazakh translation --- translations/README-kk.md | 1991 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1991 insertions(+) create mode 100644 translations/README-kk.md diff --git a/translations/README-kk.md b/translations/README-kk.md new file mode 100644 index 0000000000..655d241c92 --- /dev/null +++ b/translations/README-kk.md @@ -0,0 +1,1991 @@ +# Coding Interview University + +> I originally created this as a short to-do list of study topics for becoming a software engineer, +> but it grew to the large list you see today. After going through this study plan, [I got hired +> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> You probably won't have to study as much as I did. Anyway, everything you need is here. +> +> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> +> The items listed here will prepare you well for a technical interview at just about any software company, +> including the giants: Amazon, Facebook, Google, and Microsoft. +> +> *Best of luck to you!* + +
+Translations: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + +
+ +
+Translations in progress: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) + +
+ + + +## What is it? + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +This is my multi-month study plan for becoming a software engineer for a large company. + +**Required:** +* A little experience with coding (variables, loops, methods/functions, etc) +* Patience +* Time + +Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from web development. For example, Amazon has +Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for +them will not be the same, as each has its own competencies. These companies require computer science knowledge for +software development/engineering roles. + +--- + +## Table of Contents + +### The Study Plan + +- [What is it?](#what-is-it) +- [Why use it?](#why-use-it) +- [How to use it](#how-to-use-it) +- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) +- [A Note About Video Resources](#a-note-about-video-resources) +- [Choose a Programming Language](#choose-a-programming-language) +- [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) +- [Interview Prep Books](#interview-prep-books) +- [Don't Make My Mistakes](#dont-make-my-mistakes) +- [What you Won't See Covered](#what-you-wont-see-covered) +- [The Daily Plan](#the-daily-plan) +- [Coding Question Practice](#coding-question-practice) +- [Coding Problems](#coding-problems) + +### Topics of Study + +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [Final Review](#final-review) + +### Getting the Job + +- [Update Your Resume](#update-your-resume) +- [Find a Job](#find-a-job) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +**---------------- Everything below this point is optional ----------------** + +### Optional Extra Topics & Resources + +- [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +If you want to work as a software engineer for a large company, these are the things you have to know. + +If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. +Every data structure I had ever used was built into the language, and I didn't know how they worked +under the hood at all. I never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I used a few multidimensional arrays in my life and +thousands of associative arrays, but I never created data structures from scratch. + +It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. + +## How to use it + +Everything below is an outline, and you should tackle the items in order from top to bottom. + +I'm using GitHub's special markdown flavor, including tasks lists to track progress. + +**Create a new branch so you can check items like this, just put an x in the brackets: [x]** + + Fork a branch and follow the commands below + +Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. + +Clone to your local repo: + + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + +Mark all boxes with X after you completed your changes: + + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + +[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +## Don't feel you aren't smart enough + +- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## A Note About Video Resources + +Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. + +It would be great to replace the online course resources with free and always-available public sources, +such as YouTube videos (preferably university lectures), so that you people can study these anytime, +not just when a specific online course is in session. + +## Choose a Programming Language + +You'll need to choose a programming language for the coding interviews you do, +but you'll also need to find a language that you can use to study computer science concepts. + +Preferably the language would be the same, so that you only need to be proficient in one. + +### For this Study Plan + +When I did the study plan, I used 2 languages for most of it: C and Python + +* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures + and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + but when you're learning how these low-level data structures are built, it's great to feel close to the metal. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. + - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) +* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. + +This is my preference. You do what you like, of course. + +You may not need it, but here are some sites for learning a new language: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +### For your Coding Interview + +You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: + +- C++ +- Java +- Python + +You could also use these, but read around first. There may be caveats: + +- JavaScript +- Ruby + +Here is an article I wrote about choosing a language for the interview: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +This is the original article my post was based on: http://blog.codingforinterviews.com/best-programming-language-jobs/ + +You need to be very comfortable in the language and be knowledgeable. + +Read more about choices: +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[See language-specific resources here](programming-language-resources.md) + +## Books for Data Structures and Algorithms + +This book will form your foundation for computer science. + +Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Your choice: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +Your choice: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Interview Prep Books + +You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, +but I bought more to give myself more practice. But I always do too much. + +I bought both of these. They gave me plenty of practice. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Answers in C++ and Java + - This is a good warm-up for Cracking the Coding Interview + - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +### If you have tons of extra time: + +Choose one: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +## Don't Make My Mistakes + +This list grew over many months, and yes, it got out of hand. + +Here are some mistakes I made so you'll have a better experience. And you'll save months of time. + +### 1. You Won't Remember it All + +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards, so I could review. I didn't need all of that knowledge. + +Please, read so you won't make my mistakes: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Use Flashcards + +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. + +Make your own for free: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. + +But if you don't want to listen to me, here you go: +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. +It's way too much for what's required. + +**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. +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. + +My flashcard database in Anki format: 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. + +### 3. Do Coding Interview Questions While You're Learning + +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. Do 2 or 3 questions regarding linked lists. +1. Move on to the next learning topic. +1. Later, go back and do another 2 or 3 linked list problems. +1. Do this with each new topic you learn. + +**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 + +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 +- Javascript +- 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-cpp) + - [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) + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for your solutions (see Big-O below) +- 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/) + +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) + +**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). + +Solving Problems: +- [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/) + +Coding Interview Question Videos: +- [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) + - Super for walkthroughs of problem solutions +- [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 +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - See Nick White and FisherCoder Videos above for code walk-throughs. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [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 + +- 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. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](https://archive.org/details/lecture2_202008) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [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 +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) + - [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) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Will not implement. Implementing with array is trivial + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(x) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) + - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) + - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) + - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - When it is appropriate to use it? + - How is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### How computers process a program + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Update Your Resume + +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." + + +## Find a Job + +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Interview Process & General Interview Prep + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: + - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Have questions for the interviewer + +Some of mine (I already may know the answers, but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is the work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. It is NOT needed for an entry-level interview. + However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + +## Video Series + +Sit back and enjoy. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- CSE373 - Analysis of Algorithms (25 videos) + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From d5f475fdf4420487546d3af81cedc58e4c45c746 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Wed, 16 Feb 2022 10:54:11 +0100 Subject: [PATCH 391/857] Remove broken Emacs link from README-bg.md --- translations/README-bg.md | 1 - 1 file changed, 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 689aac2d07..3d1d59a2d0 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1465,7 +1465,6 @@ Mock интервюта: - [Emacs въководство (За начинаещи) -Част 3- Изрази, Твърдения, ~/.emacs файлове и пакети](https://www.youtube.com/watch?v=paSgzPso-yc) - [Зъл режим(Evil mode): Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(по желание) Org режима в подробности: Управление на структурата (клип)](https://www.youtube.com/watch?v=nsGYet02bEk) - [Emacs-Наръчник за начинаещи (видео от David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - [Emacs-Наръчник за начинаещи (записки на David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) From 66e524b30b5a1f2a559a45fe498b33b5827eb607 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Kar Date: Wed, 23 Feb 2022 03:28:48 +0600 Subject: [PATCH 392/857] Fixed md syntax,wrong translation till Table --- translations/README-bn.md | 415 +++++++++++++++++++------------------- 1 file changed, 210 insertions(+), 205 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 501581a555..cda7be5c1b 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1,16 +1,17 @@ -#কোডিং সাক্ষাত্কার বিশ্ববিদ্যালয় +# কোডিং সাক্ষাত্কার বিশ্ববিদ্যালয় -> আমি এটি প্রথমে একটি সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য অধ্যয়নের বিষয়গুলির একটি স্বল্প-করণীয় তালিকা হিসাবে তৈরি করেছি, -> তবে এটি আজ আপনি যে বৃহত তালিকায় দেখতে পেলেন grew এই অধ্যয়নের পরিকল্পনাটি পেরিয়ে যাওয়ার পরে, [আমি নিয়োগ পেয়েছি -> [অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। +> আমি এটি প্রথমে একটি সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য অধ্যয়নের বিষয়গুলির একটি স্বল্প-করণীয় তালিকা হিসাবে তৈরি করেছিলাম, +> তবে এটি আজ আপনি যে বৃহত তালিকা দেখতে পাচ্ছেন তাতে রুপ নিয়েছে এই শিক্ষা পরিকল্পনাটি পেরিয়ে যাওয়ার পরে, [আমি নিয়োগ পেয়েছি +> অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> +> **খেয়াল করুন** আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। > > আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্য আমি কেন ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> এখানে তালিকাভুক্ত আইটেমগুলি কোনও সফ্টওয়্যার সংস্থার সম্পর্কে আপনাকে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে, -> জায়ান্ট সহ: অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট। +> এখানে তালিকাভুক্ত আইটেমগুলি যেকোনো সফ্টওয়্যার সংস্থার সম্পর্কে আপনাকে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে, +> যার মধ্যে থাকবে বৃহৎ প্রযুক্তি কোম্পানি যেমন: অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট। > -> * আপনার জন্য শুভকামনা! * +> *আপনার জন্য শুভকামনা!*
অনুবাদ: @@ -87,148 +88,155 @@
-##এটা কি? +## এটা কি? ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -কোনও বড় প্রতিষ্ঠানের সফটওয়্যার ইঞ্জিনিয়ারের কাছে ওয়েব বিকাশকারী (স্ব-শিক্ষিত, কোনও সিএস ডিগ্রি) থেকে যাওয়ার জন্য এটি আমার বহু মাসের অধ্যয়ন পরিকল্পনা। - -এটি -* নতুন সফটওয়্যার ইঞ্জিনিয়ার -* বা যাঁরা স্যুইচ করছেন তাদের জন্য -* সফ্টওয়্যার / ওয়েব ডেভলপমেন্ট সফটওয়্যার ইঞ্জিনিয়ারিং (যেখানে কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন)। যদি তোমার থাকে -বহু বছরের অভিজ্ঞতা রয়েছে এবং সফটওয়্যার ইঞ্জিনিয়ারিংয়ের বহু বছরের অভিজ্ঞতা দাবি করছেন, আরও একটি কঠিন সাক্ষাত্কারের প্রত্যাশা করুন। - -আপনার যদি অনেক বছরের সফ্টওয়্যার / ওয়েব বিকাশের অভিজ্ঞতা থাকে তবে নোট করুন যে গুগল, অ্যামাজন, -ফেসবুক এবং মাইক্রোসফ্ট সফ্টওয়্যার ইঞ্জিনিয়ারিং সফ্টওয়্যার / ওয়েব বিকাশ থেকে আলাদা হিসাবে দেখে এবং তাদের কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন। - -আপনি যদি নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে listচ্ছিক তালিকা (নেটওয়ার্কিং, সুরক্ষা) থেকে আরও অধ্যয়ন করুন। +এটি আমার বহু মাসের অধ্যয়ন পরিকল্পনা যার মাধ্যমে কোনো বড় প্রতিষ্ঠানের সফটওয়্যার ইঞ্জিনিয়ারের কাজে (স্ব-শিক্ষিত, কোনও সিএস ডিগ্রি ছাড়া) যোগ দেওয়া সম্ভব। + + +**গুরুত্বপূর্নঃ** + +* প্রোগ্রামিং এ সামান্য অভিজ্ঞতা (ভ্যারিয়েবলস,লুপ্স,মেথড/ফাংশন,ইত্যাদি) +* ধৈর্য +* সময় + + + বিজ্ঞপ্তি এটি সফ্টওয়্যার ইঞ্জিনিয়ারিং এর অধ্যয়ন পরিকল্পনা, ওয়েব ডেভলপমেন্ট এর নয়। বড় বড় সফ্টওয়্যার কোম্পানি যেমন গুগল, অ্যামাজন,ফেসবুক এবং মাইক্রোসফ্ট সফ্টওয়্যার ইঞ্জিনিয়ারিং কে ওয়েব ডেভলপমেন্ট থেকে আলাদা হিসাবে দেখে। যেমন অ্যামাজন এর ফ্রন্ট এন্ড ইঞ্জিনিয়ার (এফইই) এবং সফ্টওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার (এফডিই) দুই ধরনের ইঞ্জিনিয়ার আছে। এই দুইটি আলাদা চাকরি এবং এদের ইন্টারভিউ ও আলাদা ধরনের হবে। কারন এই দুই ধরনের পেশার জন্য আলাদা দক্ষতা প্রয়োজন। এই প্রতিষ্ঠান গুলো সফ্টওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার এর চাকরির জন্য কম্পিউটার সাইন্স এর জ্ঞান হাকা আবশ্যক মনে করে। --- -##সুচিপত্র +## সুচিপত্র +### পাঠ পরিকল্পনা + - [এটি কী?](#এটি-কী) - [কেন এটি ব্যবহার করবেন?](#এটি-কেন-ব্যবহার-করুন) - [এটি কীভাবে ব্যবহার করবেন](#এটি-কীভাবে-ব্যবহার-করবেন) -- [মনে হয় আপনি যথেষ্ট স্মার্ট নন](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) -- [ভিডিও সংস্থান সম্পর্কে](#ভিডিও-সংস্থান-সম্পর্কে) -- [সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) -- [সাক্ষাত্কারের জন্য একটি ভাষা বাছুন](#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) -- [বইয়ের তালিকা](#বুক-তালিকা) -- [আপনি শুরু করার আগে](#আপনি-আগে-শুরু-করার-আগে) -- [যা আপনি আবৃত দেখবেন না](#কী-আপনি-দেখতে-পাবেন-না) -- [পূর্বশর্ত জ্ঞান](#পূর্বশর্ত-জ্ঞান) +- [আপনি কি নিজেকে যথেষ্ট স্মার্ট ভাবেন নাহ](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) +- [ভিডিও রিসোর্স সম্পর্কে কিছু কথা](#ভিডিও-সংস্থান-সম্পর্কে) +- [একটি প্রোগ্রামিং ভাষা বেছে নিন](#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) +- [ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ](#বুক-তালিকা) +- [ইন্টারভিউ এর প্রস্তুতি এর বইসমুহ](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) +- [আমার ভুল গুলো করবেন নাহ](ভুল) +- [এখানে যা শেখানো হবে না](#কী-আপনি-দেখতে-পাবেন-না) - [দৈনিক পরিকল্পনা](#দৈনিক-পরিকল্পনা) -- [অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ](#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) +- [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) +- [কোডিং অনুশীলন / চ্যালেঞ্জ](#কোডিং-এক্সারসাইজেশনগুলি) + + +### অধ্যয়নের বিষয়সমূহ + +- [অ্যালগোরিদমিক জটিলতা / বিগ-ও / অ্যাসিম্পটোটিক বিশ্লেষণ](#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) - [ডেটা স্ট্রাকচার](#ডেটা-স্ট্রাকচার) -[অ্যারে](#অ্যারে) - -[লিঙ্কযুক্ত তালিকা](#লিঙ্কযুক্ত-তালিকাগুলি) + -[লিঙ্কলিস্ট](#লিঙ্কযুক্ত-তালিকাগুলি) -[স্ট্যাক](#স্ট্যাক) - -[সারি](#সারি) + -[কিউ](#সারি) -[হ্যাশ টেবিল](#হ্যাশ-টেবিল) - [আরও জ্ঞান](#আরও-জ্ঞান) - -[বাইনারি অনুসন্ধান](#বাইনারি-অনুসন্ধান) + -[বাইনারি সার্চ](#বাইনারি-অনুসন্ধান) -[বিটওয়াইজ অপারেশন](#বিটওয়াইস-অপারেশন) -- [গাছ](#গাছ) - -[গাছ-নোট ও পটভূমি](#গাছ-নোট-পটভূমি) - -[বাইনারি অনুসন্ধান গাছ: বিএসটিএস](#বাইনারি-অনুসন্ধান-গাছ-বুস্ট) - -[গাদা / অগ্রাধিকার সারি / বাইনারি হিপ](#হিপ-অগ্রাধিকার-সারি-বাইনারি-হিপ) - -সুষম অনুসন্ধান গাছ (সাধারণ ধারণা, বিশদ নয়) - -ট্র্যাভারসাল: প্রির্ডার, ইনর্ডার, পোস্টর্ডার, বিএফএস, ডিএফএস -- [বাছাই করা](#বাছাই-করা) - -নির্বাচন - -সন্নিবেশ - -হিপসোর্ট - -দ্রুত বাছাই - -মার্জ সাজান +- [ট্রি](#গাছ) + - [ট্রি-নোট এবং পটভূমি](#গাছ-নোট-পটভূমি) + - [বাইনারি সার্চ গাছ: বিএসটি](#বাইনারি-অনুসন্ধান-গাছ-বুস্ট) + - [হিপ / প্রায়োরিটি কিউ / বাইনারি হিপ](#হিপ-অগ্রাধিকার-সারি-বাইনারি-হিপ) + - ব্যালান্সড সার্চ ট্রি (সাধারণ ধারণা, বিশদ নয়) + - ট্র্যাভারসালস: প্রিওর্ডার, ইনওর্ডার, পোস্টওর্ডার, বিএফএস, ডিএফএস +- [সোর্টিং](#বাছাই-করা) + - সিলেকশন + - ইন্সার্শন + - হিপসোর্ট + - কুইক সোর্ট + - মার্জ সোর্টি - [গ্রাফ](#গ্রাফ) - -পরিচালিত - -পুনর্নির্দেশ - -অন্তিক ম্যাট্রিক্স - -সংলগ্ন তালিকা + - ডিরেক্টেড + - আনডিরেক্টেড + - সংলগ্ন ম্যাট্রিক্স (adjacency matrix) + - সংলগ্ন লিস্ট (adjacency list) -ট্র্যাভারসাল: বিএফএস, ডিএফএস - [আরও বেশি জ্ঞান](#আরও-বেশি-জ্ঞান) - -[পুনরাবৃত্তি](#পুনরাবৃত্তি) - -[ডায়নামিক প্রোগ্রামিং](#ডায়নামিক-প্রোগ্রামিং) - -[অবজেক্ট-ওরিয়েন্টড প্রোগ্রামিং](#অবজেক্ট-ওরিয়েন্টেড-প্রোগ্রামিং) - -[নকশার ধরণগুলি](#ডিজাইন-নিদর্শন) - -[সংযুক্তি (এন কে নির্বাচন করুন) এবং সম্ভাবনা](#সংযুক্তি-এন-পছন্দ-কে-সম্ভাবনা) - -[এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম](#এনপি-এনপি-সম্পূর্ণ-এবং-আনুমানিক-অ্যালগোরিদম) - -[ক্যাশে](#ক্যাশে) - -[প্রক্রিয়া এবং থ্রেড](#প্রক্রিয়া-এবং-থ্রেড) - -[পরীক্ষা](#পরীক্ষা) - -[সময়সূচী](#সময়সূচী) - -[স্ট্রিং সন্ধান এবং ম্যানিপুলেশনস](#স্ট্রিং-সন্ধান-ম্যানিপুলেশনস) - -[চেষ্টা](#চেষ্টা) - -[ভাসমান পয়েন্ট নম্বর](#ভাসমান-পয়েন্ট নম্বর) - -[ইউনিকোড](#ইউনিকোড) - -[অন্তিমারতা](#শেষতা) - -[নেটওয়ার্কিং](#নেটওয়ার্কিং) -- [সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং](#সিস্টেম-ডিজাইন-স্কেলাবিলিটি-ডেটা-হ্যান্ডলিং) (যদি আপনার 4+ বছরের অভিজ্ঞতা থাকে) -- [চূড়ান্ত পর্যালোচনা](#চূড়ান্ত-পর্যালোচনা) -- [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) -- [কোডিং অনুশীলন / চ্যালেঞ্জ](#কোডিং-এক্সারসাইজেশনগুলি) -- [একবার আপনি সাক্ষাত্কারের কাছাকাছি এসেছেন](#একবার-আপনি-সাক্ষাত্কারের-কাছাকাছি-এসেছেন) -- [আপনার জীবনবৃত্তান্ত](#আপনার-জীবনবৃত্তান্ত) + - [রিকার্শন](#পুনরাবৃত্তি) + - [ডায়নামিক প্রোগ্রামিং](#ডায়নামিক-প্রোগ্রামিং) + - [অবজেক্ট-ওরিয়েন্টড প্রোগ্রামিং](#অবজেক্ট-ওরিয়েন্টেড-প্রোগ্রামিং) + - [ডিজাইন প্যাটার্ন্স](#ডিজাইন-নিদর্শন) + - [সমাবেশ (এন থেকে কে নির্বাচন করুন) এবং সম্ভাবনা (Combinatorics (n choose k) & Probability)](#সংযুক্তি-এন-পছন্দ-কে-সম্ভাবনা) + - [এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম](#এনপি-এনপি-সম্পূর্ণ-এবং-আনুমানিক-অ্যালগোরিদম) + - [কম্পিউটার কিভাবে প্রোগ্রাম প্রসেস করে](কম্পিউটার-কিভাবে-প্রোগ্রাম-প্রসেস-করে) + - [ক্যাশ](#ক্যাশে) + - [প্রসেস এবং থ্রেড](#প্রক্রিয়া-এবং-থ্রেড) + - [টেস্টিং](#পরীক্ষা) + - [স্ট্রিং সন্ধান এবং ম্যানিপুলেশনস](#স্ট্রিং-সন্ধান-ম্যানিপুলেশনস) + - [ট্রাইস](#চেষ্টা) + - [ফ্লোটিং পয়েন্ট নম্বর](#ভাসমান-পয়েন্ট-নম্বর) + - [ইউনিকোড](#ইউনিকোড) + - [এন্ডিয়ান্স](#শেষতা) + - [নেটওয়ার্কিং](#নেটওয়ার্কিং) + - [সময়সূচী](#সময়সূচী) +- [চূড়ান্ত পর্যালোচনা](#চূড়ান্ত-পর্যালোচনা) + + ### চাকরি পাওয়ার জন্য + +- [আপনার জীবনবৃত্তান্ত আপডেট করুন](#আপনার-জীবনবৃত্তান্ত) +- [চাকরি খোজা](চাকরি-খোজা) +- [সাক্ষাত্কারের প্রক্রিয়া এবং সাক্ষাত্কার প্রস্তুতি](#একবার-আপনি-সাক্ষাত্কারের-কাছাকাছি-এসেছেন) - [সাক্ষাত্কারটি আসার জন্য চিন্তাভাবনা করুন](#সাক্ষাত্কারটি-কখন-আসবে-এর-জন্য-চিন্তাভাবনা-করুন) -- [সাক্ষাত্কারকারীর জন্য প্রশ্ন রয়েছে](#সাক্ষাত্কারকারীর-জন্য-প্রশ্ন-রয়েছে) -- [একবার আপনি কাজটি পেয়ে যাবেন](#একবার-আপনি-কাজটি-পেয়েছেন) +- [সাক্ষাত্কারকারীর জন্য প্রশ্ন রাখুন](#সাক্ষাত্কারকারীর-জন্য-প্রশ্ন-রয়েছে) +- [চাকরি পাবার পর](#একবার-আপনি-কাজটি-পেয়েছেন) -----------------এই পয়েন্টের নীচে থাকা সমস্ত কিছুই ঐচ্ছিক---------------- +**----------------এই পয়েন্টের নীচে থাকা সমস্ত কিছুই ঐচ্ছিক----------------** -
-অতিরিক্ত সংস্থান - --[অতিরিক্ত বই](#অতিরিক্ত-বই) --[অতিরিক্ত শিক্ষা](#অতিরিক্ত-শিক্ষণ) - -[সংকলক](#সংকলক) - -[ইম্যাকস এবং ভিআই (এম)](#ইম্যাকস-এবং-ভিএম) - -[ইউনিক্স কমান্ড লাইন সরঞ্জাম](#ইউনিক্স-কমান্ড-লাইন-সরঞ্জাম) - -[তথ্য তত্ত্ব](#তথ্য-তত্ত্ব-ভিডিও) - -[সমতা এবং হামিং কোড](#সমতা-হামিং-কোড-ভিডিও) - -[এন্ট্রপি](#এনট্রপি) - -[ক্রিপ্টোগ্রাফি](#ক্রিপ্টোগ্রাফি) - -[সংক্ষেপণ](#সংক্ষেপণ) - -[কম্পিউটার সুরক্ষা](#কম্পিউটার-সুরক্ষা) - -[আবর্জনা সংগ্রহ](#জঞ্জাল-সংগ্রহ) - -[সমান্তরাল প্রোগ্রামিং](#সমান্তরাল-প্রোগ্রামিং) - -[মেসেজিং, সিরিয়ালাইজেশন, এবং কুইউিং সিস্টেম](#মেসেজিং-সিরিয়ালাইজেশন-এবং-কুইউং-সিস্টেম) - -[এ *](#ক) - -[ফাস্ট ফুরিয়ার ট্রান্সফর্ম](#ফাস্ট-ফুরিয়ার-ট্রান্সফর্ম) - -[ব্লুম ফিল্টার](#ব্লুম-ফিল্টার) - -[হাইপারলগলগ](#হাইপারলগলগ) - -[স্থানীয়তা-সংবেদনশীল হ্যাশিং](#লোকাল-সংবেদনশীল-হ্যাশিং) - -[ভ্যান এমডে বোস ট্রি](#ভ্যান-এমডি-বোস-ট্রি) - -[অগমেন্টেড ডেটা স্ট্রাকচার](#সংযুক্ত-ডেটা-কাঠামো) - -[ভারসাম্যযুক্ত অনুসন্ধান গাছ](#সুষম-অনুসন্ধান-গাছ) - -এভিএল গাছ - -গাছ স্প্লে - -লাল / কালো গাছ - -2-3 অনুসন্ধান গাছ - -২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ) - -এন-আরি (কে-আরি, এম-আরি) গাছ - -বি-ট্রি - -[কেডি গাছ](#কেডি-ট্রি) - -[তালিকাগুলি বাদ দিন](#এড়িয়ে-যাওয়া-তালিকাগুলি) - -[নেটওয়ার্ক প্রবাহ](#নেটওয়ার্ক-প্রবাহ) - -[বিচ্ছিন্ন সেট এবং ইউনিয়ন সন্ধান করুন](#বিভেদ-সেট-ইউনিয়ন-অনুসন্ধান) - -[দ্রুত প্রক্রিয়াকরণের জন্য গণিত](#দ্রুত-প্রক্রিয়াজাতকরণের-জন্য-গণিত) - -[ট্রিপ](#ট্রাপ) - -[লিনিয়ার প্রোগ্রামিং](#লিনিয়ার-প্রোগ্রামিং-ভিডিও) - -[জ্যামিতি, উত্তল হাল](#জ্যামিতি-উত্তল-হাল-ভিডিও) - -[স্বতন্ত্র গণিত](#স্বতন্ত্র-গণিত) - -[মেশিন লার্নিং](#মেশিন-লার্নিং) --[কয়েকটি বিষয়ে অতিরিক্ত বিশদ বিবরণ](#কিছু-বিষয়ে-কিছু-অতিরিক্ত-বিশদ-বিবরণ) --[ভিডিও সিরিজ](#ভিডিও-সিরিজ) --[কম্পিউটার বিজ্ঞান কোর্স](#কম্পিউটার-বিজ্ঞান-কোর্স) --[কাগজপত্র](#কাগজপত্র) +### ঐচ্ছিক অতিরিক্ত বিষয় ও রিসোর্স + +-[অধিক বই](#অতিরিক্ত-বই) +- [সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং](#সিস্টেম-ডিজাইন-স্কেলাবিলিটি-ডেটা-হ্যান্ডলিং) (যদি আপনার 4+ বছরের অভিজ্ঞতা থাকে) +- [অধিক শিক্ষা](#অতিরিক্ত-শিক্ষণ) + - [কম্পাইলার্স](#সংকলক) + - [ইম্যাকস এবং ভিআই (এম)](#ইম্যাকস-এবং-ভিএম) + - [ইউনিক্স কমান্ড লাইন তুলস](#ইউনিক্স-কমান্ড-লাইন-সরঞ্জাম) + - [ইনফরমেশন থিয়োরি](#তথ্য-তত্ত্ব-ভিডিও) + - [প্যারিটি এবং হামিং কোড](#সমতা-হামিং-কোড-ভিডিও) + - [এন্ট্রপি](#এনট্রপি) + - [ক্রিপ্টোগ্রাফি](#ক্রিপ্টোগ্রাফি) + - [কম্প্রেশন](#সংক্ষেপণ) + - [কম্পিউটার সুরক্ষা](#কম্পিউটার-সুরক্ষা) + - [গারবেজ কালেকশন](#জঞ্জাল-সংগ্রহ) + - [প্যারালাল প্রোগ্রামিং](#সমান্তরাল-প্রোগ্রামিং) + - [মেসেজিং, সিরিয়ালাইজেশন, এবং কিউইং সিস্টেম](#মেসেজিং-সিরিয়ালাইজেশন-এবং-কুইউং-সিস্টেম) + - [এ *](#ক) + - [ফাস্ট ফুরিয়ার ট্রান্সফর্ম](#ফাস্ট-ফুরিয়ার-ট্রান্সফর্ম) + - [ব্লুম ফিল্টার](#ব্লুম-ফিল্টার) + - [হাইপারলগলগ](#হাইপারলগলগ) + - [লোকালিটি-সেনসিটিভ হ্যাশিং](#লোকাল-সংবেদনশীল-হ্যাশিং) + - [ভ্যান এমডে বোস ট্রি](#ভ্যান-এমডি-বোস-ট্রি) + - [অগমেন্টেড ডেটা স্ট্রাকচার](#সংযুক্ত-ডেটা-কাঠামো) + - [ব্যালান্সড সার্চ ট্রি](#সুষম-অনুসন্ধান-গাছ) + - এভিএল ট্রি + - স্প্লে ট্রি + - লাল / কালো গাছ + - 2-3 সার্চ ট্রি + - ২-৩-৪ ট্রি (ওরফ ২-৪ ট্রি) + - এন-আরি (কে-আরি, এম-আরি) ট্রি + - বি-ট্রি + - [কেডি ট্রি](#কেডি-ট্রি) + - [স্কিপ লিস্ট](#এড়িয়ে-যাওয়া-তালিকাগুলি) + - [নেটওয়ার্ক ফ্লো](#নেটওয়ার্ক-প্রবাহ) + - [বিচ্ছিন্ন সেট এবং ইউনিয়ন ফাইন্ড](#বিভেদ-সেট-ইউনিয়ন-অনুসন্ধান) + - [দ্রুত প্রক্রিয়াকরণের জন্য গণিত](#দ্রুত-প্রক্রিয়াজাতকরণের-জন্য-গণিত) + - [ট্রিপ](#ট্রাপ) + - [লিনিয়ার প্রোগ্রামিং](#লিনিয়ার-প্রোগ্রামিং-ভিডিও) + - [জ্যামিতি, উত্তল হাল](#জ্যামিতি-উত্তল-হাল-ভিডিও) + - [ডিসক্রিট ম্যাথ](#স্বতন্ত্র-গণিত) + - [মেশিন লার্নিং](#মেশিন-লার্নিং) +- [কয়েকটি বিষয়ে বিশদ বিবরণ](#কিছু-বিষয়ে-কিছু-অতিরিক্ত-বিশদ-বিবরণ) +- [ভিডিও সিরিজ](#ভিডিও-সিরিজ) +- [কম্পিউটার বিজ্ঞান কোর্স](#কম্পিউটার-বিজ্ঞান-কোর্স) +- [কাগজপত্র](#কাগজপত্র) -
--- -##কেন এটি ব্যবহার করবেন? +## কেন এটি ব্যবহার করবেন? আমি যখন এই প্রকল্পটি শুরু করেছি, তখন আমি একটি স্তূপ থেকে একটি স্ট্যাক জানি না, বিগ-ও কিছুই জানতাম না, গাছ সম্পর্কে কিছুই বা কীভাবে করব একটি গ্রাফ অতিক্রম করুন। যদি আমাকে কোনও বাছাই করা অ্যালগরিদম কোড করতে হয়, আমি তোমাকে বলতে পারি এটি খুব ভাল হত না। @@ -239,7 +247,7 @@ এটি একটি দীর্ঘ পরিকল্পনা। এটি আপনার কয়েক মাস সময় নিতে পারে। আপনি যদি ইতিমধ্যে এর অনেকের সাথে পরিচিত হন তবে আপনাকে অনেক কম সময় লাগবে। -##এটি কিভাবে ব্যবহার করতে +## এটি কিভাবে ব্যবহার করতে
এটি কীভাবে ব্যবহার করবেন @@ -248,7 +256,7 @@ অগ্রগতি পরীক্ষা করার জন্য কার্য তালিকা সহ আমি গিথুবের বিশেষ মার্কডাউন গন্ধ ব্যবহার করছি। -** একটি নতুন শাখা তৈরি করুন যাতে আপনি এর মতো আইটেমগুলি পরীক্ষা করতে পারেন, বন্ধনীগুলিতে কেবল একটি এক্স রাখুন: [x] ** +**একটি নতুন শাখা তৈরি করুন যাতে আপনি এর মতো আইটেমগুলি পরীক্ষা করতে পারেন, বন্ধনীগুলিতে কেবল একটি এক্স রাখুন: [x]** একটি শাখা কাঁটাচামচ করুন এবং নীচের আদেশগুলি অনুসরণ করুন @@ -271,14 +279,14 @@
-##মনে হয় না আপনি যথেষ্ট স্মার্ট নন --সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। --[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) --[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই][https://www.youtube.com/watch?v=1i8ylq4j_EY) --[বিশ্বাস আপনি পরিবর্তন করতে পারেন](http://www.aaronsw.com/weblog/dweck) --[ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন](https://www.youtube.com/watch?v=uPOJ1PR50ag) +## মনে হয় না আপনি যথেষ্ট স্মার্ট নন +- সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। +- [জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [বিশ্বাস আপনি পরিবর্তন করতে পারেন](http://www.aaronsw.com/weblog/dweck) +- [ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন](https://www.youtube.com/watch?v=uPOJ1PR50ag) -##ভিডিও সংস্থান সম্পর্কে +## ভিডিও সংস্থান সম্পর্কে কিছু ভিডিও কেবল কোর্সেরা বা এডএক্স ক্লাসে ভর্তি হয়ে পাওয়া যায়। এগুলিকে এমওওসি বলা হয়। কখনও কখনও ক্লাসগুলি সেশনে হয় না তাই আপনাকে কয়েক মাস অপেক্ষা করতে হবে, যাতে আপনার অ্যাক্সেস নেই। @@ -287,7 +295,7 @@ আমি বিশ্ববিদ্যালয়ের বক্তৃতা ব্যবহার করতে পছন্দ করি। -##সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি +## সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি
<সুমারী> সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কারের প্রস্তুতি @@ -314,18 +322,18 @@
-##সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করুন +## সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করুন সাক্ষাত্কারের কোডিং অংশটি করতে আপনি স্বাচ্ছন্দ্যযুক্ত একটি ভাষা ব্যবহার করতে পারেন তবে বড় সংস্থাগুলির জন্য এগুলি কঠোর পছন্দ: --সি ++ --জাভা --পাইথন +- সি++ +- জাভা +- পাইথন আপনি এগুলি ব্যবহার করতে পারেন তবে প্রথমে পড়তে পারেন। সতর্কতা থাকতে পারে: --জাভাস্ক্রিপ্ট --রুবি +- জাভাস্ক্রিপ্ট +- রুবি এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: [কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) @@ -337,22 +345,22 @@ -http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -http://blog.codingforinterviews.com/best-programming-language-jobs/ -[ভাষার সংস্থানগুলি এখানে দেখুন] (প্রোগ্রামিং-ভাষা-সংস্করণ.এমডি) +[ভাষার সংস্থানগুলি এখানে দেখুন](প্রোগ্রামিং-ভাষা-সংস্করণ.এমডি) আপনি নীচে অন্তর্ভুক্ত কিছু সি, সি ++ এবং পাইথন শিখতে দেখবেন, কারণ আমি শিখছি। কয়েকটি বই জড়িত রয়েছে, নীচে দেখুন। -##বইএর তালিকা +## বইএর তালিকা আমি যা ব্যবহার করেছি তার চেয়ে এটি একটি সংক্ষিপ্ত তালিকা। এটি আপনার সময় বাঁচাতে সংক্ষেপে বর্ণিত। -###সাক্ষাত্কার প্রস্তুতি +### সাক্ষাত্কার প্রস্তুতি - [প্রোগ্রামিং সাক্ষাত্কারগুলি উদ্ভাসিত হয়েছে: সাক্ষাত্কারের মাধ্যমে আপনার কোডের কোডিং, ৪ র্থ সংস্করণ](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - -সি ++ এবং জাভাতে উত্তর - -কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি - -খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) + - সি ++ এবং জাভাতে উত্তর + - কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি + - খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) - [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - -জাভা উত্তর + - জাভা উত্তর
আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে @@ -360,13 +368,11 @@ একটি নির্বাচন করুন: - [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ) - -[বই](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) - -[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews) +- প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ)-[বই](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/)-[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews)
-###কম্পিউটার আর্কিটেকচার +### কম্পিউটার আর্কিটেকচার - [গ্রেট কোড লিখুন: খণ্ড ১: মেশিনটি বোঝা] (https://www.amazon.com/Write-Great-Code-Unders સમજ-ম্যাচাইন / ডিপি / 1593270038) -বইটি 2004 সালে প্রকাশিত হয়েছিল এবং এটি কিছুটা পুরানো হলেও সংক্ষেপে কম্পিউটার বোঝার জন্য এটি এক ভয়ঙ্কর উত্স। @@ -399,14 +405,14 @@ [অতিরিক্ত ভাষা-নির্দিষ্ট সংস্থানগুলি এখানে]] (প্রোগ্রামিং-ভাষাভাষা-উত্স.এমডি) -###সি ++ +### সি++
-সি ++ +সি++ আমি এই দুটি পড়িনি, তবে সেডজেউইক দ্বারা তারা উচ্চ মানের এবং রচিত। সে দুর্দান্ত। -- [সি ++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) +- [সি++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) - [সি ++ পার্ট 5 এ অ্যালগরিদম: গ্রাফ অ্যালগরিদম] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) আপনার যদি সি ++ এর জন্য আরও ভাল প্রস্তাবনা থাকে তবে দয়া করে আমাকে জানান। একটি বিস্তৃত রিসোর্স খুঁজছি। @@ -426,42 +432,42 @@ বা: - [জাভাতে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Data-Structures-Algorithms-Michael-গুডরিচ/dp/1118771338/) - -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - -ইউসি বার্কলে সিএস ইন্ট্রো কোর্সের জন্য textচ্ছিক পাঠ্য হিসাবে ব্যবহৃত - -নীচে পাইথন সংস্করণে আমার বইয়ের প্রতিবেদনটি দেখুন। এই বইটিতে একই বিষয় রয়েছে। + - গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা + - ইউসি বার্কলে সিএস ইন্ট্রো কোর্সের জন্য textচ্ছিক পাঠ্য হিসাবে ব্যবহৃত + - নীচে পাইথন সংস্করণে আমার বইয়ের প্রতিবেদনটি দেখুন। এই বইটিতে একই বিষয় রয়েছে।
-###পাইথন +### পাইথন
পাইথন - [পাইথনে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Structures-অ্যালগোরিদমস-পাইথন-মিশেল-গুডরিচ / ডিপি / 1118290275/) - -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - -আমি এই বই পছন্দ। এটি সব কিছুর আওতায় পড়ে। - -পাইথোনিক কোড - -আমার জ্বলজ্বল বইয়ের প্রতিবেদন: https://startupnextdoor.com/book-report-data-structures-এবং-algorithms-in-python/ + - গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা + - আমি এই বই পছন্দ। এটি সব কিছুর আওতায় পড়ে। + - পাইথোনিক কোড + - আমার জ্বলজ্বল বইয়ের প্রতিবেদন: https://startupnextdoor.com/book-report-data-structures-এবং-algorithms-in-python/
-##আপনি শুরু করার আগে +## আপনি শুরু করার আগে এই তালিকাটি কয়েক মাস ধরে বেড়েছে, এবং হ্যাঁ, এটি একধরণের হাতছাড়া হয়ে যায়। এখানে আমি কিছু ভুল করেছি যাতে আপনার আরও ভাল অভিজ্ঞতা হয়। -###1. আপনি সব মনে রাখবেন না +### 1. আপনি সব মনে রাখবেন না আমি কয়েক ঘন্টা ভিডিও দেখেছি এবং প্রচুর নোট নিয়েছি এবং কয়েক মাস পরে এমন অনেক কিছুই ছিল যা আমি মনে করি না। আমি যেতে 3 দিন কাটিয়েছি আমার নোটগুলি এবং ফ্ল্যাশকার্ডগুলি তৈরি করে যাতে আমি পর্যালোচনা করতে পারি। দয়া করে পড়ুন যাতে আপনি আমার ভুল করবেন না: -[কম্পিউটার বিজ্ঞান জ্ঞান পুনরুদ্ধার করা] (https://startupnextdoor.com/retaining-computer-s विज्ञान-জ্ঞান /) +[কম্পিউটার বিজ্ঞান জ্ঞান পুনরুদ্ধার করা](https://startupnextdoor.com/retaining-computer-s विज्ञान-জ্ঞান) -###2. ফ্ল্যাশকার্ড ব্যবহার করুন +### 2. ফ্ল্যাশকার্ড ব্যবহার করুন সমস্যা সমাধানের জন্য, আমি একটি সামান্য ফ্ল্যাশকার্ডস সাইট তৈরি করেছি যেখানে আমি 2 ধরণের ফ্ল্যাশকার্ড যুক্ত করতে পারি: সাধারণ এবং কোড। প্রতিটি কার্ডের আলাদা বিন্যাস রয়েছে। @@ -470,50 +476,50 @@ বিনামূল্যে নিজের তৈরি করুন: --[ফ্ল্যাশকার্ডস সাইটের রেপো] (https://github.com/jwasham/computer-science-flash-cards) --[আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)] (https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): --[আমার ফ্ল্যাশ কার্ডের ডাটাবেস (নতুন-1800 কার্ড)] (https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [ফ্ল্যাশকার্ডস সাইটের রেপো](https://github.com/jwasham/computer-science-flash-cards) +- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (নতুন-1800 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং সমাবেশগুলির ভাষা এবং পাইথন ট্রিভিয়া থেকে শুরু করে মেশিন লার্নিং এবং পরিসংখ্যানের সমস্ত কিছুর জন্য কার্ড রয়েছে। যা প্রয়োজন তার জন্য এটি অনেক বেশি। -** ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য: ** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে +**ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য:** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে একই কার্ড এবং এটি জেনে রাখার আগে বেশ কয়েকবার সঠিক উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীর করে দেবে আপনার মস্তিষ্ক. -আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার বিকল্প হ'ল [আনকি] (http://ankisrs.net/), যা আমার কাছে বহুবার প্রস্তাবিত হয়েছিল। এটি আপনাকে মনে রাখতে সহায়তা করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। +আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার বিকল্প হ'ল [আনকি](http://ankisrs.net/), যা আমার কাছে বহুবার প্রস্তাবিত হয়েছিল। এটি আপনাকে মনে রাখতে সহায়তা করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। এটি ব্যবহারকারী-বান্ধব, সমস্ত প্ল্যাটফর্মে উপলব্ধ এবং একটি ক্লাউড সিঙ্ক সিস্টেম রয়েছে। আইওএসে এটির দাম 25 ডলার তবে অন্যান্য প্ল্যাটফর্মগুলিতে বিনামূল্যে। -আনকি ফর্ম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেস: https://ankiweb.net/shared/info/25173560 (ধন্যবাদ [@ এক্সভিউনিয়া] (https://github.com/xiewenya)) +আনকি ফর্ম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেস: https://ankiweb.net/shared/info/25173560 (ধন্যবাদ [@ এক্সভিউনিয়া](https://github.com/xiewenya)) -###3. পর্যালোচনা, পর্যালোচনা, পর্যালোচনা +### 3. পর্যালোচনা, পর্যালোচনা, পর্যালোচনা আমি ASCII, ওএসআই স্ট্যাক, বিগ-ও স্বরলিপিগুলি এবং আরও অনেক কিছুতে চিট শীটের একটি সেট রাখি। আমার কিছুটা বাজে সময় পেলে আমি সেগুলি অধ্যয়ন করি। আধা ঘন্টার জন্য প্রোগ্রামিং সমস্যা থেকে বিরতি নিন এবং আপনার ফ্ল্যাশকার্ডগুলি দিয়ে যান। -###4. ফোকাস করুন +### 4. ফোকাস করুন অনেকগুলি বিভ্রান্তি রয়েছে যা মূল্যবান সময় নিতে পারে। ফোকাস এবং ঘনত্ব শক্ত। -##আপনি কি কভার দেখতে পাবেন না +## আপনি কি কভার দেখতে পাবেন না এগুলি প্রচলিত প্রযুক্তি তবে এই অধ্যয়ন পরিকল্পনার অংশ নয়: --এসকিউএল --জাভাস্ক্রিপ্ট --এইচটিএমএল, সিএসএস এবং অন্যান্য ফ্রন্ট-এন্ড প্রযুক্তি +- এসকিউএল +- জাভাস্ক্রিপ্ট +- এইচটিএমএল, সিএসএস এবং অন্যান্য ফ্রন্ট-এন্ড প্রযুক্তি -##দৈনিক পরিকল্পনা +## দৈনিক পরিকল্পনা কিছু বিষয় একদিন নেয়, এবং কিছুতে একাধিক দিন সময় লাগবে। কিছু বাস্তবায়নের কিছুই না দিয়ে কেবল শিখছে। প্রতিদিন আমি নীচের তালিকা থেকে একটি বিষয় নিয়ে যাই, সেই বিষয় সম্পর্কে ভিডিও দেখি এবং একটি বাস্তবায়ন এখানে লিখি: --সি-স্ট্রাকস এবং ফাংশনগুলি ব্যবহার করে যা স্ট্রাক * এবং আরজ হিসাবে অন্য কোনও কিছু নেয়। --সি ++-অন্তর্নির্মিত প্রকারগুলি ব্যবহার না করে --সি ++-অন্তর্নির্মিত প্রকারগুলি যেমন STL এর std :: লিঙ্কযুক্ত তালিকার জন্য তালিকা ব্যবহার করে --পাইথন-অন্তর্নির্মিত প্রকারগুলি (পাইথনের অনুশীলন চালিয়ে যেতে) ব্যবহার করে --এবং আমি এটি সঠিকভাবে করছি তা নিশ্চিত করার জন্য পরীক্ষাগুলি লিখুন, কখনও কখনও কেবল সাধারণ দাবী () বিবৃতি ব্যবহার করে --আপনি জাভা বা অন্য কিছু করতে পারেন, এটি কেবল আমার জিনিস। +- সি-স্ট্রাকস এবং ফাংশনগুলি ব্যবহার করে যা স্ট্রাক * এবং আরজ হিসাবে অন্য কোনও কিছু নেয়। +- সি ++-অন্তর্নির্মিত প্রকারগুলি ব্যবহার না করে +- সি ++-অন্তর্নির্মিত প্রকারগুলি যেমন STL এর std :: লিঙ্কযুক্ত তালিকার জন্য তালিকা ব্যবহার করে +- পাইথন-অন্তর্নির্মিত প্রকারগুলি (পাইথনের অনুশীলন চালিয়ে যেতে) ব্যবহার করে +- এবং আমি এটি সঠিকভাবে করছি তা নিশ্চিত করার জন্য পরীক্ষাগুলি লিখুন, কখনও কখনও কেবল সাধারণ দাবী () বিবৃতি ব্যবহার করে +- আপনি জাভা বা অন্য কিছু করতে পারেন, এটি কেবল আমার জিনিস। আপনার এসবের দরকার নেই। আপনার কেবলমাত্র [সাক্ষাত্কারের জন্য একটি ভাষা] প্রয়োজন (#সাক্ষাত্কারের জন্য এক-ভাষা বেছে নিন)। @@ -533,7 +539,7 @@ হোয়াইটবোর্ড বা কাগজে কোড লিখুন, কম্পিউটার নয়। কিছু নমুনা ইনপুট দিয়ে পরীক্ষা করুন। তারপরে এটি কম্পিউটারে পরীক্ষা করে দেখুন। -##পূর্বশর্ত জ্ঞান +## পূর্বশর্ত জ্ঞান
<সংশ্লেষ> পূর্বশর্ত জ্ঞান << সংক্ষিপ্ত> @@ -554,31 +560,30 @@
-##অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপোটিক বিশ্লেষণ +## অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপোটিক বিশ্লেষণ -
-<স্যুমারী> অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ - --বাস্তবায়নের কিছুই নেই --এখানে প্রচুর ভিডিও রয়েছে। যতক্ষণ না আপনি এটি বুঝতে পারছেন ঠিক ততক্ষণ দেখুন। আপনি সর্বদা ফিরে এসে পর্যালোচনা করতে পারেন। --কিছু বক্তৃতা যদি খুব ম্যাথিক হয় তবে আপনি ব্যাকগ্রাউন্ডের জ্ঞান পেতে নীচে নেমে গিয়ে আলাদা গণিতের ভিডিওগুলি দেখতে পারেন। -- [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)] (https://www.youtube.com/watch?v=V6mKVRU1evU) -- [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- স্কিয়েনা: - -[ভিডিও] (https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[স্লাইডস] (http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +--- + +- বাস্তবায়নের কিছুই নেই +- এখানে প্রচুর ভিডিও রয়েছে। যতক্ষণ না আপনি এটি বুঝতে পারছেন ঠিক ততক্ষণ দেখুন। আপনি সর্বদা ফিরে এসে পর্যালোচনা করতে পারেন। +- কিছু বক্তৃতা যদি খুব ম্যাথিক হয় তবে আপনি ব্যাকগ্রাউন্ডের জ্ঞান পেতে নীচে নেমে গিয়ে আলাদা গণিতের ভিডিওগুলি দেখতে পারেন। +- [ ] [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] স্কিয়েনা: + - [ভিডিও](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [স্লাইডস](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) - [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা] (http://discrete.gr/complexity/) - [বৃদ্ধির অর্ডার (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) - [অ্যাসিপটোটিকস (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) -- [ইউসি বার্কলে বিগ ও (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)] (https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [ইউসি বার্কলে বিগ ও (ভিডিও)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ ] [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [চিত্রিত "বিগ ও" (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) -- টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): - -[গণনামূলক জটিলতা: বিভাগ 1] (https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) - -[গণনামূলক জটিলতা: বিভাগ 2] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) -- [চিট শিট] (http://bigocheatsheet.com/) +- [ ] টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): + - [গণনামূলক জটিলতা: বিভাগ 1] (https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) + - [গণনামূলক জটিলতা: বিভাগ 2] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) +- [ ] [চিট শিট](http://bigocheatsheet.com/)
From db09565ebbcda033fdbbe49d02ebd0591bd7aac7 Mon Sep 17 00:00:00 2001 From: Anri Lombard <76818211+Anri-Lombard@users.noreply.github.com> Date: Wed, 23 Feb 2022 06:37:40 +0200 Subject: [PATCH 393/857] Updated MIT links MIT links updated where possible while (1) maintaining original context and content of videos, and (2) being more relevant with a fresher feel. Quick question: I've got links to free versions of most of the books you recommend. I suppose it is unethical to add these links, but if my judgement is wrong in any way I'll be happy to send them through. Another addition: I found doing LeetCode's "learn" series better than CTCI, do you think recommending that will be useful? --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 655d241c92..07d111a94f 100644 --- a/README.md +++ b/README.md @@ -771,7 +771,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) @@ -914,8 +914,8 @@ Graphs can be used to represent many problems in computer science, so this secti - When asked a question, look for a graph-based solution first, then move on if none - [ ] MIT(videos): - - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - [ ] Skiena Lectures - great intro: - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) @@ -928,8 +928,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Graphs (review and more): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) @@ -1834,10 +1834,10 @@ You're never really done. - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - **More Dynamic Programming** (videos) - - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) From 45001114cad63bc86fe15c219e54f8c8900dc193 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Kar Date: Wed, 23 Feb 2022 12:54:48 +0600 Subject: [PATCH 394/857] Fixed literal Translation and added missing info --- translations/README-bn.md | 407 ++++++++++++++++++++------------------ 1 file changed, 212 insertions(+), 195 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index cda7be5c1b..01338e97a1 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -88,7 +88,7 @@
-## এটা কি? +## এটি কি? ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) @@ -110,15 +110,15 @@ ### পাঠ পরিকল্পনা -- [এটি কী?](#এটি-কী) +- [এটি কি?](#এটি-কি?) - [কেন এটি ব্যবহার করবেন?](#এটি-কেন-ব্যবহার-করুন) - [এটি কীভাবে ব্যবহার করবেন](#এটি-কীভাবে-ব্যবহার-করবেন) -- [আপনি কি নিজেকে যথেষ্ট স্মার্ট ভাবেন নাহ](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) -- [ভিডিও রিসোর্স সম্পর্কে কিছু কথা](#ভিডিও-সংস্থান-সম্পর্কে) -- [একটি প্রোগ্রামিং ভাষা বেছে নিন](#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) -- [ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ](#বুক-তালিকা) -- [ইন্টারভিউ এর প্রস্তুতি এর বইসমুহ](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) -- [আমার ভুল গুলো করবেন নাহ](ভুল) +- [আপনি কি নিজেকে যথেষ্ট স্মার্ট ভাবেন নাহ](#আপনি-কি-নিজেকে-যথেষ্ট-স্মার্ট-ভাবেন-নাহ) +- [ভিডিও রিসোর্স সম্পর্কে কিছু কথা](#ভিডিও-রিসোর্স-সম্পর্কে-কিছু-কথা) +- [একটি প্রোগ্রামিং ভাষা বেছে নিন](#একটি-প্রোগ্রামিং-ভাষা-বেছে-নিন) +- [ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ](#ডাটা-স্ট্রাকচারএবং-এ্যালগোরিদম-এর-বইসমুহ) +- [ইন্টারভিউ এর প্রস্তুতি এর বইসমুহ](#ইন্টারভিউ-এর-প্রস্তুতি-এর-বইসমুহ) +- [আমার ভুল গুলো করবেন নাহ](আমার-ভুল-গুলো-করবেন-নাহ) - [এখানে যা শেখানো হবে না](#কী-আপনি-দেখতে-পাবেন-না) - [দৈনিক পরিকল্পনা](#দৈনিক-পরিকল্পনা) - [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) @@ -237,68 +237,232 @@ --- ## কেন এটি ব্যবহার করবেন? + +আপনি যদি সফটওয়্যার ইঞ্জিনিয়ার হিসেভে বড় কোম্পানি তে কাজ করতে চান তাহলে এই বিষয় গুলো আপনার জানা থাকা প্রয়োজন। + +আপনি যদি আমার মতো কম্পিউটার সাইন্স এর ডিগ্রি মা মিয়ে থাকেন তাহলে এটি আপনাকে কম্পিউটার সাইন্স এর চার বছরের কোর্স শিখতে সাহায্য করবে। + +আমি যখন এই প্রকল্পটি শুরু করেছি, তখন আমি একটি হিপ স্ট্যাক কিছুই জানতাম না, বিগ-ও জানতাম না, ট্রি সম্পর্কে কিছুই বা কীভাবে একটি গ্রাফ ট্রাভার্স করব কিছি জানতাম নাহ। যদি আমাকে কোনও সর্টিং অ্যালগরিদম কোড করতে বলা হতো, আমি তোমাকে বলতে পারি এটি খুব ভাল হত না। +আমি যে ডেটা স্ট্রাকচার ব্যবহার করেছি সেগুলি ভাষাতে বিল্ট ইন ছিল এবং তারা কীভাবে কাজ করেছিল তা আমি জানতাম না। আমি যে প্রোগ্রামটি চালাচ্ছিলাম তা যদি আমাকে "মেমোরি আউট অফ বাউন্ড" ইরোর না দেখাতো তাহলে আমি মেমরি ম্যানেজ করতাম নাহ। এবং এই ইরোর দিলে তখন আমি অন্য কোনো পথ বেছে নিতাম। আমি আমার জীবনে বহু বহুমাত্রিক অ্যারে ব্যবহার করেছি এবং সহস্রাধিক অ্যাসোসিয়েটিভ অ্যারে ব্যাবহার করেছি, তবে আমি স্ক্র্যাচ থেকে কখনও ডেটা স্ট্রাকচার তৈরি করি নি। -আমি যখন এই প্রকল্পটি শুরু করেছি, তখন আমি একটি স্তূপ থেকে একটি স্ট্যাক জানি না, বিগ-ও কিছুই জানতাম না, গাছ সম্পর্কে কিছুই বা কীভাবে করব -একটি গ্রাফ অতিক্রম করুন। যদি আমাকে কোনও বাছাই করা অ্যালগরিদম কোড করতে হয়, আমি তোমাকে বলতে পারি এটি খুব ভাল হত না। -আমি যে ডেটা কাঠামোটি ব্যবহার করেছি সেগুলি ভাষাতে নির্মিত হয়েছিল এবং তারা কীভাবে কাজ করেছিল তা আমি জানতাম না -আদৌ হুডের নিচে। আমি যে প্রক্রিয়াটি চালিয়ে যাচ্ছিলাম তা যদি না হয় তবে আমার কখনই মেমোরি পরিচালনা করতে হয়নি -স্মৃতিশক্তি "ত্রুটি, এবং তারপরে আমাকে একটি কাজের সন্ধান করতে হবে I've আমি আমার জীবনে কয়েকটি বহুমাত্রিক অ্যারে ব্যবহার করেছি এবং -সহস্রাধিক সংঘবদ্ধ অ্যারে, তবে আমি স্ক্র্যাচ থেকে কখনও ডেটা স্ট্রাকচার তৈরি করি নি। - -এটি একটি দীর্ঘ পরিকল্পনা। এটি আপনার কয়েক মাস সময় নিতে পারে। আপনি যদি ইতিমধ্যে এর অনেকের সাথে পরিচিত হন তবে আপনাকে অনেক কম সময় লাগবে। +এটি একটি দীর্ঘ পরিকল্পনা। এটি আপনার কয়েক মাস সময় নিতে পারে। আপনি যদি ইতিমধ্যে এর অনেক বিষয়ের সাথে পরিচিত হন তবে আপনাকে অনেক কম সময় লাগবে। ## এটি কিভাবে ব্যবহার করতে -
-এটি কীভাবে ব্যবহার করবেন - -নীচের সমস্ত কিছুই একটি রূপরেখা এবং আপনার আইটেমগুলি উপরের থেকে নীচে পর্যন্ত সামলানো উচিত। - -অগ্রগতি পরীক্ষা করার জন্য কার্য তালিকা সহ আমি গিথুবের বিশেষ মার্কডাউন গন্ধ ব্যবহার করছি। +নীচের সমস্ত কিছুই একটি রূপরেখা এবং আপনার আইটেমগুলি উপরের থেকে নীচে পর্যন্ত অনুসরন করা উচিত। -**একটি নতুন শাখা তৈরি করুন যাতে আপনি এর মতো আইটেমগুলি পরীক্ষা করতে পারেন, বন্ধনীগুলিতে কেবল একটি এক্স রাখুন: [x]** +আমি নিজের অগ্রগতি নোট করার জন্য আমি গিট-হাবের বিশেষ মার্কডাউন ফ্লেভার এর টাস্ক লিস্ট ব্যবহার করছি। +**একটি নতুন ব্রাঞ্চ তৈরি করুন যাতে আপনি এভাবে আইটেমগুলিতে টিক চিহ্ন ব্যাবহার করতে পারেন, বন্ধনীগুলিতে কেবল একটি এক্স রাখুন: [x]** - একটি শাখা কাঁটাচামচ করুন এবং নীচের আদেশগুলি অনুসরণ করুন + একটি ব্রাঞ্চ ফর্ক করুন এবং নীচের কমান্ডগুলি অনুসরণ করুন -`git checkout-b progress` +এই গিট-হাব রিপো টি ফর্ক করুন +https://github.com/jwasham/coding-interview-university +ফর্ক বাটনে চাপ দিয়ে -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +আপনার লোকাল রিপো তে ক্লোন করুন -`git fetch--all` - আপনার পরিবর্তনগুলি শেষ করার পরে এক্স সহ সমস্ত বাক্স চিহ্নিত করুন - -`git add .` - -`git commit-m "Marked x"` + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all -`git rebase jwasham/main` +আপনার পরিবর্তনগুলি শেষ করার পরে এক্স "X" চিহ্ন দিয়ে সমস্ত বাক্স চিহ্নিত করুন + + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force -`git push--force` -[গিথুব-স্বাদযুক্ত মার্কডাউন সম্পর্কে আরও](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +[গিট-হাব-ফ্লেভার্ড মার্কডাউন সম্পর্কে আরও জানুন](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -
-## মনে হয় না আপনি যথেষ্ট স্মার্ট নন +## আপনি কি নিজেকে যথেষ্ট স্মার্ট ভাবেন নাহ + - সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। -- [জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- [জিনিয়াস প্রোগ্রামার নিয়ে মিথ](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টার লড়াই করা](https://www.youtube.com/watch?v=1i8ylq4j_EY) - [বিশ্বাস আপনি পরিবর্তন করতে পারেন](http://www.aaronsw.com/weblog/dweck) - [ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন](https://www.youtube.com/watch?v=uPOJ1PR50ag) -## ভিডিও সংস্থান সম্পর্কে +## ভিডিও রিসোর্স সম্পর্কে কিছু কথা -কিছু ভিডিও কেবল কোর্সেরা বা এডএক্স ক্লাসে ভর্তি হয়ে পাওয়া যায়। এগুলিকে এমওওসি বলা হয়। +কিছু ভিডিও কেবল কোর্সেরা (Coursera) বা এডএক্স (EdX) ক্লাসে ভর্তি হয়ে পাওয়া যায়। এগুলিকে এমওওসি বলা হয়। কখনও কখনও ক্লাসগুলি সেশনে হয় না তাই আপনাকে কয়েক মাস অপেক্ষা করতে হবে, যাতে আপনার অ্যাক্সেস নেই। - আমি অনলাইনে কোর্স ভিডিও সহ ইউটিউব ভিডিও হিসাবে সর্বদা উপলব্ধ এবং সর্বদা উপলভ্য পাবলিক উত্স যোগ করতে আপনার সাহায্যের প্রশংসা করব। - আমি বিশ্ববিদ্যালয়ের বক্তৃতা ব্যবহার করতে পছন্দ করি। +অনলাইন কোর্স এর পরিবর্তে ফ্রি এবং সর্বদা পাওয়া যায় এমন পাব্লিক রিসোর্স যেমন ইউটিউব ভিডিও (আমি বিশ্ববিদ্যালয়ের বক্তৃতা ব্যবহার করতে পছন্দ করি।) ব্যাভয়ার করা ভালো হবে। যেন আপনারা যেকোনো সময় যেকোনো বিষয়ে পড়তে পারেন কোনো বিশেষ সময় কোনো কোর্স এর জন্য অপেক্ষা করতে নাহ হয়। + +## একটি প্রোগ্রামিং ভাষা বেছে নিন + +আপনি যে কোডিং সাক্ষাত্কারগুলি করবেন তার জন্য আপনাকে একটি প্রোগ্রামিং ভাষা পছন্দ করতে হবে, তবে আপনাকে এমন একটি ভাষাও খুঁজে বের করতে হবে যা আপনি কম্পিউটার সাইন্সের ধারণাগুলি অধ্যয়ন করতে ব্যবহার করতে পারবেন। + +ভালো হয় যদি এই দুইটি কাজে একই ভাষা ব্যাবহার করেন তাহলে আপনাকে একটি ভাষাতেই দক্ষ হতে হবে। + +### এই শিক্ষা পরিকল্পনার জন্য + +আমি যখন এই শিক্ষা পরিকল্পনা অনুসরন করেছিলাম তখন আমি সি ও পাইথন এই দুইটি ব্যাবহার করেছিলাম। + +- সি: এটি খুব ই লো লেভেল ল্যাংগুয়েজ। এটি আপনাকে পয়েন্টার এবং মেমরি অ্যালোকেশন / ডি-অ্যালোকেশন নিয়ে কাজ করতে দিবে। যার মাধ্যমে আপনি ভালো ভাবে অ্যালগোরিদম ও ডাটা স্ট্রাকচার শিখতে পারবেন। পাইথন ও জাভা হলো হাই লেভেল ল্যাংগুয়েজ এই ল্যাংগুয়েজ গুলোতে আপনার থেকে এই বিষয় গুলো লুকানো থাকে। দৈনিক কাজের ক্ষেত্রে যাহ খুব ই সুবিধা জনক কিন্ত শেখার ক্ষেত্রে যখন আপনি লো লেভেল ডাটা স্ট্রাকচার কিভাবে বানানো হয় শিখছেন তখন যতো লো লেভেল অর্থাৎ হার্ডওয়্যার এর কাছাকাছি এক্সহেখাই ভালো। + - সি এর ব্যাবহার সর্বত্র। এর উদারন আপনি বই, ভিডিও, লেকচার, যেখানেই পড়বেন সেখানেই দেখতে পাবেন। + - [দি সি প্রোগ্রামিং ল্যাংগুয়েজ, ভলিউম ২](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষার উপর একটি দুর্দান্ত দক্ষতা দেবে এবং আপনি যদি এটি একটু অনুশীলন করেন তবে আপনি দ্রুত দক্ষ হয়ে উঠবেন। সি বুঝতে পারলে আপনি প্রোগ্রাম এবং মেমরি কিভাবে কাজ করে তা বুঝতে পারবেন। + - আপনাকে বইটির গভীরে যেতে হবে না (বা এমনকি এটি শেষ করতে হবে না)। শুধু যেটুকু পড়লে আপনি সি-তে পড়তে এবং লিখতে স্বাচ্ছন্দ্য বোধ করেন সেটুকু পড়ুন। + - [বইটির প্রশ্নের উত্তর](https://github.com/lekkas/c-algorithms) +- পাইথন: আধুনিক এবং খুব অভিব্যক্তিপূর্ণ, আমি এটি শিখেছি কারণ এটি খুব দরকারী এবং আমাকে একটি সাক্ষাত্কারে কম কোড লিখতে সাহায্য করে। + +এগুলো আমার পছন্দ। কিন্ত আপনার পছন্দ অনুযায়ী আপনি শিখবেন। + +আপানার হয়তো লাগবে নাহ কিন্ত এখানে নতুন কিছু ল্যাংগুয়েজ শেখার কিছু ওয়েবসাইট দেওয়া হলো: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +### আপনার কোডিং সাক্ষাত্কার এর জন্য + +সাক্ষাত্কারের কোডিং অংশটি করতে আপনি যে ভাষাতে স্বাচ্ছন্দ্য বোধ করেন তা ব্যবহার করতে পারেন, তবে বড় কোম্পানিগুলির জন্য, এইগুলি ভালো পছন্দ: +- সি++ +- জাভা +- পাইথন + +আপনি এগুলি ও ব্যাবহার করতে পারেন তবে আগে থেকে জেনে নিবেন কারন নানা রকম সমস্যায় ভুগতে পারেন: +- জাভা স্ক্রিপ্ট +- রুবি + +এখানে আমার লেখা একটি আর্টিকেল আছে যেখানে সাক্ষাত্কারের জন্য ল্যাংগুয়েজ নিয়ে আমি বলেছি। +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +এই আর্টিকেল এর উপর ভিত্তি করী আমি আমার আর্টিকেলটি লিখেছিলাম: 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) + +## ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ + +এই বইটি কম্পিউটার সাইন্সের জন্য আপনার ভিত্তি তৈরি করবে। + +আপনি স্বাচ্ছন্দ্য বোধ করবেন শুধুমাত্র এমন একটি ভাষা বেছে নিন। আপনি অনেক পড়তে এবং কোডিং করতে হবে। + +### সি +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - বেসিক, ডাটা স্ট্রাকচার, সোর্টিং, সার্চিং, গ্রাফ এবং অ্যালগোরিদম + +### পাইথন + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - লেখক Goodrich, Tamassia, Goldwasser + - আমি এই বইটি খুব পছন্দ করেছি। আমি এটার সব পড়েছি + - Pythonic code + - এই বই এর উপর লেখা আমার বুক রিপোর্ট: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### জাভা + +আপনার পছন্দ: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - ফ্রি কোর্সেরা (Coursera) কোর্স যা এই বইতে পড়ানো হয় তা নিয়ে (বই এর লেখকেরা শেখান!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### সি++ + +আপনার পছন্দ: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + + + +## ইন্টারভিউ এর প্রস্তুতি এর বইসমুহ + +আপনি এতগুলো কিনতে হবে না। সত্যি বলতে "ক্রাকিং দ্য কোডিং ইন্টারভিউ" সম্ভবত যথেষ্ট, তবে আমি নিজে আরও অনুশীলন এর জন্য আরও কিছু কিনেছি। কিন্তু আমি সবসময় খুব বেশি করি। + +আমি এই দুটি কিনেছিলাম। এগুলো থেকে আমার প্রচুর প্রাক্টিস হয়েছে + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - সি ++ এবং জাভাতে উত্তর + - কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি + - খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - জাভাতে উত্তর + +### আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে + +একটি পছন্দ করুন: +- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (পাইথন সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)- [সহায়ক প্রোজেক্ট-বইয়ের প্রতিটি সমস্যার জন্য মেথড স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews) -## সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি +## আমার ভুল গুলো করবেন নাহ -
-<সুমারী> সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কারের প্রস্তুতি +এই তালিকাটি কয়েক মাস ধরে বেড়েছে, এবং হ্যাঁ, এটি একধরণের হাতছাড়া হয়ে যায়। + +এখানে আমি কিছু ভুল করেছি যাতে আপনার আরও ভাল অভিজ্ঞতা হয়। এবং আপান্র অনেক সময় ও বাঁচবে। + +### 1. আপনি সব মনে রাখতে পারবেন না + +আমি কয়েক ঘন্টা ভিডিও দেখেছি এবং প্রচুর নোট নিয়েছি এবং কয়েক মাস পরে এমন অনেক কিছুই ছিল যা আমি মনে রাখতে পারিনি। আমি যেতে ৩ দিন কাটিয়েছি আমার নোটগুলি এবং ফ্ল্যাশকার্ডগুলি তৈরি করে যাতে আমি পর্যালোচনা করতে পারি। কিন্ত আমার এগুলোর দরকার ছিলো নাহ। + +দয়া করে পড়ুন যাতে আপনি আমার ভুল না করেন: + +[কম্পিউটার বিজ্ঞান এর জ্ঞান মনে রাখা](https://startupnextdoor.com/retaining-computer-science-knowledge/) + +### 2. ফ্ল্যাশকার্ড ব্যবহার করুন + +সমস্যা সমাধানের জন্য, আমি একটি সামান্য ফ্ল্যাশকার্ডস সাইট তৈরি করেছি যেখানে আমি ২ ধরণের ফ্ল্যাশকার্ড যুক্ত করতে পারি: সাধারণ এবং কোড। +প্রতিটি কার্ডের আলাদা বিন্যাস রয়েছে। + +আমি একটি মোবাইল প্রথম ওয়েবসাইট তৈরি করেছি যাতে আমি যেখানেই থাকি না কেন আমার ফোন এবং ট্যাবলেটে পর্যালোচনা করতে পারি। + +বিনামূল্যে নিজের তৈরি করুন: + +- [ফ্ল্যাশকার্ডস সাইটের রিপো](https://github.com/jwasham/computer-science-flash-cards) + +**আমি আমার ফ্ল্যাশকার্ডগুলি ব্যবহার করার পরামর্শ দিই না।** অনেকগুলি আছে এবং তাদের মধ্যে অনেকগুলি তুচ্ছ বিষয় যা আপনার প্রয়োজন নেই. + +তবু যদি আপনি আপনি আমার কথা শুনতে নাহ চান। এখানে ফ্ল্যাশ কার্ড গুলি পাবেন: +- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (নতুন-1800 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং সমাবেশগুলির ভাষা এবং পাইথন ট্রিভিয়া থেকে শুরু করে মেশিন লার্নিং এবং পরিসংখ্যানের সমস্ত কিছুর জন্য কার্ড রয়েছে। যা প্রয়োজন তার জন্য এটি অনেক বেশি। + +**ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য:** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে +একই কার্ড এবং এটি জেনে রাখার আগে বেশ কয়েকবার সঠিক উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীর করে দেবে +আপনার মস্তিষ্ক. + +আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার বিকল্প হ'ল [আনকি](http://ankisrs.net/), যা আমার কাছে বহুবার প্রস্তাবিত হয়েছিল। এটি আপনাকে মনে রাখতে সহায়তা করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। +এটি ব্যবহারকারী-বান্ধব, সমস্ত প্ল্যাটফর্মে উপলব্ধ এবং একটি ক্লাউড সিঙ্ক সিস্টেম রয়েছে। আইওএসে এটির দাম 25 ডলার তবে অন্যান্য প্ল্যাটফর্মগুলিতে বিনামূল্যে। + +আনকি ফর্ম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেস: https://ankiweb.net/shared/info/25173560 (ধন্যবাদ [@ এক্সভিউনিয়া](https://github.com/xiewenya)) + +### 3. পর্যালোচনা, পর্যালোচনা, পর্যালোচনা + +আমি ASCII, ওএসআই স্ট্যাক, বিগ-ও স্বরলিপিগুলি এবং আরও অনেক কিছুতে চিট শীটের একটি সেট রাখি। আমার কিছুটা বাজে সময় পেলে আমি সেগুলি অধ্যয়ন করি। + +আধা ঘন্টার জন্য প্রোগ্রামিং সমস্যা থেকে বিরতি নিন এবং আপনার ফ্ল্যাশকার্ডগুলি দিয়ে যান। + +### 4. ফোকাস করুন + +অনেকগুলি বিভ্রান্তি রয়েছে যা মূল্যবান সময় নিতে পারে। ফোকাস এবং ঘনত্ব শক্ত। + + + - [এ বি সি: সর্বদা কোডিং থাকুন](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [হোয়াইটবোর্ডিং](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) @@ -320,57 +484,13 @@ - [ডেটা স্ট্রাকচার এবং অ্যালগোরিদম ন্যানোডগ্রি! (উদাস্তিটি ন্যানোডগ্রি প্রদান করেছে)](https://www.udacity.com/course/data-structures-এবং-algorithms-nanodegree--nd256): -100 টিরও বেশি ডেটা স্ট্রাকচার এবং অ্যালগরিদম অনুশীলন এবং আপনাকে একটি সাক্ষাত্কারের জন্য এবং কাজের সুযোগে দৃশ্যের জন্য আপনাকে প্রস্তুত করতে ডেডিকেটেড পরামর্শদাতার দিকনির্দেশ দিয়ে অনুশীলন পান। -
- -## সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করুন - -সাক্ষাত্কারের কোডিং অংশটি করতে আপনি স্বাচ্ছন্দ্যযুক্ত একটি ভাষা ব্যবহার করতে পারেন তবে বড় সংস্থাগুলির জন্য এগুলি কঠোর পছন্দ: - -- সি++ -- জাভা -- পাইথন - -আপনি এগুলি ব্যবহার করতে পারেন তবে প্রথমে পড়তে পারেন। সতর্কতা থাকতে পারে: - -- জাভাস্ক্রিপ্ট -- রুবি - -এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: [কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) - -এই মূল নিবন্ধটি আমার পোস্টের উপর ভিত্তি করে ছিল: http://blog.codingforinterviews.com/best-programming-language-jobs/ - -আপনার ভাষায় খুব স্বাচ্ছন্দ্য বোধ করা এবং বুদ্ধিমান হওয়া দরকার। - -পছন্দ সম্পর্কে আরও পড়ুন: --http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ --http://blog.codingforinterviews.com/best-programming-language-jobs/ - -[ভাষার সংস্থানগুলি এখানে দেখুন](প্রোগ্রামিং-ভাষা-সংস্করণ.এমডি) +### সাক্ষাত্কার প্রস্তুতি -আপনি নীচে অন্তর্ভুক্ত কিছু সি, সি ++ এবং পাইথন শিখতে দেখবেন, কারণ আমি শিখছি। কয়েকটি বই জড়িত রয়েছে, নীচে দেখুন। ## বইএর তালিকা আমি যা ব্যবহার করেছি তার চেয়ে এটি একটি সংক্ষিপ্ত তালিকা। এটি আপনার সময় বাঁচাতে সংক্ষেপে বর্ণিত। -### সাক্ষাত্কার প্রস্তুতি - -- [প্রোগ্রামিং সাক্ষাত্কারগুলি উদ্ভাসিত হয়েছে: সাক্ষাত্কারের মাধ্যমে আপনার কোডের কোডিং, ৪ র্থ সংস্করণ](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - সি ++ এবং জাভাতে উত্তর - - কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি - - খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) -- [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - জাভা উত্তর - -
-আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে - -একটি নির্বাচন করুন: - -- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ)-[বই](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/)-[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews) - -
### কম্পিউটার আর্কিটেকচার @@ -394,112 +514,9 @@ -###ভাষা নির্দিষ্ট - -** আপনাকে সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করতে হবে (উপরে দেখুন) * ** - -ভাষা অনুসারে আমার প্রস্তাবনা এখানে রইল। আমার কাছে সমস্ত ভাষার জন্য সংস্থান নেই। আমি সংযোজন স্বাগত জানাই। - -আপনি যদি এর মধ্যে একটির মাধ্যমে পড়ে থাকেন তবে আপনার কোডিং সমস্যাগুলি শুরু করতে হবে এমন সমস্ত ডেটা স্ট্রাকচার এবং অ্যালগরিদম জ্ঞান থাকা উচিত। -** আপনি যদি কোনও পর্যালোচনা না চান তবে আপনি এই প্রকল্পের সমস্ত ভিডিও বক্তৃতা ** এড়িয়ে যেতে পারেন। - -[অতিরিক্ত ভাষা-নির্দিষ্ট সংস্থানগুলি এখানে]] (প্রোগ্রামিং-ভাষাভাষা-উত্স.এমডি) - -### সি++ - -
-সি++ - -আমি এই দুটি পড়িনি, তবে সেডজেউইক দ্বারা তারা উচ্চ মানের এবং রচিত। সে দুর্দান্ত। - -- [সি++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) -- [সি ++ পার্ট 5 এ অ্যালগরিদম: গ্রাফ অ্যালগরিদম] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -আপনার যদি সি ++ এর জন্য আরও ভাল প্রস্তাবনা থাকে তবে দয়া করে আমাকে জানান। একটি বিস্তৃত রিসোর্স খুঁজছি। - -
- -###জাভা - -
-জাভা - -- [অ্যালগোরিদম (সেডজউইক এবং ওয়েইন)] (https://www.amazon.com/Algorithms-4th-রবার্ট-সেজজউইক / dp/032157351X/) - -পাঠ্যক্রমের বইয়ের সামগ্রী (এবং সেডজউইক!) সহ ভিডিও: - -[অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) - -[অ্যালগোরিদম II] (https://www.coursera.org/learn/algorithms-part2) - -বা: - -- [জাভাতে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Data-Structures-Algorithms-Michael-গুডরিচ/dp/1118771338/) - - গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - - ইউসি বার্কলে সিএস ইন্ট্রো কোর্সের জন্য textচ্ছিক পাঠ্য হিসাবে ব্যবহৃত - - নীচে পাইথন সংস্করণে আমার বইয়ের প্রতিবেদনটি দেখুন। এই বইটিতে একই বিষয় রয়েছে। - -
- -### পাইথন - -
-পাইথন - -- [পাইথনে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Structures-অ্যালগোরিদমস-পাইথন-মিশেল-গুডরিচ / ডিপি / 1118290275/) - - গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - - আমি এই বই পছন্দ। এটি সব কিছুর আওতায় পড়ে। - - পাইথোনিক কোড - - আমার জ্বলজ্বল বইয়ের প্রতিবেদন: https://startupnextdoor.com/book-report-data-structures-এবং-algorithms-in-python/ - -
- - -## আপনি শুরু করার আগে - -এই তালিকাটি কয়েক মাস ধরে বেড়েছে, এবং হ্যাঁ, এটি একধরণের হাতছাড়া হয়ে যায়। - -এখানে আমি কিছু ভুল করেছি যাতে আপনার আরও ভাল অভিজ্ঞতা হয়। - -### 1. আপনি সব মনে রাখবেন না - -আমি কয়েক ঘন্টা ভিডিও দেখেছি এবং প্রচুর নোট নিয়েছি এবং কয়েক মাস পরে এমন অনেক কিছুই ছিল যা আমি মনে করি না। আমি যেতে 3 দিন কাটিয়েছি -আমার নোটগুলি এবং ফ্ল্যাশকার্ডগুলি তৈরি করে যাতে আমি পর্যালোচনা করতে পারি। - -দয়া করে পড়ুন যাতে আপনি আমার ভুল করবেন না: - -[কম্পিউটার বিজ্ঞান জ্ঞান পুনরুদ্ধার করা](https://startupnextdoor.com/retaining-computer-s विज्ञान-জ্ঞান) - -### 2. ফ্ল্যাশকার্ড ব্যবহার করুন - -সমস্যা সমাধানের জন্য, আমি একটি সামান্য ফ্ল্যাশকার্ডস সাইট তৈরি করেছি যেখানে আমি 2 ধরণের ফ্ল্যাশকার্ড যুক্ত করতে পারি: সাধারণ এবং কোড। -প্রতিটি কার্ডের আলাদা বিন্যাস রয়েছে। - -আমি একটি মোবাইল প্রথম ওয়েবসাইট তৈরি করেছি যাতে আমি যেখানেই থাকি না কেন আমার ফোন এবং ট্যাবলেটে পর্যালোচনা করতে পারি। - -বিনামূল্যে নিজের তৈরি করুন: - -- [ফ্ল্যাশকার্ডস সাইটের রেপো](https://github.com/jwasham/computer-science-flash-cards) -- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (নতুন-1800 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): - -মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং সমাবেশগুলির ভাষা এবং পাইথন ট্রিভিয়া থেকে শুরু করে মেশিন লার্নিং এবং পরিসংখ্যানের সমস্ত কিছুর জন্য কার্ড রয়েছে। যা প্রয়োজন তার জন্য এটি অনেক বেশি। - -**ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য:** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে -একই কার্ড এবং এটি জেনে রাখার আগে বেশ কয়েকবার সঠিক উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীর করে দেবে -আপনার মস্তিষ্ক. - -আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার বিকল্প হ'ল [আনকি](http://ankisrs.net/), যা আমার কাছে বহুবার প্রস্তাবিত হয়েছিল। এটি আপনাকে মনে রাখতে সহায়তা করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। -এটি ব্যবহারকারী-বান্ধব, সমস্ত প্ল্যাটফর্মে উপলব্ধ এবং একটি ক্লাউড সিঙ্ক সিস্টেম রয়েছে। আইওএসে এটির দাম 25 ডলার তবে অন্যান্য প্ল্যাটফর্মগুলিতে বিনামূল্যে। - -আনকি ফর্ম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেস: https://ankiweb.net/shared/info/25173560 (ধন্যবাদ [@ এক্সভিউনিয়া](https://github.com/xiewenya)) - -### 3. পর্যালোচনা, পর্যালোচনা, পর্যালোচনা - -আমি ASCII, ওএসআই স্ট্যাক, বিগ-ও স্বরলিপিগুলি এবং আরও অনেক কিছুতে চিট শীটের একটি সেট রাখি। আমার কিছুটা বাজে সময় পেলে আমি সেগুলি অধ্যয়ন করি। - -আধা ঘন্টার জন্য প্রোগ্রামিং সমস্যা থেকে বিরতি নিন এবং আপনার ফ্ল্যাশকার্ডগুলি দিয়ে যান। + -### 4. ফোকাস করুন -অনেকগুলি বিভ্রান্তি রয়েছে যা মূল্যবান সময় নিতে পারে। ফোকাস এবং ঘনত্ব শক্ত। ## আপনি কি কভার দেখতে পাবেন না From 9ec5acf77db43b50303168ef5cac03e025625344 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Kar Date: Wed, 23 Feb 2022 13:04:03 +0600 Subject: [PATCH 395/857] Fixed broken section linking --- translations/README-bn.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 01338e97a1..ef9e27fb4c 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -88,7 +88,7 @@
-## এটি কি? +## এটি কি ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) @@ -110,15 +110,15 @@ ### পাঠ পরিকল্পনা -- [এটি কি?](#এটি-কি?) -- [কেন এটি ব্যবহার করবেন?](#এটি-কেন-ব্যবহার-করুন) +- [এটি কি](#এটি-কি) +- [কেন এটি ব্যবহার করবেন](#কেন-এটি-ব্যবহার-করবেন) - [এটি কীভাবে ব্যবহার করবেন](#এটি-কীভাবে-ব্যবহার-করবেন) - [আপনি কি নিজেকে যথেষ্ট স্মার্ট ভাবেন নাহ](#আপনি-কি-নিজেকে-যথেষ্ট-স্মার্ট-ভাবেন-নাহ) - [ভিডিও রিসোর্স সম্পর্কে কিছু কথা](#ভিডিও-রিসোর্স-সম্পর্কে-কিছু-কথা) - [একটি প্রোগ্রামিং ভাষা বেছে নিন](#একটি-প্রোগ্রামিং-ভাষা-বেছে-নিন) -- [ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ](#ডাটা-স্ট্রাকচারএবং-এ্যালগোরিদম-এর-বইসমুহ) +- [ডাটা স্ট্রাকচার এবং এ্যালগোরিদম এর বইসমুহ](#ডাটা-স্ট্রাকচার-এবং-এ্যালগোরিদম-এর-বইসমুহ) - [ইন্টারভিউ এর প্রস্তুতি এর বইসমুহ](#ইন্টারভিউ-এর-প্রস্তুতি-এর-বইসমুহ) -- [আমার ভুল গুলো করবেন নাহ](আমার-ভুল-গুলো-করবেন-নাহ) +- [আমার ভুল গুলো করবেন নাহ](#আমার-ভুল-গুলো-করবেন-নাহ) - [এখানে যা শেখানো হবে না](#কী-আপনি-দেখতে-পাবেন-না) - [দৈনিক পরিকল্পনা](#দৈনিক-পরিকল্পনা) - [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) @@ -236,7 +236,7 @@ --- -## কেন এটি ব্যবহার করবেন? +## কেন এটি ব্যবহার করবেন আপনি যদি সফটওয়্যার ইঞ্জিনিয়ার হিসেভে বড় কোম্পানি তে কাজ করতে চান তাহলে এই বিষয় গুলো আপনার জানা থাকা প্রয়োজন। @@ -247,7 +247,7 @@ এটি একটি দীর্ঘ পরিকল্পনা। এটি আপনার কয়েক মাস সময় নিতে পারে। আপনি যদি ইতিমধ্যে এর অনেক বিষয়ের সাথে পরিচিত হন তবে আপনাকে অনেক কম সময় লাগবে। -## এটি কিভাবে ব্যবহার করতে +## এটি কীভাবে ব্যবহার করবেন নীচের সমস্ত কিছুই একটি রূপরেখা এবং আপনার আইটেমগুলি উপরের থেকে নীচে পর্যন্ত অনুসরন করা উচিত। From 07eba105015c089e1ac6bc701c31619a2ab22b22 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 24 Feb 2022 17:37:53 -0800 Subject: [PATCH 396/857] Removed broken link. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 07d111a94f..41f8fbc62c 100644 --- a/README.md +++ b/README.md @@ -1731,7 +1731,6 @@ You're never really done. - ### k-D Trees - Great for finding number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists From f48006403a2bc35abfefa9ceb03f937323d526a7 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 24 Feb 2022 18:04:07 -0800 Subject: [PATCH 397/857] Updated Skiena videos. --- README.md | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 41f8fbc62c..535c72ce14 100644 --- a/README.md +++ b/README.md @@ -578,9 +578,7 @@ But don't forget to do coding problems from above while you learn! - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](https://archive.org/details/lecture2_202008) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] TopCoder (includes recurrence relations and master theorem): @@ -918,12 +916,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 12 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - [ ] Graphs (review and more): @@ -935,7 +933,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) @@ -978,11 +975,11 @@ Graphs can be used to represent many problems in computer science, so this secti - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) @@ -1045,9 +1042,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) @@ -1883,10 +1881,8 @@ You're never really done. - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) ## Video Series @@ -1900,8 +1896,7 @@ Sit back and enjoy. - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) - [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) From ceeb30fca8e7db12e78cb43469ffcf71b50b58d7 Mon Sep 17 00:00:00 2001 From: John Washam Date: Thu, 24 Feb 2022 18:06:12 -0800 Subject: [PATCH 398/857] Removed private list. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 535c72ce14..d3fd43059b 100644 --- a/README.md +++ b/README.md @@ -1906,8 +1906,6 @@ Sit back and enjoy. - [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ - - [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) - [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) From 4e17873436301964d5de38181045ad0d637c34c7 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Mon, 28 Feb 2022 15:34:02 +0100 Subject: [PATCH 399/857] Remove broken k-d Trees video link from README-bg.md --- translations/README-bg.md | 1 - 1 file changed, 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 3d1d59a2d0..6fe3e61529 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1718,7 +1718,6 @@ Mock интервюта: - Great for finding number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists From 7b21f1bc002bb3520eeb6f56e71b61de873a85b1 Mon Sep 17 00:00:00 2001 From: KiwiB0y Date: Mon, 28 Feb 2022 15:36:03 +0100 Subject: [PATCH 400/857] Add Bulgarian translation to the k-d Trees section --- translations/README-bg.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 6fe3e61529..afe45bb31b 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1716,8 +1716,8 @@ Mock интервюта: - ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object - - A good fit for k-nearest neighbors + - Подходящи за намиране на брой точки в квадратен или по-висш по размерност обект + - Подходящи за к-ти близки съседи - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists From 4f8467fbf3f2cf425547400a8c3fae6c14dcb3eb Mon Sep 17 00:00:00 2001 From: Colin McCormack <80981213+NorthernSantan@users.noreply.github.com> Date: Sat, 5 Mar 2022 17:52:09 -0500 Subject: [PATCH 401/857] translate choose a language --- translations/README-fr.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index c845374604..a8b173efff 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -310,31 +310,31 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo - [ ] ['Comment obtenir un emploi aux grandes quatre - Amazon, Facebook, Google & Microsoft' (vidéo)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [Échouer à une entrevue de Google](http://alexbowe.com/failing-at-google-interviews/) -## Pick One Language for the Interview +## Choisis une langue pour l'Entrevue -I wrote this short article about it: [Important: Pick One Language for the Google Interview](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) +Je l'ai écrit cet article à propos de cela : [Important: Chois une langue pour l'entrevue Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) -You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices: +Tu peux choisir une langue avec laquelle vos êtes comftortable pour fair la partie de codage, mais pour Google, celles-ci sont les bons choix: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Tu pourrais aussi faire celles-ci, mais fait de la recherche avant. Il y aurait peut-être des problèmes: - JavaScript - Ruby -You need to be very comfortable in the language and be knowledgeable. +Tu dois être très comfortable avec la langue et tu dois aussi savoir beaucoup à propos la langue. -Read more about choices: +Lit à propos vos choix: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ - https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview -[See language resources here](programming-language-resources.md) +[Regarde les ressources pour chaque langue ici](programming-language-resources.md) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +Vous voyiez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui va t'aider, regarde en dessous. ## Book List From dfdfc0621663bd70a4c122fe8b9100d4f9b7d9f6 Mon Sep 17 00:00:00 2001 From: Omer Date: Sun, 6 Mar 2022 12:23:47 +0200 Subject: [PATCH 402/857] Fix 2 typos in hebrew translation --- translations/README-he.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-he.md b/translations/README-he.md index 1eb35cccf9..34049b780f 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -60,7 +60,7 @@ ערכתי וקיצרתי עבורכם את מה שלדעתי נדרש עבור מהנדס תוכנה מתחיל עם מעט ניסיון מתוך המקורות הנ"ל. עבור אלו מכם הרוצים הסבת מקצוע מפיתוח אתרים או פיתוח תוכנה בתפקידים כאלו ואחרים שאינם הנדסת תוכנה. עבור אלו מכם בעלי הניסיון כמהנדסי תוכנה, בייחוד אם ישנן שנות ניסיון רבות כמהנדס תוכנה בתחום, המשימות הנ"ל עלולות להיות קלות מדי והציפיות מהם בראיון לגוגל יהיו הרבה יותר גבוהות. -במידה ואתם בעלי מספר שנות ניסיון כמפתחים, גוגל רואה בהנדסת תוכנה משהו שונה מתכנות נטו ולכן הדרישות הן שונות ודבוהות יותר. +במידה ואתם בעלי מספר שנות ניסיון כמפתחים, גוגל רואה בהנדסת תוכנה משהו שונה מתכנות נטו ולכן הדרישות הן שונות וגבוהות יותר. עבור מהנדסי המערכת ומהנדסי האמינות שביניכם, השקיעו יותר בחומר המופיע ב"רשימת הרשות" זוהי רשימת משימות המכילה נושאי רשות עבור מהנדס תוכנה. --- ## תוכן העניינים Table of Contents @@ -190,7 +190,7 @@ אני מתכונן לראיון בגוגל תוך כדי יישום תוכנית זו. בניתי את הרשת, בניתי שרותים ברשת, אני בונה ומשיק סטארטאפים מאז 1997. יש לי תואר בכלכלה, לא במדעי המחשב. הייתה לי קריירה מוצלחת אבל אני חולם לעבוד בגוגל. -אני רוצה להתקדם ולעבוד עם מערכות גדולות יותר ולקבל הבנה מעמירה של מערכות מחשוב, אלגוריתמים יעילים, התנהגות בסיסי נתונים, +אני רוצה להתקדם ולעבוד עם מערכות גדולות יותר ולקבל הבנה מעמיקה של מערכות מחשוב, אלגוריתמים יעילים, התנהגות בסיסי נתונים, I'm following this plan to prepare for my Google interview. I've been building the web, building services, and launching startups since 1997. I have an economics degree, not a CS degree. I've been very successful in my career, but I want to work at Google. I want to progress into larger systems From 95011daa7b1aa56b48a9e28153a4d03ebc31c3c3 Mon Sep 17 00:00:00 2001 From: ibrahimhasnat Date: Mon, 7 Mar 2022 00:25:49 +0600 Subject: [PATCH 403/857] Fixed simple ordering mistake in the Graph section --- README.md | 201 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 110 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index d3fd43059b..750413fb03 100644 --- a/README.md +++ b/README.md @@ -129,51 +129,60 @@ software development/engineering roles. ### Topics of Study -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [How computers process a program](#how-computers-process-a-program) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [Final Review](#final-review) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [The Study Plan](#the-study-plan) + - [Topics of Study](#topics-of-study) + - [Getting the Job](#getting-the-job) + - [Optional Extra Topics & Resources](#optional-extra-topics--resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [A Note About Video Resources](#a-note-about-video-resources) + - [Choose a Programming Language](#choose-a-programming-language) + - [For this Study Plan](#for-this-study-plan) + - [For your Coding Interview](#for-your-coding-interview) + - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) + - [Interview Prep Books](#interview-prep-books) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Don't Make My Mistakes](#dont-make-my-mistakes) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) + - [4. Focus](#4-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Coding Question Practice](#coding-question-practice) + - [Coding Problems](#coding-problems) + - [Let's Get Started](#lets-get-started) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [Final Review](#final-review) + - [Update Your Resume](#update-your-resume) + - [Find a Job](#find-a-job) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) ### Getting the Job @@ -188,50 +197,60 @@ software development/engineering roles. ### Optional Extra Topics & Resources -- [Additional Books](#additional-books) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [The Study Plan](#the-study-plan) + - [Topics of Study](#topics-of-study) + - [Getting the Job](#getting-the-job) + - [Optional Extra Topics & Resources](#optional-extra-topics--resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [A Note About Video Resources](#a-note-about-video-resources) + - [Choose a Programming Language](#choose-a-programming-language) + - [For this Study Plan](#for-this-study-plan) + - [For your Coding Interview](#for-your-coding-interview) + - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) + - [Interview Prep Books](#interview-prep-books) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Don't Make My Mistakes](#dont-make-my-mistakes) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) + - [4. Focus](#4-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Coding Question Practice](#coding-question-practice) + - [Coding Problems](#coding-problems) + - [Let's Get Started](#lets-get-started) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [Final Review](#final-review) + - [Update Your Resume](#update-your-resume) + - [Find a Job](#find-a-job) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) --- @@ -916,8 +935,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2020 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) - - [ ] [CSE373 2020 - Lecture 12 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) From bd9ea000015ce46b48401b9c60146a3540aaa922 Mon Sep 17 00:00:00 2001 From: Ibrahim Hasnat <30868681+ibrahimhasnat@users.noreply.github.com> Date: Mon, 7 Mar 2022 01:38:53 +0600 Subject: [PATCH 404/857] Unnecessary Code blocks has been removed --- README.md | 109 ------------------------------------------------------ 1 file changed, 109 deletions(-) diff --git a/README.md b/README.md index 750413fb03..fc023787ab 100644 --- a/README.md +++ b/README.md @@ -129,60 +129,6 @@ software development/engineering roles. ### Topics of Study -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [The Study Plan](#the-study-plan) - - [Topics of Study](#topics-of-study) - - [Getting the Job](#getting-the-job) - - [Optional Extra Topics & Resources](#optional-extra-topics--resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [A Note About Video Resources](#a-note-about-video-resources) - - [Choose a Programming Language](#choose-a-programming-language) - - [For this Study Plan](#for-this-study-plan) - - [For your Coding Interview](#for-your-coding-interview) - - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Interview Prep Books](#interview-prep-books) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Don't Make My Mistakes](#dont-make-my-mistakes) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) - - [4. Focus](#4-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Coding Question Practice](#coding-question-practice) - - [Coding Problems](#coding-problems) - - [Let's Get Started](#lets-get-started) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [Final Review](#final-review) - - [Update Your Resume](#update-your-resume) - - [Find a Job](#find-a-job) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) ### Getting the Job @@ -197,61 +143,6 @@ software development/engineering roles. ### Optional Extra Topics & Resources -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [The Study Plan](#the-study-plan) - - [Topics of Study](#topics-of-study) - - [Getting the Job](#getting-the-job) - - [Optional Extra Topics & Resources](#optional-extra-topics--resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [A Note About Video Resources](#a-note-about-video-resources) - - [Choose a Programming Language](#choose-a-programming-language) - - [For this Study Plan](#for-this-study-plan) - - [For your Coding Interview](#for-your-coding-interview) - - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Interview Prep Books](#interview-prep-books) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Don't Make My Mistakes](#dont-make-my-mistakes) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) - - [4. Focus](#4-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Coding Question Practice](#coding-question-practice) - - [Coding Problems](#coding-problems) - - [Let's Get Started](#lets-get-started) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [Final Review](#final-review) - - [Update Your Resume](#update-your-resume) - - [Find a Job](#find-a-job) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) - --- ## Why use it? From ded69784c43da8418d4516aef34d607346913c78 Mon Sep 17 00:00:00 2001 From: Ibrahim Hasnat <30868681+ibrahimhasnat@users.noreply.github.com> Date: Mon, 7 Mar 2022 23:37:32 +0600 Subject: [PATCH 405/857] Content added --- README.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/README.md b/README.md index fc023787ab..b9be3269ab 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,51 @@ software development/engineering roles. ### Topics of Study +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [Final Review](#final-review) ### Getting the Job @@ -143,6 +188,51 @@ software development/engineering roles. ### Optional Extra Topics & Resources +- [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + --- ## Why use it? From 7b35c2f19c093eedd574b92d94934d03253dfc3b Mon Sep 17 00:00:00 2001 From: Alexandru Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Mon, 14 Mar 2022 00:40:07 +0100 Subject: [PATCH 406/857] =?UTF-8?q?=E2=9C=8D=EF=B8=8F=20Corregir=20introdu?= =?UTF-8?q?cci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se ha mejorado la redacción y la legibilidad. Además, se han traducido algunos párrafos más de la versión original en Inglés. --- translations/README-es.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index c1126d1945..879b561028 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -2,14 +2,15 @@ - Versión original: [Inglés](../README.md) -> Originalmente creé esto como una lista corta de tópicos a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista puede apreciar actualmente. Después de pasar por este plan de estudios ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon!(Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) - - -> Posiblemente no tenga que estudiar mucho como yo. De cualquier forma todo lo que necesita esta aquí. +> Originalmente creé esto como una lista corta de temas a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu). Posiblemente no tenga que estudiar mucho como yo. De todos modos, todo lo que necesita, esta aquí. +> +> Durante muchos meses he estudiado diariamente de 8 a 12 horas. Esta es mi historia: [Por qué estudié a tiempo completo durante 8 meses para una entrevista con Google. (Art. Inglés)](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > +> Nota: No necesitarás estudiar tanto como yo. He perdido mucho tiempo en aspectos que yo no necesitaba saber. Más información abajo. Te ayudaré a alcanzar tu meta sin que pierda su preciado tiempo. +> > Los elementos listados aquí le prepararan bien para una entrevista en cualquier compañía de software, incluyendo a los gigantes: Amazon, Facebook, Google o Microsoft. > -> *¡La mejor de las suertes!* +> *¡Mucha suerte!*
Traducciones: From c323e32f1bdceda05accd7ebad6e20f3634aeb3f Mon Sep 17 00:00:00 2001 From: Alexandru Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Mon, 14 Mar 2022 01:31:26 +0100 Subject: [PATCH 407/857] =?UTF-8?q?=E2=9C=8D=EF=B8=8F=20M=C3=A1s=20correcc?= =?UTF-8?q?iones.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checkpoint: Línea 523. --- translations/README-es.md | 169 ++++++++++++++++++++------------------ 1 file changed, 87 insertions(+), 82 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 879b561028..7ae529652b 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -85,13 +85,18 @@ ## ¿Qué es esto? +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + Este es mi plan de estudios de varios meses para pasar de ser un Desarrollador Web (Autodidacta, sin título) a un Ingeniero de Software para una gran compañía. -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +**Requisitos:** +- Mínima experiencia relacionada a la programación (variables, métodos/funciones, bucles...) +- Paciencia +- TIempo -Esto es para los **nuevos Ingenieros de Software** o aquellos que quieren cambiar del Desarrollo de Software/Web a Ingeniero de Software (Donde el conocimiento de las Ciencias de Computación es requerido). Si tiene varios años de experiencia y clama tenerlos como Ingeniero de Software, espere una entrevista más ardua. +Esto es para los **nuevos Ingenieros de Software** o aquellos que quieren cambiar del Desarrollo de Software/Web a Ingeniero de Software (Dónde el conocimiento de las Ciencias de Computación es requerido). Si tiene varios años de experiencia, y clama tenerlos como Ingeniero de Software, espere una entrevista más ardua. -Si tiene varios años de experiencia en desarrollo de software/web note que las grandes compañías como Google, Amazon, Facebook y Microsoft ven la Ingeniería de Software diferente al Desarrollo de Software/Web, requiriendo del conocimiento de las Ciencias de Computación. +Si tiene varios años de experiencia en el desarrollo de software/web, note que las grandes compañías (como Google, Amazon, Facebook y Microsoft) ven la Ingeniería de Software diferente al Desarrollo de Software/Web, requiriendo del conocimiento de las Ciencias de Computación. Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, estudie más de la lista opcional (Redes, Seguridad). @@ -102,8 +107,8 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - [¿Qué es esto?](#qué-es-esto) - [¿Por qué usarlo?](#por-qué-usarlo) -- [Como usarlo](#como-usarlo) -- [No sienta no es lo suficientemente listo](#no-sienta-no-es-lo-suficientemente-listo) +- [¿Cómo usarlo?](#como-usarlo) +- [No sienta que no es lo suficientemente listo](#no-sienta--que-no-es-lo-suficientemente-listo) - [Acerca de los recursos de vídeo](#acerca-de-los-recursos-de-vídeo) - [Prepárese para la entrevista](#prepárese-para-la-entrevista) - [Escoja un lenguaje para la entrevista](#escoja-un-lenguaje-para-la-entrevista) @@ -128,19 +133,19 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - [Montículo / Colas de Prioridad / Montículo binario](#montículo--colas-de-prioridad--montículo-binario) - Árboles de búsqueda balanceables (Concepto General, sin detallar) - Recorridos: preorder, inorder, postorder, BFS, DFS -- [Ordenamientos](#ordenamientos) +- [Ordenación](#ordenacion) - Selección - Inserción - Por montículos (heapsort) - Rápido (quicksort) - Por mezcla (merge sort) -- [Grafos](#grafos) +- [Gráficos](#graficos) - Dirigidos - No dirigidos - Matriz de adyacencia - Lista de adyacencia - Recorridos: BFS, DFS -- [Más información adicional](#más-información-adicional) +- [Más nformación adicional](#más-información-adicional) - [Recursión](#recursión) - [Programación Dinámica](#programación-dinámica) - [Programación Orientada a Objetos](#programación-orientada-a-objetos) @@ -219,54 +224,55 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, ## ¿Por qué usarlo? -Cuando comencé este proyecto, no sabía la diferencia entre un stack y un heap, no conocía la notación Big-O, nada acerca de árboles, ni cómo sacar la transversal de una gráfica. Si tenía que programar un algoritmo de clasificación, puedo decir que no hubiera sido muy bueno. Cada estructura de datos que había utilizado estaba incorporada al lenguaje, y yo no sabía cómo funcionaban realmente. Yo nunca tuve que manejar la memoria a menos que un proceso que yo estaba corriendo diera un error de “out of memory”, y tenía que encontrar una alternativa. He usado pocos arreglos de varias dimensiones en mi vida y miles de arreglos asociativos, pero nunca he creado estructuras de datos desde cero. +Si desea trabajar como un Ingeniero de Software para una gran compañía, estas son los aspectos que debes de conocer. + +Si, como yo, te perdiste la carrera de informática, esto te pondrá al día y te ahorrará cuatro años de tu vida. -Pero después de pasar por todo este plan de estudios tengo mucha confianza de que seré contratado. Me tomará meses. Si mucho de esto te resulta familiar entonces te tomará mucho menos tiempo. +Cuando comencé este proyecto, no sabía la diferencia entre un stack y un heap, no conocía la notación Big-O, nada acerca de árboles, ni cómo sacar la transversal de una gráfica. Si tenía que programar un algoritmo de clasificación, puedo decir que no hubiera sido muy bueno. Cada estructura de datos que había utilizado estaba incorporada al lenguaje, y yo no sabía cómo funcionaban realmente. Yo nunca tuve que manejar la memoria a menos que un proceso que yo estaba corriendo diera un error de “out of memory” y tenía que encontrar una alternativa. He usado pocos arreglos de varias dimensiones en mi vida y miles de arreglos asociativos, pero nunca he creado estructuras de datos desde cero. -Es un plan largo, puede tome unos meses; pero si le resulta familiar mucho de esto le tomara mucho menos tiempo. +Es un plan largo, puede que tome unos meses; pero si le resulta familiar mucho de esto, le tomara mucho menos tiempo. ## Como usarlo Todo lo que aparece abajo es un plan, y debería abordar los elementos en orden de arriba a abajo. -Estoy usando el tema especial de markdown de Github, incluyendo listas de tareas para comprobar el progreso. +Estoy usando las características especiales de markdown de Github, incluyendo listas de tareas, para comprobar el progreso. **Cree una nueva rama para que pueda validar elementos como este, solo ponga una x en los corchetes: [x]** - - Haga fork a una rama y siga los comandos siguientes - -`git checkout -b progress` - -`git remote add jwasham https://github.com/jwasham/coding-interview-university` - -`git fetch --all` - - Marque todas las cajas con una x después de que completa los cambios - -`git add . ` - -`git commit -m "Marked x" ` - -`git rebase jwasham/main ` - -`git push --force ` - -[Más acerca de los temas de Github para markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +``` +Haga fork a una rama y siga los comandos siguientes +``` + +Haga fork del repositorio de Github [jwasham/coding-interview-university](https://github.com/jwasham/coding-interview-university) haciendo click sobre el botón "Fork". + +Clónalo en un repositorio local: +``` +git clone git@github.com: Date: Mon, 14 Mar 2022 10:45:28 +0100 Subject: [PATCH 408/857] Update README-es.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checkpoint: Línea 1164. --- translations/README-es.md | 873 +++++++++++++++++++------------------- 1 file changed, 435 insertions(+), 438 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 7ae529652b..7d557ac88e 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -518,203 +518,202 @@ Puede ver mi código aquí: No es necesario recordar las entrañas de cada algoritmo. -Escriba código en un pizarrón o en papel, no en la computadora. Pruebe con alguna entrada de prueba y después pruébelos en la computadora. +Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe con alguna entrada de prueba y después pruébelos en la computadora. ## Conocimientos Previos - [ ] **Aprenda C** - - C esta en todos lados. Verá ejemplos en libros, lecturas, videos, *en todo lugar* mientras esté estudiando. + - C está en todos lados. Verá ejemplos en libros, lecturas, videos, *en todo lugar* mientras esté estudiando. - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Este es un libro corto, pero le dará un gran manejo en el lenguaje C y si lo practica un poco, rápidamente conseguirá ser experto. Comprender C le ayuda a entender cómo funcionan los programas y la memoria. + - Este es un libro corto, pero le dará un gran manejo en el lenguaje C, y si lo practica un poco, rápidamente conseguirá ser experto. Comprender C le ayudará a entender cómo funcionan los programas y la memoria. - [answers to questions](https://github.com/lekkas/c-algorithms) - [ ] **Cómo las computadoras procesan un programa:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA). + - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE). ## Complejidad algorítmica / Big-O / Análisis asintótico -- Nada a implementar -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- Nada a implementar. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN). - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf). +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/). +- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59). +- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61). +- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98). +- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc). +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN). +- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63). - [ ] TopCoder (incluye relaciones de recurrencia y teorema maestro): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) + - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/). + - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/). +- [ ] [Cheat sheet](http://bigocheatsheet.com/). - Si algunas de las lecturas son muy matemáticas puede saltar a la parte inferior y ver las matemáticas discretas para tener el conocimiento base. + Si algunas de las lecturas son muy matemáticas, puede saltar a la parte inferior y ver las matemáticas discretas para tener el conocimiento base. ## Estructuras de datos - ### Arreglos - Implemente un vector automáticamente redimensionable. - [ ] Descripción: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays). + - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s). + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4). + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4). + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays). + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g). + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4). + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4). - [ ] Implemente un vector (Arreglo mutable con redimensionamiento automático): - [ ] Practique codificar usando arreglos y apuntadores, y un apuntador matemático para saltar a un índice en lugar de utilizar la indexación. - - [ ] Nueva arreglo de información primaria con memoria asignada - - Puede asignar un arreglo entero, simplemente no use sus características - - Empiece con 16, o si el número inicial es mayor, use potencias del 2 - 16, 32, 64, 128 - - [ ] size() – Número de elementos - - [ ] capacity() – Número de elementos soportados + - [ ] Nuevo arreglo de información primaria con memoria asignada. + - Puede asignar un arreglo entero, simplemente no use sus características. + - Empiece con 16, o si el número inicial es mayor, use potencias del 2 - 16, 32, 64, 128. + - [ ] size() – Número de elementos. + - [ ] capacity() – Número de elementos soportados. - [ ] is_empty() - - [ ] at(index) – Regresa el elemento al índice dado, falla si el índice esta fuera de sus limites + - [ ] at(index) – Regresa el elemento al índice dado. Falla si el índice esta fuera de sus limites. - [ ] push(item) - - [ ] insert(index, item) – Inserta el elemento en el índice, intercambia el valor del índice y desplaza los elementos a la derecha - - [ ] prepend(item) – Puede usar para insertar encima del índice 0 - - [ ] pop() – Elimina del final, regresa el valor - - [ ] delete(index) – Elimina el elemento en el índice, intercambia todos desplazándolos a la izquierda - - [ ] remove(item) – Busca el valor y elimina el índice lo contiene(aunque este en varios lugares) - - [ ] find(item) – Busca el valor y regresa el primer índice con ese valor, -1 si no encuentra - - [ ] resize(Nueva capacidad) // Función privada - - Cuando alcance el límite, redimensiona al doble el tamaño - - Cuando se haga “pop” a un elemento, si el tamaño es 1/4 de la capacidad, redimensiona a la mitad - - [ ] Tiempo - - O(1) Para añadir/eliminar al final (Amortizado para asignaciones por más espacio), índice o actualización - - O(n) Para insertar/eliminar donde sea - - [ ] Espacio - - Contiguo en la memoria, por lo que la proximidad ayuda al rendimiento - - Espacio necesario = (capacidad de matriz, que es> = n) * tamaño del elemento, pero incluso si 2n, todavía O (n)) + - [ ] insert(index, item) – Inserta el elemento en el índice, intercambia el valor del índice y desplaza los elementos a la derecha. + - [ ] prepend(item) – Puede usar para insertar encima del índice 0. + - [ ] pop() – Elimina del final, regresa el valor. + - [ ] delete(index) – Elimina el elemento en el índice, intercambia todos desplazándolos a la izquierda. + - [ ] remove(item) – Busca el valor y elimina el índice que lo contiene, aunque este en varios lugares. + - [ ] find(item) – Busca el valor y regresa el primer índice con ese valor, devuelve -1 si no lo encuentra. + - [ ] resize(Nueva capacidad) // Función privada. + - Cuando alcance el límite, redimensiona al doble el tamaño. + - Cuando se haga “pop” a un elemento, si el tamaño es 1/4 de la capacidad, redimensiona a la mitad. + - [ ] Tiempo: + - O(1) Para añadir/eliminar al final (Amortizado para asignaciones por más espacio), índice o actualización. + - O(n) Para insertar/eliminar donde sea. + - [ ] Espacio: + - Contiguo en la memoria, por lo que la proximidad ayuda al rendimiento. + - Espacio necesario = (capacidad de matriz, que es> = n) * tamaño del elemento, pero incluso si 2n, todavía O (n)). - ### Listas Enlazadas - [ ] Descripción: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists). + - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5). - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - No todo el video, solo porciones acerca de la estructura de nodos y la asignación de memoria. - [ ] Listas enlazadas vs Arreglos: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays). + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays). + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo). - [ ] Gotcha: Necesita tener conocimiento del apuntador a apuntador: (Cuando se pasa un apuntador a una función este puede cambiar la dirección a la que el apuntador apunta) Esta página es sólo para tener una idea sobre un apuntador a un apuntador. No recomiendo esta lista de estilo transversal. La legibilidad y sostenibilidad sufren debido a la astucia. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] Implemente (Lo hice con y sin un puntero de cola): - - [ ] size() – Regresa el número de elementos en la lista - - [ ] empty() – Un bool que regresa verdadero si está vacío - - [ ] value_at(index) – Regresa el valor del el n-avo elemento (iniciando con el 0 como primero) - - [ ] push_front(value) – Añade un elemento al frente de la lista - - [ ] pop_front() – Elimina el elemento frontal y regresa su valor - - [ ] push_back(value) – Añade un elemento al final - - [ ] pop_back() – Elimina el último elemento y devuelve su valor - - [ ] front() – Obtiene el valor del elemento frontal - - [ ] back() – Obtiene el valor del último elemento - - [ ] insert(index, value) – Inserta valor en el índice, por lo que el valor actual en ese índice es apuntado al nuevo elemento en el índice - - [ ] erase(index) – Borra el nodo del índice dado - - [ ] value_n_from_end(n) – Regresa el valor del nodo en la n-ava posición a partir del final de la lista - - [ ] reverse() – Pone al revés toda la lista - - [ ] remove_value(value) – Borra el primer elemento en la lista con ese valor - - [ ] Doble lista enlazada - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No es necesario -- ### Pila - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) + - [ ] size() – Regresa el número de elementos en la lista. + - [ ] empty() – Un bool que regresa verdadero si está vacío. + - [ ] value_at(index) – Regresa el valor del el n-avo elemento (usando 0 como primero). + - [ ] push_front(value) – Añade un elemento al frente de la lista. + - [ ] pop_front() – Elimina el elemento frontal y regresa su valor. + - [ ] push_back(value) – Añade un elemento al final. + - [ ] pop_back() – Elimina el último elemento y devuelve su valor. + - [ ] front() – Obtiene el valor del elemento frontal. + - [ ] back() – Obtiene el valor del último elemento. + - [ ] insert(index, value) – Inserta valor en el índice, por lo que el valor actual en ese índice es apuntado al nuevo elemento en el índice. + - [ ] erase(index) – Borra el nodo del índice dado. + - [ ] value_n_from_end(n) – Regresa el valor del nodo en la n-ava posición a partir del final de la lista. + - [ ] reverse() – Pone al revés toda la lista. + - [ ] remove_value(value) – Borra el primer elemento en la lista con ese valor. + - [ ] Doble lista enlazada: + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists). + - No es necesario. +- ### Pila: + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks). + - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4). - [ ] No implementaré. Implementando con arreglos es trivial. - ### Cola o fila - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) + - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4). + - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue). + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer). + - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4). - [ ] Implementar usando listas enlazadas, con el puntero de la cola: - - enqueue(value) – Añade el valor en la posición de la cola - - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal) + - enqueue(value) – Añade el valor en la posición de la cola. + - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal). - empty() - [ ] Implementar usando arreglos de tamaño fijo: - - enqueue(value) – Añade elemento al final del almacenamiento disponible - - dequeue() – Regresa el valor y elimina el elemento más recientemente añadido + - enqueue(value) – Añade elemento al final del almacenamiento disponible. + - dequeue() – Regresa el valor y elimina el elemento más recientemente añadido. - empty() - full() - [ ] Costo: - - Una mala implementación usando lista enlazada donde se enqueue en la cabeza y dequeue en la cola sería O (n) - Porque usted necesitaría el siguiente al último elemento, causando un recorrido completo cada dequeue - - enqueue: O(1) (amortizado, Lista enlazada y arreglo [sondaje]) - - dequeue: O(1) (Lista enlazada y arreglo) - - empty: O(1) (Lista enlazada y arreglo) + - Una mala implementación usando lista enlazada donde se enqueue en la cabeza y dequeue en la cola sería O (n), porque usted necesitaría el siguiente al último elemento, causando un recorrido completo cada dequeue. + - enqueue: O(1) (amortizado, Lista enlazada y arreglo [sondaje]). + - dequeue: O(1) (Lista enlazada y arreglo). + - empty: O(1) (Lista enlazada y arreglo). - ### Matriz asociativa - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [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). + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68). + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11). + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4). - [ ] Cursos en línea: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4). + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4). + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4). + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4). + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables). + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3). + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem). - [ ] Matriz asociativas distribuidas: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox). + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables). - [ ] Implementar con arreglo usando sondaje lineal - - hash(k, m) - m es el tamaño de la matriz asociativa - - add(key, value) – Si la llave ya existe , actualiza el valor + - hash(k, m) - m es el tamaño de la matriz asociativa. + - add(key, value) – Si la llave ya existe , actualiza el valor. - exists(key) - get(key) - remove(key) ## Información adicional - ### Búsqueda binaria - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [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). + - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/). - [ ] Implementar: - - Búsqueda binaria (en un arreglo ordenado de enteros) - - Búsqueda binaria usando recursión + - Búsqueda binaria (en un arreglo ordenado de enteros). + - Búsqueda binaria usando recursión. - ### Operaciones bit a bit - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32). - [ ] Obtenga un buen entendimiento de la manipulación de bits con: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)). - [ ] Buena introducción: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] Complemento a uno y dos - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] Contar bits puestos - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I). + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0). + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation). + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation). + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html). + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/). + - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html). + - [ ] Complemento a uno y dos: + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4). + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement). + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement). + - [ ] Contar bits puestos: + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc). + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan). + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer). - [ ] Redondeo a la próxima potencia de 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html). - [ ] Valor de intercambio: - - [Swap](http://bits.stephan-brumme.com/swap.html) + - [Swap](http://bits.stephan-brumme.com/swap.html). - [ ] Valores absolutos: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html). ## Árboles - ### Árboles - Notas & Antecedentes @@ -724,272 +723,271 @@ Escriba código en un pizarrón o en papel, no en la computadora. Pruebe con alg - Algoritmos de manipulación - BFS (búsqueda en amplitud) - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - Orden de nivel (BFS, usando colas) - Tiempo de complejidad: O(n) - Espacio de complejidad: Mejor: O(1), Peor: O(n/2)=O(n) + - Orden de nivel (BFS, usando colas): + Tiempo de complejidad: O(n). + Espacio de complejidad: Mejor: O(1), Peor: O(n/2)=O(n). - DFS (búsqueda en profundidad) - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - Notas: - Tiempo de complejidad: O(n) + Tiempo de complejidad: O(n). Espacio de complejidad: - Mejor: O(log n) – Promedio de la altura del árbol - Peor: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) + Mejor: O(log n) – Promedio de la altura del árbol. + Peor: O(n). + - inorder (DFS: left, self, right). + - postorder (DFS: left, right, self). + - preorder (DFS: self, left, right). - ### Árboles de búsqueda binaria: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - Comienza con la tabla de símbolos y pasa por las aplicaciones BST - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees). + - Comienza con la tabla de símbolos y pasa por las aplicaciones BST. + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction). + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68). - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28). + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29). + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31). + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32). + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36). + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). - [ ] Implementar: - - [ ] insert // Inserta valores en el árbol - - [ ] get_node_count // Obtener la cuenta de los valores almacenados - - [ ] print_values // Imprime los valores en el árbol, del min al max + - [ ] insert // Inserta valores en el árbol. + - [ ] get_node_count // Obtener la cuenta de los valores almacenados. + - [ ] print_values // Imprime los valores en el árbol, del min al max. - [ ] delete_tree - - [ ] is_in_tree // Devuelve verdadero si el valor dado existe en el árbol - - [ ] get_height // Regresa la altura en los nodos (La altura de cada nodo es 1) - - [ ] get_min // Regresa el valor mínimo almacenado en el árbol - - [ ] get_max // Regresa el valor máximo almacenado en el árbol + - [ ] is_in_tree // Devuelve verdadero si el valor dado existe en el árbol. + - [ ] get_height // Regresa la altura en los nodos (La altura de cada nodo es 1). + - [ ] get_min // Regresa el valor mínimo almacenado en el árbol. + - [ ] get_max // Regresa el valor máximo almacenado en el árbol. - [ ] is_binary_search_tree - [ ] delete_value - - [ ] get_successor // Regresa el siguiente valor más alto en el árbol después del valor dado,-1 si ninguno + - [ ] get_successor // Regresa el siguiente valor más alto en el árbol después del valor dado. Si no hay ninguno, devuelve -1. - ### Montículo / Colas de Prioridad / Montículo binario - - Visto como un árbol, pero usualmente es lineal en el almacenamiento (arreglo, lista enlazada) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - Visto como un árbol, pero usualmente es lineal en el almacenamiento (arreglo, lista enlazada). + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)). + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction). + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations). + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees). + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark). + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations). + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees). + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode). + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291). + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort). + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap). + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C). + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw). - [ ] Implementar una cola máxima: - [ ] insert - - [ ] sift_up – Necesario para el insert - - [ ] get_max – Regresa el máximo elemento, sin eliminarlo - - [ ] get_size() – Regresa el número de elementos almacenados - - [ ] is_empty() – Devuelve verdadero si la cola está vacía - - [ ] extract_max – Regresa el máximo elemento, eliminándolo - - [ ] sift_down – Necesario para extract_max - - [ ] remove(i) – Elimina el elemento en el índice x - - [ ] heapify – Crea una cola de un arreglo de elementos, necesario para heap_sort - - [ ] heap_sort() – Toma un arreglo no ordenado y lo convierte en un arreglo ordenando en su lugar usando una cola máxima + - [ ] sift_up – Necesario para el insert. + - [ ] get_max – Regresa el máximo elemento, sin eliminarlo. + - [ ] get_size() – Regresa el número de elementos almacenados. + - [ ] is_empty() – Devuelve verdadero si la cola está vacía. + - [ ] extract_max – Regresa el máximo elemento, eliminándolo. + - [ ] sift_down – Necesario para extract_max. + - [ ] remove(i) – Elimina el elemento en el índice x. + - [ ] heapify – Crea una cola de un arreglo de elementos, necesario para heap_sort. + - [ ] heap_sort() – Toma un arreglo no ordenado y lo convierte en un arreglo ordenando en su lugar usando una cola máxima. - Nota: Usar una cola mínima reduciría operaciones, pero duplicaría el espacio necesario (No se puede hacer en lugar). ## Ordenamientos - [ ] Notas: - Implementar ordenamientos y conocer el mejor/peor de los casos y el promedio de complejidad de cada uno: - - No ordenamiento de burbuja - Es terrible - O(n^2), excepto cuando n <= 16 - - [ ] Estabilidad en algoritmos de ordenamiento("¿Es Quicksort estable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - No ordenamiento de burbuja - Es terrible - O(n^2), excepto cuando n <= 16. + - [ ] Estabilidad en algoritmos de ordenamiento("¿Es Quicksort estable?"): + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability). + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms). + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/). + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf). - [ ] ¿Cuáles algoritmos pueden ser usados en listas enlazadas? ¿Cuáles en arreglos? ¿Cuál en ambos? - No recomendaría ordenar una lista enlazada, pero el ordenamiento por mezcla es realizable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/). - Para ordenamientos por montículos, vea la estructura de datos de Colas o filas arriba. El ordenamiento por montículos es estupendo, pero inestable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). + - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1). + - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2). + - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). + - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). + - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). + - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). + - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). + - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). + - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29). + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30). + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C). + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C). + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB). +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB). +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB). +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB). +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB). +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB). - [ ] Codificando Merge sort: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c). + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py). + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc). - [ ] Codificando Quick sort: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c). + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c). + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py). - [ ] Implemente: - - [ ] Mergesort: O(n log n) Promedio y peor caso - - [ ] Quicksort O(n log n) Caso promedio - - El ordenamiento por selección y el de inserción ambos son O(n^2) Promedio y peor caso + - [ ] Mergesort: O(n log n) Promedio y peor caso. + - [ ] Quicksort O(n log n) Caso promedio. + - El ordenamiento por selección y el de inserción ambos son O(n^2) Promedio y peor caso. - Para ordenamientos por montículos, vea la estructura de datos de Colas o filas arriba. - [ ] No requeridos, pero los recomendaría: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). + - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6). + - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5). + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4). + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). + - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). + - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1). + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort). + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38). + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14). Como resumen aquí esta una representación visual de [15 algoritmos de ordenamiento](https://www.youtube.com/watch?v=kPRA0W1kECg). -Si necesita más detalle de este tema vea “Ordenamientos” en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas) +Si necesita más detalle de este tema vea “Ordenamientos” en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas). -## Grafos +## Gráficos -Los grafos pueden ser usados para representar muchos problemas en las Ciencias de la Computación, así que es una sección larga, como lo son los árboles y ordenamientos. +Los gráficos pueden ser usados para representar muchos problemas en las Ciencias de la Computación, así que es una sección larga, como lo son los árboles y ordenamientos. - Notas: - Hay cuatro formas básicas de representar un grafo en memoria: - - Objetos y apuntadores - - Matriz adyacente - - Lista adyacente - - Mapa adyacente - - Familiarícese con cada representación y sus pros y contras - - BFS and DFS – Conozca su complejidad computacional, sus compromisos y cómo implementarlos en código real + - Objetos y apuntadores. + - Matriz adyacente. + - Lista adyacente. + - Mapa adyacente. + - Familiarícese con cada representación y sus pros y contras. + - BFS and DFS – Conozca su complejidad computacional, sus compromisos y cómo implementarlos en código real. - Cuando se le haga una pregunta busqué una solución basada en grafos, si no encuentra continúe. - [ ] Lecturas de Skiena – Gran introducción): - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Grafos (revisión y más): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11). + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12). + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13). + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + +- [ ] Gráficos (revisión y más): + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17). + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18). + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7). + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8). + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9). + - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489). + - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19). + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw). - Curso Completo de Coursera: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome). - Implementaré: - - [ ] DFS con lista de adyacencia (recursión) - - [ ] DFS con la lista de adyacencia (iterativa con la pila) - - [ ] DFS con matriz de adyacencia (recursión) - - [ ] DFS con matriz de adyacencia (iterativa con pila) - - [ ] BFS con lista de adyacencia - - [ ] BFS con matriz de adyacencia - - [ ] Ruta de acceso de una sola fuente más corta (Dijkstra) - - [ ] Árbol de expansión mínimo + - [ ] DFS con lista de adyacencia (recursión). + - [ ] DFS con la lista de adyacencia (iterativa con la pila). + - [ ] DFS con matriz de adyacencia (recursión). + - [ ] DFS con matriz de adyacencia (iterativa con pila). + - [ ] BFS con lista de adyacencia. + - [ ] BFS con matriz de adyacencia. + - [ ] Ruta de acceso de una sola fuente más corta (Dijkstra). + - [ ] Árbol de expansión mínimo. - Algoritmos basados en DFS (ver videos de Aduni arriba): - - [ ] Comprobar el ciclo (necesario para el tipo topológico, ya que vamos a comprobar el ciclo antes de comenzar) - - [ ] Clasificación topológica - - [ ] Cuenta los componentes conectados en un grafo - - [ ] Lista de componentes fuertemente conectados - - [ ] Verificación de grafo bipartito + - [ ] Comprobar el ciclo (necesario para el tipo topológico, ya que vamos a comprobar el ciclo antes de comenzar). + - [ ] Clasificación topológica. + - [ ] Cuenta los componentes conectados en un grafo. + - [ ] Lista de componentes fuertemente conectados. + - [ ] Verificación de grafo bipartito. -Obtendrá más práctica de grafos en el libro de Skiena (vea Sección de libros debajo) y en los libros de entrevistas +||| Obtendrá más prácticas de gráficos en el libro de Skiena (vea Sección de libros debajo) y en los libros de entrevistas. ## Más información adicional - ### Recursión - [ ] Conferencias de Stanford sobre la recursividad y retroceso: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - Cuando es apropiado usarlo - - ¿Cómo es la recursión de cola mejor que no? + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8). + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9). + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69). + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11). + - ¿Cuándo es apropiado usarlo? + - ¿Qué es la recursión de cola? ¿Por qué es tan mala? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### Programación Dinámica - - Este tema puede ser bastante difícil, ya que cada problema soluble PD debe definirse como una relación de recursión, y llegar a ella puede ser complicado. + - Este tema puede ser bastante difícil, ya que cada problema soluble PD debe definirse como una relación de recursión, y llegar a ella, puede ser complicado. - Sugiero que busque muchos ejemplos de problemas de PD hasta que tenga una comprensión sólida del patrón involucrado. - [ ] Videos: - - Los videos de Skiena pueden ser duros de seguir ya que a veces usa el pizarrón que es demasiado pequeño para ver - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - Los videos de Skiena pueden ser duros de seguir ya que a veces usa el pizarrón, que es demasiado pequeño para verlo bien. + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718). + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749). + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406). + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22). + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558). + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12). - [ ] Lista de problemas individuales de PD (cada uno es corto): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr). - [ ] Notas de la clase de Yale: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming). - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem). + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm). + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm). + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm). + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation). + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment). + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment). - ### Programación Orientada a Objetos - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc). - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - Puede omitir esto si tiene una gran comprensión de OO y OO prácticas de diseño. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). - [ ] Principios SOLID OOP: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE). + - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A). + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html). - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Los clientes no deberían ser forzados a implementar interfaces no usarán - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle). + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en). + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle). + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en). + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Los clientes no deberían ser forzados a implementar interfaces que no emplearán. + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ). + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en). - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reducir la dependencia en la composición de los objetos. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important). + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en). - ### Patrones de diseño - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3). - [ ] Aprenda estos patrones: - [ ] strategy - [ ] singleton @@ -1008,142 +1006,141 @@ Obtendrá más práctica de grafos en el libro de Skiena (vea Sección de libros - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344). + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07). + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124). - Sé que el libro canónico es "Design Patterns: Elements of Reusable Object-Oriented Software", pero Head First es ideal para principiantes a OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips). + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns). - ### Combinatorias (n elije k) & Probabilidad - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U). + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4). + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ). - [ ] Khan Academy: - Diseño del curso: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic). - Solo los videos - 41 (cada uno simple y corto): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19). - ### NP, NP-Completo y Algoritmos de aproximación - - Conozca acerca de las clases más famosas de problemas de NP-completo, tales como el vendedor ambulante y el problema de la mochila y sea capaz de reconocerlos cuando un entrevistador se los pide disfrazados. + - Conozca acerca de las clases más famosas de problemas de NP-completo, tales como el vendedor ambulante y el problema de la mochila, y sea capaz de reconocerlos cuando un entrevistador se los pide disfrazados. - Conozca que significa NP-completo. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23). - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939). + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18). - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508). + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22). + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24). + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - Peter Norvig discute soluciones casi óptimas para el problema del vendedor ambulante: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb). - Paginas 1048 - 1140 en CLRS si lo tiene. -- ### Memoria cache - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- ### Memoria caché + - [ ] LRU caché: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M). + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI). + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU). + - [ ] CPU caché: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24). + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-). - ### Procesos e hilos - [ ] Computer Science 162 - Operating Systems (25 videos): - - Para los procesos e hilos vea los videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Para los procesos e hilos vea los videos 1-11. + - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c). + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread). - Cubre: - - Procesos, Hilos, Temas de Concurrencia - - Diferencia entre procesos e hilos - - Procesos - - Hilos - - Cerraduras - - Mutexes - - Semáforos - - Monitores - - Cómo trabajan ellos - - Bloqueo - - Livelock - - Actividad de CPU, interrupciones, conmutación de contexto - - Moderna concurrencia construida con procesadores multinúcleo - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - - Necesidades de recursos de proceso (memoria: código, almacenamiento estático, pila, monticulo y también descriptores de archivo, i /o) - - Necesidades de recursos de hilos (partes anteriores (menos pila) con otros hilos en el mismo proceso, pero cada uno tiene su propio PC, contador de pila, registros y pila) - - Bifurcación es realmente copia en escritura (sólo lectura) hasta que el nuevo proceso escribe en memoria, entonces hace una copia completa. - - Cambio de contexto - - Cómo se inicia el cambio de contexto por el sistema operativo y el hardware subyacente - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - Procesos, Hilos, Temas de Concurrencia. + - Diferencia entre procesos e hilos. + - Procesos. + - Hilos. + - Cerraduras. + - Mutexes. + - Semáforos. + - Monitores. + - Cómo trabajan ellos. + - Bloqueo. + - Livelock. + - Actividad de CPU, interrupciones, conmutación de contexto. + - Moderna concurrencia construida con procesadores multinúcleo. + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2). + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3). + - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8). + - Necesidades de recursos de proceso (memoria: código, almacenamiento estático, pila, monticulo y también descriptores de archivo, i /o). + - Necesidades de recursos de hilos (partes anteriores (menos pila) con otros hilos en el mismo proceso, pero cada uno tiene su propio PC, contador de pila, registros y pila). + - Bifurcación es realmente copia en escritura (sólo lectura) hasta que el nuevo proceso escribe en memoria, entonces hace una copia completa.. + - Cambio de contexto: + - Cómo se inicia el cambio de contexto por el sistema operativo y el hardware subyacente. + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M). - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1). + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM). + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s). + - [reference](http://www.dabeaz.com/GIL). + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4). + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU). + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY). - ### Documentos - - La lectura de todos de extremo a extremo con la comprensión completa probablemente tomará más tiempo del que tiene. Recomiendo ser selectivo en los documentos y sus secciones. - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - Remplazado por Colossus en 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - ¿Casi totalmente remplazado por Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf) - - The Dynamo paper kicked off the NoSQL revolution - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - Documento no disponible + - La lectura de todos los documentos, de extremo a extremo con la comprensión completa, probablemente tomará más tiempo del que tiene. Recomiendo ser selectivo en los documentos y sus secciones. + - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/). + - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf). + - [implemented in Go](https://godoc.org/github.com/thomas11/csp). + - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf). + - Remplazado por Colossus en 2012. + - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf). + - ¿Casi totalmente remplazado por Cloud Dataflow?. + - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf). + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf). + - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf). + - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf). + - The Dynamo paper kicked off the NoSQL revolution. + - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf). + - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf). + - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf). + - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/). + - Documento no disponible. - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf). + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany). - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf). + - [video](https://www.usenix.org/node/170855). + - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf). + - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf). + - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf). + - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf). + - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf). + - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf). - ### Pruebas - A cubrir: - - Cómo funciona la prueba unitaria + - ¿Cómo funciona la prueba unitaria? - ¿Qué son objetos simulados? - ¿Qué es la prueba de integración? - ¿Qué es la inyección de dependencia? - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U). + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU). + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706). + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf). + - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html). + - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo). + - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g). + - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc). - [ ] Inyección de dependencia: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ). + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html). + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html). - ### Planificador - En un SO, Como funciona @@ -1154,16 +1151,16 @@ Obtendrá más práctica de grafos en el libro de Skiena (vea Sección de libros - ¿Puede implementarlas? - ### Búsqueda de cadenas y manipulaciones - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - Si necesita más detalle de este tema, vea "String Matching" en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas) + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg). + - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5). + - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5). + - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4). + - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). + - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2). + - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text). + + Si necesita más detalle de este tema, vea "String Matching" en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas). - ### Tries - Note que existen diferentes tipos de tries. Algunos tienen prefijos, otros no, y algunos usan cadenas en lugar de bits para seguir el camino. From d31578816917a5e06971655247d538b89f244501 Mon Sep 17 00:00:00 2001 From: Alexandru Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:00:40 +0100 Subject: [PATCH 409/857] Update README-es.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Checkpoint: Línea 1644 --- translations/README-es.md | 630 +++++++++++++++++++------------------- 1 file changed, 312 insertions(+), 318 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 7d557ac88e..faaeac977c 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1164,214 +1164,213 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - ### Tries - Note que existen diferentes tipos de tries. Algunos tienen prefijos, otros no, y algunos usan cadenas en lugar de bits para seguir el camino. - - Leo a través del código, pero no implementaría. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - Lo leo a través del código, pero no lo implementaría. + - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ): + - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). + - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). + - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1). + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries). - [ ] Videos de cursos cortos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries). + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries). + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie). + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure). + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/). + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU). + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf). - ### Números de punto flotante - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU). + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec). - ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html). + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/). - ### Extremidad (Endianness) - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html). + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo). + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0): - Charlas muy técnicas para desarrolladores del kernel. No se preocupe si la mayoría se ve complicado. - La primera mitad es suficiente. - ### Redes - - **Si tiene experiencia en redes o quiere ser un Ingeniero en Sistemas espere preguntas** - - De cualquier forma, esto es bueno saberlo - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - **Si tiene experiencia en redes o quiere ser un Ingeniero en Sistemas espere bastantes preguntas** + - De cualquier forma, esto es bueno saberlo. + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro). + - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8). + - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0). + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM). + - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As). + - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0). + - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM). + - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8). + - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j). + - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4). - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s). + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ). ## Diseño del Sistema, Escalabilidad, Manejo de Datos - **Puede esperar preguntas sobre el diseño del sistema si tiene más de 4 años de experiencia.** -- La escalabilidad y el diseño del sistema son temas muy extensos con muchos temas y recursos, ya que hay mucho que considerar al diseñar un sistema de software / hardware que puede escalar. Espere dedicarle un buen tiempo a esto. +- La escalabilidad y el diseño del sistema son temas muy extensos, con muchos aspectos y recursos, ya que hay mucho que considerar al diseñar un sistema de software / hardware que se puede escalar. Espere dedicarle un buen tiempo a esto. - Consideraciones: - - Escalabilidad - - Destilar conjuntos de datos grandes a valores únicos - - Transformar un conjunto de datos en otro - - Manejo de cantidades de datos obscenamente grandes - - Diseño de sistemas - - Conjuntos de características - - Interfaces - - Jerarquías de clases - - Diseñar un sistema bajo ciertas restricciones - - Simplicidad y robustez - - Compromisos - - Análisis y optimización del rendimiento -- [ ] **EMPIECE AQUI**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) -- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) + - Escalabilidad: + - Destilar conjuntos de datos grandes a valores únicos. + - Transformar un conjunto de datos en otro. + - Manejo de cantidades de datos obscenamente grandes. + - Diseño de sistemas: + - Conjuntos de características. + - Interfaces. + - Jerarquías de clases. + - Diseñar un sistema bajo ciertas restricciones. + - Simplicidad y robustez. + - Compromisos. + - Análisis y optimización del rendimiento. +- [ ] **EMPIECE AQUI**: [The System Design Primer](https://github.com/donnemartin/system-design-primer). +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/). +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023). +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/). +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/). +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM). - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - Hay muchos recursos en este. Mire los articulos y sus ejemplos. Pondré Algunos debajo. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/). +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/). +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html). +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk). +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/). - [ ] Algoritmo de consenso de Paxos: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) + - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM). + - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o). + - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf). +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html). +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html). - [ ] Escalabilidad: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4). - [ ] Series Cortas: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] Vea la forma en "Messaging, Serialization, and Queueing Systems" debajo para la información sobre algunas de las tecnologías que pueden pegar servicios juntos + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones). + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database). + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache). + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism). + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html). + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf). + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html). + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html). + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI). + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/). + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc). + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0). + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/). + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html). + - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook). + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU). + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4). + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html). + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok). + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html). + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/). + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o). + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/). + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/). + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html). + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html). + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html). + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html). + - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html). + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html). + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html). + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html). + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html). + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html). + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html). + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html). + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html). + - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html). + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html). + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it). + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html). + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances). + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html). + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html). + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html). + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html). + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture). + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html). + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html). + - [ ] Vea la forma en "Messaging, Serialization, and Queueing Systems" debajo para la información sobre algunas de las tecnologías que pueden unir servicios. - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI). + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability). - Para aún más, vea la serie de videos "Mining Massive Datasets" en la sección de [Series de video](#series-de-videos). - [ ] Practicando el proceso de diseño del sistema: Aquí hay algunas ideas para tratar de trabajar en papel, cada una con cierta documentación sobre cómo se manejó en el mundo real: - - Revisión: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - Revisión: [The System Design Primer](https://github.com/donnemartin/system-design-primer). + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/). + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf). - Flujo: 1. Comprender el problema y el alcance: - - Definir los casos de uso, con ayuda del entrevistador - - Sugerir características adicionales - - Eliminar elementos que el entrevistador considera fuera de alcance - - Asumir alta disponibilidad es necesario, añadir como un caso de uso + - Definir los casos de uso, con ayuda del entrevistador. + - Sugerir características adicionales. + - Eliminar elementos que el entrevistador considera fuera de alcance. + - Asumir alta disponibilidad es necesario, añadir como un caso de uso. 2. Piense en las limitaciones: - - Preguntar cuántas solicitudes por mes - - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas) - - Lectura de estimación vs. Escribir porcentajes - - Tenga en cuenta la regla 80/20 al estimar - - La cantidad de datos escritos por segundo - - Almacenamiento total requerido durante 5 años - - La cantidad de datos leídos por segundo + - Preguntar cuántas solicitudes por mes. + - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas). + - Lectura de estimación vs. Escribir porcentajes. + - Tenga en cuenta la regla 80/20 al estimar. + - La cantidad de datos escritos por segundo. + - Almacenamiento total requerido durante 5 años. + - La cantidad de datos leídos por segundo. 3. Diseño abstracto: - - Capas (servicio, datos, almacenamiento en caché) - - Infraestructura: balanceo de carga, mensajería - - Descripción aproximada de cualquier algoritmo clave que impulsa el servicio - - Considerar los cuellos de botella y determinar las soluciones + - Capas (servicio, datos, almacenamiento en caché). + - Infraestructura: balanceo de carga, mensajería. + - Descripción aproximada de cualquier algoritmo clave que impulsa el servicio. + - Considerar los cuellos de botella y determinar las soluciones. - Ejercicios: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci). + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake). + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html). + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis). + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html). + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf). + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/). + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/). --- ## Revisión final +Esta sección tendrá videos cortos en los que podrá visualizar rápidamente para revisar algunos de los conceptos importantes. +Es bueno si quieres repasar frecuentemente. - Esta sección tendrá videos cortos que puede visualizar rápidamente para revisar algunos de los conceptos importantes. - Es bueno si quieres repasar a menudo. - -- [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos). + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22). - [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ). +- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd). + - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t). + - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0). + - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh). + - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd). + - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). + - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). + - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5). + - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG). + - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu). + - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx). + - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11). +- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50). + - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM). + - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K). + - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj). + - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD). + - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma). + - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). + - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). + - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). + - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh). + - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ). + - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF). + - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1). + - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S). --- @@ -1382,89 +1381,85 @@ Ahora que conoce todos los tópicos de las Ciencias de la Computación mencionad **La practica de preguntas de codificación no es sobre memorizar respuestas a problemas de programación.** Porque necesita practicar haciendo problemas de programación: -- El reconocimiento de problemas, y donde las estructuras de datos y algoritmos adecuados encajan -- Reunir los requisitos para el problema -- Hablar sobre su camino a través del problema como lo hará en la entrevista -- Codificar en una pizarra o papel, no en un ordenador -- Llegar con la complejidad del tiempo y espacio para sus soluciones -- Probar sus soluciones +- El reconocimiento de problemas, y donde las estructuras de datos y algoritmos adecuados encajan. +- Reunir los requisitos para el problema. +- Hablar sobre su camino a través del problema como lo hará en la entrevista. +- Codificar en una pizarra o papel, no en un ordenador. +- Llegar con la complejidad del tiempo y espacio para sus soluciones. +- Probar sus soluciones. Hay una gran introducción para la solución de problemas metódicos y comunicativos en una entrevista. Conseguirá esto de los libros para la entrevista de programación también, pero encontré esto excepcional: -[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/). ¿No tiene pizarrón en casa? Hace sentido. Soy un bicho raro y tengo una pizarra grande. En vez de una pizarra blanca, recoja un gran cuadernillo de dibujo de una tienda de arte. Puede sentarse en el sofá y practicar. Esta es mi "pizarra de sofá". He añadido la pluma en la foto para la escala. Si usa un bolígrafo, deseará poder borrarlo. Se ensucia rápido. -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) +![my sofa whiteboard](https://camo.githubusercontent.com/4b2dfa34fd739404edcc014f89b5432ab1ec9cfebecce1d59b9f7986826d03cf/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f6172745f626f6172645f736d5f322e6a7067). Complementarios: - -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) +- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/). +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/). +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php). +- [Exercises for getting better at a given language](http://exercism.io/languages). **Lea y haga problemas de programación (en ese orden):** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html): - Respuestas en C, C++ y Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/): - Respuestas en Java -Vea [Lista de libros](#lista-de-libros) +Vea [Lista de libros](#lista-de-libros). ## Ejercicios de codificación/Desafíos Una vez haya aprendido, ponga ese cerebro a trabajar. Tome desafíos de codificación todos los días y tantos como pueda. -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) +- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/). +- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/). Videos de preguntas de entrevistas de código: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI). +- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd). Sitios de desafíos: -- [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerEarth](https://www.hackerearth.com/) -- [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) - -Repos de desafíos: -- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) +- [LeetCode](https://leetcode.com/). +- [TopCoder](https://www.topcoder.com/). +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems). +- [Codewars](http://www.codewars.com). +- [HackerEarth](https://www.hackerearth.com/). +- [HackerRank](https://www.hackerrank.com/). +- [Codility](https://codility.com/programmers/). +- [InterviewCake](https://www.interviewcake.com/). +- [Geeks for Geeks](http://www.geeksforgeeks.org/). +- [InterviewBit](https://www.interviewbit.com). +- [Sphere Online Judge (spoj)](http://www.spoj.com/). + +Repositorios con desafíos: +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges). Bosquejos de entrevista: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) -- [Refdash: Mock interviews](https://refdash.com/) +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/). +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/). +- [Refdash: Mock interviews](https://refdash.com/). ## Una vez cerca de la entrevista - [ ] Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - -## Su CV - -- Vea los elementos de preparación en **Cracking The Coding Interview and back of Programming Interviews Exposed** + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo). + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo). +## Su CV (Currículum Vitae) +Vea los elementos de preparación en **Cracking The Coding Interview and back of Programming Interviews Exposed** ## Pensando en cuando llegue la entrevista - Piense en aproximadamente veinte preguntas de la entrevista que usted conseguirá, junto con las líneas de abajo. Tenga 2-3 respuestas para cada una. -Tener una historia, no sólo datos, sobre algo que logro. +Tener una historia, no sólo datos, sobre algo que logró. - ¿Por qué quiere este trabajo? -- ¿Cuál es un problema difícil que ha resuelto? -- ¿Cuáles han sido los mayores desafíos enfrentados? -- ¿Cuáles han sido los mejores / peores diseños vistos? +- ¿Qué problema difícil ha resuelto? +- ¿Cuáles han sido sus mayores desafíos a los cuales se ha enfrentado? +- ¿Cuáles han sido los mejores / peores diseños que ha visto? - Ideas para mejorar un producto existente. -- ¿Cómo trabaja mejor, individualmente y como parte de un equipo? -- ¿Cuáles de sus habilidades o experiencias serían claves en el rol y por qué? +- ¿Cómo trabaja mejor, individualmente, o como parte de un equipo? +- ¿Cuáles de sus habilidades o experiencias serían claves en el rol? ¿Por qué? - ¿Qué es lo que más disfruto en [ x trabajo / y proyecto]? - ¿Cuál fue el mayor reto al que se enfrentó en [x trabajo / y proyecto]? - ¿Cuál fue el error más difícil que enfrentó en [x trabajo / y proyecto]? @@ -1472,8 +1467,7 @@ Tener una historia, no sólo datos, sobre algo que logro. - ¿Qué habría hecho mejor en [x trabajo / y proyecto]? ## Preguntas para el entrevistador - - Algunos de las mías (ya sé u respuesta, pero quiero su opinión o la perspectiva del equipo): +Algunos de las mías (ya sé su respuesta, pero quiero su opinión o la perspectiva del equipo): - ¿Qué tan grande es su equipo? - ¿Cómo es su ciclo de desarrollo? ¿Haces waterfall / sprints / agile? @@ -1505,47 +1499,47 @@ Nunca está de verdad realizado. --- ## Libros adicionales -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - Viejo pero bueno -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - Una opción moderna -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - Una gentil introducción al diseño de patrones -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka el libro "Gang Of Four" , o GOF - - El libro canonico de diseño de patrones -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) +- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info): + - Viejo pero bueno. +- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/): + - Una opción moderna. +- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated). +- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/): + - Una gentil introducción al diseño de patrones. +- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612): + - aka el libro "Gang Of Four" , o GOF. + - El libro canonico de diseño de patrotes. +- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/). ## Aprendizaje adicional Es probable que estos temas no aparezcan en una entrevista, pero los añadí para ayudarle a convertirse en un Ingeniero de Software más completo, y ser consciente en ciertas tecnologías y algoritmos, para que tenga una caja de herramientas más grande. - ### Compiladores - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg). + - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo). + - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk). + - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU). - ### Emacs y Vi(m) - - Familiarícese con un editor de código basado en Unix + - Familiarícese con un editor de código basado en Unix. - Vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr). + - [VIM Adventures](http://vim-adventures.com/). - Conjunto de 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk). + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE). + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI). + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA). + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs). - Emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0). - Conjunto de 3 videos: - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q). + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II). + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc). + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc). + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs). - ### Unix: Herramientas para la línea de comandos - Llene la lista inferior con buenas herramientas. @@ -1562,91 +1556,91 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Teoría de la información (videos) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory). - [ ] Más acerca de los procesos de Markov: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation). + - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation). + - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through). - Vea más en la serie MIT 6.050J Information and Entropy. - ### Código de paridad y Hamming (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE). + - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M). - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc). + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o). + - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk). - ### Entropía - - También vea los videos de abajo - - Asegúrese de ver los videos de la teoría de la información primero + - También vea los videos de abajo. + - Asegúrese de ver los videos de la teoría de la información primero. - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Criptografía - - También ve los videos de abajo - - Asegúrese de ver los videos de la teoría de la información primero - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - También vea los videos de abajo. + - Asegúrese de ver los videos de la teoría de la información primero. + - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography). + - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30). + - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - ### Compresión - - Asegúrese de ver los videos de la teoría de la información primero + - Asegúrese de ver los videos de la teoría de la información primero. - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w). + - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko). + - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI). + - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g). + - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA). + - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU). + - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H). + - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s). - ### Seguridad informática - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2). + - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3). + - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6). + - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - ### Recolección de basura - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff). + - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI). + - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits). + - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3). - ### Programación en paralelo - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1). + - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk). - ### Sistemas de mensajería, serialización y colas - - [ ] [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ ] [Thrift](https://thrift.apache.org/): + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html). + - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/): + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials). + - [ ] [gRPC](http://www.grpc.io/): + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1). + - [ ] [Redis](http://redis.io/): + - [Tutorial](http://try.redis.io/). + - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/). + - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/). + - [ ] [RabbitMQ](https://www.rabbitmq.com/): + - [Get Started](https://www.rabbitmq.com/getstarted.html). + - [ ] [Celery](http://www.celeryproject.org/): + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html). + - [ ] [ZeroMQ](http://zeromq.org/): + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual). + - [ ] [ActiveMQ](http://activemq.apache.org/). + - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction). + - [ ] [MessagePack](http://msgpack.org/index.html). + - [ ] [Avro](https://avro.apache.org/). - ### A* - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) From 05e89fbafde7f07687ad4385e0227d4f1bacda9e Mon Sep 17 00:00:00 2001 From: Alexandru Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:06:21 +0100 Subject: [PATCH 410/857] Update README-es.md --- translations/README-es.md | 387 +++++++++++++++++--------------------- 1 file changed, 177 insertions(+), 210 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index faaeac977c..dc5e50007b 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1643,318 +1643,285 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [Avro](https://avro.apache.org/). - ### A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm). + - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE). + - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE). - ### Transformada rápida de Fourier - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/). + - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/). + - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q). + - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4). + - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/). - ### Filtro de Bloom - - Dado un filtro de Bloom con m bits y k funciones de hashing, tanto las pruebas de inserción como de pertenencia son O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - Dado un filtro de Bloom con m bits y k funciones de hashing, tanto las pruebas de inserción como de pertenencia son O(k). + - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs). + - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78). + - [Tutorial](http://billmill.org/bloomfilter-tutorial/). + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/). - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html). - ### Hashing sensible a la localidad - - Usado para determiner la similitude de documentos + - Usado para determiner la similitude de documentos. - Lo opuesto de MD5 o SHA que son usados para determinar si dos documentos/cadenas son exactamente iguales. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html). - ### Árboles van Emde Boa - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) + - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6). + - [ ] [MIT Lecture Notes](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). - ### Estructuras de datos aumentadas - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) + - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950). - ### Árboles de búsqueda equilibrada - Conocer por lo menos un tipo de árbol binario equilibrado (y saber cómo se implementa): - - " Entre los árboles de búsqueda equilibrada, los árboles AVL y 2/3 están ahora pasados de moda, y los árboles rojo-negro parecen ser más populares. + - "Entre los árboles de búsqueda equilibrada, los árboles AVL y 2/3 están ahora pasados de moda, y los árboles rojo-negro parecen ser más populares. Una estructura de datos auto-organizable particularmente interesante es el árbol biselados, que utilizan rotaciones para mover cualquier clave accedida a la raíz.." - Skiena - De estos, opté por implementar un árbol biselado. Por lo que he leído, no implementarás un árbol de búsqueda equilibrado en tu entrevista. Pero yo quería exponer la codificación de uno y bueno, los árboles son las rodillas de la abeja. He leído un montón de código de árbol rojo-negro. - - Árboles biselados: Funciones insert, search, delete + - Árboles biselados: Funciones insert, search, delete. Si terminas implementando un árbol rojo / negro, intenta lo siguiente: - - Funciones de búsqueda e inserción, saltándose eliminar + - Funciones de búsqueda e inserción, saltándose eliminar. - Quiero aprender más acerca de los Árboles-B ya que se utiliza tan ampliamente con conjuntos de datos muy grandes. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree). - [ ] **Árboles AVL** - En práctica: Por lo que puedo decir, estos no se usan mucho en la práctica, pero pude ver dónde estarían: El árbol AVL es otra estructura que soporta la búsqueda, inserción y eliminación de O (log n). Es más rígidamente equilibrado que los árboles rojo-negro, lo que lleva a una inserción y eliminación más lenta, pero más rápido la recuperación. Esto lo hace atractivo para las estructuras de datos que se pueden construir una vez y se cargan sin reconstrucción, como diccionarios de idiomas (o diccionarios de programas, como los opcodes de un ensamblador o intérprete). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6). + - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees). + - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation). + - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge). - [ ] **Árboles biselados** - En práctica: Los árboles biselados son típicamente usados en la implementación de la memoria cache, ssignadores de memoria, enrutadores, recolectores de basura, compresión de datos, cuerdas (reemplazo de la cadena utilizada para cadenas de texto largas), en Windows NT (en la memoria virtual, en red y en el código del sistema de archivos) etc. - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd). - [ ] MIT Lecture: Splay Trees: - Se vuelve muy matemático, pero vea los 10 últimos minutos. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo). - [ ] **Árboles rojos/negros** - Éstos son una traducción de un árbol 2-3 (véase abajo) - En la práctica: Los árboles rojo-negro ofrecen las peores garantías de tiempo de inserción, tiempo de borrado y tiempo de búsqueda. Esto no solo los hace valiosos en aplicaciones sensibles al tiempo como las aplicaciones en tiempo real, sino que las convierte en elementos valiosos en otras estructuras de datos que proporcionan las garantías más desfavorables; por ejemplo, muchas estructuras de datos utilizadas en la geometría computacional pueden basarse en árboles rojos y negros, y el Completely Fair Scheduler utilizado en los kernels Linux actuales usa árboles de color rojo-negro. En la versión 8 de Java, la Colección HashMap se ha modificado de manera que en lugar de usar una lista enlazada para almacenar elementos idénticos con códigos de hash pobres, se utiliza un árbol Rojo-Negro. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871). + - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5). + - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree). + - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/). - [ ] **Árboles de búsqueda 2-3** - En práctica: Los árboles 2-3 tienen inserciones más rápidas a expensas de búsquedas más lentas (ya que la altura es más comparada con árboles AVL). - Usará árboles 2-3 muy raramente porque su implementación implica diferentes tipos de nodos. En su lugar, las personas utilizan árboles de color rojo negro. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2). + - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). + - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - [ ] **Árboles 2-3-4 (aka Árboles 2-4)** - En práctica: Para cada árbol 2-4, hay árboles rojo-negro correspondientes con elementos de datos en el mismo orden. Las operaciones de inserción y supresión en árboles 2-4 también son equivalentes a la rotación de color en rojos y negros árboles. Esto hace que árboles 2-4 sean una herramienta importante para entender la lógica detrás de los árboles rojo-negros, y es por eso que muchos textos de algoritmo introductorios introducen árboles 2-4 justo antes de los árboles rojo-negro, aunque **Los árboles 2-4 no son a menudo utilizados en la práctica**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C). + - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). + - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5). - [ ] **Árboles N-avo (K-avo, M-avo)** - - Nota: La N o K es el factor de ramificación (ramas máximas) - - Los árboles binarios son un árbol de 2 aros, con factor de ramificación = 2 - - Los árboles 2-3 son 3-avos - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + - Nota: La N o K es el factor de ramificación (ramas máximas). + - Los árboles binarios son un árbol de 2 aros, con factor de ramificación = 2. + - Los árboles 2-3 son 3-avos. + - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree). - [ ] **Árboles-B** - - Dato curioso: Es un misterio, pero la B puede ser por Boeing, Balanceado, o Bayer (co-inventor) + - Dato curioso: Es un misterio, pero la B puede ser por Boeing, Balanceado, o Bayer (co-inventor). - En práctica: Árboles-B son ampliamente utilizados en bases de datos. La mayoría de los sistemas de archivos modernos utilizan árboles B (o variantes). Además de su uso en bases de datos, el árbol B también se utiliza en sistemas de archivos para permitir el acceso rápido y aleatorio a un bloque arbitrario en un archivo en particular. El problema básico es convertir la dirección de bloque de archivos i en una dirección de bloque de disco (o tal vez a una dirección de cilindro-cabezal). - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - Cubre árboles-B de cache inconsistente, estructuras de datos muy interesantes - - Los primeros 37 minutos son muy técnicos, puede saltarlos (B es tamaño de bloque, tamaño de línea de caché) - + - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree). + - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6). + - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). + - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). + - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf). + - Cubre árboles-B de cache inconsistente, estructuras de datos muy interesantes. + - Los primeros 37 minutos son muy técnicos, puede saltarlos (B es tamaño de bloque, tamaño de línea de caché). - ### Árboles k-D - - Ideal para encontrar el número de puntos en un rectángulo o un objeto de dimensión superior - - Un buen ajuste para k-vecinos más cercanos - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - Ideal para encontrar el número de puntos en un rectángulo o un objeto de dimensión superior. + - Un buen ajuste para k-vecinos más cercanos. + - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk). + - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg). - ### Lista por saltos - - " Éste es algo de una culta estructura de datos" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - "Este es algo de una culta estructura de datos" - Skiena. + - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list). - ### Flujos de red - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0). + - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0). + - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI). - ### Conjuntos disjuntos & Encontrar unión - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21). + - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t). - ### Matemáticas para procesamiento rápido - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg). - ### Treap - - Combinación de un árbol de búsqueda binaria y un montículo - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - Combinación de un árbol de búsqueda binaria y un montículo. + - [ ] [Treap](https://en.wikipedia.org/wiki/Treap). + - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8). + - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf). - ### Programación Lineal (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ). + - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U). + - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik). + - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk). - ### Geometría, casco convexo (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164). + - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). + - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2). - ### Matemáticas discretas - - Vea videos debajo + - Vea videos debajo. - ### Aprendizaje automático - [ ] ¿Por qué el aprendizaje automático? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70). + - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY). + - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw). + - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0). + - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal). + - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM). + - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html). + - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/). - Cursos: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - Vea los videos 12-18 para un resumen de algebra lineal (14 y 15 son duplicados) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning). + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW). + - Vea los videos 12-18 para un resumen de algebra lineal (14 y 15 son duplicados). + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks). + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730). + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009). + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive). + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science). - Recursos: - Libros: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/). + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X). + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/). + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers). + - Data School: [http://www.dataschool.io/](http://www.dataschool.io/). -- ## Detalles adicionales de ciertos temas - - Agregué estos para reforzar algunas ideas ya presentadas anteriormente, pero no quería incluirlas arriba porque es demasiado. Es fácil exagerar en un tema. - ¿Quieres ser contratado en este siglo, verdad? +Agregué estos para reforzar algunas ideas ya presentadas anteriormente, pero no quería incluirlas arriba porque es demasiado. Es fácil exagerar en un tema. ¿Quieres ser contratado en este siglo, verdad? - [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview). + - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations). + - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees). + - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank). + - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression). + - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional). - [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19). + - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20). + - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21). + - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). + - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15). + - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12). - [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27). + - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28). - [ ] MIT **Probability** (Matemático y va lento, que es bueno para las cosas matemáticas) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21). + - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B). + - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25). -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19). - [ ] **String Matching** - [ ] Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm). + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation). + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis). + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9). + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32). - [ ] Knuth-Morris-Pratt (KMP): - - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer–Moore string search algorithm - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - Inicia bien, pero en el momento en que pasa KMP se vuelve más complicado de lo que necesita ser - - Buena explicación de los tries - - Puede saltarse + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo). + - [ ] Boyer–Moore string search algorithm: + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm). + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10). + - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1): + - Inicia bien, pero en el momento en que pasa KMP se vuelve más complicado de lo que necesita ser. + - Buena explicación de los tries. + - Puede saltarse. - [ ] **Sorting** - - [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69). + - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69). - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2). + - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3). - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600). + - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10). ## Series de videos - Siéntese y disfrute. "Netflix and skill" :P -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) - -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) - -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - -- [ ] CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) - -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) - -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) - -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) - -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) - -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) - -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) - -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) - -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) - -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) - -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) - -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) - -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) - -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr). +- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0). +- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8). +- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A). +- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy). +- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t). +- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo). +- [ ] CSE373 - Analysis of Algorithms (25 videos): + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1). +- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd). +- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C). +- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_). +- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). +- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr). +- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-). +- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq). +- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False). +- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484). +- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi). +- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B). +- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). +- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7). +- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1). +- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c). +- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf). +- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02). +- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy). + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/). +- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV). +- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd). ## Cursos de Informática -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science). +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses). From 678aaaf4e49eaf235bcb5cb9ff327258ce2a9648 Mon Sep 17 00:00:00 2001 From: Michele Ceccacci <75946413+michelececcacci@users.noreply.github.com> Date: Mon, 14 Mar 2022 11:10:15 +0100 Subject: [PATCH 411/857] Backtracking blueprint --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b9be3269ab..20a488e8cf 100644 --- a/README.md +++ b/README.md @@ -968,7 +968,8 @@ Graphs can be used to represent many problems in computer science, so this secti - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - + + [Backtracking Blueprint](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) - ### Dynamic Programming - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. From 82c91a85868d571abbea3f51b73904041937b3db Mon Sep 17 00:00:00 2001 From: Michele Ceccacci <75946413+michelececcacci@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:16:57 +0100 Subject: [PATCH 412/857] Added python to backtracking blueprint --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20a488e8cf..ed5f0afaac 100644 --- a/README.md +++ b/README.md @@ -969,7 +969,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - [Backtracking Blueprint](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Dynamic Programming - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. From 48ec947b29a4b5cf28a55f0d22397ce87ce16f59 Mon Sep 17 00:00:00 2001 From: Alexandru Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:39:33 +0100 Subject: [PATCH 413/857] Update README-es.md --- translations/README-es.md | 1444 ++++++++++++++++++------------------- 1 file changed, 722 insertions(+), 722 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index dc5e50007b..2e9e831985 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -2,7 +2,7 @@ - Versión original: [Inglés](../README.md) -> Originalmente creé esto como una lista corta de temas a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu). Posiblemente no tenga que estudiar mucho como yo. De todos modos, todo lo que necesita, esta aquí. +> Originalmente creé esto como una lista corta de temas a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Posiblemente no tenga que estudiar mucho como yo. De todos modos, todo lo que necesita, esta aquí. > > Durante muchos meses he estudiado diariamente de 8 a 12 horas. Esta es mi historia: [Por qué estudié a tiempo completo durante 8 meses para una entrevista con Google. (Art. Inglés)](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > @@ -94,11 +94,11 @@ Este es mi plan de estudios de varios meses para pasar de ser un Desarrollador W - Paciencia - TIempo -Esto es para los **nuevos Ingenieros de Software** o aquellos que quieren cambiar del Desarrollo de Software/Web a Ingeniero de Software (Dónde el conocimiento de las Ciencias de Computación es requerido). Si tiene varios años de experiencia, y clama tenerlos como Ingeniero de Software, espere una entrevista más ardua. +Esto es para los **nuevos Ingenieros de Software** o aquellos que quieren cambiar del Desarrollo de Software/Web a Ingeniero de Software (Dónde el conocimiento de las Ciencias de Computación es requerido) Si tiene varios años de experiencia, y clama tenerlos como Ingeniero de Software, espere una entrevista más ardua. Si tiene varios años de experiencia en el desarrollo de software/web, note que las grandes compañías (como Google, Amazon, Facebook y Microsoft) ven la Ingeniería de Software diferente al Desarrollo de Software/Web, requiriendo del conocimiento de las Ciencias de Computación. -Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, estudie más de la lista opcional (Redes, Seguridad). +Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, estudie más de la lista opcional (Redes, Seguridad) --- @@ -358,7 +358,7 @@ Si tiene más tiempo (Yo quiero este libro): ### Específicos del lenguaje -**Necesita escoger un lenguaje para la entrevista (mire arriba).** Aquí están mis recomendaciones por lenguaje. No tengo recursos para todos los lenguajes, de modo ques son bienvenidas las adiciones. +**Necesita escoger un lenguaje para la entrevista (mire arriba)** Aquí están mis recomendaciones por lenguaje. No tengo recursos para todos los lenguajes, de modo ques son bienvenidas las adiciones. Si ha leído alguno de estos, probablemente tenga todos los conocimientos de estructuras de datos y algoritmos que necesitará para resolver problemas de codificación. **Puede saltarse todas las video-lecturas en este proyecto**, a menos que quiera una crítica. @@ -498,16 +498,16 @@ Cada día yo tomé un tema de los siguientes, vi videos sobre el tema y escribí - C - usando estructuras y funciones que toman una estructura * y otra cosa como argumentos. - C++ - sin utilizar tipos incorporados. - C++ - usando tipos incorporados, como std::list de STL para una lista enlazada. -- Python - usando tipos incorporados (para seguir practicando Python). -- y escribir pruebas para asegurarme de que lo estoy haciendo bien, a veces simplemente usando simples declaraciones assert(). +- Python - usando tipos incorporados (para seguir practicando Python) +- y escribir pruebas para asegurarme de que lo estoy haciendo bien, a veces simplemente usando simples declaraciones assert() - Puede hacer Java o algo más, esto es solo lo mío. -No necesita todo esto. Solo necesita [un lenguaje para la entrevista](#escoja-un-lenguaje-para-la-entrevista). +No necesita todo esto. Solo necesita [un lenguaje para la entrevista](#escoja-un-lenguaje-para-la-entrevista) ¿Por qué codificar en todo esto? -- Práctica, práctica, práctica… Hasta que me canse de ello y pueda hacerlo sin ningún problema (algunos usan técnicas y marcadores para recordar). -- Trabajar dentro de las restricciones primarias (asignar / liberar memoria sin ayuda del garbage collection (excepto Python)). -- Hacer uso de los tipos incorporados para que tenga experiencia usando las herramientas de tipos incorporados para su uso en el mundo real (no escribiré mi propia implementación de listas enlazadas en producción). +- Práctica, práctica, práctica… Hasta que me canse de ello y pueda hacerlo sin ningún problema (algunos usan técnicas y marcadores para recordar) +- Trabajar dentro de las restricciones primarias (asignar / liberar memoria sin ayuda del garbage collection (excepto Python)) +- Hacer uso de los tipos incorporados para que tenga experiencia usando las herramientas de tipos incorporados para su uso en el mundo real (no escribiré mi propia implementación de listas enlazadas en producción) Puede que no tenga tiempo de hacer todo esto para cada tema, pero lo intentaré. @@ -529,28 +529,28 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [answers to questions](https://github.com/lekkas/c-algorithms) - [ ] **Cómo las computadoras procesan un programa:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA). - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE). + - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) ## Complejidad algorítmica / Big-O / Análisis asintótico - Nada a implementar. -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN). +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf). -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/). -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59). -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61). -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98). -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc). -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN). -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63). + - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) +- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) +- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) +- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] TopCoder (incluye relaciones de recurrencia y teorema maestro): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/). - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/). -- [ ] [Cheat sheet](http://bigocheatsheet.com/). + - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) Si algunas de las lecturas son muy matemáticas, puede saltar a la parte inferior y ver las matemáticas discretas para tener el conocimiento base. @@ -560,14 +560,14 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - ### Arreglos - Implemente un vector automáticamente redimensionable. - [ ] Descripción: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays). - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s). - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4). - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4). - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays). - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g). - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4). - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4). + - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) + - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) + - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) + - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implemente un vector (Arreglo mutable con redimensionamiento automático): - [ ] Practique codificar usando arreglos y apuntadores, y un apuntador matemático para saltar a un índice en lugar de utilizar la indexación. - [ ] Nuevo arreglo de información primaria con memoria asignada. @@ -592,18 +592,18 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - O(n) Para insertar/eliminar donde sea. - [ ] Espacio: - Contiguo en la memoria, por lo que la proximidad ayuda al rendimiento. - - Espacio necesario = (capacidad de matriz, que es> = n) * tamaño del elemento, pero incluso si 2n, todavía O (n)). + - Espacio necesario = (capacidad de matriz, que es> = n) * tamaño del elemento, pero incluso si 2n, todavía O (n)) - ### Listas Enlazadas - [ ] Descripción: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists). - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5). + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - No todo el video, solo porciones acerca de la estructura de nodos y la asignación de memoria. - [ ] Listas enlazadas vs Arreglos: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays). - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays). - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo). + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: Necesita tener conocimiento del apuntador a apuntador: (Cuando se pasa un apuntador a una función este puede cambiar la dirección a la que el apuntador apunta) Esta página es sólo para tener una idea sobre un apuntador a un apuntador. No recomiendo esta lista de estilo transversal. La legibilidad y sostenibilidad sufren debido a la astucia. @@ -611,7 +611,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] Implemente (Lo hice con y sin un puntero de cola): - [ ] size() – Regresa el número de elementos en la lista. - [ ] empty() – Un bool que regresa verdadero si está vacío. - - [ ] value_at(index) – Regresa el valor del el n-avo elemento (usando 0 como primero). + - [ ] value_at(index) – Regresa el valor del el n-avo elemento (usando 0 como primero) - [ ] push_front(value) – Añade un elemento al frente de la lista. - [ ] pop_front() – Elimina el elemento frontal y regresa su valor. - [ ] push_back(value) – Añade un elemento al final. @@ -624,21 +624,21 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] reverse() – Pone al revés toda la lista. - [ ] remove_value(value) – Borra el primer elemento en la lista con ese valor. - [ ] Doble lista enlazada: - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists). + - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - No es necesario. - ### Pila: - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks). - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4). + - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] No implementaré. Implementando con arreglos es trivial. - ### Cola o fila - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4). - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue). - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer). - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4). + - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) + - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implementar usando listas enlazadas, con el puntero de la cola: - enqueue(value) – Añade el valor en la posición de la cola. - - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal). + - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal) - empty() - [ ] Implementar usando arreglos de tamaño fijo: - enqueue(value) – Añade elemento al final del almacenamiento disponible. @@ -647,30 +647,30 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - full() - [ ] Costo: - Una mala implementación usando lista enlazada donde se enqueue en la cabeza y dequeue en la cola sería O (n), porque usted necesitaría el siguiente al último elemento, causando un recorrido completo cada dequeue. - - enqueue: O(1) (amortizado, Lista enlazada y arreglo [sondaje]). - - dequeue: O(1) (Lista enlazada y arreglo). - - empty: O(1) (Lista enlazada y arreglo). + - enqueue: O(1) (amortizado, Lista enlazada y arreglo [sondaje]) + - dequeue: O(1) (Lista enlazada y arreglo) + - empty: O(1) (Lista enlazada y arreglo) - ### Matriz asociativa - [ ] Videos: - - [ ] [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). - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68). - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11). - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4). + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Cursos en línea: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4). - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4). - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4). - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4). - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables). - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3). - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem). + - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) + - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) + - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) + - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] Matriz asociativas distribuidas: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox). - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables). + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - [ ] Implementar con arreglo usando sondaje lineal - hash(k, m) - m es el tamaño de la matriz asociativa. @@ -681,39 +681,39 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co ## Información adicional - ### Búsqueda binaria - - [ ] [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). - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/). + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - [ ] Implementar: - - Búsqueda binaria (en un arreglo ordenado de enteros). + - Búsqueda binaria (en un arreglo ordenado de enteros) - Búsqueda binaria usando recursión. - ### Operaciones bit a bit - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32). + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - Debería conocer varias de las potencias de 2 a partir de (2^1 to 2^16 and 2^32) - [ ] Obtenga un buen entendimiento de la manipulación de bits con: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)). + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Buena introducción: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I). - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0). - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation). - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation). - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html). - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/). - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html). + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - [ ] Complemento a uno y dos: - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4). - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement). - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement). + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] Contar bits puestos: - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc). - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan). - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer). + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] Redondeo a la próxima potencia de 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html). + - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - [ ] Valor de intercambio: - - [Swap](http://bits.stephan-brumme.com/swap.html). + - [Swap](http://bits.stephan-brumme.com/swap.html) - [ ] Valores absolutos: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html). + - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) ## Árboles - ### Árboles - Notas & Antecedentes @@ -724,43 +724,43 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - BFS (búsqueda en amplitud) - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - Orden de nivel (BFS, usando colas): - Tiempo de complejidad: O(n). - Espacio de complejidad: Mejor: O(1), Peor: O(n/2)=O(n). + Tiempo de complejidad: O(n) + Espacio de complejidad: Mejor: O(1), Peor: O(n/2)=O(n) - DFS (búsqueda en profundidad) - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - Notas: - Tiempo de complejidad: O(n). + Tiempo de complejidad: O(n) Espacio de complejidad: Mejor: O(log n) – Promedio de la altura del árbol. - Peor: O(n). - - inorder (DFS: left, self, right). - - postorder (DFS: left, right, self). - - preorder (DFS: self, left, right). + Peor: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) - ### Árboles de búsqueda binaria: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees). + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - Comienza con la tabla de símbolos y pasa por las aplicaciones BST. - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction). - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68). + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28). - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29). - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31). - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32). - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36). - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P). + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implementar: - [ ] insert // Inserta valores en el árbol. - [ ] get_node_count // Obtener la cuenta de los valores almacenados. - [ ] print_values // Imprime los valores en el árbol, del min al max. - [ ] delete_tree - [ ] is_in_tree // Devuelve verdadero si el valor dado existe en el árbol. - - [ ] get_height // Regresa la altura en los nodos (La altura de cada nodo es 1). + - [ ] get_height // Regresa la altura en los nodos (La altura de cada nodo es 1) - [ ] get_min // Regresa el valor mínimo almacenado en el árbol. - [ ] get_max // Regresa el valor máximo almacenado en el árbol. - [ ] is_binary_search_tree @@ -768,21 +768,21 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] get_successor // Regresa el siguiente valor más alto en el árbol después del valor dado. Si no hay ninguno, devuelve -1. - ### Montículo / Colas de Prioridad / Montículo binario - - Visto como un árbol, pero usualmente es lineal en el almacenamiento (arreglo, lista enlazada). - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)). - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction). - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations). - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees). - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark). - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations). - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees). - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode). - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291). - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort). - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap). - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C). - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw). + - Visto como un árbol, pero usualmente es lineal en el almacenamiento (arreglo, lista enlazada) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] Implementar una cola máxima: - [ ] insert - [ ] sift_up – Necesario para el insert. @@ -794,58 +794,58 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] remove(i) – Elimina el elemento en el índice x. - [ ] heapify – Crea una cola de un arreglo de elementos, necesario para heap_sort. - [ ] heap_sort() – Toma un arreglo no ordenado y lo convierte en un arreglo ordenando en su lugar usando una cola máxima. - - Nota: Usar una cola mínima reduciría operaciones, pero duplicaría el espacio necesario (No se puede hacer en lugar). + - Nota: Usar una cola mínima reduciría operaciones, pero duplicaría el espacio necesario (No se puede hacer en lugar) ## Ordenamientos - [ ] Notas: - Implementar ordenamientos y conocer el mejor/peor de los casos y el promedio de complejidad de cada uno: - No ordenamiento de burbuja - Es terrible - O(n^2), excepto cuando n <= 16. - [ ] Estabilidad en algoritmos de ordenamiento("¿Es Quicksort estable?"): - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability). - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms). - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/). - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf). + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - [ ] ¿Cuáles algoritmos pueden ser usados en listas enlazadas? ¿Cuáles en arreglos? ¿Cuál en ambos? - No recomendaría ordenar una lista enlazada, pero el ordenamiento por mezcla es realizable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/). + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - Para ordenamientos por montículos, vea la estructura de datos de Colas o filas arriba. El ordenamiento por montículos es estupendo, pero inestable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1). - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2). - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) + - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) + - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29). - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30). - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C). - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C). - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB). -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB). -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB). -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB). -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB). -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB). + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - [ ] Codificando Merge sort: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c). - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py). - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc). + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) - [ ] Codificando Quick sort: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c). - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c). - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py). + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - [ ] Implemente: - [ ] Mergesort: O(n log n) Promedio y peor caso. @@ -854,21 +854,21 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - Para ordenamientos por montículos, vea la estructura de datos de Colas o filas arriba. - [ ] No requeridos, pero los recomendaría: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6). - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5). - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4). - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1). - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort). - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38). - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14). - -Como resumen aquí esta una representación visual de [15 algoritmos de ordenamiento](https://www.youtube.com/watch?v=kPRA0W1kECg). -Si necesita más detalle de este tema vea “Ordenamientos” en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas). + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) + - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Como resumen aquí esta una representación visual de [15 algoritmos de ordenamiento](https://www.youtube.com/watch?v=kPRA0W1kECg) +Si necesita más detalle de este tema vea “Ordenamientos” en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas) ## Gráficos @@ -885,41 +885,41 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - Cuando se le haga una pregunta busqué una solución basada en grafos, si no encuentra continúe. - [ ] Lecturas de Skiena – Gran introducción): - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11). - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12). - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13). - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). + - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] Gráficos (revisión y más): - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17). - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18). - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7). - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8). - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9). - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489). - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19). - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw). + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - Curso Completo de Coursera: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome). + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - Implementaré: - - [ ] DFS con lista de adyacencia (recursión). - - [ ] DFS con la lista de adyacencia (iterativa con la pila). - - [ ] DFS con matriz de adyacencia (recursión). - - [ ] DFS con matriz de adyacencia (iterativa con pila). + - [ ] DFS con lista de adyacencia (recursión) + - [ ] DFS con la lista de adyacencia (iterativa con la pila) + - [ ] DFS con matriz de adyacencia (recursión) + - [ ] DFS con matriz de adyacencia (iterativa con pila) - [ ] BFS con lista de adyacencia. - [ ] BFS con matriz de adyacencia. - - [ ] Ruta de acceso de una sola fuente más corta (Dijkstra). + - [ ] Ruta de acceso de una sola fuente más corta (Dijkstra) - [ ] Árbol de expansión mínimo. - Algoritmos basados en DFS (ver videos de Aduni arriba): - - [ ] Comprobar el ciclo (necesario para el tipo topológico, ya que vamos a comprobar el ciclo antes de comenzar). + - [ ] Comprobar el ciclo (necesario para el tipo topológico, ya que vamos a comprobar el ciclo antes de comenzar) - [ ] Clasificación topológica. - [ ] Cuenta los componentes conectados en un grafo. - [ ] Lista de componentes fuertemente conectados. @@ -931,10 +931,10 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia ## Más información adicional - ### Recursión - [ ] Conferencias de Stanford sobre la recursividad y retroceso: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8). - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9). - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69). - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11). + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - ¿Cuándo es apropiado usarlo? - ¿Qué es la recursión de cola? ¿Por qué es tan mala? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) @@ -945,49 +945,49 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - Sugiero que busque muchos ejemplos de problemas de PD hasta que tenga una comprensión sólida del patrón involucrado. - [ ] Videos: - Los videos de Skiena pueden ser duros de seguir ya que a veces usa el pizarrón, que es demasiado pequeño para verlo bien. - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718). - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749). - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406). - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22). - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558). - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12). + - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] Lista de problemas individuales de PD (cada uno es corto): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr). + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] Notas de la clase de Yale: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming). + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem). - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm). - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm). - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm). - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation). - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment). - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment). + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Programación Orientada a Objetos - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc). + - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - Puede omitir esto si tiene una gran comprensión de OO y OO prácticas de diseño. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). + - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] Principios SOLID OOP: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE). - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A). - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html). + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle). - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en). - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle). - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en). + - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Los clientes no deberían ser forzados a implementar interfaces que no emplearán. - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ). - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en). + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reducir la dependencia en la composición de los objetos. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important). - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en). + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - ### Patrones de diseño - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3). + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Aprenda estos patrones: - [ ] strategy - [ ] singleton @@ -1006,59 +1006,59 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344). - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07). - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124). + - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - Sé que el libro canónico es "Design Patterns: Elements of Reusable Object-Oriented Software", pero Head First es ideal para principiantes a OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips). - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns). + - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - ### Combinatorias (n elije k) & Probabilidad - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U). - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4). - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ). + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - Diseño del curso: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic). + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - Solo los videos - 41 (cada uno simple y corto): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19). + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Completo y Algoritmos de aproximación - Conozca acerca de las clases más famosas de problemas de NP-completo, tales como el vendedor ambulante y el problema de la mochila, y sea capaz de reconocerlos cuando un entrevistador se los pide disfrazados. - Conozca que significa NP-completo. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23). + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939). - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18). + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508). - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22). - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24). - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - Peter Norvig discute soluciones casi óptimas para el problema del vendedor ambulante: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb). + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Paginas 1048 - 1140 en CLRS si lo tiene. - ### Memoria caché - [ ] LRU caché: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M). - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI). - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU). + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU caché: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24). - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-). + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### Procesos e hilos - [ ] Computer Science 162 - Operating Systems (25 videos): - Para los procesos e hilos vea los videos 1-11. - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c). - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread). + - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Cubre: - Procesos, Hilos, Temas de Concurrencia. - Diferencia entre procesos e hilos. @@ -1073,55 +1073,55 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - Livelock. - Actividad de CPU, interrupciones, conmutación de contexto. - Moderna concurrencia construida con procesadores multinúcleo. - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2). - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3). - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8). - - Necesidades de recursos de proceso (memoria: código, almacenamiento estático, pila, monticulo y también descriptores de archivo, i /o). - - Necesidades de recursos de hilos (partes anteriores (menos pila) con otros hilos en el mismo proceso, pero cada uno tiene su propio PC, contador de pila, registros y pila). + - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) + - Necesidades de recursos de proceso (memoria: código, almacenamiento estático, pila, monticulo y también descriptores de archivo, i /o) + - Necesidades de recursos de hilos (partes anteriores (menos pila) con otros hilos en el mismo proceso, pero cada uno tiene su propio PC, contador de pila, registros y pila) - Bifurcación es realmente copia en escritura (sólo lectura) hasta que el nuevo proceso escribe en memoria, entonces hace una copia completa.. - Cambio de contexto: - Cómo se inicia el cambio de contexto por el sistema operativo y el hardware subyacente. - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M). + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1). - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM). - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s). - - [reference](http://www.dabeaz.com/GIL). - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4). - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU). - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY). + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### Documentos - La lectura de todos los documentos, de extremo a extremo con la comprensión completa, probablemente tomará más tiempo del que tiene. Recomiendo ser selectivo en los documentos y sus secciones. - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/). - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf). - - [implemented in Go](https://godoc.org/github.com/thomas11/csp). - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf). + - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) + - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) + - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - Remplazado por Colossus en 2012. - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf). + - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - ¿Casi totalmente remplazado por Cloud Dataflow?. - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf). - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf). - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf). - - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf). + - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) + - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) + - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) + - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf) - The Dynamo paper kicked off the NoSQL revolution. - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf). - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf). - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf). - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/). + - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) + - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) + - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) + - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - Documento no disponible. - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf). - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany). + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf). - - [video](https://www.usenix.org/node/170855). - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf). - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf). - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf). - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf). - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf). - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf). + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) + - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) + - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) + - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf) + - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - ### Pruebas - A cubrir: @@ -1129,18 +1129,18 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - ¿Qué son objetos simulados? - ¿Qué es la prueba de integración? - ¿Qué es la inyección de dependencia? - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U). - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU). - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706). - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf). - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html). - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo). - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g). - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc). + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) + - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] Inyección de dependencia: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ). - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html). - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html). + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Planificador - En un SO, Como funciona @@ -1151,45 +1151,45 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - ¿Puede implementarlas? - ### Búsqueda de cadenas y manipulaciones - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg). - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5). - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5). - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4). - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2). - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text). + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) + - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - Si necesita más detalle de este tema, vea "String Matching" en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas). + Si necesita más detalle de este tema, vea "String Matching" en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas) - ### Tries - Note que existen diferentes tipos de tries. Algunos tienen prefijos, otros no, y algunos usan cadenas en lugar de bits para seguir el camino. - Lo leo a través del código, pero no lo implementaría. - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ): - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1). - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries). + - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] Videos de cursos cortos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries). - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries). - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie). - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure). - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/). - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU). - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf). + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Números de punto flotante - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU). - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec). + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html). - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/). + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - ### Extremidad (Endianness) - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html). - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo). + - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0): - Charlas muy técnicas para desarrolladores del kernel. No se preocupe si la mayoría se ve complicado. - La primera mitad es suficiente. @@ -1197,19 +1197,19 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - ### Redes - **Si tiene experiencia en redes o quiere ser un Ingeniero en Sistemas espere bastantes preguntas** - De cualquier forma, esto es bueno saberlo. - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro). - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8). - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0). - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM). - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As). - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0). - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM). - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8). - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j). - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4). + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s). - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ). + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## Diseño del Sistema, Escalabilidad, Manejo de Datos - **Puede esperar preguntas sobre el diseño del sistema si tiene más de 4 años de experiencia.** @@ -1227,85 +1227,85 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - Simplicidad y robustez. - Compromisos. - Análisis y optimización del rendimiento. -- [ ] **EMPIECE AQUI**: [The System Design Primer](https://github.com/donnemartin/system-design-primer). -- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/). -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023). -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/). -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/). -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM). +- [ ] **EMPIECE AQUI**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - Hay muchos recursos en este. Mire los articulos y sus ejemplos. Pondré Algunos debajo. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/). -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/). -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html). -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk). -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/). +- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) - [ ] Algoritmo de consenso de Paxos: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM). - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o). - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf). -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html). -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html). + - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Escalabilidad: - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4). + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Series Cortas: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones). - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database). - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache). - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism). - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html). - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf). - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html). - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html). - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI). - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/). - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc). - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0). - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/). - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html). - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook). - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU). - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4). - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html). - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok). - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html). - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/). - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o). - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/). - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/). - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html). - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html). - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html). - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html). - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html). - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html). - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html). - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html). - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html). - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html). - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html). - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html). - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html). - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html). - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html). - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it). - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html). - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances). - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html). - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html). - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html). - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html). - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture). - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html). - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html). + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] Vea la forma en "Messaging, Serialization, and Queueing Systems" debajo para la información sobre algunas de las tecnologías que pueden unir servicios. - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI). - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability). - - Para aún más, vea la serie de videos "Mining Massive Datasets" en la sección de [Series de video](#series-de-videos). + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - Para aún más, vea la serie de videos "Mining Massive Datasets" en la sección de [Series de video](#series-de-videos) - [ ] Practicando el proceso de diseño del sistema: Aquí hay algunas ideas para tratar de trabajar en papel, cada una con cierta documentación sobre cómo se manejó en el mundo real: - - Revisión: [The System Design Primer](https://github.com/donnemartin/system-design-primer). - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/). - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf). + - Revisión: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - Flujo: 1. Comprender el problema y el alcance: - Definir los casos de uso, con ayuda del entrevistador. @@ -1314,26 +1314,26 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - Asumir alta disponibilidad es necesario, añadir como un caso de uso. 2. Piense en las limitaciones: - Preguntar cuántas solicitudes por mes. - - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas). + - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas) - Lectura de estimación vs. Escribir porcentajes. - Tenga en cuenta la regla 80/20 al estimar. - La cantidad de datos escritos por segundo. - Almacenamiento total requerido durante 5 años. - La cantidad de datos leídos por segundo. 3. Diseño abstracto: - - Capas (servicio, datos, almacenamiento en caché). + - Capas (servicio, datos, almacenamiento en caché) - Infraestructura: balanceo de carga, mensajería. - Descripción aproximada de cualquier algoritmo clave que impulsa el servicio. - Considerar los cuellos de botella y determinar las soluciones. - Ejercicios: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci). - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake). - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html). - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis). - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html). - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf). - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/). - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/). + - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) --- @@ -1341,36 +1341,36 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia Esta sección tendrá videos cortos en los que podrá visualizar rápidamente para revisar algunos de los conceptos importantes. Es bueno si quieres repasar frecuentemente. -- [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos). - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22). +- [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ). -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd). - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t). - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0). - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh). - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd). - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9). - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1). - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5). - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG). - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu). - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx). - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11). -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50). - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM). - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K). - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj). - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD). - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma). - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53). - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ). - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66). - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh). - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ). - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF). - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1). - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S). + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) + - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) + - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) + - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) + - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) + - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) + - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) + - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) + - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) + - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) + - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) + - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) +- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) + - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) + - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) + - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) + - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) + - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) + - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) + - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) + - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) + - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) + - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) + - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1388,17 +1388,17 @@ Porque necesita practicar haciendo problemas de programación: - Llegar con la complejidad del tiempo y espacio para sus soluciones. - Probar sus soluciones. Hay una gran introducción para la solución de problemas metódicos y comunicativos en una entrevista. Conseguirá esto de los libros para la entrevista de programación también, pero encontré esto excepcional: -[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/). +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) ¿No tiene pizarrón en casa? Hace sentido. Soy un bicho raro y tengo una pizarra grande. En vez de una pizarra blanca, recoja un gran cuadernillo de dibujo de una tienda de arte. Puede sentarse en el sofá y practicar. Esta es mi "pizarra de sofá". He añadido la pluma en la foto para la escala. Si usa un bolígrafo, deseará poder borrarlo. Se ensucia rápido. -![my sofa whiteboard](https://camo.githubusercontent.com/4b2dfa34fd739404edcc014f89b5432ab1ec9cfebecce1d59b9f7986826d03cf/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f6172745f626f6172645f736d5f322e6a7067). +![my sofa whiteboard](https://camo.githubusercontent.com/4b2dfa34fd739404edcc014f89b5432ab1ec9cfebecce1d59b9f7986826d03cf/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f6172745f626f6172645f736d5f322e6a7067) Complementarios: -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/). -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/). -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php). -- [Exercises for getting better at a given language](http://exercism.io/languages). +- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) +- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [Exercises for getting better at a given language](http://exercism.io/languages) **Lea y haga problemas de programación (en ese orden):** @@ -1407,44 +1407,44 @@ Complementarios: - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/): - Respuestas en Java -Vea [Lista de libros](#lista-de-libros). +Vea [Lista de libros](#lista-de-libros) ## Ejercicios de codificación/Desafíos Una vez haya aprendido, ponga ese cerebro a trabajar. Tome desafíos de codificación todos los días y tantos como pueda. -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/). -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/). +- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) +- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) Videos de preguntas de entrevistas de código: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI). -- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd). +- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) Sitios de desafíos: -- [LeetCode](https://leetcode.com/). -- [TopCoder](https://www.topcoder.com/). -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems). -- [Codewars](http://www.codewars.com). -- [HackerEarth](https://www.hackerearth.com/). -- [HackerRank](https://www.hackerrank.com/). -- [Codility](https://codility.com/programmers/). -- [InterviewCake](https://www.interviewcake.com/). -- [Geeks for Geeks](http://www.geeksforgeeks.org/). -- [InterviewBit](https://www.interviewbit.com). -- [Sphere Online Judge (spoj)](http://www.spoj.com/). +- [LeetCode](https://leetcode.com/) +- [TopCoder](https://www.topcoder.com/) +- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) +- [Codewars](http://www.codewars.com) +- [HackerEarth](https://www.hackerearth.com/) +- [HackerRank](https://www.hackerrank.com/) +- [Codility](https://codility.com/programmers/) +- [InterviewCake](https://www.interviewcake.com/) +- [Geeks for Geeks](http://www.geeksforgeeks.org/) +- [InterviewBit](https://www.interviewbit.com) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) Repositorios con desafíos: -- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges). +- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) Bosquejos de entrevista: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/). -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/). -- [Refdash: Mock interviews](https://refdash.com/). +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) +- [Refdash: Mock interviews](https://refdash.com/) ## Una vez cerca de la entrevista - [ ] Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo). - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo). + - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) ## Su CV (Currículum Vitae) Vea los elementos de preparación en **Cracking The Coding Interview and back of Programming Interviews Exposed** @@ -1503,43 +1503,43 @@ Nunca está de verdad realizado. - Viejo pero bueno. - [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/): - Una opción moderna. -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated). +- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/): - Una gentil introducción al diseño de patrones. - [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612): - aka el libro "Gang Of Four" , o GOF. - El libro canonico de diseño de patrotes. -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/). +- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) ## Aprendizaje adicional Es probable que estos temas no aparezcan en una entrevista, pero los añadí para ayudarle a convertirse en un Ingeniero de Software más completo, y ser consciente en ciertas tecnologías y algoritmos, para que tenga una caja de herramientas más grande. - ### Compiladores - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg). - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo). - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk). - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU). + - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs y Vi(m) - Familiarícese con un editor de código basado en Unix. - Vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr). - - [VIM Adventures](http://vim-adventures.com/). + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) - Conjunto de 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk). - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE). - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI). - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA). - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs). + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - Emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0). + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - Conjunto de 3 videos: - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q). - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II). - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc). - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc). - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs). + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - ### Unix: Herramientas para la línea de comandos - Llene la lista inferior con buenas herramientas. @@ -1556,20 +1556,20 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Teoría de la información (videos) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory). + - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - [ ] Más acerca de los procesos de Markov: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation). - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation). - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through). + - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - Vea más en la serie MIT 6.050J Information and Entropy. - ### Código de paridad y Hamming (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE). - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M). + - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc). - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o). - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk). + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropía - También vea los videos de abajo. @@ -1579,102 +1579,102 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - ### Criptografía - También vea los videos de abajo. - Asegúrese de ver los videos de la teoría de la información primero. - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography). - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30). - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compresión - Asegúrese de ver los videos de la teoría de la información primero. - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w). - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko). - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI). - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g). - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA). - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU). - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H). - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s). + - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Seguridad informática - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2). - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3). - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6). - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). + - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Recolección de basura - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff). - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI). - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits). - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3). + - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) + - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Programación en paralelo - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1). - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk). + - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Sistemas de mensajería, serialización y colas - [ ] [Thrift](https://thrift.apache.org/): - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html). + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/): - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials). + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - [ ] [gRPC](http://www.grpc.io/): - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1). + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [ ] [Redis](http://redis.io/): - - [Tutorial](http://try.redis.io/). - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/). - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/). + - [Tutorial](http://try.redis.io/) + - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - [ ] [RabbitMQ](https://www.rabbitmq.com/): - - [Get Started](https://www.rabbitmq.com/getstarted.html). + - [Get Started](https://www.rabbitmq.com/getstarted.html) - [ ] [Celery](http://www.celeryproject.org/): - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html). + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - [ ] [ZeroMQ](http://zeromq.org/): - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual). - - [ ] [ActiveMQ](http://activemq.apache.org/). - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction). - - [ ] [MessagePack](http://msgpack.org/index.html). - - [ ] [Avro](https://avro.apache.org/). + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ ] [ActiveMQ](http://activemq.apache.org/) + - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [ ] [MessagePack](http://msgpack.org/index.html) + - [ ] [Avro](https://avro.apache.org/) - ### A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm). - - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE). - - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE). + - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Transformada rápida de Fourier - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/). - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/). - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q). - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4). - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/). + - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Filtro de Bloom - - Dado un filtro de Bloom con m bits y k funciones de hashing, tanto las pruebas de inserción como de pertenencia son O(k). - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs). - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78). - - [Tutorial](http://billmill.org/bloomfilter-tutorial/). - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/). + - Dado un filtro de Bloom con m bits y k funciones de hashing, tanto las pruebas de inserción como de pertenencia son O(k) + - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html). + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Hashing sensible a la localidad - Usado para determiner la similitude de documentos. - Lo opuesto de MD5 o SHA que son usados para determinar si dos documentos/cadenas son exactamente iguales. - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html). + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### Árboles van Emde Boa - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6). - - [ ] [MIT Lecture Notes](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). + - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [ ] [MIT Lecture Notes](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) - ### Estructuras de datos aumentadas - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950). + - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - ### Árboles de búsqueda equilibrada - Conocer por lo menos un tipo de árbol binario equilibrado (y saber cómo se implementa): @@ -1685,138 +1685,138 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par Si terminas implementando un árbol rojo / negro, intenta lo siguiente: - Funciones de búsqueda e inserción, saltándose eliminar. - Quiero aprender más acerca de los Árboles-B ya que se utiliza tan ampliamente con conjuntos de datos muy grandes. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree). + - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - [ ] **Árboles AVL** - En práctica: Por lo que puedo decir, estos no se usan mucho en la práctica, pero pude ver dónde estarían: - El árbol AVL es otra estructura que soporta la búsqueda, inserción y eliminación de O (log n). Es más rígidamente equilibrado que los árboles rojo-negro, lo que lleva a una inserción y eliminación más lenta, pero más rápido la recuperación. Esto lo hace atractivo para las estructuras de datos que se pueden construir una vez y se cargan sin reconstrucción, como diccionarios de idiomas (o diccionarios de programas, como los opcodes de un ensamblador o intérprete). - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6). - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees). - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation). - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge). + El árbol AVL es otra estructura que soporta la búsqueda, inserción y eliminación de O (log n) Es más rígidamente equilibrado que los árboles rojo-negro, lo que lleva a una inserción y eliminación más lenta, pero más rápido la recuperación. Esto lo hace atractivo para las estructuras de datos que se pueden construir una vez y se cargan sin reconstrucción, como diccionarios de idiomas (o diccionarios de programas, como los opcodes de un ensamblador o intérprete) + - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - [ ] **Árboles biselados** - En práctica: Los árboles biselados son típicamente usados en la implementación de la memoria cache, ssignadores de memoria, enrutadores, recolectores de basura, compresión de datos, cuerdas (reemplazo de la cadena utilizada para cadenas de texto largas), en Windows NT (en la memoria virtual, en red y en el código del sistema de archivos) etc. - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd). + - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - [ ] MIT Lecture: Splay Trees: - Se vuelve muy matemático, pero vea los 10 últimos minutos. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo). + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - [ ] **Árboles rojos/negros** - Éstos son una traducción de un árbol 2-3 (véase abajo) - En la práctica: Los árboles rojo-negro ofrecen las peores garantías de tiempo de inserción, tiempo de borrado y tiempo de búsqueda. Esto no solo los hace valiosos en aplicaciones sensibles al tiempo como las aplicaciones en tiempo real, sino que las convierte en elementos valiosos en otras estructuras de datos que proporcionan las garantías más desfavorables; por ejemplo, muchas estructuras de datos utilizadas en la geometría computacional pueden basarse en árboles rojos y negros, y el Completely Fair Scheduler utilizado en los kernels Linux actuales usa árboles de color rojo-negro. En la versión 8 de Java, la Colección HashMap se ha modificado de manera que en lugar de usar una lista enlazada para almacenar elementos idénticos con códigos de hash pobres, se utiliza un árbol Rojo-Negro. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871). - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5). - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree). - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/). + - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - [ ] **Árboles de búsqueda 2-3** - En práctica: - Los árboles 2-3 tienen inserciones más rápidas a expensas de búsquedas más lentas (ya que la altura es más comparada con árboles AVL). + Los árboles 2-3 tienen inserciones más rápidas a expensas de búsquedas más lentas (ya que la altura es más comparada con árboles AVL) - Usará árboles 2-3 muy raramente porque su implementación implica diferentes tipos de nodos. En su lugar, las personas utilizan árboles de color rojo negro. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2). - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). + - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] **Árboles 2-3-4 (aka Árboles 2-4)** - En práctica: Para cada árbol 2-4, hay árboles rojo-negro correspondientes con elementos de datos en el mismo orden. Las operaciones de inserción y supresión en árboles 2-4 también son equivalentes a la rotación de color en rojos y negros árboles. Esto hace que árboles 2-4 sean una herramienta importante para entender la lógica detrás de los árboles rojo-negros, y es por eso que muchos textos de algoritmo introductorios introducen árboles 2-4 justo antes de los árboles rojo-negro, aunque **Los árboles 2-4 no son a menudo utilizados en la práctica**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C). - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5). + - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] **Árboles N-avo (K-avo, M-avo)** - - Nota: La N o K es el factor de ramificación (ramas máximas). + - Nota: La N o K es el factor de ramificación (ramas máximas) - Los árboles binarios son un árbol de 2 aros, con factor de ramificación = 2. - Los árboles 2-3 son 3-avos. - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree). + - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - [ ] **Árboles-B** - - Dato curioso: Es un misterio, pero la B puede ser por Boeing, Balanceado, o Bayer (co-inventor). + - Dato curioso: Es un misterio, pero la B puede ser por Boeing, Balanceado, o Bayer (co-inventor) - En práctica: - Árboles-B son ampliamente utilizados en bases de datos. La mayoría de los sistemas de archivos modernos utilizan árboles B (o variantes). Además de su uso en bases de datos, el árbol B también se utiliza en sistemas de archivos para permitir el acceso rápido y aleatorio a un bloque arbitrario en un archivo en particular. El problema básico es convertir la dirección de bloque de archivos i en una dirección de bloque de disco (o tal vez a una dirección de cilindro-cabezal). - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree). - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6). - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6). - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf). + Árboles-B son ampliamente utilizados en bases de datos. La mayoría de los sistemas de archivos modernos utilizan árboles B (o variantes) Además de su uso en bases de datos, el árbol B también se utiliza en sistemas de archivos para permitir el acceso rápido y aleatorio a un bloque arbitrario en un archivo en particular. El problema básico es convertir la dirección de bloque de archivos i en una dirección de bloque de disco (o tal vez a una dirección de cilindro-cabezal) + - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - Cubre árboles-B de cache inconsistente, estructuras de datos muy interesantes. - - Los primeros 37 minutos son muy técnicos, puede saltarlos (B es tamaño de bloque, tamaño de línea de caché). + - Los primeros 37 minutos son muy técnicos, puede saltarlos (B es tamaño de bloque, tamaño de línea de caché) - ### Árboles k-D - Ideal para encontrar el número de puntos en un rectángulo o un objeto de dimensión superior. - Un buen ajuste para k-vecinos más cercanos. - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk). - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg). + - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Lista por saltos - "Este es algo de una culta estructura de datos" - Skiena. - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list). + - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Flujos de red - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0). - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0). - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI). + - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Conjuntos disjuntos & Encontrar unión - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21). - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t). + - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) + - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - ### Matemáticas para procesamiento rápido - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg). + - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combinación de un árbol de búsqueda binaria y un montículo. - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap). - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8). - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf). + - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) + - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Programación Lineal (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ). - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U). - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik). - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk). + - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometría, casco convexo (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164). - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm). - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2). + - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Matemáticas discretas - Vea videos debajo. - ### Aprendizaje automático - [ ] ¿Por qué el aprendizaje automático? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70). - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY). - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw). - - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0). - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal). - - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM). - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html). - - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/). + - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [ ] [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [ ] [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [ ] [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Cursos: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning). - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW). - - Vea los videos 12-18 para un resumen de algebra lineal (14 y 15 son duplicados). - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks). - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730). - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009). - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive). - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science). + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - Vea los videos 12-18 para un resumen de algebra lineal (14 y 15 son duplicados) + - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Recursos: - Libros: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/). - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X). - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/). - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers). - - Data School: [http://www.dataschool.io/](http://www.dataschool.io/). + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: [http://www.dataschool.io/](http://www.dataschool.io/) -- @@ -1824,50 +1824,50 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par Agregué estos para reforzar algunas ideas ya presentadas anteriormente, pero no quería incluirlas arriba porque es demasiado. Es fácil exagerar en un tema. ¿Quieres ser contratado en este siglo, verdad? - [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview). - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations). - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees). - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank). - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression). - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional). + - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - [ ] **More Dynamic Programming** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19). - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20). - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21). - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb). - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15). - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12). + - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) + - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) + - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) + - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - [ ] **Advanced Graph Processing** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27). - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28). + - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - [ ] MIT **Probability** (Matemático y va lento, que es bueno para las cosas matemáticas) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21). - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B). - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25). + - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19). +- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - [ ] **String Matching** - [ ] Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm). - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation). - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis). - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9). - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32). + - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - [ ] Knuth-Morris-Pratt (KMP): - - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo). + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - [ ] Boyer–Moore string search algorithm: - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm). - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10). + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1): - Inicia bien, pero en el momento en que pasa KMP se vuelve más complicado de lo que necesita ser. - Buena explicación de los tries. @@ -1875,53 +1875,53 @@ Agregué estos para reforzar algunas ideas ya presentadas anteriormente, pero no - [ ] **Sorting** - [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69). - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69). + - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2). - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3). + - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600). - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b). - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10). + - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## Series de videos Siéntese y disfrute. "Netflix and skill" :P -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr). -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0). -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8). -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A). -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy). -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t). -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo). +- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) +- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - [ ] CSE373 - Analysis of Algorithms (25 videos): - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1). -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd). -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C). -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_). -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO). -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr). -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-). -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq). -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False). -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484). -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi). -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B). -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp). -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7). -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1). -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c). -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf). -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh). -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02). -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy). - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/). -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV). -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd). + - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) +- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Cursos de Informática -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science). -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses). +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) From 00f8240b1463e4c1a279ac913bd63a0bb653ade0 Mon Sep 17 00:00:00 2001 From: Alexandru Theodor Muntenas <59341776+alexandrumuntenas@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:50:28 +0100 Subject: [PATCH 414/857] Actualizar RREADME-es.md --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 2e9e831985..f8b6147a71 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1447,7 +1447,7 @@ Bosquejos de entrevista: - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) ## Su CV (Currículum Vitae) -Vea los elementos de preparación en **Cracking The Coding Interview and back of Programming Interviews Exposed** +Vea los elementos de preparación en **Cracking The Coding Interview and back of Programming Interviews Exposed**. ## Pensando en cuando llegue la entrevista Piense en aproximadamente veinte preguntas de la entrevista que usted conseguirá, junto con las líneas de abajo. Tenga 2-3 respuestas para cada una. From db897e981098c56f34bd13a56b61773cc533baba Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Thu, 17 Mar 2022 07:44:55 +0800 Subject: [PATCH 415/857] resume: add step-by-step guide --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ed5f0afaac..6643e2cbee 100644 --- a/README.md +++ b/README.md @@ -1209,6 +1209,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." +- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) ## Find a Job From 7fe8ea3d2d5ac61bfa4119545aa8c2637df5ace7 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Thu, 17 Mar 2022 07:47:43 +0800 Subject: [PATCH 416/857] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6643e2cbee..e8adc7623a 100644 --- a/README.md +++ b/README.md @@ -1210,6 +1210,7 @@ Graphs can be used to represent many problems in computer science, so this secti - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." - ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume ## Find a Job From c89436becc66feb768f8108ddb0b812b4a519e95 Mon Sep 17 00:00:00 2001 From: Bhumika Tewary <77784592+bhumikatewary@users.noreply.github.com> Date: Sat, 19 Mar 2022 17:04:23 +0530 Subject: [PATCH 417/857] Update programming-language-resources.md --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 0b9ae8ecbc..a66c8ee38d 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -33,6 +33,7 @@ - [Review of C++ concepts (video)](https://www.youtube.com/watch?v=Rub-JsjMhWY) - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) + - [C++ Tutorial for Beginners](https://www.youtube.com/watch?v=vLnPwxZdW4Y) - Python - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) From 573fdb3d641df6e66db6626cdfb97ca82d39e05b Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 27 Mar 2022 12:34:45 -0700 Subject: [PATCH 418/857] Adds instructions for non-git users. --- README.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d3fd43059b..cfa4495792 100644 --- a/README.md +++ b/README.md @@ -255,8 +255,19 @@ It's a long plan. It may take you months. If you are familiar with a lot of this Everything below is an outline, and you should tackle the items in order from top to bottom. I'm using GitHub's special markdown flavor, including tasks lists to track progress. + - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +### If you don't want to use git + +On this page, click the Code button near the top, then click "Download ZIP". Unzip the file and you can work with the text files. + +If you're open in a code editor that understands markdown, you'll see everything formatted nicely. + +![How to download the repo as a zip file](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### If you're comfortable with git + +Create a new branch so you can check items like this, just put an x in the brackets: [x] Fork a branch and follow the commands below @@ -277,8 +288,6 @@ Mark all boxes with X after you completed your changes: git push --set-upstream origin progress git push --force -[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - ## Don't feel you aren't smart enough - Successful software engineers are smart, but many have an insecurity that they aren't smart enough. From 06f06289f15d9ea125b08df23297fa5572ccfe08 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 1 Apr 2022 09:12:37 -0700 Subject: [PATCH 419/857] Removes dead links. --- translations/README-ar.md | 1 - translations/README-bn.md | 14 +-------- translations/README-cn.md | 12 ------- translations/README-de.md | 12 ------- translations/README-es.md | 62 ------------------------------------ translations/README-fr.md | 62 ------------------------------------ translations/README-he.md | 63 ------------------------------------- translations/README-hi.md | 19 ----------- translations/README-id.md | 1 - translations/README-ja.md | 50 ----------------------------- translations/README-kh.md | 14 +-------- translations/README-ko.md | 9 ------ translations/README-pl.md | 12 ------- translations/README-ptbr.md | 62 ------------------------------------ translations/README-ru.md | 50 ----------------------------- translations/README-th.md | 62 ------------------------------------ translations/README-tr.md | 1 - translations/README-tw.md | 1 - translations/README-uk.md | 62 ------------------------------------ translations/README-ur.md | 12 ------- translations/README-uz.md | 1 - translations/README-vi.md | 62 ------------------------------------ 22 files changed, 2 insertions(+), 642 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index a10836ca0f..c0bec9d5c7 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1304,7 +1304,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** diff --git a/translations/README-bn.md b/translations/README-bn.md index 501581a555..194cf31e0b 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -593,12 +593,8 @@ - বিবরণ: -[অ্যারে (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন //sBSF/arrays) -[ইউসি বার্কলে সিএস 61 বি-লিনিয়ার এবং মাল্টি-ডিম অ্যারে (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s থেকে দেখা শুরু করুন) - -[বেসিক অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - -[একাধিক ম্লান (ভিডিও)] (https://archive.org/details/0102What youShouldKnow/02_05-মাল্টিডিমাইশনাল অ্যারাই.এমপি 4) -[ডাইনামিক অ্যারে (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) -[জেগড অ্যারে (ভিডিও)] (https://www.youtube.com/watch?v=1jtrQqYpt7g) - -[জেগড অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/02_06-জ্যাজডআরাই.আরএম 4) - -[পুনরায় আকার দেওয়ার অ্যারে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - একটি ভেক্টর প্রয়োগ করুন (স্বয়ংক্রিয় আকার পুনরায় আকারের সাথে পরিবর্তনীয় অ্যারে): - অ্যারে এবং পয়েন্টার ব্যবহার করে কোডিং অনুশীলন করুন, এবং সূচক ব্যবহারের পরিবর্তে সূচীতে ঝাঁপ দেওয়ার জন্য পয়েন্টার ম্যাথ th - বরাদ্দ মেমরি সহ নতুন কাঁচা ডেটা অ্যারে @@ -661,14 +657,11 @@ -###স্ট্যাক - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [সর্বশেষে প্রথম-আউট স্ট্যাকগুলি ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_01-Stacks forLast-inFirst-out.mp4) - ] বাস্তবায়ন করবে না। অ্যারের সাথে প্রয়োগ করা তুচ্ছ। -###কিউ - - [প্রথম সারিতে প্রথম সারিতে ক্যু ব্যবহার করে (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [সারি (ভিডিও)] (https://www.coursera.org/lecture/data-structures/queues-EShpq) - [বিজ্ঞপ্তি বাফার / ফিফো] (https://en.wikedia.org/wiki/Circular_buffer) - - [অগ্রাধিকারের সারি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnav/05_04-priorityQueuesAndDeques.mp4) - লেজ পয়েন্টার সহ লিঙ্কযুক্ত-তালিকা ব্যবহার করে প্রয়োগ করুন: -এনকুই (মান)-লেজের স্থানে মান যোগ করে -ডেকিউ ()-মান ফেরত দেয় এবং সর্বশেষে যুক্ত হওয়া উপাদান (সামনে) সরিয়ে দেয় @@ -695,10 +688,6 @@ - [(উন্নত) পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEWKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - অনলাইন কোর্স: - - [হ্যাশ ফাংশনগুলি বোঝার (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_02-বোঝা হ্যাশফুনেশন.এমপি 4) - - [হ্যাশ টেবিলগুলি (ভিডিও) ব্যবহার করে] (https://archive.org/details/0102WhatYouShouldKnow/06_03-USHashTables.mp4) - - [হ্যাশিং (ভিডিও) সমর্থন করে] (https://archive.org/details/0102WhatYouShouldKnow/06_04-SupportingHashing.mp4) - - [ভাষা সমর্থন হ্যাশ টেবিলগুলি (ভিডিও)] (https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [কোর হ্যাশ টেবিল (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ডেটা স্ট্রাকচার (ভিডিও)] (https://www.coursera.org/learn/data-structures/home/week/3) - [ফোন বুক সমস্যা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / NYZZP/ iPhone-book-সমস্যা) @@ -1429,8 +1418,7 @@ -[টপকোডারদের জন্য গণিত] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / ম্যাথেমেটিক্সের জন্য-ট্যাপকোডার /) -[ডায়নামিক প্রোগ্রামিং-নোভাইস থেকে অ্যাডভান্সড] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/dynamic-programming-from-novice-to-advanced/ -[এমআইটি সাক্ষাত্কার উপকরণ] (https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/matorys.php) --[প্রদত্ত ভাষায় আরও ভাল হওয়ার জন্য অনুশীলন] (http://exercism.io/languages) - + ** প্রোগ্রামিং সমস্যাগুলি পড়ুন এবং করুন (এই ক্রমে): ** - [প্রোগ্রামিং সাক্ষাত্কার উন্মোচিত: আপনার পরবর্তী কাজ ল্যান্ডিংয়ের গোপনীয়তা, ২ য় সংস্করণ] (http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) diff --git a/translations/README-cn.md b/translations/README-cn.md index f070037140..f802a02c44 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -479,12 +479,8 @@ - [ ] 介绍: - [数组(视频)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - 线性数组和多维数组(视频)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE)(从15分32秒开始) - - [数组的基础知识(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [多维数组(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [动态数组(视频)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [不规则数组(视频)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [不规则数组(视频)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [调整数组的大小(视频)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] 实现一个动态数组(可自动调整大小的可变数组): - [ ] 练习使用数组和指针去编码,并且指针是通过计算去跳转而不是使用索引 - [ ] 通过分配内存来新建一个原生数据型数组 @@ -544,14 +540,11 @@ - ### 堆栈(Stack) - [ ] [堆栈(视频)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [使用堆栈 —— 后进先出(视频)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] 可以不实现,因为使用数组来实现并不重要 - ### 队列(Queue) - - [ ] [使用队列 —— 先进先出(视频)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [队列(视频)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [原型队列/先进先出(FIFO)](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [优先级队列(视频)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] 使用含有尾部指针的链表来实现: - enqueue(value) —— 在尾部添加值 - dequeue() —— 删除最早添加的元素并返回其值(首部元素) @@ -577,10 +570,6 @@ - [ ] [(进阶)完美哈希(Perfect hashing)(视频)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] 在线课程: - - [ ] [理解哈希函数(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [使用哈希表(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [支持哈希(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [哈希表的语言支持(视频)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [基本哈希表(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [数据结构(视频)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [电话薄问题(Phone Book Problem)(视频)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1235,7 +1224,6 @@ - [Topcoder的数学](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [动态编程──从新手到高级](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT 面试材料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [练习以掌握特定语言](http://exercism.io/languages) **阅读并练习编程问题(按此顺序)**: diff --git a/translations/README-de.md b/translations/README-de.md index 92219a1a78..4d307e8f6f 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -593,12 +593,8 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] Beschreibung: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implementiere ein Vektor (veränderbares Array, das automatisch seine Größe verändert): - [ ] Übe Arrays und Pointer (Zeiger) zu coden, und benutze Pointerberechnung, um ein Element aus einem Array auszuwählen statt den Index zu benutzen. - [ ] neues Rohdaten-Array mit allokierten Speicher @@ -661,14 +657,11 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - ### Stack (Stapel) - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Werde ich nicht implementieren. Implementierung mittels Array ist trivial. - ### Queue (Warteschlangen) - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implementierung mittels verketteten Listen, mit Tail-Pointer: - enqueue(value) - fügt Wert am Ende ein - dequeue() - gibt das älteste Element (am Anfang der Liste) zurück und löscht es @@ -695,10 +688,6 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Kurse: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1430,7 +1419,6 @@ Zusatz: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Lese und löse Programmieraufgaben (in dieser Reihenfolge):** diff --git a/translations/README-es.md b/translations/README-es.md index f8b6147a71..09f9564156 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -209,7 +209,6 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - [Árboles k-D](#árboles-k-d) - [Lista por saltos](#listas-por-saltos) - [Flujos de red](#flujos-de-red) - - [Conjuntos disjuntos & Encontrar unión](#conjuntos-disjuntos-encontrar-unión) - [Matemáticas para procesamiento rápido](#matemáticas-para-procesamiento-rápido) - [Treap](#treap) - [Programación Lineal](#programación-lineal) @@ -562,12 +561,8 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] Descripción: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implemente un vector (Arreglo mutable con redimensionamiento automático): - [ ] Practique codificar usando arreglos y apuntadores, y un apuntador matemático para saltar a un índice en lugar de utilizar la indexación. - [ ] Nuevo arreglo de información primaria con memoria asignada. @@ -628,14 +623,11 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - No es necesario. - ### Pila: - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] No implementaré. Implementando con arreglos es trivial. - ### Cola o fila - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implementar usando listas enlazadas, con el puntero de la cola: - enqueue(value) – Añade el valor en la posición de la cola. - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal) @@ -661,10 +653,6 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Cursos en línea: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -811,25 +799,6 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - Para ordenamientos por montículos, vea la estructura de datos de Colas o filas arriba. El ordenamiento por montículos es estupendo, pero inestable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1345,32 +1314,6 @@ Es bueno si quieres repasar frecuentemente. - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1398,7 +1341,6 @@ Complementarios: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Lea y haga problemas de programación (en ese orden):** @@ -1763,10 +1705,6 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Conjuntos disjuntos & Encontrar unión - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Matemáticas para procesamiento rápido - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-fr.md b/translations/README-fr.md index a8b173efff..568170440c 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -170,7 +170,6 @@ Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, sui - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - [Linear Programming](#linear-programming) @@ -599,12 +598,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -666,14 +661,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -700,10 +692,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -853,25 +841,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - For heapsort, see Heap data structure above. Heap sort is great, but not stable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1315,32 +1284,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1375,7 +1318,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** @@ -1830,10 +1772,6 @@ You're never really done. - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-he.md b/translations/README-he.md index 34049b780f..1064c215a5 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -172,7 +172,6 @@ - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - [Linear Programming](#linear-programming) @@ -613,13 +612,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - Implement an automatically resizing vector. - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -681,14 +675,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -715,10 +706,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -868,25 +855,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - For heapsort, see Heap data structure above. Heap sort is great, but not stable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1330,32 +1298,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1390,7 +1332,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** @@ -1846,10 +1787,6 @@ You're never really done. - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-hi.md b/translations/README-hi.md index d589286316..6de714f2b8 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -449,11 +449,7 @@ memory" का एरर न दे, और तब मुझे कोई वै - एक स्वचालित रीसाइज़िंग वेक्टर को लागू करें - [ ] विवरण: - [एरे (विडियो)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [Basic Arrays (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -515,14 +511,11 @@ memory" का एरर न दे, और तब मुझे कोई वै - ### Stack - [ ] [Stacks (विडियो)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(विडियो)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -549,10 +542,6 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] [(Advanced) Perfect hashing (विडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (विडियो](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (विडियो)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (विडियो)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (विडियो)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -835,12 +824,6 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] [lecture begins at 35:00 (विडियो)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [lecture begins at 23:50 (विडियो)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) -- [ ] UC बर्कले: - - [ ] [CS 61B Lecture 29: Sorting I (विडियो)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (विडियो)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (विडियो)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (विडियो)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] - Merge sort code: - [ ] [Using output array](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - [ ] [In-place](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) @@ -1413,8 +1396,6 @@ Take coding challenges every day, as many as you can. - [इंटरव्यूकेक](https://www.interviewcake.com/) - [इंटरव्यूबिट](https://www.interviewbit.com) - - [प्रोग्रामिंग लैंग्वेज में सुधार करने के लिए](http://exercism.io/languages) - ## Once you're closer to the interview - [ ] Cracking The Coding Interview Set 2 (विडियो): diff --git a/translations/README-id.md b/translations/README-id.md index b085cd59ea..ba991e63e5 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1244,7 +1244,6 @@ Tambahan: - [Matematika untuk Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Pemrograman Dinamis - Dari Pemula hingga Mahir](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [Materi Wawancara MIT](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Latihan untuk menjadi lebih baik pada bahasa tertentu](http://exercism.io/languages) **Baca dan Lakukan Masalah Pemrograman (dalam urutan ini):** diff --git a/translations/README-ja.md b/translations/README-ja.md index 7212767ffb..ed3ed799d5 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -717,25 +717,6 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。 -- [ ] [Sedgewick - Mergesort(5ビデオ)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1。 マージソート](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2。 マージソート・ボトムアップ](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3。複雑さの並べ替え](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4。コンパレータ](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5。安定性](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort(4ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. クイックソート](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. 選択](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. 重複キー](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. システムソート](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UCバークレー: - - [ ] [CS 61B講義29:ソートI(ビデオ)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B講義30:ソートII(ビデオ)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B講義32:ソートIII(ビデオ)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B講義33:ソートV(ビデオ)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [バブルソート(動画)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [バブルソートの分析(動画)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [挿入ソート、マージソート(動画)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1260,32 +1241,6 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(18ビデオ) - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - アルゴリズムI](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01.Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02.アルゴリズムの分析](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03.スタックとキュー](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04.初級ソート](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. マージソート](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. クイックソート](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07.優先度つきキュー](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. 基本記号表](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. 平衡探索木](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. BSTの幾何学的応用](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11.ハッシュテーブル](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01.無向グラフ](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. 有向グラフ](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03.最小スパニング木](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04.最短経路](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05.最大フロー](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06.基数ソート](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07.トライ木](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08.部分文字列検索](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09.正規表現](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10.データ圧縮](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11.リダクション](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12.線形プログラミング](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13.難易度](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1317,7 +1272,6 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Topcodersの数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [動的プログラミング - 初心者から上級者まで](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT面接資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [特定の言語でより良くなるための練習](http://exercism.io/languages) **プログラミングの問題を読んでやる(この順番で):** @@ -1757,10 +1711,6 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Ford-Fulkersonアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### 分離集合と連合検索 - - [ ] [UCB 61B - ばらばらのセット;並べ替えと選択(動画)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewickアルゴリズム - Union-Find(6ビデオ)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### 高速処理のための数学 - [ ] [整数演算、Karatsuba倍数(ビデオ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-kh.md b/translations/README-kh.md index d5960af6d0..10bda27bca 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -536,13 +536,9 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - អនុវត្តវ៉ិចទ័រប្តូរទំហំដោយស្វ័យប្រវត្តិ។ - [ ] ការពិពណ៌នា៖ - [Arrays (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - -[UC Berkeley CS61B - អារេ លីនែអ៊ែរ និង ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (ចាប់ផ្តើមមើលចាប់ពី ១៥នាទី ៣២វិនាទី) - - [Arrays មូលដ្ឋាន (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) + - [UC Berkeley CS61B - អារេ លីនែអ៊ែរ និង ពហុវិមាត្រ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (ចាប់ផ្តើមមើលចាប់ពី ១៥នាទី ៣២វិនាទី) - [Arrays ឌីណាមិចេ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (វីដេអូ)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [ការប្តូរទំហំ Arrays (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] អនុវត្តវ៉ិចទ័រ (បំលែង Arrays ដោយប្តូរទំហំស្វ័យប្រវត្តិ)៖ - [ ] អនុវត្តការសរសេរកូដដោយប្រើArrays និង ទ្រនិចចង្អុល និង គណិតទ្រនិចដើម្បីលោតទៅសន្ទស្សន៍មួយ។ - [ ] Arrays ទិន្នន័យថ្មីដែលមានអង្គចងចាំបម្រុងទុក @@ -609,14 +605,11 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - ### Stack - [ ] [Stack (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [ការប្រើ Stack ចូលមុនចេញក្រោយ (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] នឹងមិនអនុវត្តទេ។ ការអនុវត្តជាមួយ Array គឺមិនសំខាន់។ - ### Queue - - [ ] [ការប្រើ Queue ចូលមុនចេញមុន(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (វីដេអូ)](https://www.coursera.org/lecture/data-structures/queues-EShpq)     - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) -    - [ ] [Queue អាទិភាព (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4)     - [ ] ប្រើ linked-list ដែលមានភ្ជាប់ជាមួយទ្រនិចនៅកន្ទុយ៖ - enqueue(តម្លៃ) - បន្ថែមតម្លៃនៅទីតាំងនៅកន្ទុយ - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ (ផ្នែកខាងមុខ) @@ -643,10 +636,6 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [(ជឿនលឿន) Perfect hashing (វីដេអូ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] វគ្គសិក្សាអនឡាញ៖ - - [ ] [ស្វែងយល់អំពីមុខងារ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [ការប្រើតារាងHash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [គាំទ្រ Hash (វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_04- ឧបត្ថម្ភគាំទ្រហាន់ឌ្រី) - - [ ] [តារាងជំនួយភាសា Hash(វីដេអូ)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [រចនាសម្ព័ន្ធទិន្នន័យ (វីដេអូ)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [បញ្ហាសៀវភៅទូរស័ព្ទ (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1321,7 +1310,6 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **អាននិងធ្វើបញ្ហាកម្មវិធី (តាមលំដាប់លំដោយ):** diff --git a/translations/README-ko.md b/translations/README-ko.md index 7ec5c9365b..5a7679bbc6 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -568,12 +568,8 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] 설명: - [배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - 선형과 다차원 배열 (영상)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [배열 기본 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [다차원 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [동적 배열 (영상)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [가변 배열 (영상)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [가변 배열 (영상)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [배열 리사이징 (영상)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] 벡터 구현하기 (자동 리사이징을 포함한 동적 배열): - [ ] 배열, 포인터 및 인덱싱 대신하여 특정 인덱스에 접근하는 포인터 연산을 통한 코딩 연습 - [ ] 메모리 할당을 포함한 새 배열 @@ -667,10 +663,6 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] 온라인 강의들: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1337,7 +1329,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **읽고 프로그래밍 문제 풀기 (순서대로):** diff --git a/translations/README-pl.md b/translations/README-pl.md index f733353319..f84264c9c4 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -521,12 +521,8 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] Opis: - [Arrays (wideo)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (wideo)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (wideo)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (wideo)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (wideo)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Zaimplementuj vector (mutable array z automatycznym zmienianiem rozmiaru): - [ ] 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 @@ -589,14 +585,11 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Stos - [ ] [Stacks (wideo)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Kolejka - - [ ] [Using Queues First-In First-Out(wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (wideo)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (wideo)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -623,10 +616,6 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [(Zaawansowane) Perfect hashing (wideo)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Kursy online: - - [ ] [Understanding Hash Functions (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (wideo)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (wideo)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (wideo)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1295,7 +1284,6 @@ Uzupełniające: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Przeczytaj i wykonaj zadania z programowania (w tej kolejności):** diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 35a6ec148b..70dafc08f0 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -198,7 +198,6 @@ Se você quer ser um engenheiro de confiabilidade ou engenheiro de sistemas, est - [Árvores k-D](#Árvores-k-d) - [Skiplists](#skiplists) - [Fluxos de Rede](#fluxos-de-rede) - - [Conjuntos Disjuntos e Union-find](#conjuntos-disjuntos-e-union-find) - [Matemática para Processamento Rápido](#matemática-para-processamento-rápido) - [Treap](#treap) - [Programação Linear](#programação-linear-vídeos) @@ -555,12 +554,8 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] Descrição: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) (Arrays lineares e multidimensionais - vídeo) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) (Arrays básicos - vídeo) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) (Multidimensionais - vídeo) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) (Arrays Dinâmicos - vídeo) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) (Arrays Multidimensionais - vídeo) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) (Arrays Multidimensionais - vídeo) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) (Arrays Dinâmicos) - [ ] Implementar um vetor (array mutável com redimensionamento automático): - [ ] Praticar programação usando arrays e ponteiros, e matemática de ponteiros para pular para um índice ao invés de usar indexação. - [ ] novo array de dados brutos com memória alocada @@ -623,14 +618,11 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) (Usando Stacks Último a Entrar Primeiro a Sair - vídeo) - [ ] Não implementarei. Implementar com array é trivial. - ### Queue (Fila) - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) (Usando queues FIFO(Primeiro a entrar, último a sair) - vídeo) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) (Buffer circular/Primeiro a entrar, último a sair) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) (Queues com Prioridade - vídeo) - [ ] Implementar usando lista ligada, com ponteiro de cauda (aponta para o último elemento de uma lista): - enqueue(valor) - adiciona "valor" na posição na cauda (final da lista) - dequeue() - retorna um valor e remove o elemento menos recentemente adicionado (início da lista)) @@ -657,10 +649,6 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) ((Avançado) Hashing perfeito - vídeo) - [ ] Cursos Online: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) (Compreendendo Funções Hash - vídeo) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) (Usando Tabelas Hash - vídeo) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) (Hashing de Suporte - vídeo) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) (Tabelas Hash de Suporte de Linguagem - vídeo) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) (Fundamentos de Tabelas Hash - vídeo) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) (Estruturas de Dados - vídeo) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) (Problema da Lista Telefônica (vídeo) ) @@ -810,25 +798,6 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - Para heapsort, veja estrutura de dados heap acima. Heapsort é ótimo, mas não é estável. -- [ ] [Sedgewick - Mergesort (5 vídeos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) (Mergesort de baixo para cima) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) (Complexidade de Ordenação) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) (Comparadores) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) (Estabilidade) - -- [ ] [Sedgewick - Quicksort (4 vídeos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) (Seleção) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) (Chaves Duplicadas) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) (Ordenações de Sistema) - -- [ ] Universidade da Califórnia em Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) (Ciência da Computação 61B Aula 29: Ordenação I - vídeo) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) (Ciência da Computação 61B Aula 30: Ordenação II - vídeo) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) (Ciência da Computação 61B Aula 32: Ordenação III - vídeo) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) (Ciência da Computação 61B Aula 33: Ordenação V - vídeo) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) (Ordenação por Bolha - vídeo) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) (Analisando Ordenação por Bolha - vídeo) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) (Ordenação por Inserção, Ordenação por Mistura - vídeo) @@ -1351,32 +1320,6 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (18 vídeos): - [Vídeos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) (Vídeos de Sedgewick - Algoritmos I) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) (Análises de Algoritmos) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) (Memórias Estáticas e Filas) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) (Ordenações Elementares) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) (Filas Prioritárias) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) (Tabelas de Símbolos Elementares) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) (Árvores de Busca Balanceadas) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) (Aplicações Geométricas de Árvores de Busca Balanceada) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) (Tabelas Hash) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) (Vídeos de Sedgewick - Algoritmos II) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) (Grafos Não Direcionados) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) (Grafos Direcionados) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) (Árvores de Extensão Mínima) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) (Menores Caminhos) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) (Fluxo Máximo) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) (Ordenações Radix) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) (Árvore de Prefixos) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) (Busca de Substring) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) (Expressões Regulares) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) (Compressão de Dados) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) (Reduções) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) (Programação Linear) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) (Intratabilidade) --- @@ -1409,7 +1352,6 @@ Suplementar: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) (Matemática para Topcoders) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) (Programação Dinâmica - De Novato a Avançado) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) (Materiais de Entrevista do MIT) -- [Exercises for getting better at a given language](http://exercism.io/languages) (Exercícios para ficar melhor em uma determinada linguagem) **Leia e Faça os Problemas de Programação (nessa ordem):** @@ -1804,10 +1746,6 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) (Algoritmo de Ford-Fulkerson) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) (Fluxos de Rede - vídeo) -- ### Conjuntos Disjuntos e Union-find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) (UCB 61B - Conjuntos Disjuntos; Ordenação e seleção - vídeo) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) (Algoritmos de Sedgewick - Union-find - 6 vídeos) - - ### Matemática para Processamento Rápido - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) (Aritmética de Números Inteiros, Multiplicação de Karatsuba - vídeo) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) (O Teorema Chinês do Resto) diff --git a/translations/README-ru.md b/translations/README-ru.md index f484e99acf..06158bfb4f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -868,25 +868,6 @@ Google не возьмёт тебя на работу. - Для пирамидальной сортировки, см. структуру данных "Куча" выше. Пирамидальная сортировка эффективна, но не устойчива. -- [ ] [Седжвик (Sedgewick) - Сортировка слиянием (5 видео)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Сортировка слиянием](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Сортировка слиянием наизнанку](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Сложность сортировки](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Компараторы](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Устойчивость](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Седжвик (Sedgewick) - Быстрая сортировка (4 видео)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Быстрая сортировка](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Выбор](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Дублирование ключей](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. Системные сортировки](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Лекция 29: Сортировка I (видео)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Лекция 30: Сортировка II (видео)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Лекция 32: Сортировка III (видео)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Лекция 33: Сортировка V (видео)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Пузырькова сортировка (видео)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Анализ пузырьковой сортировки (видео)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Сортировка вставками, Сортировка слиянием (видео)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1324,32 +1305,6 @@ Google не возьмёт тебя на работу. - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Серия коротких 2-5 минутных видео - Michael Sambol (18 видео): - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Видео от Сэджвика - Алгоритмы I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Анализ Алгоритмов](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Стэки и Очереди](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Элементарные сортировки](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Приоритетные очереди](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Элементарные таблицы символов](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Сбалансированные деревья поиска](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Геометрические применениния BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Хэш таблицы](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Видео от Сэджвика - Алгоритмы II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Ненаправленные графы](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Направленные графы](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Кратчайшие пути](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Поиск подстроки](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Регулярные выражения](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Сжатие данных](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Линейное программирование](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1381,7 +1336,6 @@ Google не возьмёт тебя на работу. - [Математика для Топ-кодеров](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Динамическое программирование - От новичка до продвинутого](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [Материалы для интервью от MIT](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Упражнения по улучшению навыков для определенного языка](http://exercism.io/languages) **Прочитайте и выполните упражнения (именно в этом порядке):** @@ -1825,10 +1779,6 @@ Google не возьмёт тебя на работу. - [ ] [Алгоритм Форд — Фалкерсона (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Транспортные сети (видео)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Непересекающиеся Множества и Система Непересекающихся Множеств - - [ ] [UCB 61B - Непересекающиеся Множества; Сортировка и выборка (видео)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Алгоритмы Седжвика - Система непересекающихся множеств (6 видео)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Математика для Быстрой Обработки - [ ] [Арифметика целых чисел, Умножение Карацубы (видео)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Китайская теорема об остатках (используется в криптографии) (видео)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-th.md b/translations/README-th.md index dac16647b9..389c8728e0 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -177,7 +177,6 @@ - [ต้นไม้แบบ k-D](#k-d-trees) - [การข้ามรายการ](#skip-lists) - [กระแสเครือข่าย](#network-flows) - - [โครงสร้างข้อมูลไม่มีส่วนร่วม และ ยูเนียนและค้นหา](#disjoint-sets--union-find) - [คณิตศาสต์สำหรับการประมวณผลอย่างรวดเร็ว](#math-for-fast-processing) - [ทรีพ](#treap) - [การโปรแกรมเชิงเส้น](#linear-programming) @@ -535,12 +534,8 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -602,14 +597,11 @@ There are a lot of distractions that can take up valuable time. Focus and concen - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -636,10 +628,6 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -789,25 +777,6 @@ There are a lot of distractions that can take up valuable time. Focus and concen - For heapsort, see Heap data structure above. Heap sort is great, but not stable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1325,32 +1294,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1383,7 +1326,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** @@ -1775,10 +1717,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-tr.md b/translations/README-tr.md index dd084533a1..43a932a3df 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1299,7 +1299,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** diff --git a/translations/README-tw.md b/translations/README-tw.md index 5a86b224b5..122ed929c9 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1267,7 +1267,6 @@ - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **閱讀並解題(按照以下順序):** diff --git a/translations/README-uk.md b/translations/README-uk.md index c6bc8e6cf8..567e1f6ae9 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -220,7 +220,6 @@ Facebook та Microsoft, відрізняють розробку програм - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - [Linear Programming](#linear-programming) @@ -582,12 +581,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -649,14 +644,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -683,10 +675,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -836,25 +824,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - For heapsort, see Heap data structure above. Heap sort is great, but not stable. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1375,32 +1344,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1433,7 +1376,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** @@ -1825,10 +1767,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) diff --git a/translations/README-ur.md b/translations/README-ur.md index d41c75e836..e94fe9fd8b 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -533,12 +533,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Basic Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim (video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Implement a 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 @@ -601,14 +597,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -635,10 +628,6 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Online Courses: - - [ ] [Understanding Hash Functions (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing (video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -1307,7 +1296,6 @@ Supplemental: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Read and Do Programming Problems (in this order):** diff --git a/translations/README-uz.md b/translations/README-uz.md index 012ea379c2..b2b4f92545 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1282,7 +1282,6 @@ Qo'shimcha: - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Exercises for getting better at a given language](http://exercism.io/languages) **Dasturlash masalalarini o'qing va bajaring (ketma ketlikda):** diff --git a/translations/README-vi.md b/translations/README-vi.md index 226a723176..5ec241cedc 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -189,7 +189,6 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - [Linear Programming](#linear-programming) @@ -572,12 +571,8 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] Miêu tả, tên gốc được giữ nguyên kèm với bản dịch sang tiếng Việt: - [Arrays - Mảng (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [UCBerkley CS61B - Linear and Multi-Dim Arrays - Mảng tuyến tính và mảng đa chiều(video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Basic Arrays - Mảng cơ bản (video)](https://archive.org/details/0102WhatYouShouldKnow/02_04-basicArrays.mp4) - - [Multi-dim - Đa chiều(video)](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4) - [Dynamic Arrays - Mảng tùy biến (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - [Jagged Arrays - Mảng trong mảng (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [Jagged Arrays - Mảng trong mảng (video)](https://archive.org/details/0102WhatYouShouldKnow/02_06-jaggedArrays.mp4) - - [Resizing arrays - Mảng có thể tùy biến kích thước (video)](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4) - [ ] Cấp phát vector (Mảng có thể thay đổi với khả năng tự điều chỉnh kích cỡ): - [ ] Tập sử dụng mảng và con trỏ, dùng phép toán con trỏ để nhảy tới một chỉ mục (index) thay vì sử dụng chỉ mục. - [ ] Tạo mảng mới với vùng nhớ được cấp phát sẵn @@ -639,14 +634,11 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [Using Stacks Last-In First-Out - Sử dụng stack Vào-Cuối-Ra-Trước (video)](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4)   - [ ] Sẽ không cài đặt. Cài đặt với mảng là điều hiển nhiên. - ### Queue - - [ ] [Using Queues First-In First-Out - Sử dụng hàng đợi Vào-Trước-Ra-Trước(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [Priority Queues - Hàng đợi ưu tiên (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) - [ ] Cài đặt sử dụng danh sách liên kết, áp dụng con trỏ đuôi: - enqueue(value) - Thêm giá trị ở đuôi - dequeue() - Trả về giá trị của dữ liệu được thêm vào xa nhất (thông thường là dữ liệu đầu tiên trong danh sách) @@ -671,10 +663,6 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Các khóa học online: - - [ ] [Understanding Hash Functions - Hiểu hàm băm (video)](https://archive.org/details/0102WhatYouShouldKnow/06_02-understandingHashFunctions.mp4) - - [ ] [Using Hash Tables - Sử dụng bảng băm (video)](https://archive.org/details/0102WhatYouShouldKnow/06_03-usingHashTables.mp4) - - [ ] [Supporting Hashing - Hỗ trợ băm(video)](https://archive.org/details/0102WhatYouShouldKnow/06_04-supportingHashing.mp4) - - [ ] [Language Support Hash Tables - Ngôn ngữ hỗ trợ bảng băm (video)](https://archive.org/details/0102WhatYouShouldKnow/06_05-languageSupportForHashTables.mp4) - [ ] [Core Hash Tables - Cơ bản về bảng băm (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures - Cấu trúc dữ liệu (video)](https://www.coursera.org/learn/data-structures/home/week/3) - [ ] [Phone Book Problem - Vấn đề sổ điện thoại (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) @@ -828,25 +816,6 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - Với sắp xếp vun đống (Heapsort), xem lại see cấu trúc Heap ở trên. Sắp xếp vun đống tốt, nhưng không ổn định. -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) - - [ ] [2. Sắp xếp trộn từ dưới lên (Bottom up Mergesort)](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) - - [ ] [3. Độ phức tạp của các thuật toán sắp xếp (Sorting Complexity)](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [4. Các hàm so sánh (Comparators)](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [5. Tính ổn định (Stability)](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [2. Cách chọn (Selection)](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [3. Lặp khóa (Duplicate Keys)](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [4. Các hệ thống sắp xếp (System Sorts)](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - -- [ ] UC Berkeley (chuỗi video bài giảng): - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) - - [ ] [Sắp xếp nổi bọt (Bubble Sort) - video](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Phân tích thuật toán sắp xếp nổi bọt (Analyzing Bubble Sort) - video](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [Sắp xếp chèn và sắp xếp trộn (Insertion Sort, Merge Sort) - video](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -1363,32 +1332,6 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Các video ngắn 2-5 phút - Michael Sambol (18 video) - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Thuật toán I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) - - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) - - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) - - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) - - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) - - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) - - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) - - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) - - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) - - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) - - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) -- [ ] [Sedgewick Videos - Thuật toán II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) - - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) - - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) - - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) - - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) - - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) - - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) - - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) - - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) - - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) - - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) --- @@ -1421,7 +1364,6 @@ Phụ lục: - [Toán học cho nhà lập trình hàng đầu (Mathematics for Topcoders)](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Quy hoạch động - Từ cơ bản đến nâng cao (Dynamic Programming – From Novice to Advanced)](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [Các tài liệu liên quan tới phỏng vấn của MIT (MIT Interview Materials)](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -- [Các bài tập để lập trình tốt hơn đối với ngôn ngữ được lựa chọn (Exercises for getting better at a given language)](http://exercism.io/languages) **Đọc và làm các bài tập về lập trình (theo thứ tự sau):** @@ -1785,10 +1727,6 @@ Bạn không bao giờ thực sự học xong! - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### Disjoint Sets & Union Find - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) - - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) From b367068c54d3d7441207d8a4bc6f0a467d0f5389 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 1 Apr 2022 09:15:59 -0700 Subject: [PATCH 420/857] Removes dead links. --- README.md | 1 - translations/README-ar.md | 1 - translations/README-bg.md | 1 - translations/README-cn.md | 1 - translations/README-de.md | 1 - translations/README-es.md | 1 - translations/README-fa.md | 1 - translations/README-fr.md | 1 - translations/README-he.md | 1 - translations/README-hi.md | 1 - translations/README-ja.md | 1 - translations/README-kh.md | 1 - translations/README-ko.md | 1 - translations/README-pl.md | 1 - translations/README-ptbr.md | 1 - translations/README-ru.md | 1 - translations/README-th.md | 1 - translations/README-tr.md | 1 - translations/README-uk.md | 1 - translations/README-ur.md | 1 - translations/README-uz.md | 1 - translations/README-vi.md | 1 - 22 files changed, 22 deletions(-) diff --git a/README.md b/README.md index df6a04303c..540a138291 100644 --- a/README.md +++ b/README.md @@ -1802,7 +1802,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-ar.md b/translations/README-ar.md index c0bec9d5c7..a9004d89f6 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1809,7 +1809,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-bg.md b/translations/README-bg.md index afe45bb31b..edc41be86d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1784,7 +1784,6 @@ Mock интервюта: - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-cn.md b/translations/README-cn.md index f802a02c44..5e39743b3a 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1700,7 +1700,6 @@ - [Google 深度学习微学位](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle 机器学习工程师微学位](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [无人驾驶工程师微学位](https://www.udacity.com/drive) - - [Metis 在线课程 (两个月 99 美元)](http://www.thisismetis.com/explore-data-science) - 资源: - 书籍: - [Python 机器学习](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-de.md b/translations/README-de.md index 4d307e8f6f..bf609dfc4f 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1912,7 +1912,6 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Quellen: - Bücher: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-es.md b/translations/README-es.md index 09f9564156..81e2d5fe37 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1747,7 +1747,6 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Recursos: - Libros: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-fa.md b/translations/README-fa.md index b2e5c01e0d..ace57dc8e9 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1782,7 +1782,6 @@ Mock Interviews: - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-fr.md b/translations/README-fr.md index 568170440c..3e788d9c62 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1814,7 +1814,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-he.md b/translations/README-he.md index 1064c215a5..a8289a3423 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1829,7 +1829,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-hi.md b/translations/README-hi.md index 6de714f2b8..3beb9796b6 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1624,7 +1624,6 @@ Take coding challenges every day, as many as you can. - [ ] [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [ ] [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [ ] [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [ ] [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Great book: Data Science from Scratch: First Principles with Python: https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X - Data School: http://www.dataschool.io/ diff --git a/translations/README-ja.md b/translations/README-ja.md index ed3ed799d5..6033f89639 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1753,7 +1753,6 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [GoogleのDeep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google / Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [自己運転車技術者Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course(2ヶ月間99ドル)](http://www.thisismetis.com/explore-data-science) - リソース: - 書籍: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-kh.md b/translations/README-kh.md index 10bda27bca..351e302627 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1809,7 +1809,6 @@ Mock Interviews: - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 សំរាប់ 2 ខែ)](http://www.thisismetis.com/explore-data-science) - ធនធាន: - សៀវភៅ: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-ko.md b/translations/README-ko.md index 5a7679bbc6..906050fe70 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1829,7 +1829,6 @@ Challenge repos: - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - 자료들: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-pl.md b/translations/README-pl.md index f84264c9c4..a743d33f69 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1786,7 +1786,6 @@ Tak na prawdę nigdy nie skończyłeś. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 70dafc08f0..64c60266ba 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1788,7 +1788,6 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) (Nanodegree de Aprendizagem Profunda da Google) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) (Nanodegree de Engenheiro de Aprendizado de Máquina da Google/Kaggle) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) (Nanodegree de Engenheiro de Carro Autônomo) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) (Curso Online do Metis - US$99 por 2 meses) - Recursos: - Livros: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) (Aprendizado de Máquina em Python) diff --git a/translations/README-ru.md b/translations/README-ru.md index 06158bfb4f..6a0caea84c 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1821,7 +1821,6 @@ Google не возьмёт тебя на работу. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-th.md b/translations/README-th.md index 389c8728e0..d771a5e02f 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1759,7 +1759,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - แหล่งเรียนรู้: - หนังสือ: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-tr.md b/translations/README-tr.md index 43a932a3df..850862ff2c 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1816,7 +1816,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-uk.md b/translations/README-uk.md index 567e1f6ae9..ba91119880 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1809,7 +1809,6 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-ur.md b/translations/README-ur.md index e94fe9fd8b..cf5ea32f20 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1797,7 +1797,6 @@ You're never really done. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Resources: - Books: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-uz.md b/translations/README-uz.md index b2b4f92545..5147b43c9a 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1783,7 +1783,6 @@ Hech qachon tugatgan bo'lmaymiz. - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Manbalar: - Kitoblar: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) diff --git a/translations/README-vi.md b/translations/README-vi.md index 5ec241cedc..116b4f83ce 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1769,7 +1769,6 @@ Bạn không bao giờ thực sự học xong! - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - Tài nguyên: - Sách: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) From 9aa3b767803071a1b829f45fc6a328ea1dbcb952 Mon Sep 17 00:00:00 2001 From: Aryan Keluskar <80093392+aryankeluskar@users.noreply.github.com> Date: Tue, 5 Apr 2022 10:16:00 +0530 Subject: [PATCH 421/857] Updated translations and fixed broken links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated translations and fixed broken links in Index (अनुक्रमणिका) part. --- translations/README-hi.md | 54 +++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 3beb9796b6..3ab502fe0c 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1,4 +1,4 @@ -# कोडिंग साक्षात्कार विश्वविद्यालय +# कोडिंग साक्षात्कार विश्वविद्यालय >मैने मूल रूप से इसे एक सॉफ़्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी सी सूची के रूप में बनाया था, लेकिन यह आज एक बड़ी सूची में बढ़ी है। इस अध्ययन योजना के माध्यम से जाने के बाद, [मुझे अमेज़ॅन पर सॉफ़्टवेयर डेवलपमेंट इंजीनियर के रूप में काम पर रखा गया है !](https://startupnextdoor.com/ive-been-acquired-by->amazon/?src=ciu) आपको संभवतः जितना मैंने किया उतना नहीं पढ़ना होगा। वैसे भी, आपको जो भी चाहिए वह यहां है > >यहां सूचीबद्ध आइटम आपको किसी साफ्टवेयर कंपनी के बारे में साक्षात्कार में अच्छी तरह से तैयार करेंगे, जिनमें दिग्गज, अमेज़ॅन, फेसबुक, गूगल या माइक्रोसॉफ्ट शामिल हैं। @@ -8,10 +8,10 @@
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
+ 2018 में स्थापित, OSS Capital पहला और एकमात्र उद्यम पूंजी मंच है जो विशेष रूप से
प्रारंभिक चरण COSS (वाणिज्यिक ओपन सोर्स) स्टार्टअप संस्थापकों का समर्थन करने पर केंद्रित है।

@@ -35,7 +35,7 @@

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + GitLab, GitHub, और Bitbucket के साथ मूल रूप से एकीकृत, Gitpod स्वचालित रूप से और आपकी सभी शाखाओं के लिए लगातार देव वातावरण का निर्माण करता है। जिसके वजह से टीम के सदस्य प्रत्येक नए कार्य के लिए तुरंत नए देव वातावरण के साथ कोडिंग शुरू कर सकते हैं - चाहे आप कोई नई सुविधा बना रहे हों, बग को ठीक करना चाहते हों, या कोड समीक्षा पर काम करना चाहते हों।

@@ -45,7 +45,7 @@ ## यह क्या है? यह एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर को वेब डेवलपर (स्वयं सिखाया, कोई सीएस डिग्री नहीं) से जाने के लिए मेरी बहु-महीने की अध्ययन योजना है -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +![Coding at the whiteboard - from HBO's Silicon Valley] (https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें। @@ -93,21 +93,21 @@ - [और अधिक जानकारी](#even-more-knowledge) - [रिकर्शन](#recursion) - [डायनामिक प्रोग्रामिंग](#dynamic-programming) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [साहचर्य (Combinatorics) (n choose k) & संभावना](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete और सन्निकटन एल्गोरिदम](#np-np-complete-and-approximation-algorithms) - [गार्बेज कलेक्शन](#garbage-collection) - - [Caches](#caches) + - [कैश(Caches)](#caches) - [प्रोसेस और थ्रेड](#processes-and-threads) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Papers](#papers) - - [Unicode](#unicode) - - [Emacs और vi(m)](#emacs-and-vim) - - [Unix command line उपकरण](#unix-command-line-tools) + - [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग](#system-design-scalability-data-handling) + - [पेपर्स](#papers) + - [यूनिकोड](#unicode) + - [Emacs और vim](#emacs-and-vim) + - [Unix कमांड लाइन उपकरण](#unix-command-line-tools) - [परिक्षण](#testing) - - [Design patterns](#design-patterns) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) + - [डिजाइन पैटर्न्स](#design-patterns) + - [निर्धारण](#scheduling) + - [सिस्टम रूटीन लागू करें](#implement-system-routines) + - [स्ट्रिंग खोज और तिकड़म](#string-searching--manipulations) - [आखिरी समीक्षा](#final-review) - [पुस्तकें](#books) - [कोडिंग अभ्यास/चुनौतियाँ](#coding-exerciseschallenges) @@ -132,16 +132,16 @@ - [स्किप लिस्ट](#skip-lists) - [Network Flows](#network-flows) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [फास्ट प्रोसेसिंग के लिए गणित](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming) -    - [ज्यामिति, कॉन्वेक्स हल](#ज्यामिति-कॉन्वेक्स-हल) - - [Discrete math](#discrete-math) - - [मशीन लर्निंग](#मशीन-लर्निंग) - - [गो](#गो) -- [कुछ विषयो की अधिक जानकारी](#कुछ-विषयोकी-अधिक-जानकारी) -- [विडियो शृखला](#विडियो-शृखला) -- [जब आपको नौकरी मिल जाये](#जब-आपको-नौकरी-मिल-जाये) + - [लीनियर प्रोग्रामिंग](#linear-programming) +    - [ज्यामिति, कॉन्वेक्स हल](#geometry-convex-hull) + - [डिस्क्रीट मैथ](#discrete-math) + - [मशीन लर्निंग](#machine-learning) + - [गो](#go) +- [कुछ विषयो की अधिक जानकारी](#additional-detail-on-some-subjects) +- [विडियो शृखला](#video-series) +- [जब आपको नौकरी मिल जाये](#computer-science-courses) --- From f4c0140c924fe26ffee8faf19f2936fadbffbfd8 Mon Sep 17 00:00:00 2001 From: Jonatandb Date: Thu, 7 Apr 2022 22:26:43 -0300 Subject: [PATCH 422/857] Typo --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 81e2d5fe37..f80d6e06d0 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -145,7 +145,7 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - Matriz de adyacencia - Lista de adyacencia - Recorridos: BFS, DFS -- [Más nformación adicional](#más-información-adicional) +- [Más información adicional](#más-información-adicional) - [Recursión](#recursión) - [Programación Dinámica](#programación-dinámica) - [Programación Orientada a Objetos](#programación-orientada-a-objetos) From 1bd63ab08c6675bbb34fdecab3f4a4e85da15f48 Mon Sep 17 00:00:00 2001 From: Aryan Keluskar <80093392+aryankeluskar@users.noreply.github.com> Date: Sun, 10 Apr 2022 20:28:59 +0530 Subject: [PATCH 423/857] Fixed it --- translations/README-hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 3ab502fe0c..1c715b5eb3 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -45,7 +45,7 @@ ## यह क्या है? यह एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर को वेब डेवलपर (स्वयं सिखाया, कोई सीएस डिग्री नहीं) से जाने के लिए मेरी बहु-महीने की अध्ययन योजना है -![Coding at the whiteboard - from HBO's Silicon Valley] (https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें। From b21cc8543cd25921d9fa98c41e32f40d60df8e99 Mon Sep 17 00:00:00 2001 From: tianheg Date: Sun, 1 May 2022 11:53:20 +0800 Subject: [PATCH 424/857] fix action error --- .github/workflows/links_checker.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index f1d1688d6c..52254eff9c 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -12,16 +12,15 @@ jobs: link_checker: name: Check links and create automated issue if needed runs-on: ubuntu-latest - timeout-minutes: 5 env: REPORT_FILE: links-report steps: ## Check out code using Git - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Check all links at README.md and translations files id: lychee - uses: lycheeverse/lychee-action@v1.2.0 + uses: lycheeverse/lychee-action@v1.4.1 with: output: ${{ env.REPORT_FILE }} format: markdown @@ -46,7 +45,7 @@ jobs: run: echo Lychee exit with ${{ steps.lychee.outputs.exit_code }} - name: Find the last report issue open - uses: micalevisk/last-issue-action@v1 + uses: micalevisk/last-issue-action@v1.2.2 id: last_issue with: state: open @@ -58,7 +57,7 @@ jobs: - name: Create issue from report file if: ${{ steps.last_issue.outputs.has_found == 'false' }} - uses: peter-evans/create-issue-from-file@v3 + uses: peter-evans/create-issue-from-file@v4 with: title: Link checker report content-filepath: ${{ env.REPORT_FILE }} @@ -69,7 +68,7 @@ jobs: - name: Update last report open issue created if: ${{ steps.last_issue.outputs.has_found == 'true' }} - uses: peter-evans/create-issue-from-file@v3 + uses: peter-evans/create-issue-from-file@v4 with: title: Link checker report content-filepath: ${{ env.REPORT_FILE }} @@ -80,6 +79,6 @@ jobs: - name: Close last report open issue if: ${{ steps.lychee.outputs.exit_code == 0 }} - uses: peter-evans/close-issue@v1 + uses: peter-evans/close-issue@v2 with: issue-number: ${{ steps.last_issue.outputs.issue_number }} From 7e15bad46b1ef836b658ffe3ec7732e12dcef2bb Mon Sep 17 00:00:00 2001 From: tianheg Date: Sun, 1 May 2022 12:00:08 +0800 Subject: [PATCH 425/857] Update links_checker.yml --- .github/workflows/links_checker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index 52254eff9c..224aab6bed 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -45,7 +45,7 @@ jobs: run: echo Lychee exit with ${{ steps.lychee.outputs.exit_code }} - name: Find the last report issue open - uses: micalevisk/last-issue-action@v1.2.2 + uses: micalevisk/last-issue-action@v1.2 id: last_issue with: state: open From 1bb157497388ca0105b6a8b6cf5001d263bf8f68 Mon Sep 17 00:00:00 2001 From: tianheg Date: Mon, 2 May 2022 14:18:18 +0800 Subject: [PATCH 426/857] fix broken link --- README.md | 54 ++++++++++++++----------------- programming-language-resources.md | 1 - 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 540a138291..4bae8bea21 100644 --- a/README.md +++ b/README.md @@ -351,7 +351,7 @@ You could also use these, but read around first. There may be caveats: Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -This is the original article my post was based on: http://blog.codingforinterviews.com/best-programming-language-jobs/ +This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) You need to be very comfortable in the language and be knowledgeable. @@ -806,7 +806,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Heap / Priority Queue / Binary Heap - visualized as a tree, but is usually linear in storage (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) @@ -814,8 +814,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) @@ -848,17 +848,17 @@ if you can identify the runtime complexity of different algorithms. It's a super - For heapsort, see Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) @@ -892,10 +892,10 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) @@ -1000,11 +1000,11 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Design patterns @@ -1100,8 +1100,8 @@ Graphs can be used to represent many problems in computer science, so this secti - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. @@ -1136,11 +1136,11 @@ Graphs can be used to represent many problems in computer science, so this secti - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). @@ -1165,7 +1165,6 @@ Graphs can be used to represent many problems in computer science, so this secti - ### Floating Point Numbers - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) @@ -1346,8 +1345,7 @@ You're never really done. - This book is better as an algorithm reference, and not something you read cover to cover. - Can rent it on Kindle - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief @@ -1394,7 +1392,7 @@ You're never really done. - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) @@ -1478,7 +1476,7 @@ You're never really done. - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) ## Additional Learning @@ -1615,7 +1613,6 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform @@ -1792,15 +1789,14 @@ You're never really done. - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) + - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Courses: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - Resources: - Books: @@ -1869,7 +1865,7 @@ You're never really done. - **String Matching** - Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) diff --git a/programming-language-resources.md b/programming-language-resources.md index a66c8ee38d..6bf555e189 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -48,7 +48,6 @@ - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - - [Software Construction In Java (video)](https://www.edx.org/course/software-construction-java-mitx-6-005-1x) - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) From 5c2df1ae83939b045092e36924baf9abd640512f Mon Sep 17 00:00:00 2001 From: tianheg Date: Mon, 2 May 2022 14:27:37 +0800 Subject: [PATCH 427/857] fix broken link --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 4bae8bea21..c8daa731b9 100644 --- a/README.md +++ b/README.md @@ -1928,8 +1928,6 @@ Sit back and enjoy. - [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) - - [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) From 2d07e7996ac1b2b62a43d81606d3f9275685e6bf Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 13:51:20 +0200 Subject: [PATCH 428/857] Created README.it.md Started the Italian Translation for the README --- README.it.md | 1989 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1989 insertions(+) create mode 100644 README.it.md diff --git a/README.it.md b/README.it.md new file mode 100644 index 0000000000..5808269183 --- /dev/null +++ b/README.it.md @@ -0,0 +1,1989 @@ +# Coding Interview University + +> Inizialmente ho creato questo progetto come una sorta di "to-do list" degli argomenti da studiare per diventare un software engineer, +> ma è cresciuta fino a diventare ciò che potete vedere oggi. Dopo aver seguito questo percorso di studio, [Sono stato preso +> come Software Development Engineer ad Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Probabilmente non hai bisogno di studiare tanto quanto ho studiato io. Comunque, tutto ciò di cui hai bisogno è qua. +> +> Ho studiato dalle 8 alle 12 ore al giorno, per diversi mesi. Questa è la mia storia: [Perché ho studiato full-time per 8 mesi per un colloquio Google (Articolo in Inglese)](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Nota Bene:** Non avrai bisogno di studiare tanto quanto ho studiato io. Ho sprecato un sacco di tempo su argomenti evitabili. Più informazioni riguardo questo qua sotto. Ti aiuterò ad arrivare ai tuoi obiettivi senza sprecare il tuo prezioso tempo. +> +> La lista proposta qua sotto ti preparerà egregiamente per un colloquio tecnico e per qualsiasi azienda di informatica, +> anche per le quelle Big come Amazon, Facebook, Google e Microsoft. +> +> *Buona fortuna!* + +
+Traduzioni: + +- [Cinese](translations/README-cn.md) +- [Lingua Vietnamita](translations/README-vi.md) +- [Spagnolo](translations/README-es.md) +- [Portoghese - Brasiliano](translations/README-ptbr.md) +- [Polacco](translations/README-pl.md) +- [Cinese Mandarino (Dialetto Taiwanese)](translations/README-tw.md) +- [Giapponese](translations/README-ja.md) +- [Russo](translations/README-ru.md) +- [Tedesco](translations/README-de.md) +- [Indonese](translations/README-id.md) +- [Lingua Khmer](translations/README-kh.md) +- [Lingua Uzbeca](translations/README-uz.md) +- [Bulgaro](translations/README-bg.md) +- [Bengalese](translations/README-bn.md) + +
+ +
+Traduzioni in corso: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabico](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turco](https://github.com/jwasham/coding-interview-university/issues/90) +- [Francese](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Coreano](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greco](https://github.com/jwasham/coding-interview-university/issues/166) +- [Lingua Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persiano](https://github.com/jwasham/coding-interview-university/issues/186) + +
+ + + +## Che cos'è? + +![Programmare sulla lavagna - da HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Questo è il mio piano di studio distribuito su più mesi per diventare un software engineer per una grande azienda. + +**Requisiti:** +* Una minima esperienza con la programmazione (variabili, cicli, metodi/funzioni, etc) +* Pazienza +* Tempo + +Ricorda che questo è un piano di studio per **software engineering**, non per web development. Grandi aziende come Google, Amazon, +Facebook e Microsoft considerano il software engineering molto diverso dal web development. Per esempio, Amazon ha dei +Frontend Engineers (FEE) e dei Software Development Engineers (SDE). Questi sono due ruoli separati e i colloqui per queste posizioni +non saranno gli stessi, dato che ogni reparto ha le sue peculiarità. Queste aziende esigono conoscenza in ambito +software development/ruoli dell'engineering. + +--- + +## Tabella dei Contenuti + +### Il Piano di Studio + +- [Che Cos'è?](#what-is-it) +- [Perché Usarlo?](#why-use-it) +- [Come Usarlo](#how-to-use-it) +- [Non Pensare di non Essere Abbastanza Intelligente](#dont-feel-you-arent-smart-enough) +- [Un Appunto Riguardo le Risorse Video](#a-note-about-video-resources) +- [Scegli un Linguaggio di Programmazione](#choose-a-programming-language) +- [Libri per Studiare Strutture di Dati e Algoritmi](#books-for-data-structures-and-algorithms) +- [Libri per la Preparazione in Vista dei Colloqui](#interview-prep-books) +- [Non Commettere i Miei Stessi Errori](#dont-make-my-mistakes) +- [Cosa Non Sarà Trattato Qua](#what-you-wont-see-covered) +- [Il Piano Giornaliero](#the-daily-plan) +- [Pratica per Domande di Coding](#coding-question-practice) +- [I Problemi con il Coding](#coding-problems) + +### Argomenti di Studio + +- [Complessità degli Algoritmi / Big-O / Stima Asintotica](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Struttura Dati](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [Più Conoscenza](#more-knowledge) + - [Ricerca Binaria](#binary-search) + - [Operazione Bit a Bit](#bitwise-operations) +- [Alberi](#trees) + - [Alberi - Appunti & Background](#trees---notes--background) + - [Alberi Binari di Ricerca: BSTs](#binary-search-trees-bsts) + - [Heap (Mucchio) / Priority Queue (Coda di Priorità) / Heap Binario (Mucchio Binario)](#heap--priority-queue--binary-heap) + - Alberi di RIcerca Bilanciati (Concetti Generali) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [Final Review](#final-review) + +### Getting the Job + +- [Update Your Resume](#update-your-resume) +- [Find a Job](#find-a-job) +- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) +- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [Have questions for the interviewer](#have-questions-for-the-interviewer) +- [Once You've Got The Job](#once-youve-got-the-job) + +**---------------- Everything below this point is optional ----------------** + +### Optional Extra Topics & Resources + +- [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) + +--- + +## Why use it? + +If you want to work as a software engineer for a large company, these are the things you have to know. + +If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. + +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to +traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. +Every data structure I had ever used was built into the language, and I didn't know how they worked +under the hood at all. I never had to manage memory unless a process I was running would give an "out of +memory" error, and then I'd have to find a workaround. I used a few multidimensional arrays in my life and +thousands of associative arrays, but I never created data structures from scratch. + +It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. + +## How to use it + +Everything below is an outline, and you should tackle the items in order from top to bottom. + +I'm using GitHub's special markdown flavor, including tasks lists to track progress. + - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### If you don't want to use git + +On this page, click the Code button near the top, then click "Download ZIP". Unzip the file and you can work with the text files. + +If you're open in a code editor that understands markdown, you'll see everything formatted nicely. + +![How to download the repo as a zip file](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### If you're comfortable with git + +Create a new branch so you can check items like this, just put an x in the brackets: [x] + + Fork a branch and follow the commands below + +Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. + +Clone to your local repo: + + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + +Mark all boxes with X after you completed your changes: + + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + +## Don't feel you aren't smart enough + +- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. +- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## A Note About Video Resources + +Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. +Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. + +It would be great to replace the online course resources with free and always-available public sources, +such as YouTube videos (preferably university lectures), so that you people can study these anytime, +not just when a specific online course is in session. + +## Choose a Programming Language + +You'll need to choose a programming language for the coding interviews you do, +but you'll also need to find a language that you can use to study computer science concepts. + +Preferably the language would be the same, so that you only need to be proficient in one. + +### For this Study Plan + +When I did the study plan, I used 2 languages for most of it: C and Python + +* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures + and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + but when you're learning how these low-level data structures are built, it's great to feel close to the metal. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. + - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) +* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. + +This is my preference. You do what you like, of course. + +You may not need it, but here are some sites for learning a new language: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) + +### For your Coding Interview + +You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: + +- C++ +- Java +- Python + +You could also use these, but read around first. There may be caveats: + +- JavaScript +- Ruby + +Here is an article I wrote about choosing a language for the interview: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) + +You need to be very comfortable in the language and be knowledgeable. + +Read more about choices: +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[See language-specific resources here](programming-language-resources.md) + +## Books for Data Structures and Algorithms + +This book will form your foundation for computer science. + +Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Your choice: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +Your choice: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Interview Prep Books + +You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, +but I bought more to give myself more practice. But I always do too much. + +I bought both of these. They gave me plenty of practice. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Answers in C++ and Java + - This is a good warm-up for Cracking the Coding Interview + - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - answers in Java + +### If you have tons of extra time: + +Choose one: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +## Don't Make My Mistakes + +This list grew over many months, and yes, it got out of hand. + +Here are some mistakes I made so you'll have a better experience. And you'll save months of time. + +### 1. You Won't Remember it All + +I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going +through my notes and making flashcards, so I could review. I didn't need all of that knowledge. + +Please, read so you won't make my mistakes: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Use Flashcards + +To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. +Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. + +Make your own for free: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. + +But if you don't want to listen to me, here you go: +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. +It's way too much for what's required. + +**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. +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. + +My flashcard database in Anki format: 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. + +### 3. Do Coding Interview Questions While You're Learning + +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. Do 2 or 3 questions regarding linked lists. +1. Move on to the next learning topic. +1. Later, go back and do another 2 or 3 linked list problems. +1. Do this with each new topic you learn. + +**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 + +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 +- Javascript +- 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-cpp) + - [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) + +Why you need to practice doing programming problems: +- Problem recognition, and where the right data structures and algorithms fit in +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for your solutions (see Big-O below) +- 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/) + +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) + +**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). + +Solving Problems: +- [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/) + +Coding Interview Question Videos: +- [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) + - Super for walkthroughs of problem solutions +- [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 +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge sites: +- [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. + - See Nick White and FisherCoder Videos above for code walk-throughs. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [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 + +- 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. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [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 +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) + - [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) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement a 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 + - 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 + - [ ] size() - number of items + - [ ] capacity() - number of items it can hold + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - remove from end, return value + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + +- ### Linked Lists + - [ ] Description: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement + +- ### Stack + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Will not implement. Implementing with array is trivial + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Implement using linked-list, with tail pointer: + - enqueue(value) - adds value at position at tail + - dequeue() - returns value and removes least recently added element (front) + - empty() + - [ ] Implement using fixed-sized array: + - enqueue(value) - adds item at end of available storage + - dequeue() - returns value and removes least recently added element + - empty() + - full() + - [ ] Cost: + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue + - enqueue: O(1) (amortized, linked list and array [probing]) + - dequeue: O(1) (linked list and array) + - empty: O(1) (linked list and array) + +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implement with array using linear probing + - hash(k, m) - m is size of hash table + - add(key, value) - if key already exists, update value + - exists(key) + - get(key) + - remove(key) + +## More Knowledge + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] Implement: + - binary search (on sorted array of integers) + - binary search using recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Count set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Swap values: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Trees + +- ### Trees - Notes & Background + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basic tree construction + - traversal + - manipulation algorithms + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notes: + - level order (BFS, using queue) + - time complexity: O(n) + - space complexity: best: O(1), worst: O(n/2)=O(n) + - DFS notes: + - time complexity: O(n) + - space complexity: + best: O(log n) - avg. height of tree + worst: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - C/C++: + - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // insert value into tree + - [ ] get_node_count // get count of values stored + - [ ] print_values // prints the values in the tree, from min to max + - [ ] delete_tree + - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // returns the minimum value stored in the tree + - [ ] get_max // returns the maximum value stored in the tree + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + +- ### Heap / Priority Queue / Binary Heap + - visualized as a tree, but is usually linear in storage (array, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implement a max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(x) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- For heapsort, see Heap data structure above. Heap sort is great, but not stable + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort code: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort code: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implement: + - [ ] Mergesort: O(n log n) average and worst case + - [ ] Quicksort O(n log n) average case + - Selection sort and insertion sort are both O(n^2) average and worst case + - For heapsort, see Heap data structure above + +- [ ] Not required, but I recommended them: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + +## Graphs + +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. + +- Notes: + - There are 4 basic ways to represent a graph in memory: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiarize yourself with each representation and its pros & cons + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - When asked a question, look for a graph-based solution first, then move on if none + +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Graphs (review and more): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Course: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- I'll implement: + - [ ] DFS with adjacency list (recursive) + - [ ] DFS with adjacency list (iterative with stack) + - [ ] DFS with adjacency matrix (recursive) + - [ ] DFS with adjacency matrix (iterative with stack) + - [ ] BFS with adjacency list + - [ ] BFS with adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (see Aduni videos above): + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] topological sort + - [ ] count connected components in a graph + - [ ] list strongly connected components + - [ ] check for bipartite graph + +## Even More Knowledge + +- ### Recursion + - [ ] Stanford lectures on recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - When it is appropriate to use it? + - How is tail recursion better than not? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### Dynamic Programming + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + problem as being a candidate for dynamic programming. + - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. + - [ ] Videos: + - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Design patterns + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Learn these patterns: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + +- ### Combinatorics (n choose k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Course layout: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Just the videos - 41 (each are simple and each are short): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete and Approximation Algorithms + - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + and be able to recognize them when an interviewer asks you them in disguise. + - Know what NP-complete means. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pages 1048 - 1140 in CLRS if you have it. + +- ### How computers process a program + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processes and Threads + - [ ] Computer Science 162 - Operating Systems (25 videos): + - for processes and threads see videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Covers: + - Processes, Threads, Concurrency issues + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock + - CPU activity, interrupts, context switching + - Modern concurrency constructs with multicore processors + - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Context switching + - How context switching is initiated by the operating system and underlying hardware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testing + - To cover: + - how unit testing works + - what are mock objects + - what is integration testing + - what is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String searching & manipulations + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + +- ### Tries + - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + to track the path + - I read through code, but will not implement + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Very technical talk for kernel devs. Don't worry if most is over your head. + - The first half is enough. + +- ### Networking + - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Final Review + + This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + It's nice if you want a refresher often. + +- [ ] Series of 2-3 minutes short subject videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Update Your Resume + +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." +- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume + + +## Find a Job + +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Interview Process & General Interview Prep + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: + - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Have questions for the interviewer + +Some of mine (I already may know the answers, but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is the work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. It is NOT needed for an entry-level interview. + However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with interviewer's help + - Suggest additional features + - Remove items that interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep 80/20 rule in mind when estimating + - How much data written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Additional Learning + + I added them to help you become a well-rounded software engineer, and to be aware of certain + technologies and algorithms, so you'll have a bigger toolbox. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiarize yourself with a unix-based code editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - set of 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### Unix command line tools + - I filled in the list below from good tools. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Information theory (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - More about Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - See more in MIT 6.050J Information and Entropy series below + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Also see videos below + - Make sure to watch information theory videos first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Also see videos below + - Make sure to watch information theory videos first + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Make sure to watch information theory videos first + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer Security + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, and Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Know at least one type of balanced binary tree (and know how it's implemented): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Of these, I chose to implement a splay tree. From what I've read, you won't implement a + balanced search tree in your interview. But I wanted exposure to coding one up + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions + If you end up implementing red/black tree try just these: + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - In practice: + From what I can tell, these aren't used much in practice, but I could see where they would be: + The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + attractive for data structures that may be built once and loaded without reconstruction, such as language + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** + - In practice: + Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, + data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, + networking and file system code) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Gets very mathy, but watch the last 10 minutes for sure. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Red/black trees** + - These are a translation of a 2-3 tree (see below). + - In practice: + Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. + Not only does this make them valuable in time-sensitive applications such as real-time applications, + but it makes them valuable building blocks in other data structures which provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor + hashcodes, a Red-Black tree is used + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 search trees** + - In practice: + 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - In practice: + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - note: the N or K is the branching factor (max branches) + - binary trees are a 2-ary tree, with branching factor = 2 + - 2-3 trees are 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). + - In Practice: + B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary + block in a particular file. The basic problem is turning the file block i address into a disk block + (or perhaps to a cylinder-head-sector) address + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - covers cache-oblivious B-Trees, very interesting data structures + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + + +- ### k-D Trees + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Linear Programming (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Why ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Courses: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - Resources: + - Books: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + +## Additional Detail on Some Subjects + + I added these to reinforce some ideas already presented above, but didn't want to include them + above because it's just too much. It's easy to overdo it on a subject. + You want to get hired in this century, right? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **More Dynamic Programming** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be + - nice explanation of tries + - can be skipped + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +## Video Series + +Sit back and enjoy. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Computer Science Courses + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From 13a3dfad73c721d4b8237637511317775c25c1c4 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 13:52:32 +0200 Subject: [PATCH 429/857] Renamed README.it.md to README-it.md --- README.it.md => README-it.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.it.md => README-it.md (100%) diff --git a/README.it.md b/README-it.md similarity index 100% rename from README.it.md rename to README-it.md From 21d9b964288cd63922685f5d4cbf6529e21d189e Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 14:16:35 +0200 Subject: [PATCH 430/857] Changed File Path to Correct Directory --- README-it.md => translations/README-it.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README-it.md => translations/README-it.md (100%) diff --git a/README-it.md b/translations/README-it.md similarity index 100% rename from README-it.md rename to translations/README-it.md From e3562d511d1dcbdd237617b2ec570c314fef7054 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 14:42:28 +0200 Subject: [PATCH 431/857] Updated README-it..md --- translations/README-it.md | 152 +++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 5808269183..2fff21e372 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -136,106 +136,106 @@ software development/ruoli dell'engineering. - [Stack](#stack) - [Queue](#queue) - [Hash table](#hash-table) -- [Più Conoscenza](#more-knowledge) +- [Più Teoria](#more-knowledge) - [Ricerca Binaria](#binary-search) - [Operazione Bit a Bit](#bitwise-operations) -- [Alberi](#trees) +- [Alberi (Trees)](#trees) - [Alberi - Appunti & Background](#trees---notes--background) - [Alberi Binari di Ricerca: BSTs](#binary-search-trees-bsts) - [Heap (Mucchio) / Priority Queue (Coda di Priorità) / Heap Binario (Mucchio Binario)](#heap--priority-queue--binary-heap) - Alberi di RIcerca Bilanciati (Concetti Generali) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion + - traversali: preorder, inorder, postorder, BFS (ricerca in ampiezza), DFS (ricerca in profondita) +- [Sorting (Ordinamento)](#sorting) + - selection (per selezione) + - insertion (per inserzione) - heapsort - - quicksort + - quicksort - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [How computers process a program](#how-computers-process-a-program) +- [Grafi (Graphs)](#graphs) + - directed (Orientati) + - undirected (Non Orientati) + - adjacency matrix (Matrice delle Adiacenze) + - adjacency list (Lista delle Adiacenze) + - trasversali: BFS (ricerca in ampiezza), DFS (ricerca in profondita) +- [Ancora Più Teoria](#even-more-knowledge) + - [Ricorsione (Recursion)](#recursion) + - [Programmazione Dinamica](#dynamic-programming) + - [Schemi Progettuali (Design Patterns)](#design-patterns) + - [Calcolo Combinatorio (n sopra k) & Probabilità](#combinatorics-n-choose-k--probability) + - [NP, NP-Completo e Algoritmi di Approssimazione](#np-np-complete-and-approximation-algorithms) + - [Come i Computer Processano un Programma](#how-computers-process-a-program) - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) + - [Processi e Threads](#processes-and-threads) - [Testing](#testing) - - [String searching & manipulations](#string-searching--manipulations) + - [Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe](#string-searching--manipulations) - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) + - [Numeri con Decimali](#floating-point-numbers) - [Unicode](#unicode) - - [Endianness](#endianness) + - [Ordine dei Byte (Endianness)](#endianness) - [Networking](#networking) -- [Final Review](#final-review) - -### Getting the Job - -- [Update Your Resume](#update-your-resume) -- [Find a Job](#find-a-job) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - -**---------------- Everything below this point is optional ----------------** - -### Optional Extra Topics & Resources - -- [Additional Books](#additional-books) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) +- [Revisione Finale](#final-review) + +### Ottenere il Lavoro + +- [Aggiorna il tuo Curriculum Vitae](#update-your-resume) +- [Trova un Lavoro](#find-a-job) +- [Colloquio & Preparazione Generale](#interview-process--general-interview-prep) +- [Ragiona Riguardo la Data del Colloquio](#be-thinking-of-for-when-the-interview-comes) +- [Preparati Domande per l'Esaminatore](#have-questions-for-the-interviewer) +- [Una Volta Ottenuto il Lavoro](#once-youve-got-the-job) + +**---------------- Qua Sotto Sono Riportato Argomenti Facoltativi ----------------** + +### Argomenti Extra Opzionali & Risorse + +- [Libri Aggiuntivi](#additional-books) +- [System Design, Scalabilità, Gestione dei Dati](#system-design-scalability-data-handling) (Solo se hai più di 4+ anni di esperienza) +- [Argomenti Aggiuntiva](#additional-learning) + - [Compilatori](#compilers) + - [Emacs e vi(m)](#emacs-and-vim) + - [Tools per Linea di Comando Unix](#unix-command-line-tools) + - [Teoria delle Informazioni](#information-theory-videos) + - [Parità & Codice di Hamming](#parity--hamming-code-videos) + - [Entropia](#entropy) + - [Crittografia](#cryptography) + - [Compressione](#compression) + - [Sicurezza](#computer-security) + - [Garbage Collection](#garbage-collection) + - [Programmazione Parallela](#parallel-programming) + - [Messaggistica, Serializzazione e Sistemi di Gestione della Coda (Queueing Systems)](#messaging-serialization-and-queueing-systems) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) + - [Trasformata di Fourier Veloce](#fast-fourier-transform) - [Bloom Filter](#bloom-filter) - [HyperLogLog](#hyperloglog) - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) + - [Alberi di Van Emde Boas](#van-emde-boas-trees) + - [Strutture Dati Aumentate](#augmented-data-structures) + - [Alberi di Ricerca Bilanciati](#balanced-search-trees) + - Alberi AVL + - Alberi Splay + - Alberi Rosso/Nero (Red/Black) + - Alberi di Ricerca 2-3 + - Alberi 2-3-4 (o Alberi 2-4) + - Alberi N-ary (anche detti Alberi K-ary o Alberi M-ary) + - Alberi B + - [Alberi k-D](#k-d-trees) - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) + - [Rete di Flussi](#network-flows) + - [Disgiunzione & Union Find (MFSET)](#disjoint-sets--union-find) + - [Matematica per la Processazione Veloce (Fast Processing)](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) + - [Programmazione Lineare](#linear-programming-videos) + - [Geometria, Inviluppo Convesso](#geometry-convex-hull-videos) + - [Matematica Discreta](#discrete-math) - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) +- [Dettagli Aggiuntivi per Alcuni Temi Trattati](#additional-detail-on-some-subjects) +- [Video](#video-series) +- [Corsi di Informatica](#computer-science-courses) - [Papers](#papers) --- -## Why use it? +## Perché usarlo? If you want to work as a software engineer for a large company, these are the things you have to know. From 7cb4a94a1e9e6c118fbd38a6ec20ea7e32e2d555 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 14:48:04 +0200 Subject: [PATCH 432/857] Updated README-it.md --- translations/README-it.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 2fff21e372..26b66b9782 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -237,9 +237,9 @@ software development/ruoli dell'engineering. ## Perché usarlo? -If you want to work as a software engineer for a large company, these are the things you have to know. +Se vuoi trovare lavoro come software engineer per una grande azienda, questi sono i concetti che devi sapere. -If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. +Se hai perso l'occasione di prendere una laurea in informatica, come io ho fatto, tutto questo ti aiuterà a recuperare 5 anni della tua vita. When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. From 6fc92b3897426c6a32e33954b3b5e0f5fde2d4c9 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 21:06:00 +0200 Subject: [PATCH 433/857] Updated README-it.md [Updated To Line 406] + fixed a link. --- translations/README-it.md | 171 +++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 84 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 26b66b9782..e6937f11a6 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -129,7 +129,7 @@ software development/ruoli dell'engineering. ### Argomenti di Studio -- [Complessità degli Algoritmi / Big-O / Stima Asintotica](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Complessità degli Algoritmi / O-Grande / Stima Asintotica](#algorithmic-complexity--big-o--asymptotic-analysis) - [Struttura Dati](#data-structures) - [Arrays](#arrays) - [Linked Lists](#linked-lists) @@ -231,7 +231,7 @@ software development/ruoli dell'engineering. - [Dettagli Aggiuntivi per Alcuni Temi Trattati](#additional-detail-on-some-subjects) - [Video](#video-series) - [Corsi di Informatica](#computer-science-courses) -- [Papers](#papers) +- [Documenti](#papers) --- @@ -241,46 +241,46 @@ Se vuoi trovare lavoro come software engineer per una grande azienda, questi son Se hai perso l'occasione di prendere una laurea in informatica, come io ho fatto, tutto questo ti aiuterà a recuperare 5 anni della tua vita. -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. -Every data structure I had ever used was built into the language, and I didn't know how they worked -under the hood at all. I never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I used a few multidimensional arrays in my life and -thousands of associative arrays, but I never created data structures from scratch. +Quando ho iniziato questo progetto, non sapevo nulla, dallo stack fino all'heap, non conoscevo O-Grande o nulla riguardo gli alberi e i grafi. +Se avessi dovuto scrivere un algoritmo di ordinamento da zero, ti assicuro che sarebbe stato terribile. +Ogni struttura dati che avevo usato era già integrata nel linguaggio e non sapevo assolutamente come fossero implementate. +Non ho mai dovuto gestire la memoria tralasciando i momenti in cui un programma returnava un errore del tipo "Out of Memory", +che avrei poi risolto, cercando una soluzione. +Nella mia vita ho usato alcuni array multidimensionali e migliaia di array associativi, ma non ho mai creato strutture dati da zero. -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +Il piano è lungo. Potrebbe richiedere mesi, ma se si ha un po' di familiarità con queste cose già partirete avvantaggiati. -## How to use it +## Come usarlo -Everything below is an outline, and you should tackle the items in order from top to bottom. +Tutto ciò che segue rappresenta la cornice degli attuali argomenti, che si dovrebbero affrontare dall'alto verso il basso. -I'm using GitHub's special markdown flavor, including tasks lists to track progress. - - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +Sto usando le funzionalità del Markdown di Github, comprese le task-liste per monitorare i propri progressi. + - [Più informazioni riguardo Markdown di Github](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -### If you don't want to use git +### Se non vuoi usare git -On this page, click the Code button near the top, then click "Download ZIP". Unzip the file and you can work with the text files. +Su questa pagina, clicca il bottone in alto con scritto "Code", e clicca "Download ZIP". Unzippa il file e potrai lavorare con il file testuale. -If you're open in a code editor that understands markdown, you'll see everything formatted nicely. +Se lo aprirai con un editor di testo che sa interpretare il linguaggio markdown (.md), allora leggerai il testo formattato. -![How to download the repo as a zip file](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) +![Come scaricare la repository come un file .zip](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) -### If you're comfortable with git +### Se invece ti trovi a tuo agio con git -Create a new branch so you can check items like this, just put an x in the brackets: [x] +Crea un nuovo branch affinché tu possa tenere aggiornata la task list, semplicemente mettendo una 'x' nelle parentesi quadrate, così: [x] - Fork a branch and follow the commands below + Forka un branch e segui le istruzioni qua sotto -Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. +Forka la repository https://github.com/jwasham/coding-interview-university cliccando sul pulsante Fork. -Clone to your local repo: +Clona nella tua repository locale: git clone git@github.com:/coding-interview-university.git git checkout -b progress git remote add jwasham https://github.com/jwasham/coding-interview-university git fetch --all -Mark all boxes with X after you completed your changes: +Contrassegna con una X le task che hai completato: git add . git commit -m "Marked x" @@ -288,46 +288,49 @@ Mark all boxes with X after you completed your changes: git push --set-upstream origin progress git push --force -## Don't feel you aren't smart enough +## Non Pensare di non Essere Abbastanza Intelligente -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- I software engineers di successo sono intelligenti, ma molti di loro hanno insicurezze riguardo la loro bravura, pensando di non essere abbastanza. +- [Il mito del Programmatore Genio (Video in Inglese)](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [È Pericoloso Andare da Soli: Sconfiggere i Mostri Invisibili nell'Ambito Tech (Articolo in Inglese)](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## A Note About Video Resources +## Un Appunto Riguardo le Risorse Video -Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. +lcuni video sono disponibili solo iscrivendosi a un corso Coursera o Edx. Questi vengono chiamati MOOCs. +A volte le lezioni non saranno disponibili immediatamente, +quindi dovrai aspettare un paio di mesi senza averne accesso. -It would be great to replace the online course resources with free and always-available public sources, -such as YouTube videos (preferably university lectures), so that you people can study these anytime, -not just when a specific online course is in session. +Sarebbe bello sostituire le risorse dei corsi online con fonti pubbliche gratuite e sempre disponibili, come i video di Youtube +(preferibilmente lezioni universitarie), in modo che le persone possono studiare in qualsiasi momento +e non solo quando un determinato corso online è disponibile. -## Choose a Programming Language +## Scegli un Linguaggio di Programmazione -You'll need to choose a programming language for the coding interviews you do, -but you'll also need to find a language that you can use to study computer science concepts. +Avrete bisogno di scegliere un linguaggio di programmazione per i colloqui che farete, +ma sarà necessario trovare anche un linguaggio da utilizzare per studiare i concetti di informatica. -Preferably the language would be the same, so that you only need to be proficient in one. +Sarebbe perfetto se il linguaggio fosse lo stesso per entrambi gli scopi così da poter essere costante solo su un linguaggio. -### For this Study Plan +### Per Questo Piano di Studio -When I did the study plan, I used 2 languages for most of it: C and Python +Quando ho fatto questo piano di studio, ho usato principalmente due linguaggi: C e Python -* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, - but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. - - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) -* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. +* C: Bassissimo Livello. Permette di gestire puntatori e allocazione/deallocazione della memoria, cosicché si possano toccare gli algoritmi + e le strutture dati con le proprie mani. + In linguaggi di alto livello, come Python o Java, tutto questo viene mascherato dal linguaggio stesso. Nel lavoro di tutti i giorni, + un linguaggio di basso livello è terrificante, ma quando si stanno imparando le basi è utilissimo sentirsi vicini al cuore di tutto ciò. + - C è ovunque. Vedrai esempi nei libri, nelle lezioni, nei video, *OVUNQUE* durante il tuo corso di apprendimento. + - [Il Linguaggio di Programmazione C, Vol. 2 (Libro in Inglese)](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Questo è un libro abbastanza corto, ma ti darà una grande mano riguardo il linguaggio C e, se ti allenerai un po', + diventerai velocemente un esperto. Capire C aiuta a comprendere il funzionamento dei programmi e della memoria. + - Non c'è bisogno di studiare in profondita il libro (o comunque finirlo). Basterà arrivare al punto dove sarai a tuo agio + nel leggere e nello scrivere in C. + - [Risposte alle Domande del Libro](https://github.com/lekkas/c-algorithms) +* Python: Moderno e molto espressivo, l'ho imparato perché è semplicemente utilissimo e ti permette di scrivere codici brevi, ma potenti. -This is my preference. You do what you like, of course. +Questa è una mia preferenza, ovviamente te sei libero di scegliere. -You may not need it, but here are some sites for learning a new language: +Forse non ne avrai bisogno, ma ecco una lista di siti utili per imparare a programmare online: - [Exercism](https://exercism.org/tracks) - [Codewars](http://www.codewars.com) - [Codility](https://codility.com/programmers/) @@ -336,72 +339,72 @@ You may not need it, but here are some sites for learning a new language: - [Codechef](https://www.codechef.com/) - [Codeforces](https://codeforces.com/) -### For your Coding Interview +### Per il tuo colloquio -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +Puoi usare un qualsiasi linguaggio di programmazione per la parte tecnica del colloquio, ma le grandi aziende richiedono certi linguaggi, quali: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Potresti usare anche questi, ma valuta bene. Ci potrebbero essere delle contro-avvertenze: - JavaScript - Ruby -Here is an article I wrote about choosing a language for the interview: -[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) +Questo è un articolo che ho scritto riguardo la scelta del linguaggio: +[Scegli il Linguaggio per il tuo Colloquio Tecnico (Articolo in Inglese)](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Questo è l'articolo originale su cui si basa il post: [Scegliere un Linguaggio di Programmazione per il Proprio Colloquio (Articolo in Inglese)](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -You need to be very comfortable in the language and be knowledgeable. +Devi essere tranquillo nel linguaggio che scegli, oltre che il più competente possiile. -Read more about choices: -- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) +Informati di più riguardo la scelta: +- [Scegli il Linguaggio Giusto per il tuo Colloquio (Articolo in Inglese)](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -[See language-specific resources here](programming-language-resources.md) +[Risorse Specifiche per i Linguaggi (Pagina in Inglese)](../programming-language-resources.md) -## Books for Data Structures and Algorithms +## Libri per Studiare Strutture di Dati e Algoritmi -This book will form your foundation for computer science. +Il libro che sceglierai creerà le fondamenta delle tue conoscenze nell'ambito informatico. -Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. +Scegline uno solo. Cerca di sentirti a tuo agio nel linguaggio che sceglierai, dovrai leggere e scrivere molto codice. ### C -- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms +- [Algoritmi in C, Parti 1-5, 3za Edizione (Libro in Inglese)](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fondamentali, Strutture Dati, Ordinamento, Ricerca e Algoritmi per Grafi ### Python -- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [Data Structures and Algorithms in Python (Libro in Inglese)](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - di Goodrich, Tamassia, Goldwasser + - Ho amato questo libro. Ricopre tutti gli argomenti e più. + - Codice "Pythonico" + - La mia Recensione (Articolo in Inglese): https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ ### Java -Your choice: +A tua scelta: - Goodrich, Tamassia, Goldwasser - - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) -- Sedgewick and Wayne: - - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Free Coursera course that covers the book (taught by the authors!): - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + - [Strutture Dati e Algoritmi in Java (Libro in Inglese)](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick e Wayne: + - [Algoritmi (Libro in Inglese)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Corsi gratis di Coursera che possono sostituire il libro (creati dagli autori stessi!): + - [Algorithms I (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part2) ### C++ -Your choice: +A tua scelta: - Goodrich, Tamassia, and Mount - - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- Sedgewick and Wayne - - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + - [Strutture Dati e Algoritmi in C++, 2da Edizione (Libro in Inglese)](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick e Wayne + - [Algoritmi in C++, Parti 1-4: Fondamentali, Strutture Dati, Ordinamento, Ricerca (Libro in Inglese)](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algoritmi in C++ Parte 5: Algoritmi per Grafi (Libro in Inglese)](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -## Interview Prep Books +## Libri per la Preparazione in Vista dei Colloqui You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, but I bought more to give myself more practice. But I always do too much. From 6b43266962952b5a4178c25420abca5e80559619 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 21:39:46 +0200 Subject: [PATCH 434/857] Updated README-it.md [Updated To Line 475] --- translations/README-it.md | 95 ++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index e6937f11a6..4c6f85484e 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -37,12 +37,12 @@
Traduzioni in corso: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Hindi](https://github.com/jwasham/coding-interview-university/issues/81) +- [Ebraico](https://github.com/jwasham/coding-interview-university/issues/82) - [Arabico](https://github.com/jwasham/coding-interview-university/issues/98) - [Turco](https://github.com/jwasham/coding-interview-university/issues/90) - [Francese](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Ucraino](https://github.com/jwasham/coding-interview-university/issues/106) - [Coreano](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) - [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) @@ -391,8 +391,8 @@ A tua scelta: - Sedgewick e Wayne: - [Algoritmi (Libro in Inglese)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - Corsi gratis di Coursera che possono sostituire il libro (creati dagli autori stessi!): - - [Algorithms I (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part2) + - [Algoritmi I (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part1) + - [Algoritmi II (Corso in Inglese)](https://www.coursera.org/learn/algorithms-part2) ### C++ @@ -406,71 +406,72 @@ A tua scelta: ## Libri per la Preparazione in Vista dei Colloqui -You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, -but I bought more to give myself more practice. But I always do too much. +Non è necessario comprare molti libri. Onestamente, "Spaccare il Colloquio Pratico di Coding (Libro in Inglese)" è sufficiente, +però io ne ho comprati altri per fare più pratica, ma faccio sempre troppo. -I bought both of these. They gave me plenty of practice. +Io li ho comprati entrambi e mi hanno permesso di impratichirmi molto: -- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - Answers in C++ and Java - - This is a good warm-up for Cracking the Coding Interview - - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) -- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +- [Colloqui Pratichi Smascherati: Programma la tua Via di Salvezza, 4ta Edizione (Libro in Inglese)](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Risposte in C++ e Java + - Questo è un ottimo riscaldamento per il prossimo libro + - Non troppo difficile. La maggior parte dei problemi potrebbero essere più facili rispetto ai colloquio (da quello che ho letto) +- [Spaccare il Colloquio Pratico di Coding, 6ta Edizione (Libro in Inglese)](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Risposte in Java -### If you have tons of extra time: +### Se hai un Sacco di Tempo Libero: -Choose one: +Scegline uno: -- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +- [Elementi dei Colloqui di Programmazione (C++) (Libro in Inglese)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elementi dei Colloqui di Programmazione (Python) (Libro in Inglese)](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elementi dei Colloqui di Programmazione (Java) (Libro in Inglese)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Progetto di Gruppo - Metodi e Test per ogni problema del libro (Repository in Inglese)](https://github.com/gardncl/elements-of-programming-interviews) -## Don't Make My Mistakes +## Non Commettere i Miei Stessi Errori -This list grew over many months, and yes, it got out of hand. +Questa lista è cresciuta esponenzialmente negli ultimi mesi, e sì, la situazione è sfuggita di mano. -Here are some mistakes I made so you'll have a better experience. And you'll save months of time. +Questi sono alcuni dei miei errori, così che tu possa evitarli, risparmiando mesi di tempo. -### 1. You Won't Remember it All +### 1. Non ti Ricorderai Tutto -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards, so I could review. I didn't need all of that knowledge. +Ho guardato ore e ore di video, preso tanti appunti, ma mesi dopo ricordavo davvero poco. +Ho speso 3 giorni a leggere i miei appunti e a farmi flash-cards affinchè le potessi revisionare. Non mi serviva tutta quella conoscenza. -Please, read so you won't make my mistakes: +Perfavore leggilo, così da non fare il mio stesso errore: -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). +[Mantenere la Conoscenza in Ambito Informatico (Articolo in Inglese)](https://startupnextdoor.com/retaining-computer-science-knowledge/). -### 2. Use Flashcards +### 2. Usa delle Flash-Cards -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. +Per risolvere questo problema, ho creato un piccolo sito web di flashcards dove è possibile trovare 2 tipologie di carte: generali e codice. +Ognuna ha una formattazione diversa. Il sito è ottimizzato per telefono e tablet, affinché potessi revisionare da lì. -Make your own for free: +Crea le tue flash-cards gratuitamente: -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +- [Repository del Sito per Flash-Cards (Repository e Sito in Inglese)](https://github.com/jwasham/computer-science-flash-cards) -**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. +**SCONSIGLIO VIVAMENTE di Usare le mie Flash-Cards** Sono troppe e alcune eccessivamente complesse. -But if you don't want to listen to me, here you go: -- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +Ma se non vuoi darmi ascolto, eccole qua: +- [DataBase delle mie Flash-Cards (1200 cards) (Repository e Cards in Inglese)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db) +- [DataBase delle mie Flash-Cards (difficoltà estrema - 1800 cards) (Repository e Cards in Inglese)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db) -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. -It's way too much for what's required. +Tieni a mente che ho creato carte per qualsiasi argomento, dall'assembly alle curiosità su python, fino al machine learning e alla statistica. +Tutto ciò è molto più di quanto è veramente necessario. -**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. +**Riguardo le Flash-Cards:** La prima volta che comprendi la domanda e rispondi correttamente, non mettere via la card. +Devi rispondere più volte alla stessa carta prima di considerarla appresa. +La ripetizione farà penetrare la vostra conoscenza nei meandri del nostro cervello. -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. -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. +Un alternativa al mio sito di è [Anki](http://ankisrs.net/), sito che è stato consigliatomi parecchie volte. +Usa un sistema di ripetizione che aiuta a memorizzare meglio. Facile da usare, disponibile su qualsiasi piattaforma +e auto-sincronizzato con altri tuoi dispositivi, ha un costa di $25 su iOS, ma è disponibile su altre piattaforme. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). +Il mio DataBase di Flash-Cards in Anki: https://ankiweb.net/shared/info/25173560 (grazie a [@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. +Alcuni studenti mi hanno fatto notare problemi di formattazione con degli spazi vuoti, facilmente risolvibili così: +apri un mazzo, modifica il mazzo, clicca sulle carte, seleziona "styling" e aggiungi "white-space: pre;" alla classe "Card". ### 3. Do Coding Interview Questions While You're Learning From c4b95de0faf1f1094fe93ffc29d48e339acae460 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 13 May 2022 21:46:39 +0200 Subject: [PATCH 435/857] Updated README-it.md --- translations/README-it.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/README-it.md b/translations/README-it.md index 4c6f85484e..9bc950f52a 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1,5 +1,11 @@ # Coding Interview University + + +[File Originale (in Inglese) - Original File Here](../README.md) + +Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh) + > Inizialmente ho creato questo progetto come una sorta di "to-do list" degli argomenti da studiare per diventare un software engineer, > ma è cresciuta fino a diventare ciò che potete vedere oggi. Dopo aver seguito questo percorso di studio, [Sono stato preso > come Software Development Engineer ad Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! From b0995357f699a8dee0e541958685a99e477e7482 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Mon, 16 May 2022 08:55:46 +0200 Subject: [PATCH 436/857] Updated README-it.md Inter-Links needs to be fixed. --- translations/README-it.md | 82 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 9bc950f52a..fd8c548fcf 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -96,7 +96,7 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh)
-## Che cos'è? +## Che cos'e'? ![Programmare sulla lavagna - da HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) @@ -119,16 +119,16 @@ software development/ruoli dell'engineering. ### Il Piano di Studio -- [Che Cos'è?](#what-is-it) -- [Perché Usarlo?](#why-use-it) -- [Come Usarlo](#how-to-use-it) -- [Non Pensare di non Essere Abbastanza Intelligente](#dont-feel-you-arent-smart-enough) -- [Un Appunto Riguardo le Risorse Video](#a-note-about-video-resources) -- [Scegli un Linguaggio di Programmazione](#choose-a-programming-language) -- [Libri per Studiare Strutture di Dati e Algoritmi](#books-for-data-structures-and-algorithms) -- [Libri per la Preparazione in Vista dei Colloqui](#interview-prep-books) -- [Non Commettere i Miei Stessi Errori](#dont-make-my-mistakes) -- [Cosa Non Sarà Trattato Qua](#what-you-wont-see-covered) +- [Che Cos'è?](#che-cose) +- [Perché Usarlo?](#perche-usarlo) +- [Come Usarlo](#come-usarlo) +- [Non Pensare di non Essere Abbastanza Intelligente](#non-pensare-di-non-essere-abbastanza-intelligente) +- [Un Appunto Riguardo le Risorse Video](#un-appunto-riguardo-le-risorse-video) +- [Scegli un Linguaggio di Programmazione](#scegli-un-linguaggio-di-programmazione) +- [Libri per Studiare Strutture di Dati e Algoritmi](#libri-per-studiare-strutture-di-dati-e-algoritmi) +- [Libri per la Preparazione in Vista dei Colloqui](#libri-per-la-preparazione-in-vista-dei-colloqui) +- [Non Commettere i Miei Stessi Errori](#non-commettere-i-miei-stessi-errori) +- [Cosa Non Sarà Trattato](#cosa-non-sara-trattato) - [Il Piano Giornaliero](#the-daily-plan) - [Pratica per Domande di Coding](#coding-question-practice) - [I Problemi con il Coding](#coding-problems) @@ -241,7 +241,7 @@ software development/ruoli dell'engineering. --- -## Perché usarlo? +## Perche' usarlo? Se vuoi trovare lavoro come software engineer per una grande azienda, questi sono i concetti che devi sapere. @@ -479,59 +479,59 @@ Il mio DataBase di Flash-Cards in Anki: https://ankiweb.net/shared/info/25173560 Alcuni studenti mi hanno fatto notare problemi di formattazione con degli spazi vuoti, facilmente risolvibili così: apri un mazzo, modifica il mazzo, clicca sulle carte, seleziona "styling" e aggiungi "white-space: pre;" alla classe "Card". -### 3. Do Coding Interview Questions While You're Learning +### 3. Esercitati con delle Domande da Colloquio Durante lo Studio -THIS IS VERY IMPORTANT. +QUESTO È MOLTO IMPORTANTE. -Start doing coding interview questions while you're learning data structures and algorithms. +Comincia ad esercitarti con delle possibile domande da colloquio durante lo studio delle strutture dati e degli algoritmi. -You need to apply what you're learning to solving problems, or you'll forget. I made this mistake. +Dovrai applicare tutto ciò che stai imparando per risolvere i problemi, o ti dimenticherai tutto. Io ho fatto questo errore. -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. Do 2 or 3 questions regarding linked lists. -1. Move on to the next learning topic. -1. Later, go back and do another 2 or 3 linked list problems. -1. Do this with each new topic you learn. +Appena hai imparato un argomento e pensi di saperlo padroneggiare bene (come ad esempio le **linked lists**): +1. Apri uno dei [libri di preparazione ai colloqui](#interview-prep-books) (o siti internet di problem-solving, listati poi sotto) +2. Rispondi a 2 o 3 domane riguardo le linked lists. +3. Studia il prossimo argomento. +4. Dopo, torna indietro e rispondi ad altre 2 o 3 domande sulle linked list. +5. Fai questo con ogni nuovo argomento che dovrai affrontare. -**Keep doing problems while you're learning all this stuff, not after.** +**Continua ad esercitarti con i problemi durante la tua fase di studio, non dopo.** -You're not being hired for knowledge, but how you apply the knowledge. +Non verrai assunto per la tua conoscenza, ma per come applicherai la tua conoscenza. -There are many resources for this, listed below. Keep going. +Ci sono molte risorse da consultare, riportate poi sotto. -### 4. Focus +### 4. Concentrazione -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. +Ci sono un sacco di distrazioni che potrebbero toglierti tempo prezioso. Focalizzarsi e concentrarsi è difficile. Metti un po' di musica +senza lyrics e ti saprai concentrare molto bene. -## What you won't see covered +## Cosa Non Sara' Trattato -These are prevalent technologies but not part of this study plan: +Queste tecnologie sono fondamentali, ma non fanno parte di questo piano di studio: - SQL -- Javascript -- HTML, CSS, and other front-end technologies +- Javascript (JS) +- HTML, CSS e altre tecnologie front-end -## The Daily Plan +## Il Programma Giornaliero -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. +Questo corso tratta moltissimi argomenti. Ognuno di questi ti terrà impegnato per qualche giorno, o addirittura per settimane. Dipende dal tuo programma. -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. +Ogni giorno, guarda il prossimo argomento nella lista, guarda video a riguardo e implementa degli appunti +di quelle strutture dati o algoritmi del linguaggio a tua scelta per il corso. -You can see my code here: +Puoi vedere i miei codici qua: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [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. +Non devi memorizzare ogni algoritmo. Devi essere capace di capirlo abbastanza da poterlo implementare tu stesso. -## Coding Question Practice +## Domande per Esercitarsi in Vista del Colloquio - Why is this here? I'm not ready to interview. + Perché questo paragrafo? Non sono ancora pronto ad un colloquio. -[Then go back and read this.](#3-do-coding-interview-questions-while-youre-learning) +[Allora torna in dietro e leggi questo.](#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 From 64f3e82acefc969670d143d917bc3b77f1c749e7 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Mon, 16 May 2022 10:57:34 +0200 Subject: [PATCH 437/857] Updated README-it.md [Translated To Line 626] --- translations/README-it.md | 158 +++++++++++++++++++------------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index fd8c548fcf..5b47dae9ca 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -129,23 +129,23 @@ software development/ruoli dell'engineering. - [Libri per la Preparazione in Vista dei Colloqui](#libri-per-la-preparazione-in-vista-dei-colloqui) - [Non Commettere i Miei Stessi Errori](#non-commettere-i-miei-stessi-errori) - [Cosa Non Sarà Trattato](#cosa-non-sara-trattato) -- [Il Piano Giornaliero](#the-daily-plan) -- [Pratica per Domande di Coding](#coding-question-practice) -- [I Problemi con il Coding](#coding-problems) +- [Il Piano Giornaliero](#il-piano-giornaliero) +- [Domande per Esercitarsi in Vista del Colloquio](#domande-per-esercitarsi-in-vista-del-colloquio) +- [Problemi di Coding](#problemi-di-coding) ### Argomenti di Studio -- [Complessità degli Algoritmi / O-Grande / Stima Asintotica](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Struttura Dati](#data-structures) +- [Complessità degli Algoritmi / O-Grande / Stima Asintotica](#complessita-degli-algoritmi--o-grande--stima-asintotica) +- [Strutture Dati](#strutture-dati) - [Arrays](#arrays) - [Linked Lists](#linked-lists) - [Stack](#stack) - [Queue](#queue) - - [Hash table](#hash-table) -- [Più Teoria](#more-knowledge) - - [Ricerca Binaria](#binary-search) - - [Operazione Bit a Bit](#bitwise-operations) -- [Alberi (Trees)](#trees) + - [Hash Table](#hash-table) +- [Più Teoria](#piu-teoria) + - [Ricerca Binaria](#ricerca-binaria) + - [Operazione Bit a Bit](#operazione-bit-a-bit) +- [Alberi (Trees)](#alberi-trees) - [Alberi - Appunti & Background](#trees---notes--background) - [Alberi Binari di Ricerca: BSTs](#binary-search-trees-bsts) - [Heap (Mucchio) / Priority Queue (Coda di Priorità) / Heap Binario (Mucchio Binario)](#heap--priority-queue--binary-heap) @@ -488,7 +488,7 @@ Comincia ad esercitarti con delle possibile domande da colloquio durante lo stud Dovrai applicare tutto ciò che stai imparando per risolvere i problemi, o ti dimenticherai tutto. Io ho fatto questo errore. Appena hai imparato un argomento e pensi di saperlo padroneggiare bene (come ad esempio le **linked lists**): -1. Apri uno dei [libri di preparazione ai colloqui](#interview-prep-books) (o siti internet di problem-solving, listati poi sotto) +1. Apri uno dei [libri di preparazione ai colloqui](#libri-per-la-preparazione-in-vista-dei-colloqui) (o siti internet di problem-solving, listati poi sotto) 2. Rispondi a 2 o 3 domane riguardo le linked lists. 3. Studia il prossimo argomento. 4. Dopo, torna indietro e rispondi ad altre 2 o 3 domande sulle linked list. @@ -513,7 +513,7 @@ Queste tecnologie sono fondamentali, ma non fanno parte di questo piano di studi - Javascript (JS) - HTML, CSS e altre tecnologie front-end -## Il Programma Giornaliero +## Il Piano Giornaliero Questo corso tratta moltissimi argomenti. Ognuno di questi ti terrà impegnato per qualche giorno, o addirittura per settimane. Dipende dal tuo programma. @@ -531,94 +531,94 @@ Non devi memorizzare ogni algoritmo. Devi essere capace di capirlo abbastanza da Perché questo paragrafo? Non sono ancora pronto ad un colloquio. -[Allora torna in dietro e leggi questo.](#3-do-coding-interview-questions-while-youre-learning) +[Allora torna in dietro e leggi questo.](#3-esercitati-con-delle-domande-da-colloquio-durante-lo-studio) -Why you need to practice doing programming problems: -- Problem recognition, and where the right data structures and algorithms fit in -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for your solutions (see Big-O below) -- Testing your solutions +Perché esercitarsi con dei proble-solving: +- Ricognizione del problema e come le strutture dati ed algoritmi possono essere utilizzate +- Raccolta dei requisiti per risolvere il problema +- Mentre programmi, spiega il problema e la soluzione, proprio come succederebbe durante il colloquio +- Programma su foglio di carta o su una lavagna, non al computer +- Trova la complessità temporale e spaziale delle tue soluzioni (vedi O-Grande sotto) +- Testa le tue soluzioni -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/) +C'è una bellissima introduzione per la metodica della comunicazione nei colloqui di problem-solving. Lo scoprirai anche nei libri di preparazione, +ma ho trovato questo articolo fatto molto bene: +[Design degli Algoritmi (Articolo in Inglese)](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. +Scrivi il codice su carta o su una lavagna, non su un computer. Provalo con qualche input di prova. Poi riscrivilo e testalo su un 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.** +Se non hai una lavagnetta a casa, prendi un quadernone per fogli da disegno in una qualsiasi cartolibreria. Puoi metterti comodo sul divano e programmare. +Questa è la mia "lavagnetta da divano". Ho aggiunto la penna nella foto per far capire le dimensioni. Se usi una penna, vorrai poter cancellare. +Diventa subito un casino. **Io uso una matita e una gomma.** -![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) +![La mia Lavagnetta da Divano](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -**Coding question practice is not about memorizing answers to programming problems.** +**Risolvere questi problemi di coding non serve a memorizzare.** -## Coding Problems +## Problemi di Coding -Don't forget your key coding interview books [here](#interview-prep-books). +Non dimenticarti dei [libri per prepararti al colloquio](#libri-per-la-preparazione-in-vista-dei-colloqui). -Solving Problems: -- [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/) +Risolvere i Problemi: +- [Come Trovare una Soluzione (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) +- [Come Sezzionare una Richiesta di un Problema di Topcoder (Articolo in Inglese)](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) -- [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-) - - Good explanations of solution and the code - - You can watch several in a short time -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +Video sulle Domande per Colloqui Tecnici: +- [IDeserve (88 video, in Inglese)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 playlists, in Inglese)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Perfetto per le procedure dettagliate passo a passo per le soluzioni dei problemi +- [Nick White - LeetCode Solutions (187 video, in Inglese)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Ottima spiegazione del codice e della soluzione + - Si riesce a guardare molti video in poco tempo +- [FisherCoder - Soluzioni di LeetCode (Video in Inglese)](https://youtube.com/FisherCoder) -Challenge sites: -- [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. - - See Nick White and FisherCoder Videos above for code walk-throughs. -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) -- [InterviewBit](https://www.interviewbit.com/) -- [Project Euler](https://projecteuler.net/) +Siti per Mettersi alla Prova: +- [LeetCode (Sito in Inglese)](https://leetcode.com/) + - Il mio sito preferito per il problem-solving. Vale assolutamente fare un abbonamento per i mesi di preparazione necessari. + - Guarda i video di Nick White e FisherCoder listati sopra per le procedure passo a passo. +- [HackerRank (Sito in Inglese)](https://www.hackerrank.com/) +- [TopCoder (Sito in Inglese)](https://www.topcoder.com/) +- [Geeks for Geeks (Sito in Inglese)](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit (Sito in Inglese)](https://www.interviewbit.com/) +- [Project Euler (Sito in Inglese)](https://projecteuler.net/) -## Let's Get Started +## Cominciamo -Alright, enough talk, let's learn! +Ok, abbiamo parlato abbastanza, cominciamo ad imparare! -But don't forget to do coding problems from above while you learn! +Ma non dimenticare di esercitarti con i problemi, anche durante lo studio! -## Algorithmic complexity / Big-O / Asymptotic analysis +## Complessita' degli Algoritmi / O-Grande / Stima Asintotica -- 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. -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) -- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) +- Nulla da implementare qua, guarderai solo video e prenderai appunti! Yuppi! +- Ci sono un sacco di video qua. Basta guardarne abbastanza finché non si comprende l'argomento. Potrai sempre tornare indietro per ripassare. +- Non preoccuparti se non capisci tutta la matematica che c'è dietro. +- Dovrai solo capire come esprimere la complessità di un algoritmo con la O-Grande. +- [ ] [Harvard CS50 - Notazione Asintotica (Video in Inglese)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Notazione della Grande-O (tutorial generale veloce) (Video in Inglese)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Notazione della Grande-O (e Omega e Theta) - la migliore spiegazione matematica (Video in Inglese)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena (Video in Inglese)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Grande-O (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Analisi Ammortizzata (Video in Inglese)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (include relazioni di ricorrenza e teoremi principali): + - [Complessità Computazionale: Sezione 1 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Complessità Computazionale: Sezione 2 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Cheat-Sheet](http://bigocheatsheet.com/) -Well, that's about enough of that. +Bene, direi che può bastare. -When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end there is a quiz to see -if you can identify the runtime complexity of different algorithms. It's a super review and test. +Quando leggerai la parte di "Spaccare il Colloquio Pratico di Coding", c'è un capitolo riguardo questo e alla fine c'è un quiz +per testare la tua capacità nell'identificare la complessità del runtime di diversi algoritmi. -## Data Structures +## Strutture Dati - ### Arrays - - [ ] About Arrays: - - [Arrays (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) - - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] Implement a vector (mutable array with automatic resizing): + - [ ] Riguardo gli Arrays: + - [Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Arrays Lineari e Multi-Dimensionali (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Comincia il video da 15m 32s) + - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Matrici Irregolari o Jagged Arrays (Video in Inglese)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implementare un vettore (array mutabile con grandezza automatica): - [ ] 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 - can allocate int array under the hood, just not use its features From d634ee7e35c9dd38b288a467e653dc4b75e64fce Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Mon, 16 May 2022 11:24:58 +0200 Subject: [PATCH 438/857] Updated README-it.md [Data Structures -> Arrays] Done --- translations/README-it.md | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 5b47dae9ca..8a76a563e2 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -619,30 +619,30 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Matrici Irregolari o Jagged Arrays (Video in Inglese)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implementare un vettore (array mutabile con grandezza automatica): - - [ ] 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold - - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds - - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + - [ ] Programma usando arrays, puntatori e l'aritmetica dei puntatori per raggiungere un index, piuttosto che usare l'indexing. + - [ ] Array con dati non raffinati (raw) e memoria allocata + - puoi allocare array di interi, ma non usare le sue features + - comincia con 16, o se il numero iniziale è maggiore, usa delle potenze del 2 - 16, 32, 64, 128 + - [ ] size() - numero degli elementi + - [ ] capacity() - numero degli elementi che può contenere in totale + - [ ] is_empty() - se l'array è vuoto + - [ ] at(index) - fa il return di un item all'index dato, esplode se l'index è out of bounds (letteralmente, "fuori dai limiti") + - [ ] push(item) - inserisce (pusha) un item alla fine di un array + - [ ] insert(index, item) - inserisce un item all'index dato, spostando gli altri item verso destra (verso la fine) + - [ ] prepend(item) - come usare insert() con index 0 + - [ ] pop() - rimuove l'elemento alla fine e lo returna + - [ ] delete(index) - elimina l'item all'index dato, spostando gli altri item verso sinistra (verso l'inizio) + - [ ] remove(item) - cerca il valore dato e rimuove il suo index (funziona anche se si trova in più caselle) + - [ ] find(item) - cerca un valore e returna il primo index contenente quell'item, returna -1 se non viene trovato + - [ ] resize(new_capacity) // funzione private + - quando raggiungi la capacità massima, la raddoppia + - quando viene fatto il pop() di un item, se la grandezza è 1/4 della capacità, allora la reduce di metà + - [ ] Tempo + - O(1) per aggiungere/rimuovere alla fine (amortized for allocations for more space), indexare o aggiornare + - O(n) per aggiungere/rimuovere in qualsiasi punto + - [ ] Spazio + - contiguo in memoria, quindi la vicinanza aiuta a migliorare la performance + - spazio necessario = (capacità dell'array, che è >= n) * grandezza di un item, ma anche se 2n, rimane O(n) - ### Linked Lists - [ ] Description: From d7befb76d77ae220ad4551dd41e778c7f5e72cc9 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Mon, 16 May 2022 11:29:07 +0200 Subject: [PATCH 439/857] Added Italian to Translations In Progress Added the Italian Translation to Translations In Progress list You can find it here: https://github.com/jwasham/coding-interview-university/issues/1030 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c8daa731b9..9189f94a4c 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,8 @@ - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +
From 0fd9d14232bb1528d79a2657a6549f87bafe6a01 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 17 May 2022 08:53:58 +0200 Subject: [PATCH 440/857] Updated README-it.md [Translated To Line 753] --- translations/README-it.md | 193 +++++++++++++++++++------------------- 1 file changed, 97 insertions(+), 96 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 8a76a563e2..729b37efd2 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -645,111 +645,112 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - spazio necessario = (capacità dell'array, che è >= n) * grandezza di un item, ma anche se 2n, rimane O(n) - ### Linked Lists - - [ ] Description: - - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation + - [ ] Descrizione: + - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [CS 61B - Linked Lists 1 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (Video in Inglese)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - non il video intero, ma solo nozioni sulla struttura del nodo e l'allocazione della memoria - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [Perché dovresti evitare le Linked Lists (Video in Inglese)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Ti aiuto un po': hai bisogno della conoscenza riguardo puntatori di puntatori: + (per quando passi un puntatore ad una funzione che potrebbe cambiare l'indirizzo a cui il puntatore punta) + Questa pagina serve solo ad avere un assaggio dei puntatori ai puntatori. Non consiglio di seguire l'ordine di questa lista. + La scorrevolezza nel leggere viene persa per colpa di una mancanza di intelligenza. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] Implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - - No need to implement + - [ ] Implementazione (Fatto con puntatori alla coda e senza): + - [ ] size() - returna il numero di elementi nella lista + - [ ] empty() - returna vero se la lista è vuota, altrimenti falso + - [ ] value_at(index) - returna il valore in posizione index (partendo da 0 per il primo) + - [ ] push_front(value) - aggiungi un item in testa alla lista + - [ ] pop_front() - rimuove l'item in testa alla lista e ne returna il valore + - [ ] push_back(value) - aggiunge un elemento in coda alla lista + - [ ] pop_back() - rimuove l'elemento finale della lista e ne returna il valore + - [ ] front() - returna il valore all'inizio della lista + - [ ] back() - returna il valore alla fine della lista + - [ ] insert(index, value) - inserisce il valore in posizione index, così l'elemento attuale in posizione index punterà all'elemento successivo + - [ ] erase(index) - rimuove un nodo ad un index dato + - [ ] value_n_from_end(n) - returna un valore in posizione n rispetto la fine della lista + - [ ] reverse() - reversa la lista + - [ ] remove_value(value) - rimuove il primo elemento nella lista avente il valore dato + - [ ] Liste Linkate Doppiamente + - [Descrizione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Non c'è bisogno di implementarle - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Will not implement. Implementing with array is trivial + - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Non saranno implementati. Esercitarsi con l'array è quasi banale. - ### Queue - - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) - - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element - - empty() - - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) + - [ ] [Queue (Video in Inglese)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Buffer Circolare/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Implementazione usando le linked list, con puntatore alla coda: + - enqueue(value) - aggiunge un valore alla posizione della coda + - dequeue() - returna il valore aggiunto per ultimo e lo rimuove + - empty() - controlla se è vuota o meno + - [ ] Implementazione usando gli array con memoria allocata fissa: + - enqueue(value) - aggiunge un item alla fine + - dequeue() - returna il valore aggiunto per ultimo e lo rimuove + - empty() - controlla se la queue è vuota + - full() - controlla se la queue è piena + - [ ] Costi: + - una implementazione sbagliata usando le linked list dove aggiungi alla queue dalla testa e togli dalla coda porterebbe ad O(n) + perché avrai bisogno dal prossimo elemento fino alla fine, causando una dequeue trasversale per tutta la lista. + - enqueue: O(1) (ammortizzata, linked list e array [approfondendo]) + - dequeue: O(1) (linked list e array) + - empty: O(1) (linked list e array) - ### Hash table - - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Courses: - - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [ ] Implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value - - exists(key) - - get(key) - - remove(key) - -## More Knowledge - -- ### Binary search - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] Video: + - [ ] [Hashing con Chaining (Video in Inglese)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (Video in Inglese)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Indirizzamento Aperto, Hashing Crittografico (Video in Inglese)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: Il Dizionario, ma Più Potente (Video in Inglese)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: Dizionario, ma ancora Più Potente (Video in Inglese)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Avanzato) Randomizzazione: Universale & Hashing Perfetto (Video in Inglese)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Avanzato) L'hashing perfetto (Video in Inglese)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Corsi Online: + - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Strutture Dati (Video in Inglese)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] hash tables distribuite: + - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implementazione con gli array usando il sondaggio (probing) lineare + - hash(k, m) - m è la grandezza dell'hash table + - add(key, value) - se la chiave esiste già, il valore viene aggiornato + - exists(key) - se la chiave esiste + - get(key) - prende il valore della chiave + - remove(key) - rimuove il valore con chiave data + +## Piu' Teoria + +- ### Ricerca Binaria + - [ ] [Ricerca Binaria (Video in Inglese)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Ricerca Binaria (Video in Inglese)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [dettagli](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [progetto](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] Implementazione: + - ricerca binaria (su array ordinati di interi) + - ricerca binaria usando la ricorsione + +- ### Operazioni Bit a Bit + - [ ] [Cheat-sheet sui bit](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - dovrai arrivare a conoscere le potenze del 2 da 2^1 fino a 2^16 e 2^32 + - [ ] Preparati bene sulla manipolazione dei bit tramite questi operatori: &, |, ^, ~, >>, << + - [ ] [words (Articolo in Inglese)](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Una buona Introduzione: + [Manipolazione dei Bit (Video in Inglese)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [Tutorial di programmazione C 2-10: Operazioni Bit a Bit (Video in Inglese)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Manipolazione dei Bit](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Operazioni bit a bit](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Il Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [Il Bit Twiddler Interattivo](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Trucchi su i Bit (Video in Inglese)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) From d8ab6aff3b7981d1a3a81c3fd4d80e3759bd07c4 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 17 May 2022 08:55:19 +0200 Subject: [PATCH 441/857] Updated README-it.md Corrected Little Error --- translations/README-it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-it.md b/translations/README-it.md index 729b37efd2..cca031271b 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -144,7 +144,7 @@ software development/ruoli dell'engineering. - [Hash Table](#hash-table) - [Più Teoria](#piu-teoria) - [Ricerca Binaria](#ricerca-binaria) - - [Operazione Bit a Bit](#operazione-bit-a-bit) + - [Operazioni Bit a Bit](#operazioni-bit-a-bit) - [Alberi (Trees)](#alberi-trees) - [Alberi - Appunti & Background](#trees---notes--background) - [Alberi Binari di Ricerca: BSTs](#binary-search-trees-bsts) From d96a505383cb19e004e1250366387edfaf7ed8bd Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 17 May 2022 11:50:18 +0200 Subject: [PATCH 442/857] Updated README-it.md [Translated To Line 900] --- translations/README-it.md | 266 +++++++++++++++++++------------------- 1 file changed, 134 insertions(+), 132 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index cca031271b..cdab082002 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -146,12 +146,12 @@ software development/ruoli dell'engineering. - [Ricerca Binaria](#ricerca-binaria) - [Operazioni Bit a Bit](#operazioni-bit-a-bit) - [Alberi (Trees)](#alberi-trees) - - [Alberi - Appunti & Background](#trees---notes--background) - - [Alberi Binari di Ricerca: BSTs](#binary-search-trees-bsts) - - [Heap (Mucchio) / Priority Queue (Coda di Priorità) / Heap Binario (Mucchio Binario)](#heap--priority-queue--binary-heap) - - Alberi di RIcerca Bilanciati (Concetti Generali) + - [Alberi - Appunti & Background](#alberi---appunti--background) + - [Alberi Binari di Ricerca: BSTs](#alberi-binari-di-ricerca-bsts) + - [Heap (Mucchio) / Priority Queue (Coda di Priorità) / Heap Binario (Mucchio Binario)](#heap--coda-di-priorita--heap-binario) + - Alberi Bilanciati di RIcerca (Concetti Generali) - traversali: preorder, inorder, postorder, BFS (ricerca in ampiezza), DFS (ricerca in profondita) -- [Sorting (Ordinamento)](#sorting) +- [Sorting (Ordinamento)](#sorting-ordinamento) - selection (per selezione) - insertion (per inserzione) - heapsort @@ -765,140 +765,142 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basic tree construction - - traversal - - manipulation algorithms - - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS notes: - - level order (BFS, using queue) - - time complexity: O(n) - - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS notes: - - time complexity: O(n) - - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) +## Alberi (Trees) + +- ### Alberi - Appunti & Background + - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - costruzione basica di un albero + - traversale + - algoritmi per la manipolazione + - [ ] [BFS (ricerca in ampiezza) e DFS (ricerca in profondità) (Video in Inglese)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - Appunti BFS: + - livelli (BFS, usando una queue) + - complessità temporale: O(n) + - complessità spaziale: + miglior caso: O(1) + peggior caso: O(n/2)=O(n) + - Appunti DFS: + - complessità temporale: O(n) + - complessità spaziale: + miglior caso: O(log n) - altezza media dell'albero + peggior caso: O(n) + - inorder (DFS: sinistra, se stesso, destra) + - postorder (DFS: sinistra, destra, se stesso) + - preorder (DFS: se stesso, sinistra, destra) + +- ### Alberi Binari di Ricerca: BSTs + - [ ] [Review Alberi Binari di Ricerca (Video in Inglese)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (Video in Inglese)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max - - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: - - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(x) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable - -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [Alberi Binari di Ricerca - Implementazione in C/C++ (Video in Inglese)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [Implementazione BST - allocazione memoria su stack e heap (Video in Inglese)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Trova il minimo e il massimo valore in un albero binario di ricerca (Video in Inglese)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Trova l'altezza di un albero binario (Video in Inglese)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Albero Binario Trasversale - strategie di ricerca in superficie e in profondità (Video in Inglese)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Alberi Binari: Livelli Trasversali (Video in Inglese)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Alberi Binari Trasversali: Preorder, Inorder, Postorder (Video in Inglese)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Controlla se un albero binario è di ricerca o no (Video in Inglese)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Eliminare un nodo da un albero binario di ricerca (Video in Inglese)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Successore inorder in un albero binario di ricerca (Video in Inglese)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implementazione: + - [ ] insert // inserisci un valore nell'albero + - [ ] get_node_count // returna il numero di valori inseriti + - [ ] print_values // stampa i valori, dal minimo al massimo, dell'albero + - [ ] delete_tree // elimina l'albero + - [ ] is_in_tree // returna vero se è dato un valore esistente nell'albero + - [ ] get_height // returna l'altezza dell'albero (l'altezza di un albero con un singolo nodo è 1) + - [ ] get_min // returna il valore minimo all'interno dell'albero + - [ ] get_max // returna il valore massimo all'interno dell'albero + - [ ] is_binary_search_tree // returna se è un albero di ricerca binario o meno + - [ ] delete_value // elimina un valore + - [ ] get_successor // returna il valore maggiore successo al valore passato, -1 se non esiste + +- ### Heap / Coda di Priorita' / Heap Binario + - visualizzato come un albero, ma è lineare nell'allocazione (array o linked list) + - [ ] [Heap (Articolo in Inglese)](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Osservazione sull'Altezza Degli Alberi (Video in Inglese)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Ordinamento Heap - consigli per iniziare (Video in Inglese)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: Heaps e Ordinamento Heap (Video in Inglese)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lezione 24: Code di Priorità (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Costruire un Heap (max-heap) (Video in Inglese)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implementa un max-heap: + - [ ] insert - inserisci un valore + - [ ] sift_up - neccessario per l'inserimento + - [ ] get_max - returna il valore massimo, senza rimuoverlo + - [ ] get_size() - returna il numero di elementi + - [ ] is_empty() - returna vero se l'heap è vuoto + - [ ] extract_max - returna il valore massimo, per poi rimuoverlo + - [ ] sift_down - necessario per l'extract_max + - [ ] remove(x) - rimuove un item all'index dato + - [ ] heapify - crea un heap da un array di elementi, necessario per heap_sort + - [ ] heap_sort() - prende un array non ordinato e lo ordina, da un valore massimo ad un valore minimo, che siano all'inizio o alla fine + +## Sorting (Ordinamento) + +- [ ] Appunti: + - Implementazione degli ordinamenti & impara i migliori casi, peggiori casi e la complessità media di ognuno: + - no bubble sort - è terribile - O(n^2), tranne quando n <= 16 + - [ ] Stabilità negli algoritmi di ordinamento ("Il Quicksort è stabile?") + - [Stabilità negli algoritmi di ordinamento (Articolo in Inglese)](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stabilità negli algoritmi di ordinamento (Articolo in Inglese)](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stabilità negli algoritmi di ordinamento (Articolo in Inglese)](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Stabilità negli algoritmi di ordinamento (Articolo in Inglese)](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Quali algoritmi possono essere utilizzati nelle linked list? Quali per gli array? Quali per entrambi? + - Non raccomando l'ordinamento delle linked list, ma il merge sort è fattibile. + - [Merge Sort per le Linked List (Articolo in Inglese)](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Per l'heapsort, leggi la struttura degli Heap sopra. Heap sort non è stabile, ma funziona bene + +- [ ] [Sedgewick - Mergesort (5 video, in Inglese)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparatori](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) +- [ ] [Sedgewick - Quicksort (4 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + - [ ] [2. Selezione](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Chiavi Duplicate](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [CS 61B Lezione 29: Sorting I (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lezione 30: Sorting II (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lezione 32: Sorting III (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lezione 33: Sorting V (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (Video in Inglese)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analizzare il Bubble Sort (Video in Inglese)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (Video in Inglese)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (Video in Inglese)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (Video in Inglese)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (Video in Inglese)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (Video in Inglese)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Codice del merge sort: + - [ ] [Usando un array come output (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Usando un array come output (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above +- [ ] Codice del quick sort: + - [ ] [Implementazione (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementazione (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementazione (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implementazione: + - [ ] Mergesort: O(n log n) caso medio e peggiore + - [ ] Quicksort O(n log n) caso medio + - Selection sort e insertion sort sono entrambi O(n^2) caso medio e peggiore + - Per l'heapsort, guarda l'Heap riportato sopra - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) From bf0d731815bbdfeee6e370de9f7643afcd423a31 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 17 May 2022 12:34:01 +0200 Subject: [PATCH 443/857] Updated README-it.md [Reached Line 1000] + Changed: Lecture(s) --> Lezione(i) (video) -> (Video in Inglese) videos -> video --- translations/README-it.md | 764 +++++++++++++++++++------------------- 1 file changed, 382 insertions(+), 382 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index cdab082002..0e37faff09 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -157,38 +157,38 @@ software development/ruoli dell'engineering. - heapsort - quicksort - merge sort -- [Grafi (Graphs)](#graphs) +- [Grafi (Graphs)](#grafi-graphs) - directed (Orientati) - undirected (Non Orientati) - adjacency matrix (Matrice delle Adiacenze) - adjacency list (Lista delle Adiacenze) - trasversali: BFS (ricerca in ampiezza), DFS (ricerca in profondita) -- [Ancora Più Teoria](#even-more-knowledge) - - [Ricorsione (Recursion)](#recursion) - - [Programmazione Dinamica](#dynamic-programming) - - [Schemi Progettuali (Design Patterns)](#design-patterns) - - [Calcolo Combinatorio (n sopra k) & Probabilità](#combinatorics-n-choose-k--probability) - - [NP, NP-Completo e Algoritmi di Approssimazione](#np-np-complete-and-approximation-algorithms) - - [Come i Computer Processano un Programma](#how-computers-process-a-program) +- [Ancora Più Teoria](#ancora-piu-teoria) + - [Ricorsione](#ricorsione) + - [Programmazione Dinamica](#programmazione-dinamica) + - [Schemi Progettuali (Design Patterns)](#schemi-progettuali) + - [Calcolo Combinatorio (n sopra k) & Probabilità](#calcolo-combinatorio-n-sopra-k--probabilita) + - [NP, NP-Completo e Algoritmi di Approssimazione](#np-np-completo-e-algoritmi-di-approssimazione) + - [Come i Computer Processano un Programma](#come-i-computer-processano-un-programma) - [Caches](#caches) - - [Processi e Threads](#processes-and-threads) + - [Processi e Threads](#processi-e-threads) - [Testing](#testing) - - [Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe](#string-searching--manipulations) + - [Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe](#ricerca-tramite-pattern-matching-e-manipolazione-delle-stringhe) - [Tries](#tries) - - [Numeri con Decimali](#floating-point-numbers) + - [Numeri con Decimali (Floats)](#numeri-con-decimali-floats) - [Unicode](#unicode) - - [Ordine dei Byte (Endianness)](#endianness) + - [Ordine dei Byte (Endianness)](#ordine-dei-byte-endianness) - [Networking](#networking) -- [Revisione Finale](#final-review) +- [Revisione Finale](#revisione-finale) ### Ottenere il Lavoro -- [Aggiorna il tuo Curriculum Vitae](#update-your-resume) -- [Trova un Lavoro](#find-a-job) -- [Colloquio & Preparazione Generale](#interview-process--general-interview-prep) -- [Ragiona Riguardo la Data del Colloquio](#be-thinking-of-for-when-the-interview-comes) -- [Preparati Domande per l'Esaminatore](#have-questions-for-the-interviewer) -- [Una Volta Ottenuto il Lavoro](#once-youve-got-the-job) +- [Aggiorna il tuo Curriculum Vitae](#aggiorna-il-tuo-curriculum-vitae) +- [Trova un Lavoro](#trova-un-lavoro) +- [Colloquio & Preparazione Generale](#colloquio--preparazione-generale) +- [Ragiona Riguardo la Data del Colloquio](#ragiona-riguardo-la-data-del-colloquio) +- [Preparati Domande per l'Esaminatore](#preparati-domande-per-l-esaminatore) +- [Una Volta Ottenuto il Lavoro](#una-volta-ottenuto-il-lavoro) **---------------- Qua Sotto Sono Riportato Argomenti Facoltativi ----------------** @@ -200,8 +200,8 @@ software development/ruoli dell'engineering. - [Compilatori](#compilers) - [Emacs e vi(m)](#emacs-and-vim) - [Tools per Linea di Comando Unix](#unix-command-line-tools) - - [Teoria delle Informazioni](#information-theory-videos) - - [Parità & Codice di Hamming](#parity--hamming-code-videos) + - [Teoria delle Informazioni](#information-theory-video) + - [Parità & Codice di Hamming](#parity--hamming-code-video) - [Entropia](#entropy) - [Crittografia](#cryptography) - [Compressione](#compression) @@ -230,8 +230,8 @@ software development/ruoli dell'engineering. - [Disgiunzione & Union Find (MFSET)](#disjoint-sets--union-find) - [Matematica per la Processazione Veloce (Fast Processing)](#math-for-fast-processing) - [Treap](#treap) - - [Programmazione Lineare](#linear-programming-videos) - - [Geometria, Inviluppo Convesso](#geometry-convex-hull-videos) + - [Programmazione Lineare](#linear-programming-video) + - [Geometria, Inviluppo Convesso](#geometry-convex-hull-video) - [Matematica Discreta](#discrete-math) - [Machine Learning](#machine-learning) - [Dettagli Aggiuntivi per Alcuni Temi Trattati](#additional-detail-on-some-subjects) @@ -614,9 +614,9 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Arrays - [ ] Riguardo gli Arrays: - - [Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/arrays-OsBSF) - [UC Berkeley CS61B - Arrays Lineari e Multi-Dimensionali (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Comincia il video da 15m 32s) - - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/dynamic-arrays-EwbnV) - [Matrici Irregolari o Jagged Arrays (Video in Inglese)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implementare un vettore (array mutabile con grandezza automatica): - [ ] Programma usando arrays, puntatori e l'aritmetica dei puntatori per raggiungere un index, piuttosto che usare l'indexing. @@ -646,14 +646,14 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Linked Lists - [ ] Descrizione: - - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/singly-linked-lists-kHhgK) - [ ] [CS 61B - Linked Lists 1 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (Video in Inglese)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - non il video intero, ma solo nozioni sulla struttura del nodo e l'allocazione della memoria - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Perché dovresti evitare le Linked Lists (Video in Inglese)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Ti aiuto un po': hai bisogno della conoscenza riguardo puntatori di puntatori: (per quando passi un puntatore ad una funzione che potrebbe cambiare l'indirizzo a cui il puntatore punta) @@ -676,15 +676,15 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] reverse() - reversa la lista - [ ] remove_value(value) - rimuove il primo elemento nella lista avente il valore dato - [ ] Liste Linkate Doppiamente - - [Descrizione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - [Descrizione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/doubly-linked-lists-jpGKD) - Non c'è bisogno di implementarle - ### Stack - - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/stacks-UdKzQ) - [ ] Non saranno implementati. Esercitarsi con l'array è quasi banale. - ### Queue - - [ ] [Queue (Video in Inglese)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Queue (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/queues-EShpq) - [ ] [Buffer Circolare/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] Implementazione usando le linked list, con puntatore alla coda: - enqueue(value) - aggiunge un valore alla posizione della coda @@ -713,12 +713,12 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [(Avanzato) L'hashing perfetto (Video in Inglese)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Corsi Online: - - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Strutture Dati (Video in Inglese)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/phone-book-problem-NYZZP) - [ ] hash tables distribuite: - - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/distributed-hash-tables-tvH8H) - [ ] Implementazione con gli array usando il sondaggio (probing) lineare - hash(k, m) - m è la grandezza dell'hash table @@ -753,11 +753,11 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [Trucchi su i Bit (Video in Inglese)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (Video in Inglese)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] Count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [4 ways to count bits in a byte (Video in Inglese)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] Swap values: @@ -768,7 +768,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di ## Alberi (Trees) - ### Alberi - Appunti & Background - - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/trees-95qda) - costruzione basica di un albero - traversale - algoritmi per la manipolazione @@ -790,7 +790,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Alberi Binari di Ricerca: BSTs - [ ] [Review Alberi Binari di Ricerca (Video in Inglese)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/E7cXP/introduction) - [ ] [MIT (Video in Inglese)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Alberi Binari di Ricerca - Implementazione in C/C++ (Video in Inglese)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) @@ -819,16 +819,16 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Heap / Coda di Priorita' / Heap Binario - visualizzato come un albero, ma è lineare nell'allocazione (array o linked list) - [ ] [Heap (Articolo in Inglese)](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/introduction-2OpTs) + - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/z3l9N/naive-implementations) + - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/GRV2q/binary-trees) - [ ] [Osservazione sull'Altezza Degli Alberi (Video in Inglese)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/0g1dl/basic-operations) + - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/gl5Ni/complete-binary-trees) + - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/HxQo9/pseudocode) - [ ] [Ordinamento Heap - consigli per iniziare (Video in Inglese)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/heap-sort-hSzMO) + - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps e Ordinamento Heap (Video in Inglese)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lezione 24: Code di Priorità (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Costruire un Heap (max-heap) (Video in Inglese)](https://www.youtube.com/watch?v=MiyLo8adrWw) @@ -861,17 +861,17 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - Per l'heapsort, leggi la struttura degli Heap sopra. Heap sort non è stabile, ma funziona bene - [ ] [Sedgewick - Mergesort (5 video, in Inglese)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - - [ ] [4. Comparatori](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + - [ ] [1. Mergesort](https://www.coursera.org/Lezione/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/Lezione/PWNEl/bottom-up-mergesort) + - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/Lezione/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparatori](https://www.coursera.org/Lezione/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/Lezione/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selezione](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - - [ ] [3. Chiavi Duplicate](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/Lezione/vjvnC/quicksort) + - [ ] [2. Selezione](https://www.coursera.org/Lezione/algorithms-part1/selection-UQxFT) + - [ ] [3. Chiavi Duplicate](https://www.coursera.org/Lezione/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/Lezione/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - [ ] [CS 61B Lezione 29: Sorting I (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) @@ -903,125 +903,125 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - Per l'heapsort, guarda l'Heap riportato sopra - [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) - - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Radix Sorts (6 video)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/Lezione/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/Lezione/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/Lezione/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [Radix Sort (Video in Inglese)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (Video in Inglese)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (Video in Inglese)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (Video in Inglese)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none - -- [ ] MIT(videos): - - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) - - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) - - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) - - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) - - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) - - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) - - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - When it is appropriate to use it? - - How is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) +## Grafi (Graphs) + +I grafi possono essere usati per rappresentare molti problemi in informatica, perciò questo paragrafo sarà lungo, come quello degli alberi e dell'ordinamento. + +- Appunti: + - Esistono 4 modi basici per rappresentare un grafo in una memoria: + - oggetti e puntatori + - matrice delle adiacenze + - lista delle adiacenze + - mappa delle adiacenze + - Mettiti alla prova con ogni rappresentazione e imparane i pro e i contro + - BFS e DFS - impara la loro complessità computazionale, i loro trade-offs e come implementarli tramite codice + - Quando ti viene posto un problema, pensa subito ad una soluzione con i grafi, altrimenti trova un'altra strada + +- [ ] MIT (Video in Inglese): + - [ ] [Ricerca in Ampiezza (Video in Inglese)](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Ricerca in Profondità (Video in Inglese)](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Lezioni di Skiena - Ottima introduzione: + - [ ] [CSE373 2020 - Lezione 10 - Grafi (Video in Inglese)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lezione 11 - Grafi Trasversali (Video in Inglese)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lezione 12 - Ricerca in Profondità (Video in Inglese)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lezione 13 - Alberi Ricoprenti Minimi (Video in Inglese)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lezione 14 - Alberi Ricoprenti Minimi (parte 2) (Video in Inglese)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lezione 15 - Algoritmi per i Grafi (parte 3) (Video in Inglese)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Grafi (revisione e altro): + + - [ ] [6.006 Problema della ricerca del path più veloce (Video in Inglese)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (Video in Inglese)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (Video in Inglese)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Velocizzare Dijkstra (Video in Inglese)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Algoritmi per Grafi I - Ordinamento Topologico, Alberi Ricoprenti Minimi, Algoritmo di Prim - Lezione 6 (Video in Inglese)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Algoritmi per Grafi II - DFS, BFS, Algoritmo di Kruskal, Mfset (o Struttura Dati Disjoint-Set) - Lezione 7 (Video in Inglese)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Algoritmi per Grafi III: Il Path più Veloce - Lezione 8 (Video in Inglese)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Algoritmi per Grafi IV: Introduzione agli Algoritmi Geometrici - Lezione 9 (Video in Inglese)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: Grafi Pesati (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Algoritmi Greedy: Alberi Ricoprenti Minimi (Video in Inglese)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Componenti Legati Strettamente, Algoritmo di Kosaraju e Algoritmi per Grafi (Video in Inglese)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Corsi di Coursera Completi: + - [ ] [Algorithms on Graphs (Video in Inglese)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Implementazione: + - [ ] DFS con lista di adiacenza (ricorsiva) + - [ ] DFS con lista di adiacenza (iterativa con stack) + - [ ] DFS con matrice di adiacenza (ricorsiva) + - [ ] DFS con matrice di adiacenza (iterativa con stack) + - [ ] BFS con lista di adiacenza + - [ ] BFS con matrice di adiacenza + - [ ] Path più corto da un punto singolo (Dijkstra) + - [ ] Alberi Ricoprenti Minimi + - Algoritmi basati con il DFS (guarda i video di Aduni elencati sopra): + - [ ] controlla il ciclo for (necessario per l'ordinamento topologico, poiché lo controlleremo all'inizio) + - [ ] ordinamento topologico + - [ ] conta i componenti connessi nel grafo + - [ ] lista dei componenti strettamente connessi + - [ ] controlla per i grafi bipartiti + +## Ancora Piu' Teoria + +- ### Ricorsione + - [ ] Stanford, Lezioni sulla ricorsione & backtracking: + - [ ] [Lezione 8 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lezione 9 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lezione 10 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lezione 11 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Quando è appropriato usarla? + - Perché la ricorsione in coda è migliore? + - [ ] [Cos'è la ricorsione in coda e perché fa schifo? (Articolo in Inglese)](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Ricorsione in Coda (Video in Inglese)](https://www.coursera.org/Lezione/programming-languages/tail-recursion-YZic1) - Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) - [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) -- ### Dynamic Programming + Backtracking Cheat-Sheet: [Java (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### Programmazione Dinamica - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) - - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] video: + - [ ] [Skiena: CSE373 2020 - Lezione 19 - Introduction to Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (Video in Inglese)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (continued) (Video in Inglese)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming and Review (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (Video in Inglese)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lezione 11 (Video in Inglese)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lezione 12 (Video in Inglese)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: + [Dynamic Programming (Video in Inglese)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lezione notes: - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [The RNA secondary structure problem (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Running time of the DP algorithm (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Local pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/WnNau/local-pairwise-sequence-alignment) + +- ### Schemi Progettuali + - [ ] [Quick UML review (Video in Inglese)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Learn these patterns: - [ ] strategy - [ ] singleton @@ -1040,64 +1040,64 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Series of video (27 video)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) +- ### Calcolo Combinatorio (n sopra k) & Probabilita' + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (Video in Inglese)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - Course layout: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - Just the video - 41 (each are simple and each are short): + - [ ] [Probability Explained (Video in Inglese)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms +- ### NP, NP-Completo e Algoritmi di Approssimazione - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] [Computational Complexity (Video in Inglese)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [Greedy Algs. II & Intro to NP Completeness (Video in Inglese)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (Video in Inglese)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video in Inglese)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (Video in Inglese)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) - - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [CSE373 2020 - Lezione 23 - NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lezione 24 - Satisfiability (Video in Inglese)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lezione 25 - More NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lezione 26 - NP-Completeness Challenge (Video in Inglese)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (Video in Inglese)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. -- ### How computers process a program +- ### Come i Computer Processano un Programma - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + - [ ] [How CPU executes a program (Video in Inglese)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (Video in Inglese)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (Video in Inglese)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (Video in Inglese)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (Video in Inglese)](https://youtu.be/zltgXvg6r3k) - ### Caches - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (Video in Inglese)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (Video in Inglese)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (Video in Inglese)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] [MIT 6.004 L15: The Memory Hierarchy (Video in Inglese)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (Video in Inglese)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) +- ### Processi e Threads + - [ ] Computer Science 162 - Operating Systems (25 video): + - for processes and threads see video 1-11 + - [Operating Systems and System Programming (Video in Inglese)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Covers: - Processes, Threads, Concurrency issues @@ -1113,16 +1113,16 @@ Graphs can be used to represent many problems in computer science, so this secti - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) - - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - [Paging, segmentation and virtual memory (Video in Inglese)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (Video in Inglese)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - How context switching is initiated by the operating system and underlying hardware? - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [threads in C++ (series - 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - - [ ] concurrency in Python (videos): + - [ ] concurrency in Python (video): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -1137,24 +1137,24 @@ Graphs can be used to represent many problems in computer science, so this secti - what are mock objects - what is integration testing - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [ ] [Agile Software Testing with James Bach (Video in Inglese)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lezione by James Bach on Software Testing (Video in Inglese)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (Video in Inglese)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) +- ### Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe + - [ ] [Sedgewick - Suffix Arrays (Video in Inglese)](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/Lezione/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/Lezione/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/Lezione/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/Lezione/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/Lezione/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Search pattern in text (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/tAfHI/search-pattern-in-text) If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). @@ -1162,31 +1162,31 @@ Graphs can be used to represent many problems in computer science, so this secti - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits to track the path - I read through code, but will not implement - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Sedgewick - Tries (3 video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/Lezione/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] Short course video: + - [ ] [Introduction To Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Stanford Lezione (real world use case) (Video in Inglese)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (Video in Inglese)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Floating Point Numbers +- ### Numeri con Decimali (Floats) - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) -- ### Endianness +- ### Ordine dei Byte (Endianness) - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [ ] [Big Endian Vs Little Endian (Video in Inglese)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (Video in Inglese)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - Very technical talk for kernel devs. Don't worry if most is over your head. - The first half is enough. @@ -1194,32 +1194,32 @@ Graphs can be used to represent many problems in computer science, so this secti - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - Otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [UDP and TCP: Comparison of Transport Protocols (Video in Inglese)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (Video in Inglese)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (Video in Inglese)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (Video in Inglese)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (Video in Inglese)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (Video in Inglese)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (Video in Inglese)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 video) (Video in Inglese)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (Video in Inglese)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [ ] [Java - Sockets - Introduction (Video in Inglese)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (Video in Inglese)](https://www.youtube.com/watch?v=G75vN2mnJeQ) --- -## Final Review +## Revisione Finale - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + This section will have shorter video that you can watch pretty quickly to review most of the important concepts. It's nice if you want a refresher often. -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- [ ] Series of 2-3 minutes short subject video (23 video) + - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (18 video): + - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- @@ -1243,11 +1243,11 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (Video in Inglese)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [ ] [Gayle L McDowell - Cracking The Coding Interview (Video in Inglese)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (Video in Inglese)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] Cracking the Facebook Coding Interview: - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) @@ -1403,24 +1403,24 @@ You're never really done. - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (Video in Inglese)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Transactions Across Datacenters (Video in Inglese)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 video)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] Paxos - [Paxos Agreement - Computerphile (Video in Inglese)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (Video in Inglese)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] [Great overview (Video in Inglese)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) @@ -1428,18 +1428,18 @@ You're never really done. - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (Video in Inglese)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (Video in Inglese)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (Video in Inglese)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(Video in Inglese)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (Video in Inglese)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) @@ -1457,7 +1457,7 @@ You're never really done. - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (Video in Inglese)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: @@ -1497,29 +1497,29 @@ You're never really done. technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [How a Compiler Works in ~1 minute (Video in Inglese)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (Video in Inglese)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (Video in Inglese)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (Video in Inglese)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - Familiarize yourself with a unix-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With vim 01 - Installation, Setup, and The Modes (Video in Inglese)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: + - set of 4 video: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - [Basics Emacs Tutorial (Video in Inglese)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (video): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (Video in Inglese)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) @@ -1538,15 +1538,15 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Information theory (video) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - More about Markov processes: - - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below -- ### Parity & Hamming Code (videos) +- ### Parity & Hamming Code (video) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - Hamming Code: @@ -1555,31 +1555,31 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see videos below - - Make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - Also see video below + - Make sure to watch information theory video first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (Video in Inglese)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see videos below - - Make sure to watch information theory videos first + - Also see video below + - Make sure to watch information theory video first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - Make sure to watch information theory videos first - - Computerphile (videos): + - Make sure to watch information theory video first + - Computerphile (video): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [Compressor Head video](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [MIT (23 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) @@ -1594,13 +1594,13 @@ You're never really done. - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [GC in Python (Video in Inglese)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (Video in Inglese)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (Video in Inglese)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) @@ -1608,7 +1608,7 @@ You're never really done. - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 for Java Developers (Video in Inglese)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) @@ -1626,19 +1626,19 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A* Pathfinding (E01: algorithm explanation) (Video in Inglese)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [What is the Fourier Transform? (Video in Inglese)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (Video in Inglese)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Bloom Filters (Video in Inglese)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (Video in Inglese)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1651,11 +1651,11 @@ You're never really done. - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (Video in Inglese)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lezione Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/Lezione-notes/MIT6_046JS12_lec15.pdf) - ### Augmented Data Structures - - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [CS 61B Lezione 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - Know at least one type of balanced binary tree (and know how it's implemented): @@ -1678,18 +1678,18 @@ You're never really done. balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [MIT AVL Trees / AVL Sort (Video in Inglese)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/Qq5E0/avl-trees) + - [AVL Tree Implementation (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/Lezione/22BgE/split-and-merge) - **Splay trees** - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, networking and file system code) etc - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: + - [CS 61B: Splay Trees (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lezione: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) @@ -1703,8 +1703,8 @@ You're never really done. the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Aduni - Algorithms - Lezione 4 (link jumps to starting point) (Video in Inglese)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lezione 5 (Video in Inglese)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) @@ -1712,9 +1712,9 @@ You're never really done. - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23-Tree Intuition and Definition (Video in Inglese)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [2-3 Trees (student recitation) (Video in Inglese)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: @@ -1722,9 +1722,9 @@ You're never really done. operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lezione 26: Balanced Search Trees (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (Video in Inglese)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (Video in Inglese)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) @@ -1741,10 +1741,10 @@ You're never really done. (or perhaps to a cylinder-head-sector) address - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [Introduction to B-Trees (Video in Inglese)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (Video in Inglese)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (Video in Inglese)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (Video in Inglese)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) @@ -1752,62 +1752,62 @@ You're never really done. - ### k-D Trees - Great for finding number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [kNN K-d tree algorithm (Video in Inglese)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Randomization: Skip Lists (Video in Inglese)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (Video in Inglese)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (Video in Inglese)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (Video in Inglese)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 video)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (Video in Inglese)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (Video in Inglese)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Data Structures: Treaps explained (Video in Inglese)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Linear Programming (video) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) - - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) +- ### Geometry, Convex hull (video) + - [Graph Alg. IV: Intro to geometric algorithms - Lezione 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lezione 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics by Shai Simonson (19 video)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - ### Machine Learning - Why ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Large-Scale Deep Learning for Intelligent Computer Systems (Video in Inglese)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Google's Cloud Machine learning tools (Video in Inglese)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (Video in Inglese)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (Video in Inglese)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Courses: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [video only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see video 12-18 for a review of linear algebra (14 and 15 are duplicates) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) @@ -1828,7 +1828,7 @@ You're never really done. You want to get hired in this century, right? - **SOLID** - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (Video in Inglese)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) @@ -1836,7 +1836,7 @@ You're never really done. - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [Interface Segregation Principle in 5 minutes (Video in Inglese)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) @@ -1844,14 +1844,14 @@ You're never really done. - **Union-Find** - - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- **More Dynamic Programming** (videos) + - [Overview](https://www.coursera.org/learn/data-structures/Lezione/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/Lezione/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/Lezione/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/Lezione/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/Lezione/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/Lezione/GQQLN/analysis-optional) + +- **More Dynamic Programming** (video) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) @@ -1860,11 +1860,11 @@ You're never really done. - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Advanced Graph Processing** (video) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (video): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1874,20 +1874,20 @@ You're never really done. - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- [Simonson: Approximation Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **String Matching** - - Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - Rabin-Karp (video): + - [Rabin Karps Algorithm](https://www.coursera.org/Lezione/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/Lezione/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/Lezione/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - Knuth-Morris-Pratt (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - nice explanation of tries @@ -1895,15 +1895,15 @@ You're never really done. - **Sorting** - - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Stanford Lezioni on sorting: + - [Lezione 15 | Programming Abstractions (Video in Inglese)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lezione 16 | Programming Abstractions (Video in Inglese)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) - - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + - [Algorithms - Sorting - Lezione 2 (Video in Inglese)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lezione 3 (Video in Inglese)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena Lezioni on sorting: + - [CSE373 2020 - Mergesort/Quicksort (Video in Inglese)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (Video in Inglese)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) ## Video Series @@ -1911,59 +1911,59 @@ Sit back and enjoy. - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 video)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 video)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) +- [Skiena Lezioni from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 video)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 video)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 video)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [MIT 6.004: Computation Structures (49 video)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lezioni (39 video)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 video)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 video)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 video)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 video)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 video)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 video)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 video)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 video)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 video)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 video)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67 video)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Computer Science Courses - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Directory of CS Courses (many with online Lezioni)](https://github.com/prakhar1989/awesome-courses) ## Algorithms implementation From afbb02756755a3550627627563929bbab416e55d Mon Sep 17 00:00:00 2001 From: ARTH PRAJAPATI <76396335+arth2002@users.noreply.github.com> Date: Wed, 18 May 2022 01:08:41 +0530 Subject: [PATCH 444/857] adding one video link related to recursion In this video, recursion is explained with 5 example which goes from easy to hard. this video really helps to visualize recursion --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c8daa731b9..9490817ded 100644 --- a/README.md +++ b/README.md @@ -977,6 +977,7 @@ Graphs can be used to represent many problems in computer science, so this secti - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) From 5ef358ea7381c102c0fa5cedb99743ce8f429222 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Wed, 18 May 2022 10:19:56 +0200 Subject: [PATCH 445/857] Update README-it.md --- translations/README-it.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 0e37faff09..0e1f57e19b 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -994,9 +994,9 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe Backtracking Cheat-Sheet: [Java (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) [Python (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Programmazione Dinamica - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a - problem as being a candidate for dynamic programming. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. + - Probabilmente non vedrai problemi di programmazione dinamica durante il tuo colloquio, ma è importante sapere classificare un problema come tale. + - Questo argomento può essere complesso, dato che ogni soluzione per problemi di programmazione dinamica (DP) va realizata tramite ricorsione + e questo potrebbe ingannare. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] video: - [ ] [Skiena: CSE373 2020 - Lezione 19 - Introduction to Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) @@ -1021,11 +1021,11 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] [Local pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/WnNau/local-pairwise-sequence-alignment) - ### Schemi Progettuali - - [ ] [Quick UML review (Video in Inglese)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [Revisione veloce di UML (Video in Inglese)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Learn these patterns: - - [ ] strategy + - [ ] strategia - [ ] singleton - - [ ] adapter + - [ ] adattatore - [ ] prototype - [ ] decorator - [ ] visitor From b70ec933e6f01cfe628e6fca24e24e2433a89f68 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Fri, 20 May 2022 13:27:09 +0200 Subject: [PATCH 446/857] Update README-it.md --- translations/README-it.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 0e1f57e19b..734145b936 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1050,10 +1050,10 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] [Make School: Probability (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [Make School: More Probability and Markov Chains (Video in Inglese)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Corso: + - [ ] [Teoria della Probabilità Basica](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - Just the video - 41 (each are simple and each are short): - - [ ] [Probability Explained (Video in Inglese)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [Spiegazione della Probabilità (Video in Inglese)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Completo e Algoritmi di Approssimazione - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, From 3c55b0d112def42fd495d16acffd9398dd72a4fd Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Mon, 23 May 2022 08:52:36 +0200 Subject: [PATCH 447/857] Update README-it.md + Fixed Links --- translations/README-it.md | 196 +++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index 734145b936..ba3911a7ab 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -614,9 +614,9 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Arrays - [ ] Riguardo gli Arrays: - - [Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/arrays-OsBSF) + - [Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - [UC Berkeley CS61B - Arrays Lineari e Multi-Dimensionali (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Comincia il video da 15m 32s) - - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/dynamic-arrays-EwbnV) + - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Matrici Irregolari o Jagged Arrays (Video in Inglese)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implementare un vettore (array mutabile con grandezza automatica): - [ ] Programma usando arrays, puntatori e l'aritmetica dei puntatori per raggiungere un index, piuttosto che usare l'indexing. @@ -646,14 +646,14 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Linked Lists - [ ] Descrizione: - - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/singly-linked-lists-kHhgK) + - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [ ] [CS 61B - Linked Lists 1 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (Video in Inglese)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - non il video intero, ma solo nozioni sulla struttura del nodo e l'allocazione della memoria - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Perché dovresti evitare le Linked Lists (Video in Inglese)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Ti aiuto un po': hai bisogno della conoscenza riguardo puntatori di puntatori: (per quando passi un puntatore ad una funzione che potrebbe cambiare l'indirizzo a cui il puntatore punta) @@ -676,15 +676,15 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] reverse() - reversa la lista - [ ] remove_value(value) - rimuove il primo elemento nella lista avente il valore dato - [ ] Liste Linkate Doppiamente - - [Descrizione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/doubly-linked-lists-jpGKD) + - [Descrizione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - Non c'è bisogno di implementarle - ### Stack - - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/stacks-UdKzQ) + - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] Non saranno implementati. Esercitarsi con l'array è quasi banale. - ### Queue - - [ ] [Queue (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/queues-EShpq) + - [ ] [Queue (Video in Inglese)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Buffer Circolare/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] Implementazione usando le linked list, con puntatore alla coda: - enqueue(value) - aggiunge un valore alla posizione della coda @@ -713,12 +713,12 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [(Avanzato) L'hashing perfetto (Video in Inglese)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Corsi Online: - - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Strutture Dati (Video in Inglese)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/phone-book-problem-NYZZP) + - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] hash tables distribuite: - - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/distributed-hash-tables-tvH8H) + - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - [ ] Implementazione con gli array usando il sondaggio (probing) lineare - hash(k, m) - m è la grandezza dell'hash table @@ -768,7 +768,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di ## Alberi (Trees) - ### Alberi - Appunti & Background - - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/trees-95qda) + - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/lecture/data-structures/trees-95qda) - costruzione basica di un albero - traversale - algoritmi per la manipolazione @@ -790,7 +790,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Alberi Binari di Ricerca: BSTs - [ ] [Review Alberi Binari di Ricerca (Video in Inglese)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/E7cXP/introduction) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (Video in Inglese)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Alberi Binari di Ricerca - Implementazione in C/C++ (Video in Inglese)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) @@ -819,16 +819,16 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Heap / Coda di Priorita' / Heap Binario - visualizzato come un albero, ma è lineare nell'allocazione (array o linked list) - [ ] [Heap (Articolo in Inglese)](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/introduction-2OpTs) - - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/z3l9N/naive-implementations) - - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/GRV2q/binary-trees) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Osservazione sull'Altezza Degli Alberi (Video in Inglese)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/0g1dl/basic-operations) - - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/gl5Ni/complete-binary-trees) - - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/HxQo9/pseudocode) + - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - [ ] [Ordinamento Heap - consigli per iniziare (Video in Inglese)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/heap-sort-hSzMO) - - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/building-a-heap-dwrOS) + - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps e Ordinamento Heap (Video in Inglese)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lezione 24: Code di Priorità (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Costruire un Heap (max-heap) (Video in Inglese)](https://www.youtube.com/watch?v=MiyLo8adrWw) @@ -861,17 +861,17 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - Per l'heapsort, leggi la struttura degli Heap sopra. Heap sort non è stabile, ma funziona bene - [ ] [Sedgewick - Mergesort (5 video, in Inglese)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/Lezione/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/Lezione/PWNEl/bottom-up-mergesort) - - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/Lezione/algorithms-part1/sorting-complexity-xAltF) - - [ ] [4. Comparatori](https://www.coursera.org/Lezione/algorithms-part1/comparators-9FYhS) - - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/Lezione/pvvLZ/stability) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparatori](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/Lezione/vjvnC/quicksort) - - [ ] [2. Selezione](https://www.coursera.org/Lezione/algorithms-part1/selection-UQxFT) - - [ ] [3. Chiavi Duplicate](https://www.coursera.org/Lezione/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/Lezione/algorithms-part1/system-sorts-QBNZ7) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selezione](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Chiavi Duplicate](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - [ ] [CS 61B Lezione 29: Sorting I (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) @@ -904,12 +904,12 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 video)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/Lezione/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/Lezione/algorithms-part2/key-indexed-counting-2pi1Z) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/c1U7L/lsd-radix-sort) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/Lezione/algorithms-part2/3-way-radix-quicksort-crkd5) - - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [Radix Sort (Video in Inglese)](https://www.youtube.com/watch?v=xhr26ia4k38) - [ ] [Radix Sort, Counting Sort (linear time given constraints) (Video in Inglese)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -989,7 +989,7 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - Quando è appropriato usarla? - Perché la ricorsione in coda è migliore? - [ ] [Cos'è la ricorsione in coda e perché fa schifo? (Articolo in Inglese)](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Ricorsione in Coda (Video in Inglese)](https://www.coursera.org/Lezione/programming-languages/tail-recursion-YZic1) + - [ ] [Ricorsione in Coda (Video in Inglese)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) Backtracking Cheat-Sheet: [Java (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) [Python (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) @@ -997,40 +997,40 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - Probabilmente non vedrai problemi di programmazione dinamica durante il tuo colloquio, ma è importante sapere classificare un problema come tale. - Questo argomento può essere complesso, dato che ogni soluzione per problemi di programmazione dinamica (DP) va realizata tramite ricorsione e questo potrebbe ingannare. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] video: - - [ ] [Skiena: CSE373 2020 - Lezione 19 - Introduction to Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) - - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (Video in Inglese)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (continued) (Video in Inglese)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming and Review (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (Video in Inglese)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lezione 11 (Video in Inglese)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lezione 12 (Video in Inglese)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (Video in Inglese)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lezione notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - Consiglio di guardare molti esempi riguardo i problemi DP fino a che non comprenderai il meccanismo. + - [ ] Video: + - [ ] [Skiena: CSE373 2020 - Lezione 19 - Introduzione alla Programmazione Dinamica (Video in Inglese)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Modifica della Distanza (Video in Inglese)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Modifica della Distanza (parte 2) (Video in Inglese)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Programmazione Dinamica (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Revisione Programmazione Dinamica (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Programmazione Dinamica 0 (comincia a 59:18) (Video in Inglese)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Programmazione Dinamica I - Lezione 11 (Video in Inglese)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Programmazione Dinamica II - Lezione 12 (Video in Inglese)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Lista di problemi DP individuali (ognuno di quelli presentati è breve): + [Programmazione Dinamica (Video in Inglese)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Appunti sulle lezioni di Yale: + - [ ] [Programmazione Dinamica](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) - - [ ] [Illustrating the DP algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - - [ ] [Running time of the DP algorithm (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - - [ ] [Local pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/WnNau/local-pairwise-sequence-alignment) + - [ ] [Il problema della struttura secondaria dell'RNA (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [Un algoritmo di Programmazione Dinamica (Video in Inglese)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrare l'algoritmo di DP (Video in Inglese)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Tempo di esecuzioone di un algoritmo di DP (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. implementazione della ricorsione (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Pairwise Sequence Alignment Globale (Video in Inglese)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Pairwise Sequence Alignment Locale (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Schemi Progettuali - [ ] [Revisione veloce di UML (Video in Inglese)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategia + - [ ] Impara questi pattern: + - [ ] strategy - [ ] singleton - - [ ] adattatore - - [ ] prototype + - [ ] adapter + - [ ] prototipo - [ ] decorator - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade + - [ ] factory, factory astratto + - [ ] façade - [ ] observer - [ ] proxy - [ ] delegate @@ -1040,13 +1040,13 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Series of video (27 video)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Serie di video (27 video in Inglese)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Libro: Prima i Design Patterns (Libro in Inglese)](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - So che il libro canonico sarebbe "Design Patterns: Elements of Reusable Object-Oriented Software", ma questo proposto è migliore per i nuovi programmatori OO. + - [Handy reference: 101 Design Pattern & Consigli per gli Sviluppatori](https://sourcemaking.com/design-patterns-and-tips) - ### Calcolo Combinatorio (n sopra k) & Probabilita' - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Conoscenze di Matematica: How to find Factorial, Permutation and Combination (Choose) (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [Make School: Probability (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [Make School: More Probability and Markov Chains (Video in Inglese)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: @@ -1147,14 +1147,14 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe - - [ ] [Sedgewick - Suffix Arrays (Video in Inglese)](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) + - [ ] [Sedgewick - Suffix Arrays (Video in Inglese)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/Lezione/algorithms-part2/introduction-to-substring-search-n3ZpG) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/Lezione/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/Lezione/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/Lezione/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/Lezione/algorithms-part2/rabin-karp-3KiqT) - - [ ] [Search pattern in text (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/tAfHI/search-pattern-in-text) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Search pattern in text (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). @@ -1163,14 +1163,14 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe to track the path - I read through code, but will not implement - [ ] [Sedgewick - Tries (3 video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/Lezione/jwNmV/character-based-operations) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] Short course video: - - [ ] [Introduction To Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/DFvd3/core-implementing-a-trie) + - [ ] [Introduction To Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - [ ] [Stanford Lezione (real world use case) (Video in Inglese)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) @@ -1541,9 +1541,9 @@ You're never really done. - ### Information theory (video) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - More about Markov processes: - - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/waxgx/core-markov-text-generation) - - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/gZhiC/core-implementing-markov-text-generation) - - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/EUjrq/project-markov-text-generation-walk-through) + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below - ### Parity & Hamming Code (video) @@ -1679,9 +1679,9 @@ You're never really done. attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - [MIT AVL Trees / AVL Sort (Video in Inglese)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/Qq5E0/avl-trees) - - [AVL Tree Implementation (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/PKEBC/avl-tree-implementation) - - [Split And Merge](https://www.coursera.org/learn/data-structures/Lezione/22BgE/split-and-merge) + - [AVL Trees (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - **Splay trees** - In practice: @@ -1844,12 +1844,12 @@ You're never really done. - **Union-Find** - - [Overview](https://www.coursera.org/learn/data-structures/Lezione/JssSY/overview) - - [Naive Implementation](https://www.coursera.org/learn/data-structures/Lezione/EM5D0/naive-implementations) - - [Trees](https://www.coursera.org/learn/data-structures/Lezione/Mxu0w/trees) - - [Union By Rank](https://www.coursera.org/learn/data-structures/Lezione/qb4c2/union-by-rank) - - [Path Compression](https://www.coursera.org/learn/data-structures/Lezione/Q9CVI/path-compression) - - [Analysis Options](https://www.coursera.org/learn/data-structures/Lezione/GQQLN/analysis-optional) + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - **More Dynamic Programming** (video) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) @@ -1878,9 +1878,9 @@ You're never really done. - **String Matching** - Rabin-Karp (video): - - [Rabin Karps Algorithm](https://www.coursera.org/Lezione/data-structures/rabin-karps-algorithm-c0Qkw) - - [Precomputing](https://www.coursera.org/learn/data-structures/Lezione/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/Lezione/h4ZLc/optimization-implementation-and-analysis) + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - Knuth-Morris-Pratt (KMP): From e8536ff6e0904f024acaacecf62c60a8e47efb3c Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 24 May 2022 08:37:46 +0200 Subject: [PATCH 448/857] Updated README-it.md Translated To Line 1080 --- translations/README-it.md | 42 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index ba3911a7ab..3a438a2c2d 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1046,36 +1046,36 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [Handy reference: 101 Design Pattern & Consigli per gli Sviluppatori](https://sourcemaking.com/design-patterns-and-tips) - ### Calcolo Combinatorio (n sopra k) & Probabilita' - - [ ] [Conoscenze di Matematica: How to find Factorial, Permutation and Combination (Choose) (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (Video in Inglese)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] [Conoscenze di Matematica: Come trovare il Fattoriale, Permutazione e Combinazione (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probabilità (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: Ancora Probabilità e Processi Stocastici Markoviani (Video in Inglese)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - Corso: - [ ] [Teoria della Probabilità Basica](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the video - 41 (each are simple and each are short): + - Solo il Video - 41 (sono tutti semplici e brevi): - [ ] [Spiegazione della Probabilità (Video in Inglese)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Completo e Algoritmi di Approssimazione - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. + - Impara le classi più famose dei problemi NP-Completi, come il problema del commesso viaggiatore e il problema dello zaino, + e impara a riconoscere un problema NP quando ti viene proposto durante il colloquio. + - Capisci cosa sia la NP-Completezza significa. - [ ] [Computational Complexity (Video in Inglese)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (Video in Inglese)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (Video in Inglese)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video in Inglese)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (Video in Inglese)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [Greedy Algs. II & Introduzione alla NP-Completezza (Video in Inglese)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP-Completezza II & Reductions (Video in Inglese)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-Completezza III (Video in Inglese)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-Completezza IV (Video in Inglese)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2020 - Lezione 23 - NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) - - [ ] [CSE373 2020 - Lezione 24 - Satisfiability (Video in Inglese)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - - [ ] [CSE373 2020 - Lezione 25 - More NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - - [ ] [CSE373 2020 - Lezione 26 - NP-Completeness Challenge (Video in Inglese)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (Video in Inglese)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. + - [ ] [CSE373 2020 - Lezione 23 - NP-Completezza (Video in Inglese)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lezione 24 - Soddisfacibilità (Video in Inglese)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lezione 25 - Ancora NP-Completezza (Video in Inglese)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lezione 26 - NP-Completezza Challenge (Video in Inglese)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complessità: P, NP, NP-Completezza, Riduzioni (Video in Inglese)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complessità: Algoritmi di Approssimazione (Video in Inglese)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complessità: Algoritmi con Parametri Fissi (Video in Inglese)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig discute riguardo una quasi perfetta soluzione per il problema del commesso viaggiatore: + - [Jupyter Notebook (Articolo in Inglese)](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pagine da 1048 a 1140 nel CLRS (se lo hai). - ### Come i Computer Processano un Programma From ccb8c314aefb7eb7777da92a5caa73b13bc7d2c0 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 24 May 2022 08:50:08 +0200 Subject: [PATCH 449/857] Merged Updates and Updated README-it.md --- translations/README-it.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/translations/README-it.md b/translations/README-it.md index 3a438a2c2d..5634913654 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -990,7 +990,8 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - Perché la ricorsione in coda è migliore? - [ ] [Cos'è la ricorsione in coda e perché fa schifo? (Articolo in Inglese)](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Ricorsione in Coda (Video in Inglese)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - + - [ ] [5 Semplici Step per risolvere Qualsiasi Problema di Ricorsione (Video in Inglese)](https://youtu.be/ngCos392W4w) + Backtracking Cheat-Sheet: [Java (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) [Python (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Programmazione Dinamica From ad48957d7e79518aff875911193690c55be6fb3a Mon Sep 17 00:00:00 2001 From: Simon Tran <98559988+simontrann@users.noreply.github.com> Date: Sun, 29 May 2022 01:28:22 -0400 Subject: [PATCH 450/857] Fix "Chois" typo to "Choisis" --- translations/README-fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 3e788d9c62..93effb77ed 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -311,7 +311,7 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo ## Choisis une langue pour l'Entrevue -Je l'ai écrit cet article à propos de cela : [Important: Chois une langue pour l'entrevue Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) +Je l'ai écrit cet article à propos de cela : [Important: Choisis une langue pour l'entrevue Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) Tu peux choisir une langue avec laquelle vos êtes comftortable pour fair la partie de codage, mais pour Google, celles-ci sont les bons choix: From 49faa9fd103a4de94f22bcb944cc7c3d3f76a8e2 Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Sun, 29 May 2022 14:23:58 +0530 Subject: [PATCH 451/857] Added Core Java Cheatsheet --- extras/cheat sheets/Core Java Cheat Sheet.pdf | Bin 0 -> 294622 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/cheat sheets/Core Java Cheat Sheet.pdf diff --git a/extras/cheat sheets/Core Java Cheat Sheet.pdf b/extras/cheat sheets/Core Java Cheat Sheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8ed71c5b6b7ccb0a080f07205f56e48383862b20 GIT binary patch literal 294622 zcmc$^b9AL&*CiU875l`tE4FR(#I|i46|0g|Y#SBZww+X1NjkspeZRi_b>DGs|JD7B z@r;eJ&c>Q^uCdoX54obKI6X51I~;k>Q{e|3Hy3~jU~g;%$IA;~l(n=28aY{d0ZjqS zUo8L&HyZ~F3xH7)pabCIWCpOZF$44fj0yl|rmtQx00+~T0f12+z{U<>RQ)n%<>X)o z@bkj~?M(j}6YziTf#c@>A2y=u=>P;UYAOTGzP16hGk387aIgXx#Vu`IfKFefjgbpb z6lh{^`epU6QqjoC)*0}R6GZH7Ty5=~0c-$9MJJ%CrHPBZ6M&iJYg+(DjW0(q16aP^ zFE>cpnF2k&I=)=U#`LcaGkX9tGxOI%lmU#&_VzAcj$-;(OXbU}0A^OM{}|NmU#{Z# zpWVYKB?{2t<=|j9F*4?2;$&my;ACeqG6FJjv#@h;v6vZ|FtHe$^8f!^==}qNvx^hZ z$QI5c+r-#($K24^kPDV9qezfW1<;2LN75PqfgCY%0_KPX7TF3b7*vi=RtG`$v#)oM zstu$#HqcQJ7KEMxYW*K9|2@+Gc~t*r2mRk@!~F}x|I~=0kvY)$iw~Ut!u4NF6ESiz zvavV+AE?jF^bZaG^GE-$#8UyVa(}7k-~43ZVEV7185({;W+-oNXl7`r_Z!d)0%^zr zkHW%K%NrQw7$7AM8TOmj6v<(*HrKFclw{y8eIM7FSx4ZUe`&PRs&ZbdhN+>R!F;3F zYVgEbuWlA-s|(mnQ#PQtnXmq%zVSjbi$Oy ziRvtIqZ>dvVUMI>&#vS9G#BQ31Mq zt%va|?0&^apohy>;IRGTknq1tk$;y`U(5Vw3KbV8R}+_it=IW$AjW?&>>t|w7kd3O z`Tr-q{>>{^CMK@`Laa@_&0hx`-?{}9W|!e_PYhV-0-e2_j=t~q^7q=Ypo|FDUnA45 z*3&n=H&wI)rxWlc=hSsdXv%+e)1)rkk?d_FvwVy{o!wmv=zsV~DP*e-1o!y)zAOtc ze8wv9*oR-sf5sZ5rawH5r;k4i`1|_4Jct=|f7qW8OS&iaw=WFYyXRutr(zSm<9|xu z)vG+dpsq;pOzU;|cKUd6Vp)DSe|uJF_4)fqg4Gr|{+o!gtK;v^!r{I^x<4H8WPE!3 zwt?R(S4J87&t&n|m1AMuli!issOF|jqYduJ(`u8MaoKHhKZPUmRP$Dq>qIl_Am80xNu_i*Cro~z06;{?fM%{Ljf|EMw z(m%enz89OYouDqgn@(%n|Z z=n~4EeG&7t1Y7io(+D@YK)VM%Hb&9^IVNd=4UJ);!kKsbUtdO9~CX-#F=`Qi~O+gx$#~#KuhkPRf@GBu9Wr~R>PIr1S%B^iY6cr>Z5tF4H8ouS0ZwJyH2c@ zALT+ZIm5Wgs93+Cp~Ssz57M54*jDNa=u(NKi=8=VZ)S-mWUuWKJ)NNeA4i09P;l~= zC8Mw!fG5FghBO~Xz6B`?6)`UT-n%gwyb+fg^y60ni6beS8dwBP1~?L0AvJndfo5EE z_pikM3sY|86wG`SsyfxCyQr9CU;0G1lT6-}IkR<;h?1266dc6I!rw~Iw@zbBaRu}3 zvXB~DLX9@^we45cTY~h*gC-=k`g$E~+hCAMU#FE~Y z#C%z{84v)=K^5Jd5frFo#q(OqAXJ7Rl8Z*((VilFt{Yc2-6aNSzeiPGXt;#m#31^( zT;}a65r1JUv69Gkk}RA029QXY6hT<}i~FX)lxaId2jlu$%OVrpypd+glrTlihP*C6 z#rvOg6H~5S7{exhyi+JzRcn@$^u#Vqi&y(`HZmGgVs?NP~W70XVaD+oUmR*ULsfv40}W> z@of!=%A*k63hmH94n!PI4-h@%iEgvYfVW7i7OF*KKy(vEF>8`0plQ&CAuduwSSI6) zRGDr>4dMJz;;{~NmmCE-^5d|LEocg%h{FN7x!0w{c<@GjI}djPE_Mc_L-ZegBSdgt zd+|XCwpc%G+(7d0v>+JR71k1Bg0;NowvTK=2~Q;@kf{LE zur)xSe596g>AymquohB;gGq?N0+z-hCgfj#_ryzTRtt83BSCb8>)^+TJUw|e?aUKf zH6}g8&pbu4JG(9qqQy-Snb}LFzOaXi1AwY}Od^#T%4gLZiPgb-xV4razB$fwugCYD zD3X*m-28xlcWJKTbCjmf)~9hL5~QysybN4xro}?v!nv_)w^T!frd^z2E{6`8yOCWj zaCPEvqwTCcJoBiPx2vE{bzB>+6LtfI`aT|L^%EZ1@ot!mWAQJdfiw&JMHOG0bBy$O z+gpYOp&?BwOHt#z`t^F{tuwQOO64X4E>^{^3be&utKsF_0J1p*)n8SBPjJY7#hgTf z2_GU6_4;DVl?6h0a{XRBG9dgOxI&O2E;;kdncc(aH zUO^;cM2JizNP6*M;Ll)&<%!^YU`2&b;_oT41f-YR2AP==-V88*zpPljM{ri#Dotw* zbYxEF-ABg8jg1sUPI^h625X%c zRvd9&=L=Fq6wlpA!_vLAzCQI)e!G~vjV(8f5+`@(Nd?=gZCJ}nt|hj)xtHA5!}9cR ze&~22(-6$)eRA{i1^XnW8Z#hufUU65B4hhzLS-G1^~oVM4@yWL>FDwxWzL#>GDzNc z7wCL(MS|bpOyXVKMf2 zeNXCC2F>U?tL;ju*IO)+_%42QOj_#WnM+F+T8w%2jtga5m!)Du8^MC^QSWO67X6U3 z9Z$ov=jJQbr-9W8ZO3^%!mgWS36dQa2!;D-b|QUTcu*xED0>t9_hyXPTta>IyPQ}% zME*ZvL3vxe5^4dt_0zH{ruRg?m3?IzY4ypGa&i^kymW}s-#D=b|r#<@8WKzRmz zj^ufy`}p4EdFUw2R%c+>xh`n2so0BSbcb$Bexr^YStUUhxFa6Ie1XBfzFqBxt+$INQTwgmI50H#7uH9X;-!uvLDW8j z-Zqb?)RW7}!#db``1mz~=o|;G!2DbESkHO_;maav%SW1y|M<3#^#&luWP~TwAe<5L zI`qLCdfuACSNSEJ#zuAERq9G>>K)0TJh%83!8gsIJnw*b+h=I|(OA7JV_jd}#IePs zuA**by>4Yu^WswT!iw(Ejn0i7)0-!ajku|EK3RL~PqO2#XR5loE~DOSOZ!Lyzq5MR z+6QXv^Qbhdxp5MPydphlkLhNzt@QeLDU9LA1v6Q@@#*}YA&4c&07pX?XLo zMjnrUy;G`~B)A}2xI%cfj$E@_j}ZqzMXomKY6!B{b3G1xg{3 z^L3YF%-*@&lSK&8PpVby1m*zWIai2#OggH#A)ek=|CZBbj+#w#Z8Ml1#hI=lPm9x< zK=JIm+cdgf7Bm~!xD0~@zot1Bg10ilo>%qyI-#GDO`vk-_J%7P-8m7ijZ3Jgq_AKS z^;0Z)`1+b5GkzkHoJ@J`?_tW$JX zhM3>k=TC^GJNb3M8-WVy9xi3fuPSl3Vo|CsxjYu5v(8(Ec&0EEX$wIM&C|iU`J*sr zf3EPE{&*C)4Q|JcvO4?F>dMe_3t?p>)h)r%o%13%^x!90#Wu9p>$c>9tdG$E+ z<^XCqqAQnTqAB%_xF<=N0mnB)1Y@Rm2ZUhQ;gPBLeEuLmv_eTiVKy+^;+SS)3}w(? ziMWcvYysNEkPD+_65j<;PeBm_mJ?8MK;%YXEW{}U;dj(b#mofp>Os~(KLwFYgFDf< z0oTIvf-NzQBakOTS0~q0`r?dH;12~Jy$}bG58xkR-x86TV97zCK>Wo=dh+GVNDVp0KqiDTXUC~DhIvyUGvez( z;T7c{%+ZtTP!7S|(&}IiLAS#0K<0q3I;t!5&5U3Iz&3 zSdawyK%oouXVuwYQbCc@9AVDDH3MJ8{RLCY@ExcOX>r3|h5Wd1L9oTaK_y1Gz9B~W z#s8Wy>{YUW*|F%op21dy<-$aS#19VxjguHC+Af4;kry@Um9h|hz+=Nv6Y`6SQJJOc zwX|T%&WjrcnM$a`jg9q-wVL7T&9neBtcq!v89WhV!;=Hc4yFL#g7g5L6jK2?F0c%^ zpLOZ&0O|&qfiQ?J20Z2euz=SlGa>i|sT*Skx)p6E(IYG~gWp@i!XV-<)+0JTtJ{lV zLAWE$Ms&mP;{E`y8jlH5EeyXqVb#kx^L|3u%Wi?Xquq#I3wq=H0Md@-K%fowjMd2I zMaW0B@70Ll0Im)CjG_&z!3mZtfn4+k!ddWoVt#_!2zR5@hTMj zj)CwxC~^V8Eb{F5iB@mVms==j8L!pEOGDC%=qm53EPhM ziSL6(FY=60FYAfqgWf|y3{gQ*fcb1i!0`-oZ#?iX#5>}R$^-6>`N^LXY8UDjE= z1-tnXV|!9@l0_Ay4N`Ohw)466@Of;4jh2LmD23?-4!6d&Q^Wd{2_?tH!7Cd{2t)YdYuZ10yi&qr_&ur*rhD|1BfO zyYuQ#e}?sk=}&mu*VWH>o7cBb>-o>+pP$RC51($iAKPCoG=)!ttdAa!_wDru&JTaX zc~p|SRs^u<2>@Lwou-jjuD+1V1(aK>lM$-0T2aGi#Cbr%jP?8b!-`JwJG46rx1qb! zGyobee;aaAG`}f9oI;0J) zjMzr>6gLHR?wYFyhS|=!l4hlgRTWVkSsl#}`RW+pDe`C}U#nx1-{N<`4;Fh0vaN}% z?Lka;A;deM{ zVe){zaR^nxjq36Om>SxQjK?FS59V*~XFck#;YZMJB5F39iFMW-(2L@SblU*^D1%-o zh3yKCXG&}yN;I}$M$)Fn@R30-TQ(3Pk~b3Y3!T_u)1{Q(I|>fT>Qg}sn&SuG?u_s! zf9h?H@QkI8bpx&GM7Tg{mSYcW0~vV$?G~&POdx=0nDU1DFJfCT0-4H)!i4D0Fwe|Ouyv5;G`)WM zWA)o@Q5urpB-i48v2IZe(4S2pHV@!4l<^{yNC9?vp_ja`-<&mLU28q-kdgb{2i%am zi39>$_6b^HbDiM)BYTEEdwX^&RP$jKbO$BA8Qv#n9x&ViJX5kmF412C|4yxBKv0Yv zu!zZ$vw}-E1z85z65T_dn<~^RSscr6K-sajs7F9gZzKQRr@C=-?wb=pbn?Ts&cDp&Lfnq?78#EjOm;-fg{N;r zx9?XN2l|5&1*yNHd_n-1zP0Ec#gV1E5c?Y82@NOW&Iv9hQaFYE?W4kGFEXc-#huTA zW!=xvn&349pC9R*^cnLR)itW_!vw0?@MiTwtpL_@2u7#Oh|GJ;dcKYlzuVwDqwYrRrFgW?DIcs)xv{2QvSt56GJ!!S5BE$G!O{&flz;9xH(7O zt-FA@*vL z-W*JBE$+?)bQnfTn#VgZM$wFrtF?vT=?j9810x^;Q@{98>syOqtKen9aK;1J91?~ zt%CT654rO;(}GtWR3!_}<^jb^yRSegD&OTdf%5HT3x+EL0>;7dk*WLG*u=>SF<(a7 zk0g9a=?BW^&f8qBmhsct^-9c!Q45qm->bx{l;PlVO>lygydrxV$JVjStW3c_c&;x5 z|bl6_vtW>?60=Jqok7 z*JHvTD+2z$Z~jf)8dm2vpg6`m=)}C^C-UjjG0t0=T#u;eB#$j|rdUc>bq&s2uTppY z<4#a|mJsJwv5=r9QayWAvlVOGV!|zALmt`z`>j#2OuV#5N2+LGJ2ovpQHlnKy}7Q_ zKun4=eOhCcxC_;tV4r9+;;$a=AE6h_1vNie((NWCVu4|v$R((%yDNDC<(_se(V~i= zA9WvfMPV9jEJZY@tO!CLb}i!Te=*@*dHv~`t1+at@g*5m`|Z+dxSjF&;FeehOBq{b)d>zyeV%tdC&l5QklDr*vjGE ztD70yMpmYXr0@jJ7Y^8|$3JzMz+amA{JvO-_057`70H(8S3MK>kL}|kg3e!B!bQ9J zb=3x97c0@?9ghHNQq5J#Uni-g%Qc!%v$U?uH5<=fsYGOLQa>Zo#EBjD6&SVU$kE{O z>i&H0-L<^leVDI)M8r`*n&S)jkVFblxxlAT4ktP%qO86nk5)QOjnLoIzB-VH_hq+Sq#piQ?kzImu)_!y}&%m0|%*5zsX@9B( ze_NSXjt?9XigLwzXXe#wk$zcl!5H~sHaB3fC=i3+ep#FihK&{W<42JM+=>3FRZ9M7 z`y8I&hjHl|vVGg^Vs1?ca_SV)X^G*<*}2U7*4*o_SEb3>_F2E0lNtfRxTK;#i{xs{ zkfq#S4yhG&F0SN_i=w(KLUG6t00pS;skFc0JTKQfSHi{vz9RQil12udA(2j|$wYc@ zMsq`tWBl#r%QX6U2!v5Ji;SmssL^@hj~Xwn9O!kiNwP`%weq#iwQE;A7lV`gKk!E0 z+PcOwIBD4YEc_+TqmfaR@>)O`d<9>`bv9-Q?H*=GbIq|LE+qWDPoc*z$LVjOn zUcHcgsMv=+u^Y5qCx>YH4GT~>ni!K=TISQeT&5hWv=lG)HDC6az`G%JXXPgG3%oyn zMz0Sc(SEqU_1JnVH-{f=5)q#Iw|z?b&N2qcB&;r?8IYIGx@_BeZ#|o6tV7f(o*;%x zzxcfpYa%^!{qlxeD2d#`)Ss0lOp}c;(ZMcOuBFH3hRC%ho*)LyNyAipC-GM7R9;YD zkm%G^T~ZH;B4*SF9~pbV@d+aXL14T4kP790F0lJ>_L6r(vFztrs_-Bw5!g% zNCFc^RY0jxCNfV6)dkfFfqNF7Ku6sh!Y0xvUx@bA;am$A^3ZH8leNLn(O%Qm9wbt7 zbj)0Ft6L6;>cWp^!i*j)9IKQ?Ga2DvlC^6-JpX&ot&lsYflE1gqtgd}$ydpMY63mQV_!bq{7rIwhDeJxLsqCMfa|SzHWMi++dxa99 zD^7CIC`uG>Q%O#Ur<%YDn;;V{6Zt#G2jp~=U|;DckzhFc?aCNvgp~;|3oVFZ?R#*I zIp%&XH6>#QnuF0+9!f84=a9|hRZ4mmnxO;7@aOKDUc7zT_S4=Su*0#;`f!F})6o3e zlHMDbfyZCs)><$I^toj6RFTz!c;CC00qAWX#82BL(x>IAwZ@;1@!I+?Z#5p1`$Y5b zHTxzFgj#&j`XHW_5q`tuA_7B2E-B&m$y*urnU*=0S=)|&!%pYTF$#&b#8*SRmJx+)~GE7*bQCI@4PIAf=xOdazr|A7-P^5<(+R6Fu4jlck`oKZIJ61!}HVR~_ z$oDk;Z83~_d#h(6a_s5Izs_Z>8f(~v`(-6;Ao04cFnGUY;$#2pNG{sLEIsC8%Oqtx zew^fOIo810z9)z0cg$+*&Tc9Zaz@+F@i~pJyUsU5Q}?0D6jJy!WF4I`I@(Ol4eNsl zJJ_zdHK*GFk)@|HUKXSUW1(WA@}OMIS=%HUt@uO>RhYt+n1-jq$?u@bqxmb9c!Ai7 zw=4+vox635PNYqG1y&G`rL7T5M9>k$lmd(bSsJ}&sLcF5A35~};h57h-IK^kgs1K> zpJA>7xz-(Czv}%4WEds(NVojGx+y}7BSg!;F|*KE!m4KB$janPWM!gy>2=1PBmOq441+UvII?*sR_DBld5wYhI%Yc&|rgB zc*w^loUohR8|8|emA;sD>d!eTkd7LT2_Z?ar(nxk)LuC0z_YLH7AlG-&SC}$)N(sX zCs)d%a~$f}DnjZzitr|Rim^z>EjZriQ2Yfk$*ry2FMMg4%+OhBG4IRP%E4^lSw=6u zI_EI+m4E%grgt?aUhcEVE)06VU$~esq(vT0={+QZ5 z9V%ud9xNzmPSk#>9~Y|&OabC16wTY`&iza!v`&=$N*_-0OnH*Qw{?T9l@xG{wPK|i_i#T3+i7h zCif1{`{Wc2GY#p!M1yC-Y!=(V($JTgVF`b5crBpBU#tT2uqQhCOEA-9fyv{FpfyvL zV!qe7L?+Hkc`|{;@E61zs-x4QLvV0acivJZIi0>J4zOxwm>odZ#y?I#hQWEgE}?S@ z=!K)=3r-^ADF~&H!f?bgZt49)f3cKd1fx=lO1sd9woqjB9ZX&rAcTPH0Kz;w{g@$A z%>9~qz#dL$%w)vD+JW6aA+&l4nX0mF^-;`QWs z&LYh~Nd1?_+4h2?bm*GAv}_kWAAz18xZD8!0KvPS3cAXIiL45}3cgyk=K+IXoL9FW zWRFsvkk7ndT=wpCnZOcH4q+OrccZpWmGa$-GfOHqwHUb)#~_{+swhzs(v(*sgqZbB zXScN7Pk@D4D}^LpGzS*aay}DHJ`qBP6q_=h1$$7^SlTR^vbQ-(9~8~Akczy0W`ntU z`eO5J`gB;UXRo7t`Hbo>ThWNx%5NzK*9Gl?JF-Hbx|jVSNSZ>e!h zgY0mqb~xK2;ijbY#Ky2}>I;(kG+w&e=?2Y6k2of2Bx@Ky8S?Z^N$U`%CJ}i=O3Odo z8-HkkPAlV5_`CRL!L2ZiBFxmkV4)7%hgvn5)pk&-h~c1p{lKSborIJdMi+nb$Rqol zjK^qQY_>2)_!qqCkXpV(<@aDH@*}@$kDX7r9vSQ*-7`|_V{N(6dRfr0gS)D*nYiA^ z-pf7VAmcD{F}5;rvxhG-{)muqiFPcMIQYcv3PGRg11laoAs;*V)CH8%NKEFCg$?3k&rcIg7N=&mS4!p&t$#F^rZCkrL->3eKmY*?1-u5B~S*$gpx8L3dXmPLgY8U@< zWp+4BbjhT9J$3OLO|K-zyFGMv9!VagM=KgrN|wT)2Ekd*0;#7p3o^@Ai&qOgRR;c; zd07*g;*gGD&fUZWsg&bD&RI0BwO}tzFwqr>i55ZHKY#O#L?YXvPlBtX+X&iHuA4Od z8;xI@w72K1I>}`)M^g;pA6Gb)USTnV_RCSbiW?d=(F0cG@$|>7RokH-jL11;aJtX~ zLsWgY(2R4*2nyV;+mETBozp*F79G_Cv`7H@6$2B=b$nj~W%KZi5G3NT*l5~9^p0=Z zm{*AtxKadj3#s93%79`i2az>mvg8|Sm>eg^X5#fdP9`W>jz)U&`1ix6CXDPz8g^UtUoo_&Dn@LAWBB7Wt>^YWEoU^ zQ5I4`XVK(nqGwILWJ)>DWzBN*;qNFjU1;LP=4?UDisof7ZR%QM^M5j)Y5DvZqoAre zFz2(YGAia0(IuLe^~HH^30?n(artaEs)5Lqmb zbx`|tC}FV)$Qkye4T%#%!o?cZrl)1AhTW#i0K`)4Kp;qx)n{O^ao{}EAMTbvaa`*1 znYxa}u^-s1NBgGpJ3zoUT=o1F$E!v=*C6mVp3m(bQonmTCUp*zsP24w1^4DJ)vrR( zo(Fry51*SMr1p#gcUO^2vx~FaDi{vjqMpzk(ln}ftaMLfTJMt8yy7SAv}dOhEXYdg z@~errY9<~cwH$AP5FHIwh%dH z>?4*^v%#~>GSV?Mv7IDyw6ERFYSOnacUw$V;~?Ge>e4D31CvYc!n)zGKqhUn|9~(> zxi9ZFzL%>S*4?yLxMl|45Cn@S^B~DtSaqB)%rTPC$8SDOPARP4y;YyG-j`Ee<$luf z2y${a(A_^03E-$;y!`2UUGjEd>;$>?0KUyy=Y{1}+4%YFSL-d5#(-5dIZX#lsmrvR zXixMLp=y#_kg-2yLNrLnHm4cERJj?f_OcF^V_Btc7j=7(5lUqkOPcM7?HCfYyHOYD z*8VKJaIz-4h5O@{lB2jz#1dj0mMaZjOGU`s*`H_5b`)>?SQXd!I5tmYc=i6m{}`WB zu`CgjSTRX-J-EHQOjJ^Y51yY+Ff-0^Adz{}nUZHcRK7&GL>L(T!=9BJNTDBrxd(Yc zS0K)(!m7iw-3+(5zj)zfROeN0*7oSPz8yPMm4AIK=sQx<4U-as0 zsmi7eLw3wjVLC)DPE9#Fy3WxUJdxd)B{%B@1|;Uh3@vcB`)P~our_grVbg9YTsure z-ZrnZp#h2REEe0L_e5IruWy}rnY><7BFC@r1dM=2@nN9RE!Umyv#c?+uKNe{$5Zw= zpNdwmb*bTnF#Dv|27Ta^40^a1j)eu6d&C_kCFUdG5Gik7jVb(Cgm`RYMb>s63*el$%v0`v*Yk856yVz_$*(*J4 zZO=FFKR*WVk4J7x%_lb-O#1q(JOa4BfxF!yG z>pxeDD$2u9T|gFWxbYGsPT|NH$BFd|$b3-8(T#FLHHpD7NQJo%)C>52lozal#pq)q zXmQA*u*?M3funFRrBcf4dPDU?$NZX2w=sWIYljn`s|20}xrId9V6BsCW$O<9pG!XYE$P3H{c&b($A(kX*GWMNcEnrRAPX!V)dAyl_a;n~s` zD8_ZhGIaSt?Q$3vOt#OsWz9M5o^pGWN zQcSA}sf?wJ=*0~Gsc|MTUMDzxB)u0B%e$_|ICVeRwfQN ziWz6&Z|PGfm2?aNoVyo=$oHVH!uG3u-wMsTO%!>9D{2(zbHO!@}R)rE@ zzD7~$_DmFo`ZP>bFp5mUiT%Qy>Ru+hkpRS|-|+7Y9|QtlBgw~(;=TFfHNsUd%+L4T zIS6+S_nUZSAF8=ngdsen4cAYanOsDG(zfs$t|?N3CXM;3@~7dahkun*c~ag%_M{rE z^`cBGxfTEFFVl-rOG4{xWlI*XxjAK(M4l<|D)j4H>;yyP8}MW>TywAN-?SB;Tq~X) zvXiH+pQ-gr=YiN404ac`SOEe!LHlr>AQ&0V`c4P6@(ilLqia;C5vTx_d1*$OkRLd# zjetInUw?g*$eF$t!3%u1t)tMie#sL*;S06`9_q>WMu(l(#l)PAzA^B9ahq{@epOB* zcQwrUZ9@WsB@^+pMS3{7zLdF-`}#7s_;|m`Nzkq+kxAu6Y!+^$3uDSl?3q_BM^_6= zUGTL*zTdo6e7$Uz2Ftm^^o|0*aa@MKjtlt7!=>1B8(Ys;Ykfz=X?<~#8!4?Fu@x~{ z8R4#38|$|!rX9QBIk1_DDs0j6X-EwhQm{s6DoHBBg@i^+z&i`<^l-H(P+tY~{CVst z51n3G!@gY{)=uA;Xxwp!RaarG`2j;F*>LI`S(|+=e_@iwIA&DUnV&FD&lSY2?{YvrwJ-d@ zGMw$1Zn!>SrILddMIDSJ>EL{U@E3U2AHFz$f4dXD)CQ}!3ICnJ`Vl*PubtD%r26om zkE=MISv(ez=X~Ft?p9b6N8*%n+>U^$J{^~PHI{@lkO~0|GwcOcY_jz?*%Bz|aD%mt zg)}7+u@I1#tSuH3N(iQ2UTXUEO59DA^<7IprUou9RpjeC!^as~AU?Hr8dyw3lIq@J zId0eXWpCD?CzP*trX+9gQ7`4Szd3MUuuw&Q`;#}}iL4;L_*?oakXUWhBgC*@ zoPrtkC59s@Wal)a#nS}=MU{Lw@Ss@q#z`^lfX48c^*qVZNw>G6pGLxPqV`-_ha#+I z#ds*^6*Q7n*Ckh zq*<~Cs06HT5^~2PfYb~;K;rbiKokn3NkM6ry8awZO^Aj)pS(>fOs8?sO2vgNpTgy2 z+s0H#=?+oWp2gPoU?DA@BrEH2?=GIxq?4g`oYU(w1}JfThf&#k5a`XYDIb;h+cs~y zk}p8Q#|3JcL(amFsiD2Pa(k|umXj#@uR13U5uSwtKV*9{V0=Lo_c(Ygi;kOaU+GtK znS6Of6sahE0E-6(9KUYqkal65D-{Mi{06+!;i55PNQBy&75#eK93jGTgho)kQ)mtP zC^!PZNbnShIM8SF{S2{#=%&2rAihXq-Q&t|orC2eUb()d3c>F$6S^&PN|X@tRneX3 z$@A`3(E5SnVAm>lU89H@ot#u`$w#p!?r~&^o4L&fvk2{xM;nwK7IZyGw=4Zx5H4yK zD5wwj_jm^4sguxT#G6*i71q>x%aiY&#tH-;OAf%viNfZaKYoS5A z{C)?nGvqLdab_#@p&h+mN>>J)7!M5}b+pgFXAt|7L71!(r{3*!O-p%$`Su8@XMJt- z;W#<_cj;i-!d}@vlVV!jTn1M*pNN~xgBlAkE%_bNXe~9dXB0#q;kS)or8fU~SkVDr z+1fPE?r<#3t=BUj>U0_=aUs^kAbG7b+c>+u1$N2L@SowiQo!WK({?yBY#s?7jTT|r zGFZxxM$h){Vyt;NVp!lB!}mq;JEjJqI-!**-lCmY(VBUn)8K@o=!`{EW;TeH(7eGm zk&K`fgiyJ1MU!@pyl7C8D$aS#phtp@gm!jQ_&wYtmyEJy3QbM1R`Kvzuqjh5BfBo~ zq+nrTg+Z%|h%x}uaa zb~e3%K%_?Ff{8#t;MGg=MQ04#Y=vY*E+~hG_|f++Ty_U~$ZDn3SKAhOvFYac;;x=; zthti6gW1OS7h=6qAMTDC@N8QmW_Wcl9btB()kMPzdPbr*L7iG6JdQn4Ub^|Sks(s% zCuP%{YDq}zelIoGQ^Wch;X-IjH`3%0~@ ztHEhad4_RepbNU?f>d#hcc35B!yw94=+>!=B^^eRx!(v9F44#58a`IgKzlBW-jbI=nHhr-+&F;up}|%mVIFo2IeDu%Qa&8o|p~M`IcwZOQ0Iq z;Q9wDSH8s}42_b%oX+aB*s}CE(xZW5OO?&#dKXCRew)_chs_!~A~@w)9@zghNln33 z3v-L&n_^qyTH#p|UEuF&1HCgMkdOzk`K(IF1&`ZvTphXOiSlg^9kyj-`crT=c^$zU zN61JFDAST4R*#OOQ9MaSkU)(?hIdlAuDKX|tEuZhZ$?M@F70<(kp+gUJ-7L9#F}9o58w_MN&Kx6@5j+qR&_WsN$@JxgnyBl;7t9$eb29D#n5@ZkqP zuy?>uYOl6AYab&bwHH_4>p$D02Z~VL~=aPGegXzHFp-wbMvnXI9wG6To!Zyn|5 zqu0SqwYcsbMQYxuEmn(yH`3sd&4J9ttLfg2(LNzOv_{Akp&JCUfIDV9-?Q|=sq-7j z@%1!}K$M7g?HOYtGO2^}LC(Px(n(I0p#(q{lv=vCi@ZyzYG9c6Y3BL1ztLl91^?Zt zW;PT2w4@7mlpD$mKRuhYx%BlBz1qK#lL4gz=_&e>x{F~^m_llKesi8jkZ*%;l23(O zgHxeLwn_Oj!7aR7>ofMsx~pv7q7$lX)o=#y0k>pU%tyW=iW66~Dy)GvRXuBdw{A6o zQ7Fx#L$78THaFl(iT^^bQod5g^c&j6Wzyw!=eq(8oZhZQ-8?p+*-Q%4feW!9j~4?g zD{|jXmY~JoxPg#HXfFK0xS&r{vI@C6F}4#aCSx9zB_NZvzdCt?n7I$ZoA-kALj6## zfD8hjLSQ~I;OZI3mlV$6t0VPZ*K*wB+D->lygoTB3jT?Fx^w;qa;x1&BriNS#?%S= zt(*CJmeo-z($`GF%3*145zEZMs-y7V4W6Npf~d>GZ9;49zI^8Nmfn3Y!|A z7LOR`7Vi|l0-phoL62f~j%HS4cDcrOY1Q&JBZG`?Qlor_P*2~Ul=On-Vm2}fQ+oc6 zR@e;}H8bdxQ2x$YEvAiZ1%@k19aj22jczO+6EbhPlJwcmttQUYywE8emp2VK6-McI zo)<82d?ut6daEVGxve>xEnM3{QEOyu*d96s`r`)=+A zg{7%i%(Dbo^_P5J{RNFVr$O+^;DdD5l*wYZ8cq(Idy?xRvf#LElTPH{CmgyMj{^7& zBdRV#&1pAcO8V*q|j>tcUci+fr4vDym%7hkvE+Q@-kv z`)FV^D~bzh?1oqZAjvq6j!dCJwSxjXhc~h&On}nXh81yfvAVvWIU_`i5*^pN9%cgW zH)~f4q|3Rw!A;vNzBQNJo%Rn(o|1iSSxUH^}3_k=mSU+O51}M3!dM;9Xjx>%=JJ zB`WxuXAXYO)?+KMfn#k1Kg`(pZx^u{{{Ts~i~GRNTFL+V+rVx-nVPiFdK#DpLbw#( zV1mGem&~)a<$=t2ft@!4TH{xRxEEhRw4^qjGyZeTF#?=;2;Zvo)~Z~G1`b;}7StQ& z5Jz~J*Bg0Zb7o*=Q$H{anf9&i$K@kN>GE%yaXYi?77D}2Q|$p05V7CY z$97OBczh4B|BbPC3eN2L;=SW!VjC0Nwmq?J+fVF?ZFAyGY}?5b+sVYX-~9eJr{1b_ zarWNT`=)F4>eW@dYj>~yegfSKl*}Ar^&{LgQL}%&H4Lngf)Qk|Rwi(j3tbLmG=j_3 zA+q5RGn;|Oln&%!3lg@yJ={f1gJCrLKIt3ubPNn>kj@)K;wz}HOeSy&lSdM1fBBN! zX=SnA4$M?$reg&R{?_mwaqD?KaGN>?{jehuEmmbpM6^{)QZ=b42RUMe6bY;s(kYu@ z|CgmIk+gg~!K@5qmlWKFD{tmkYc2)L`R5JJLe~{l;E2^ND+gv0>8ep9X;raoKua5uHj zs2^GOcb<{olpm>2QHSL(=yDYrW?$+UrKm#bntAIwDr*FZBxwXUQf>Ak=JJJftO)6H zmW)oRACE#~$kj`gMw7S*;E~fzA?c0UF;G8nFl|ApZ>`A?X4&==7`@aGDoAN07NfJC zVr-XB%%z7orH$JF%BEti(#oC*1Ge0!MLY!OE*azMD}H^mxb_I55|}mD^tVkx9pcHy zYyv*_UNrpT{dHMM>G$|iD2I5miDp6hB}%cRA=KQp9U>Aud#A7&#y{5aKg@e*$;eto zfV`5AtyVq&u}F`wUqWQqD@{C=)uX13YxZaXPw32a2McV@r!ZnHeb~x2dp<2j=ts25 zm6ox<>|xVj7Ye-WB5ts@9eN@k6~c7*^gP@5(wjDhCYeN{S)Uj+@OLder`wZe4%AL` zExfCVdNJHl_S@yr@ztS2(d+u=dYc|Jx3CRo1qcr{SmMZXog8X9JSq9ldNo8u&6?70%n4R`kvwn6_oe{-$eE5B>>8N z52F_C#CSJ;^7ldwFzBw+W} zje$mv^PVWeMGLjiMQJE#U33b4>f`g)ENQAV!uSv?!XN_c7x`>;w-RB`@c!bl^us)8 zTr<|{CjO$$#UjiC@Q-)sk~Ku&ne0*o&+KuU>ZtF&&E&@XQoh&udRu+CZ%HCea!h(( z=T6Kz41(1+l|nWmopDO<>}8RLz3;q5;ZgE<*?wnuJQNAZJsXfqSZlDj`ACpHdpUTx z?(j54YJgp#iIW(UP^(WDm0}44Bg2p)3;es!WB{S-lx<3?ixL&dG$Y!p*6Y{*i#%^f z8g>`?GQ{VZNk7^$Ot0IyZOE{bJ{iSj7N@$J#Me(wj>$4|O5(#6B+d&YZuN%fpg>9e<|e+@mwudD4mHkbk0-T7;7}wqBxQo@dRuKoE@fYm$ zY!$Gx{6+808yKHgG*FeEkZy8zz`8D3GA%`3ehIHvXJ2jKz)-Qzapr#FH^*Z@LUDfE)g(Y0+vxwc^|dLpqr2X_wY4{r&Svb4<6}*8|znC z*#Y}AOWJf=%SQIW3ftL*7{#(WoSx4W5|e8;dvhd+y>a9)VS4A8;?o+hOKEmiK!dD0 zLnhX;WuD(@cgjp^l#EV4af{u39nJu+To&6+gwRH!@Shp_vxe3s#Hd zz4xfuF&7itW%NqT7aMAc@yuAIL-6~MpKSYLo>9&BotQ79aL%t?XB-Sj*pj9tbxTm> z-bP`Sh3hym12-o=Rt_0!!*SX6r{|52EDk9$%a{EnqLxjRZ2v@?;nb)NKNNM z|Kt0*Kj)rtfnN91TKBlnX-dc=u^=44LqyVc+j}lwKF*A|J?8vHE7gUT6W>nD&b76< zxUk64%hs!IR#DF{LTJQcm4}+=YzgU=qXbAO#b&hA7+rI}-JW(pq5Jjd9 zXa4(v=9R)ad{58&7=VHwRYY zoynfjko1tJxN6^A^I4@KI--KSXNO@*Q;^h{0~mVKs1xqy7dm~#LbqPMTo%>uFLJv&!}rV&Pj+GWNFLS<3Qs zmoNNU6_#ZYG}#20-D3tD2Von%DKgr>{&C?`r%81C-_F_E$O+-%iMD(bA4c7Ks-`$_ z1X`E8(Pq=U8z0f%DL|V=(ev3w8!j(xsk8@?dSdET%WJlW>bU7F>Mh;E8ziVorh4`% zU`l-|dk+-I3|VA%lxEJ_@RMhdJD%7#s!vK7TDNHmBWn=AWIk~03QGNBz zsRAUe(X{Ns+|7121`=uu>M9G}sO32ai<6xUwsi%%4gHkRohy_zCI=ZP(DVL$*LDY# zwx0*!RRhc2N*7uj=5FiUa|$X<&)tx`*M{p!a$JPAfl#Gl0#WY_ULFM5;meFyJWhBI zofM7=Zac(wmNf^=v~^nvyQ8jBvDPD`nUYPsjX^3|g?6s^PPK^I9q1N5^4a-jY+fy} zI#NJeV;sVAj;uOv>qJc*)F|wF#0isk?*>@sgF3$yUV&23+=t>#Cm13z0awUMQwLnc zxu#R`+sxu6$LLR>+8ME^t@{EUF5piPR_~v1nIbqGKo=Z%^)H=HY-r(HbLE;mx#j%; z-9SQR_C}yupErjC2Y1@!3IB!~u-v~Ti84d3(x&7f8If6_gr*v|>vatfU%-&yH|gwG-LLHW&?$C^=hl9wpDhi zgp>s#&w~T6Nw0UWWw|lSSZ8lRYOWCT7B6KYB7?#hw=CZo^9A5M8poNtsgEgM^mWY1 zxV6R{?dd{~Ib(I?UaG8iZOccH4*D-#erfG0%UW<6YiL2>I@JCW{a{Zlip^T4M zM2hc$Foll1zI@R`Vv4FxizZ&R60HsSzv4$~)7BSM-|dm8;~oeTB_i1;XYaR(pSSob z*UslTX@%)X#i}}(oCGy0WG8?aI2%Z0HZkz@Au8#{#hXoZI&540>GwW&hiXz-GCl4Hh6$M42v zWgwM@X)9CQ#-}by1vDg5DgflqG?22`;ewZeRAKvC7&TIR$Q>D*{T%g@D>GW3Fy0a5 z;ScqtJK<(;Fv~Vv4O05PNbDUqv2+)=8SJ<95@kc3@mlh0=iGShK9M}XrwmDH$Xbcp=*Ycy(R#%8>Gzku+(<*NJbZ4>FttI8zI zVAHwEmafSj_&Mp|N)P6z<4p71_pV4@wEQ`#x0@k6sYhdc&_%&b)!De5{wsJ;RxTcw z`z3@g)k#_#)&hVDCMsaCN}wHfm0zK_IW(!BW755cu?{#t0*@pk9>k)GYVvJLu_ZSs zC{txHJ#s>#HQ3)anYpHaZ;3Q`*@lc#`m=}qo1Cvkkp_}W5mqEIh?5qbZ=hZ}dwkLf zS*brTpunG-C$U7G6k|R5!Mha#6m{$>u_fH4Jm`6B+ryKv~ z4!$xy7hly5-xbh}26{0`j1yU$_%)NOaSy%gu)QCEv&+Wa}XF zjV`;!h&VT9Rb(U+v#6-QGzXXbwNMs{02o{HhN;^M9uE%uaHBFuH|t?05SPx%+TaQ_ zH32Dr^0sIh@u%56=?P*JCY=e~df|J&d*6g_uig!6*3JX%1w&1u(K{ihgHxq2B=eOA zkJw^4*+zULc?4M?!)YS!fyP+>+qpCX!+B8lfe_hxUWfwmuNRgGNmXs^1F2uu!!A#s zjEjZMJ1@QGax&obD4u+yZz{LwXE$7Ga^6lhhRAj6K_TaQ}DC5XnZ{<$K}sv)7zDW zgwV4*Ywz&$4Bi%>d2l<6^^Z|;OL|%_9Tq2e2a@$6^BdZKHuL2FA|ouyr_F`Ir_pXC zZjwJ-yceduARDG_*@Hy;I@K!YPTAVUn$Fc0us;`k&z&WeYm9qLDHk8?@I!=Kk7EO}eV=f8^R49&tFXfqxTE>*e9rt;cRp<}Wp$-0}2kRuG;Y zSsEiSxq-CGD`kq@Y@08VTOxj40kX-deKf18uwGpT;ZL&5tb# z`z6#Pk@L~>RVEi6Mp21JjRWa{8$ydrQ>y0pobv2yMfGi3p`c>Z*;F+!Y~&P&rZh~- z;joN~>s5EEz@5(EM1#>Y)C7nYMPX8^3F!!jbG!LW!)F<;_anGcHlFyf3MfbLQOVhu&O_iKlbDW@9Ag-2-+P5`)H^=TH6f zzO|OPo{!7z*dE9@eUyyB*L=O`-dlMY1)D*{Jv(E@1o}q~FX>KBwf(p=(-ZV%^1o~A zI~cHbp?`CmbN|X1rJJ|fwc6A(iL**)n`iCu?D5-uE_{~XHI@!-?7eK@J!pT}D#B|! zuZq+qUr-}rFqZYiMTJ`jBa%SlR^6$?EG0}Q0AxbNQ;I8;7t1vl>1@X-R)@(#KJ8iw zk#>1LJ#M^g^#xsBTJ78anyN=>`8ANN_HHbw(&p0WaylKBk2TC}^Sjzf4m5MS#lWh@Z(h?;=+p|(~=A)IJ_ z^~)>46SsRs`TY3M^4j*sk-G$6qpmcoJPR(!a~XRcTO*}(`cB|0@P_28`X6scx(q6t zux$8&wO73Ilp;$+_M(sN*Z6Doe&HGJtckjfyU0fQ{uHu2agJPCjO9Z4NTL3m#>v@z zm0#-awpfl+t`5LH`aqxIb@@@4eFaEZeAL9ct|Kyi-xvnfh5uqTeB%A7ekYc7_0ra~ z?mm_AVQPws!t>Ne@SP-OI@ZkY?`r0r%XM>lc9rLuQy*a_l%^lN#GFsAd<2h%sdaAQ zvhw#F#GQ{f>M#XLn3}4IB3L=<`_O|Kvk;A$OmILbM9q&Zsi0lKdR3Dr6HZO*DC};& zq`&5WQegG`V^AX;{sPBrhWc4gWd3S?jqDLZu0)zCYzUMCR>IdiTu=D=&yB!!Y%b}1 zDB8T87AKpZtX`suwwXE#-ZP%7TsgB0<*8I3Ro!LrvzZu-0-a-=t@b$PT}~u%s^|VS zuCsXm$*Xf>U|5o3LP6Cs~9^S%N$!P5mKqooerQZ`A3eZ zrdBZm^{L=(07fY3M6Rp0$?B`{4rkUe@&k{=(RX&*id zJ=+TJlw)T3H>4GUI13dsy%s_;{ZJGOjXr~iR)!S+P{JBO_cNPzyP1B3ZGaI~C>4U@ zQ{7q68wC3&>k7~%{|UU+EIa&#TMCY&P4i>z{dMvL-f9NkOlr6nJFP%7L;u!UsWp?m zyw|}%L;)0Aa~#vRVxUJ&3!vLbu<$ISIR(8kNC0TEygr+9fLv8|D@I43DxPOTnAkZd z*QN_Eb|wzDTig-XMULT>2`(#ERT+Xs4xUg+w5>S^rm_w>DM{eGGb8lwOZ?k;LQ(O@ zw$%9Z1xZk4OckL(GUGi$4eY%v5JTmDE$m_4e&sD;H9|qq<*PpS-+gJj;A;%~bT&_` z*;Nyvg5C8$l{~$s!;HA@YXyM)aeLqvq>HR?#N-esy;xZ0OAg z^{=sAHp}?$z~y5p+N@`K>GexVeKuG8v4waJ>Clt;RYalR@A4n>owS7tM|n1|(|AzZ^tl^NAXPW>JSYer z?%WC+8|JMAa{3(+nB?gzW8~Yta7|`5oYNgT;7fwOZa|ZXp*HX>EF4eShMriLH9BTk zdaBxbqNiWWTOw9Gk@@IT7z1vs7#|rBYONH+qkFSJ>*=oze`2M>T!R7~qTs;z8;B`# zK;`1oQeUI2&+wAw#MiOC2bZ>%l%HGCeyav>;%EMyZMnS11CM70u!pnFW@zNjon+lI z!oeZ!Dod9LdCp{kxm2r9;<74Bsxhxf8Y`!^= z)92F}zaDZw;ogTv*Kl#*sotYnME$a8_-C6S)M<@eE-69j#|}o!5W?bnL?OP1P=?PJ z-j$jnv?f7#{qs@zQOZ*eJTkDf5~EC4W}M!#xf7c{QDaxFSW=hXZa8ZU(<$m6r4jFn z!h0}Is^d^$Pa#pkvE@fgq(8YY=q9DF%qOmw<|h;n1%6^ra5s5Rh#%GWDG`#MsIA0G zQ`02hQPQ-c;teuJ(frkw`jXPVR7hbZC~{ijF$U>G6iJ~xV|SSRu)eveXxQ^0IwzQQ zYqhG>@Ksw(S9g+_y`2QQGRQ$FP4&nGItC@b2c*e+o*g0`&Sr)k@BKx$P$amh@wA3R z1v-D>x>dg|#ORD5x$gZIp^2CEo9-TOc9aLT&)4T?bpdYoyTuP$j|83a$6S9nFL*BF zL{TkKk6ktc;w0JZG~O#`XL%lhKbD<+FrjyAc8_PX^-x=XWm5U6UgYrN039UMh_h_* zLv11P*sA?MJIO;DHBT&s8bZ~bVog9>MsqPz!}Z2}d=u_a@0>rB?|6)o08MQpeqFVq zeD;C`MC@OipMO>Va!n|;r8*~{Q8z3tMrTfL?okfDwa!!+496u(rt~Pq`SjN{bxC!xLYVle8{9hn_wqghBEU=xYHZ~|Kmo1XWS8X(m& zCV>y}L;6BT?1tu1^3dFP`>APKb&k}C9x-`*H=4W#Un@7k4M&8&KJV9KBQ$>S!JjTQ zJb9!#BbRTNccyn8j0s(mpVwf~egsQJ+r7t}*Ow;k5f7+>-YfC^rw&?0+Y{TgTUP)f zK|5YML3$sJwEL=3@?Nb(9XRX;r%GqEZdnwYDWn^Ik+}M`8!ewapFHR2=!$LiTo<1i zK*U?Y{nMI4w840ZRf~(~9csrQ{4dwd{73Tkzc}LisG`khVrelJKvq;{RPnn+3$`lq z67BRA1al)2M%Fsdx@HCXga-t7D+Bf4p$D2v-5Uaf0^`|vZiB79#ilrH_r^zCrEt)l zwM~$znEPqNIu7p<%+hj)?foFy8eHf>Yl%$YiKTY}5a)c2W2Jmy1l^8stdENQ^wtqA zq2T#9yMU-Z!tD+nN9j)S@!u2(a@1JDd-+JFW#VCJe^uq~J>k>(dAdE{KMj1!DO6Li zUv8dDuP+3>%iZ4Hlw(J>wN#h2zAjsN9({eJXP$Z5y@p0K9KT@S;dT^akBO`1wfRu3 zsXeOah|=1sQbQ4AQkL1V7tmD4?kxpa{}eAIFO_jvHxNAWrZ_ijXrG@jdsh)YVY);$ z4Rwul%dYQtZn<^6VP4c^d!&14wzOR)5vk=e$@3_*`jLM{oozQU?-MMGQGv+@SoeB? z(e`YcY5h=f7Z%en>XV|XmsK*IU{h18b0O}D6_E&E_$?nQWtrSaG+SMj;TDsaqV;EU zGV?&@E?Ig~X~R=>gxu0du|%tcP^Eq~UAvS)rS0$(qJjJrzkIQvuK2@|sTm71E?^tG zC~pExghPQp~S19M6THBpp8@p z06`%m?r%gMk)3sdY^FAT?GGZS7B0Bv0si|&vh>7W1=GBqhtz12r_)lVOtfFlRv+OLa<6f%!oGrV6sK!;BE5% zUSErN%m*ixT&mk*J^;)cxtt5#3Pcl00&q?x@3HlJ?9apJsl7h?Xw~Em%p6)^^OC+$ zi{}mMv5Fvn^g8nCjltiYbW{aVFDJleqn8ULU127;qYid^M!O?j6upo5t$U|OAn6VJ z3slW7VFWG5Lh6vsqGijrycsddz3QnyHX>sQ^}6^$Ezb-;DqC+yg$}>Ac4YIhw0imA zv{;>weey5wefb8UT|m3X={W`8bMI`U?bA9U@$%BU;5z{fmY~7rL_>b%X8bNwIut#> zZtDM0Y;v}Cd{T6e&k1KbN!iWRE%Ll_^%#h|IQ4<2rNX6kPt;(86jUKO{o{!4w*Iy+n0As-w{CIo>p%H*6H4X zoEK!WoK$yzs3wPi-)(`qpZEFJ^C`A|8yVG^=6}ow#orX}okQ2;8}_iEP%o>c&_&&S zLZUgy;H=JNlfc@K6P1lAuR}(8KzCbvT`P_V15J0!ylaBFN@3d|RkLzNvT5v5Q0l6- z8-G@bd4Z=E%-|wqVRTaoCRa8941{PhItQ++9@ixQ%PFnEy z!u6UhRkf?CH0zl$nJ&@$FoXHR|X zll6Zg@>otsMvCXscFdT#hT`mfBGecbSsOIpK;0lFSdtK;UC)HNfW1KR7w)+9Z^N3# z04b4`0{Xx%24NdjZA+j}&qwg_=?yfA}S7scp=8HhKI*_~4% zxOU4ma;vm$-uUtT=Dl~S*>8((;H@7cf~kQyh`&x2@}u2Th(d}mReVpEVnFj2enGB- zd8hdnsE%5c5Z7li?<~!PB#f5h&qt9%ROXQ>b${M^I@9rj0xEAzdp}pMcF00L5TL9h z^JW~?RV6nWt@Dn?Ua+ahtvO>a?{+YA$IKYl<2wYKsjbMY0o8eX)U1-u=a#DM+Ai$Z zgE_XE^)~%R4k)o~BWH^^Y?iCnyM50uE=<<9x8#Z7=F@y@IqI%EX7+vWO%v-#XIzl@ zzTUqle1fM#1y}r^oVV4wu-4e46=Z>my}v)+4+ISf*-W03rC4@L7tOoq|i3peGJc5k@TbB{v?m1UzK2|b^FjnCOg z`u(>@vP#s0bS^e^AUVaePLu*V9-<989s%W=8z_Qk${%Uk5!MqnL0yXB9Pft_ks?@T zz&8yKcM_3uw)XD-ESfd*?6$iM)m2Y0w{5AIo(-EHiqPNJEL?640hbw#}ru8qxUbUvgRFoZXQ*JYqf4l!_pBsLN-g`LDY;}J-h!9_*<>t@ERRYvzMuxM#GHILrSyadHNE{&^(e?w$ z(_0`GG|0fg$_^6LEv404{-7_cr6sTcIR$d?t}~~IqeXm#_>>elYbc8eX)L-E1;S(~ z4qQADWN0ClFg?0(7qJza+;>FDz$Ev7?*TFf?0brw&(m1t>DLLipv6~6^=*zNF^^i*T_GsIm+jFarK$i^yIhH%N12#eB2`!Ce5f zN32rNOEk`BE+C4nSQ?Yub7_>i!VCrcS%h1e*vBVR1DM9_&KqGrQC8=ga z$FYnO8Tqco4Wm1*?O%ORhTwElGMtS2_R!lgL4$2MIv^%!88HbIv`9$WF((p9L>i5pYnVek(6fjb`L2?{pETc8ZlK)JYuW|bZRNiYW-)2>heEUy<~be~xwHw_ zc6t=egQgAnmI;WhkZcMmSCVT;^Q6CU?e;Ca=Y-nw&f)Fmpbh3BjJ5u&4^}B`(f^AY z6s#m)FIIa56x|92Mk!TPp^_^J43s>$J8{c8OP9T{N}INS1f?9ml4I5hF40pN7CI1ZZ-&wxYgTLHN3S!IP(; zV)}u(9cLYTEOaz7+3-2%3hIs=VM<#e)`C$b8?5C<881GpRvOlQKB}BpVczoOM3}%v z<7c(73a==6$W)=LFp&f)D&)8_`vdxzK~bl0agh^4m~yF5VwlS8PD*38A^Aji0O#oq++Q$nj=1*~N#hHJI1Kfx@i)SbAxPCvJ{Rfd8z1 zFA!vqMGMkws16yuHTNTy4xrHRK*NR&5TnPXfzm3QAqv8(CI8u@4o?|kz2S2H2~CGk z5Km+&O04!+dDxgee+Ba*>&wJvA(8;zCX%5K9X9a45RjDB)qxEYr4XKt3&}Z+xT-9Z zikAlWVn*fH*Q3{xj;>h*$!~ zv}i7pP_(3!V3iU*#9%9DK02giV}nsfq$*=271+2(&rCNEj*$~6BO_x>l_FEB@@LVC zKiatIEW7@j?HR z>2F=?%V?O2hSD^F6_sbF6|}ggRjA396*gt|0h)Sl7G~_< z+BeY~VucWvXg~BAXLT&O6(Ul?mxm1tvVMq9@6SFAHp-MJ|1T8dN*WrhBK9;JlQRL0 zsDGW`HZNUg+mzJQ)NtJkhKGO2*%a|c%(>v{uvW)poDTn5uF@Kf*C}NDA9hqUU3ShVP>w&etMY;ZOnjS&tUbv=d6B&;Mv74 zekAVZ=Eh!DUS3^Y-d!}6CBY82&XdWrmWjKT*`9@$faNLdSXM5*yzp#o{i||LS8O75 zZYwjA`$Y96`kEY_Wh&DurK+-{S1ki4P1uIfKx#<0moW!!&r!?dCoaqamL3R1@URz~ zhrPwo#=oJQKwQ=B#Wuj@-gFy%jtgTRCl;h4h=jebubi)MZNb*zUpM+dV}#jEAzwGi zZ@)5gb8iefEEf(d^3=zMhyVADnX;T8X5je*xynG=bF5%TM+%+x|3U`q%WuM&%Ig8# zytm0>g|U>idEd;v$YRapwE#Ycr{&`tMN=Ge{{3=sX)Ryf9|Ne1)Rh1z7Wiyt=`@eQ zSQRe-8~aw7>SIew|7*nV+@BlnZaA&*1?u%N){+sDA-ev383+ROgWMxP&doP_5q8DtodB@|sRRKFZ6pW518KLyw~U)V>tk=8 zJ*#z$|Ab}@v8|*S-tl`{%N5T8?S^?Cc&9y9@`ih58YBv=F9n2PALUPWJ=WyE{rtF# z??JKbf!VbV7le4$rqa;pCEt}lC?yW)0xqq?8AW=dVwB?Q-k}C4^zx^Q0#JmofSSne zU_PjVQT9VK@_g_w$c1qOAA-{JpqS|WLqN(FAwS+^+TiCAPiw~)x_Z$v@IlY^mwE3F zAR1Qo#TOCp@soXkcyAhUfPf#G_N$;?X@+Ac_Z{%dmH%_^`(C*b6dQ1r?aKqLA+Reh z+00*AE|h=$qCR9EWUk!D75RpT_^xniY4$QFj%9<%#|NuoIU?!>8c^-LqvPV;?wUYu z#Nt2K?U}oi%40c3+j1%O{y=ps4scN{b%D&z6EP8`@%j_6o)F*%o19+Sq&|!D`$)$% zbJso9FMStG)<0yIWZ=rERn^jjaHfSh?r1%I zn(PWaAlUC1yalH>;Rxr5=I$EVQ3C8(b;D%cU?tz28E1^Wd3P_YwuD{-aYUHj4GTEbnO&^yb`a_S;SjDO zGX4;HF}jCafWFZe=%3l^cou)xz1E3r!_&MZT$uXXf-!C%unn?yPZ+uNqvdpL6?2!WU5-5}ihWXO2)!j;jhGY776Ca za}2+k{Cl*@ApP9R+5^lqt)Y`gpVl!gpV$@MYk^V0RY&fDJwGs(wb>F1zsfHa^dzb0 zxEXn%nLv9BsGgfZCP4l|tROie_f8*M$_VzxfRuu4nR07Q^ZMiq@WS?8&|$YVGY%Bu z-Oe_hX}TVW^1nEaMf$Yv?D1*Y3bd855|vck7G#XV&nhmll=AXrL+9)s@6{pr z{K}Q!8K#OPJlLRu7UJ?ICZEV4H5;4kQ^Ak>W;np}qvmi;?HWyGoWzeoa6`ixC%@Br zlIDqSVLNfLLVy3Aenk^Pb3yhd`2XH!9AyN?9MF9f627|!1b;iJ55fg)NNKVA#PaSZ z?}w-=DB1*a0ipqh55WcLh$!?^5PbWm;GYhJJL)Y&p;3iC&QXPYEkRHNN=DE}RL>t3 zkHNbosgq8>RhKa1Eeitx!H|RZrV?X<@I5Lh1mrc*gEU1*?h6T6N{ArM2GA+i24Fv;ovPsAXvI;4556Haa#e}${^(}U{^TWiGyEroCro)&q zi}dT=7z}p^q6vN_+TL!x5zBNP=s|-N>EHh2{jYq@`Y!7ounZSu?b|V#PRW;be_%f( zPN;)HZBf1K)zzyuTCKWqEfpkf0%bc2(%eNEFC_R@<@}Eca+fY#22R-SSHM@tBVApO zAqc&|kn|$M2!}IIG7|ZXA{bK2ZUMIacx>YH_0R*I=4em?B2UfFY+lA9QG$J7krVckQ~G0RuRo|^ z&``Y)I_((R8z~zdj&#e>K6`b>XY9}cHPthE?Jo5_3kVXt7wqp@6~~0q9Wb8f|As#s ziVK=a`1ni4KOH1qLT&*x245<_x8ijs=BS&Jzt`o|;Fp&i!7nar-0ecQInbhWKL<6Vu+MNUQ&I zj-xC3HfJ^;&V}RtOd$+X5n@X|S$LSz@rf{IUW^C{0-j>H4@Uo_qorChAzx-yWNt5_ z_NnE44zO}|S+ocOxGX|hBp4fW3*dScm3ldyJ&r0^FWfFCz#u-1IH3ByBNm-Nh{P`0 z^NCN|^@D{FJNB}uZ}wPHG^%hpR8zu1U_Vkg-0b1_&lvmckYg8QL1p2paO=NWOYh@I zOPyS64tf_hZD_T!$s(&VTk-JCMz($ifYv-!H-!%Q25l8)>W>%^i89nZ5mgvC;Xd-r zLSi1Vlr@q__ixFua4{_Ykk&-lWd`f_u+;{HXuxm0kk^p0t#HGHd|Acmy>=-L56a8& zoUQQozmbPqmkb0$w~_4JI#!g^8G2TOihTiKRXS5weZ4Z2^EhdmyItYbHL zB4@`JivU3so2Zi+cPA+KE1nZM!nmp1&K3$tx1R1zZ);PY)2UIIopCMQI||%Fqfdl< z*&QvF-fow)ySci*Nzit4|8A6anAm6#jr0sTFz7nsfBlByuZ(lKyLQ0Rmzi(#g!A%h zm$;#k2s3`>6oMxG#~Cdjosa!Tl$klP)cdDGTEMN4h6H$i5?QjL>knyTSH2S0FsKPk z1};_gVarZtwoyx{uDWuz8S(&%1Vgr5;(Poe&uLaME9X0GX(|Y^1Z2`aP;_H5Vthlg z%ITy9OeuTX#Es$0!QDHy0=^h`_e2R^IJT58z2$W+tq93~_qMtnwJol@uXCYYAZIQu zSM9@Tc0Mhg!SHPDe=u5F|@}IO9?gdum*t}7?G|>Kg zmJ82G+!+UlpKlk##1>Xr{p|$si6i0n-F%t0=1-WLr%Zx9ysxFKCyl1ju0G+jBXnmw7TusNf_i<&V&8e%7T> zIO`_Fmo&|?Nz)*IQh#}1in!B^AaipEHK4#7+aRSyxmJ_aqF3pH+v#Q5>BSH*chkh(PVa%|Jlz@C~e zxCm8Q!>RL0ujMnQn#l1+G&n)qnrWuG685$JmF+4p_dpvPFyajR#m1lSm469?fEhD) zT*4X|B}j=Ob=ULaBV*I&C*n_70K|Te%D(1*`1+2#=?tb`U6}Gu(o!8k;yiylga<+Sb<1AT)2p>5-PPxy3*h$DocqR&@xfPCd3VK=d_t(`S71Btz+u(^~*W` z8bT5yjEIhyM2-j=1y2kbPeN^>SEEidEslmrIHVCyOhz#vUvU;TZ6xWr7|m76!D${E zawcF-;3Ywlty#$KvHl{vbW!EB*@U^-+&O<=&<1}hWxo&hc)3E7zo~WmzYNfSWY+(O z0s2NIF@0bE2bILi#ql2i`u`x6&pSN<=xUFgepl5xHdk+{e|U3TMR290ctV7JLWb0e zacBig^vf&$6gHg&EhMRgwYS|1z@y?peGFjPW1->k(^G^YJCPKq2s3T)G`J8kf27CKtr!4=XWaP8C{G%e z^YKn8fS4ZmP&_Jk?ETENLKlfb6z29myxKl(lD?JTzFTg#3oL8HWSAd)ctM-0p?AO-BekfiI zYAq0{QGCWi>#TmaG_s&yYja)%trn$2n-mQ{n?Ac z6DuYPB3V!nP&E7CXoi3b#U(L<2XySkn;jk8R;0&;1SG|p%v$#Hs3tul#)z7Lj1=L4 zP#$xkEPe~ma)QcBn4oPJQuD}*yG5{;5ypUL|E2)hilzYDD%^Kv`{4+c3D1QlC!H;U zU`b<0S^=FMT0-6}+)|hYYEh&E;xO-on2E@RH6@iTa`z1-@>zfZbi{h(e`BRYTPWlU zAuTy}L+@ z(i%)R;u4}$W8@9E8Sqpz6oF=m(GKm%{tZhCh(#*=6TvtuYKgNmUC)u29L)uC^E<@+j@ z1o)n~)zBM393b|P@A&+|925egGle6D{&=taJ1&-JJ9hzj1%mlg0gU-0pe;p|pjqEw zBwp8zh+KJ}NcRHzfR5RvL8nH^k*;qrlCLG6A)FVYqo5bzHOLP0J;^Khj_fgHZ*Up+ z&5zfjSjHlPfH0tZuLh8zS7X+`cNrwEaCuh0SFpf0z#$*Am($G$?n1#Q8nFmGz@Z2W zbXyo2ji^BI?3v+}bjQCS4Rl*H3}jof2E;EwUk+cGsPNlB{xTX-VH_|IL~scu7v%Ye z7uq#84?FwBPB0hWEL+)tZWA(Zm z%l7(%eByir$b)=_cgu7JPZ!mI`p?~f@%(sZ<$(mC_<}#f@#FyTJ|d?<^hLJ8^d+`I zhiA7z*n0=40=uE#kxIXKziCIMUu7<@abNu>g2&mP!PEbHA?3_}6}Y?# zy2^irO`m){W62Aay1Z(A*FVknQ$M^p9dKCy6<7p!#gI`ilH@Q<4B`TUwX zF*wQoOqo8Rbd?wUw(%opzGs2^W8%y4^$V)B=iZ;WwC9aT{!4KD1j|*vC*S22GH0Ig zINMM7=pOEC_Z#cP^>OxH`P-mib}TZ<>o;FX;ve!-3%X`HfrSM!UPmBfHg^+DLHo^6 zPl<<+RK+*GNF9*_^J|<)$m-RDR;CEW&>Dgx_0{?zBIz7|J@E>;|76VJ)PeGNladPw zdY0jx77!4%62=SKp=5~wjf)Kp=LDuv-RExT%6YBk|7$mssvS!(GacM#j-cu^Vo<h~ro*IT&oUKs zqQZ|}q)qtjI>fhDPQxpdS`h?1Y5L_Xf1KO}qI7qt>jl`_&Xzg?q}{liBUBHNh95f^ zclq)U$2z(}(21qx%(LKC=TNo9E%{yNF5z23Ew`MO7!f0=H9}J z0KOZr=N%Y8#U=1Ep?An5Sd9Q`>Lrj)h7PQU89w)&GCMYy3k+3I#>bRcYm@-gVHpkZ zVZJjbXL!NeXKet%%Ma`250=v}kKYS^4R{Cn48$H2yCr<0YRP&FH-4oX<%K8YAZmTK z+6fR0e&`DGZ1pE53@Y8t0MPrv=lz^I@V;eDIo`ZSjrmp=3vs7rhUqNFdVh24osAM| zRsgF!hwAvic72z01=VrF;=>S(&AR#V&YvKSiSrA06!(_x1)MY7JHR_M6{vr2{>t!? zY|vkWJ`%BZNWUh!M%0Le`qnGY9WLDYGlnMqI42)N0el@lu!9I1?vr+&sMVj74{94i zp$&s^0BK)vM{pPE+5;$~ce5L@DMilbMv(#O+#bazM)ixmh%>E#6?Tj z;%|a?w#`57)~7ayvJ?qR$+ZZ?5)(@>uafYq38ekJ-MoE+!^ zGjU(yqHC(vTI-PQw1E_xh>6eqwa@PHLs7l<{!kJ4VftK1T{|Ph*>DdG18S|fNP|V! zF#yzVIL0BQJ-272cL+aFZ4kSkBn$j9UWrDg_!(lDNq-Im>hT1iM~$45@ky%{U68Q; z73xy{73BQg5ts#Pmp(;*fEjE`wA1W#Uo^Opr8_=Pl~K$s>xBm7kq#LnUnak==B_@mT-({Mi2Jb3jO zG4X*7W{_>fNf+T(IFODh#EK7~DD=ZHu!jH9&XLi4gVtkAJuf ze8jif@2QFY4*01Bym}3=+n4xR^eg5eg7Sb?jsP2{5Gy7VK;h*rN{^OWuiKRjhdOI-xFX&tT0BBS%VA9iCJ^elXI#HVF02T&T2A+I2L{ojiVorgU9E36} z-3XSh0GAYjRS$s(ZX(1yOCfe>PHarvotU4PiQa+V{)*ee~hCJ{sLZYPf@_H}*s9cLZ8e3UP6=CAY#|?gHs;1baRRws8)4 z;zo!jj$wj5(4qI1yFa~2(_?4JL1TN2cr`0demN3)rub7%e!?g z>rz@0D=z9(SkSRU`)Gc^*vLp&T(_ym!{gwy9@(%5TeZs-!cPqoe7CdI?XxP86GF%gEZq@e(>ietpeG}}5LhyrNAMe!4U^A`@ z_Gzw~Gj&Cux=Og+4ujG=+C<%wL6Qk7)$9*f z_G$KoD_ISixtu=ZCN>WlI=W9~AQYo)8}2jKaN|Em8dv)LVZ{v(UR))E^V9 zXRSdigFD(ET5)fS6^*Zp8YhM)j=OPmGdHe=J;N4-=TaziE zMIUc{kQG;~SQ>0TG<5XUXG08YYTzF5Tar^%x1tIjeJ=>HdRP#iM((K@-Hh*nM+R9- zSgVrln-uQDj?_&HHp}5&;i)U8)j`+zS2UyR=ZALs{px#s-_vl@l_gF-Y1 zCj_A;qr=dqE(|7hK`SP7fy>~p2E(tKCqj?ZH_N^2R#>~T zf9;WRsUt#;^(Vx3nVwuxH8|h4-yDrL=jSsO5qm?QLLGbP<&qBV=d_T{;Rb6EHXuGU z1Y|p|rfUI+KNMmeys||_-r_JMhS)f+uyW^ z(p5idNt|Q9(l@{TELF?quF-4D-L5HLQ#<1d4(dxIqctyobN4pyzG zTQROB(KJ3Bw1!vgCtJzZ6%Bpr+B&o)abRVjx$52;Xv9?9wL@}VS%RQVVN=a|F4Otn ze(nIaXP=8W6ZgRN_-~{=`3JY222!8%^gJKpr@-fl4>?TMY0^Qern6HJz~#txEwD#yE>0u{c-)5`#Se`p7GwP-ZQ?p{Qdmv z1AO4Yz*}igq51W$Zju4j6Cy6=4N*IzHkt$n2NaILIguZMzchi3~7I3%K8y9w3=v4vEq z4#ZQ9LyAZ>jC_*7YlM3VN01B&ffsqB)(hqF@w_mjOBzhHN2Q4giKA z>vE7gbXnyg{SDGX5T2o%wV`Axe*{@km1@qjY~_d~Lv5_cE*->KtXhDGJgh46kH$xX zw2%_oLe}iEJ$*BKVr^^ue5di^CC8Vs&&bEhfa}w0qoS(ktsXPZ+uQ z(DEtWOTyaF)A)yPA#5in4r(80qyGMs_ROP`SxtIFO;o)m{Z(%+$yKJ1Dau;V^JmPW zELjo!vs+o65VTmY({AZU{!t^VjeS~gR-4xN$!ja)=)sl52v_X3yPP87`V6b=nl^d) z%WJpxs(xM@y7P}0zr5}5_*q==iI#EkgR|Os?GmfWZQ6ePG-eTb#U5EQ2#VN(Gt_{v z5qB{t$}Aiavn>d86cvI*ea0zsyipK)?ZA_9c=o{7^Kon|L$~0SMJP)tr~0R4N@b)>=qz_O^(Xy>K5~_5tNac*EW9qi zZaPjr6F!nZGTE%&pqF@C5{J|ryF2FHBAGHR1r}map=8;D`1E6gAs_c=Igc59p(C&U zR^LWe;nrv)`!Xd#wY9j&v&n>7+4MIX;wwR-Ny zN3~x8i-)+=V}py68~)I`-P%~KZtogMjJDw4?_Kk4&*9TG_wyC5V-_;C8#l@|bTSH|>*T9wVcSUc{q8W|-8fCLYmD8l=sXQlD}F zZ-wk6*?r{$nYHVJKVRDls)lMqA)6qUbj~g<<|5kZ4Ij+Fr0^sSukMq`KD>l!Mls}t zMyNqL4y$ALc=!7E2i~S{df)fH?|a`b^$zq->zzK*_b7eDyNzy1lLUVd>?qxu9!&3)J|}%~`s(zf=~6oD7q`H}XEVtRqu&p>+3qE^4N>3cxX)9xO*lE!>s@Ymb zC2JWk*VLdSr>>&U>(GGo}7To8)&vV$t-I2C3jcnnb<+nQbatHXm z&QHBx_$0RzhZGZ{*yC`AGEG*a(t@*9Sv9RP5t9kKTQE^AnT`SnaWLUIwgh+#0^MT; ztpV+VrWe6sx+T}tY&--KHoC3H7G+LX8%uwp9)ku#nH)c=7nL2Rhjk)zv?fO zTTQcuj+#5``p(svv*wNN-*2)(iwCB^Hvhc^Q;sZLt9|p~o7%7Vp3u}8iyNl>&UK2b zA2nd~#JcwPY`S6bEz4fHHSp3suW08^fvtd0X(h;0K_+xqEi(p9WwOy{j2ed-Z#Mqb zD72ceK;1Nl=9&7LZZK^%?K8b$k};8xQ80>;Im6`v8~t@wqYA43**m_ z-+jM#uXaw`j&mR@k;6>S}5Qp{@O6i%gNK4|PIu~}{ zw7u#0g#SdOE`!JHvbvnNS?4$xTg3>E83zDSFI^42|% z&DlS8@Q}K(gND}m=hlpxHM?fYB+k?E@w%su9(`)^ruz}8qwptj%tAGf(4-qRpjj)AwmQP`9hxX+ogA((<3bw z(3M|+R#vnoy*?0>?J)D(*vFaJ_VSNOFHX=lh+sa|?`%QUs$w!KW&^vufdw*Y%0|A6 zMX_z?%(FN?f(+Toux`7RJt-NJ0wXBCl%SX^!~|S!CFZnva`p!CFY^cBnF=o2kHo|=RW2=y33&jb zu6%hVF+l}@(lK>NC>PEFv_ttcpU+bYj9pMEUtyevrjbe9WPYkNMLEM+1_+o1$ebd} zRFp9eA`t={QIIJO@`97+1xZo;={*$o2!lU8rsNQg6R6yRUsBD2NO(#yl8hdYAN=1q z)sTtxsevYlm|6%Bd!~#FI z9Mqzsd|)d`rT~0lR1d_KE_i)uM=#rm*7EYDuR~adtD6nOs+%()8QqV#gtk+n%7KIi zqPe_7pk2D89ADBkhC&>CaLB=N{L9)Oo8o)tYj2QlxGeweH}F7h7k}XL3KEQ;fL>h# zk{%C|c7Ts>kB+GobMx_3^Su0T=mkpUkV_Ww+J|!7_Dt7c7b$dYcM+G%8P3YFJEWj9 z2O|>5Z4jCSB2?$)ZU-)5;el+3L0o??M8h4`jzc=ub!_O^)Nysk%^js+$3kEhXI2me z9fjcZTFA;>9Xbtb3yR_p7}Pdih$h{Zo&~Y5&IfvE;7T;@OfPe>(7?|&O*xLk7I?+|n^K z$1Yi2`}mvz+9}P1^IrW!{&l0O2ekiS8@6wb_8O+nf15v$e&hPFQ=X6JzO-oK!A6rr z=o{J}czIOc$`LXj->=P+jkSY%-I&i}hH;70{7n#<`_V`0z$Nl>=W_QZv`%8AN=&72y-; z9M}qzxXl~Ww~7h2c#P`tcA%13HQQt6>aiBg=vQ@lV-T$6saf_83THWM9*NE(xFx~< zLLhcm?q(5N#7waeTp)DbuE4@nw=}Y_yB6G^&eHMoK+`9qY|D07$~^ttHSVcy zzRc4(ur#oqUt{1iZA>X0_8f~<^5t$9v6#|G)+p7{6vDw!VTgomcF;jtKNUZM^S=09X}_`M z<+lv$v4=m97I{@W{a<_T-aMf?Ka;+Cxx{QA`KN8$_D;5&nT9+9QP4SPsR6B4yGuM3 zr5wSY$>TzPJ2(MnH>kp8>8aEn$pX7uqH4n{u-m=c;FvB%XEcO-$!W0PbHt!jD7`FwDbWIHwL~NdC7U2a{VRmQz!}$b5RMUl&`@X~ zhHLAu{JZ+sCR3((xt&%1-_>s|*Bb9eCdN0ix;=d{{s5Egc(A>LV0%H}x2i4~)fpqj zIno^CJ`ekc$6LlMe+5rDatcoz+yB(trME1&@Pl?qyVO5+0NTksMZT_|PpUaGU{>H5kgodDbXlfJg8#Fft)oJT5go^~w$5`Q56GU@qi z6}dCM2-5U=t>_$K}Y&u8*=d;@=ur%gN? z8Q_paxZ@b1W(2qP}+itfmw~9(X!=0865VL@J*n^lb(b^lFxX_86hO?QF z!}uKWln4j54zxBlUTAw}{CtX~amWVDC4{pgxjAl+9vPD@I5!ym>;B{4VeH|9h2tk& z53xbr-tkS3{`j}x!r0)(olv{=(DSdcp2zc5za(J0T~Taz!uNNNmDy zTH#{`;Z1s>D@x%5tpLyODMRpu(8;T3Vfv25b|h=L^g73ok$CUXsxKns%B$%*VKZ%} zhp4z%c!r*#7kG&A5+`<*ULTWLw`apnj?i71%`M^9bL-^|$~Nu*cbHRN;oj#iD_nP_ z7e{76xP_yQwKcj{3W+nj?1l=VC2>Y|SPT`k(BuX%IxA?P}!J$A?NPqeKEeIAMLj~^pd+MU{Ta2oO3$jbPiF5gL- zf71Fuk39x#{51ap;!$_iKSX4@N+F6s66O6O;jWgk&}skGM5{5K85mEgs%}ND$KZJ< z_!lnq|CzBVP^#bqZ7|~JRfBu27HQpF+Ecbh@kQ2ZG>&Zsw7pt!J zNlm{hNr>t(uVWZ!p_DkW!w_V-K&}3#b4?V1mO@v8_9V5)_5gknD_F!YX|389+Sl4& z!0Nr+nP02uU6&TJFZA;|u=+6b=y;22mN`N4aUO}^MRM=bh8%=u+B~p{2M6Ymnf5(_K z41nj{ToI>ow2He20+r3uPU$2kyw1HReJXK5u0V=$-K4?NgWM)*Gq+u8=3bTz$t1M6 zBu3O?JqbObnhJ_yB*;K?mcWsrnE#j+ZTmxQU0j3o9%lB6 zZR>E5jK&V_llTtk*bdy0U#qy6E?2U6x&~sQ(+~?;Pyjulj#$gDmDU;8nW=hJM^&MW%oP%UYB2VbTG-j4kG8y z-L7DySe0Nhl2L<&>1ujidP90s`sQ>Yn0_vuq+4@0Bg|$q3iZCccURiN*RF&+demK; z9NlMQB%r{JkhjGkD`W9YGPOY1X}>a}Q`5WX4^x)!!j z?K?p}IzjMEr>&xRQ z{866RZ8;{h83n8?UbP^}{V$n>J2Sm7)jmGmYPp(G)2>Y>uH+J_!1cF$0y+$mrBp&1 z4*Li+EtQWxflbbtzjn~H!>>HCeNOM2`ju?v54b~LY+u?^Z*#>zp|5In9mn?^ zGS#H${W@L9fPQtMJjnGHEJoVu^fFz{LIsSk% z-5K)b-0Zm>NwX2I5vPKR&G*mGm>*mrF1IcBFA1&}HyGB~o)!1H-*6vw+e!nYZS`Wk zayyz2E*@WpZbY{rn(fZY&CPa;h!aR84Z_{r7INL5$l$CFGGP+4*kYsw4^u7NN3tA= zWcqSR_4a&hPf63B)RufTzb?NazbSunz7WhmmrwFDb2l5Y#h7UVOP6<))tWK z$vDKqsN#HU)Ed{4V_hD77=Q)FjSv^Jxd4cEL=bAO(3YVh76|2ZPU(@0rKzQn+)_8+ zX?oN2-l}=u>h0PK+MT!w_s3OuVM(5Lpseh~o;_cE^}Jd(rgqqa2L^Tgz!?_rsKEE* zsdx%rr8R2n|G0XF+WU`pXqPU>LD5{@LeCa4O=EF0#GTMHA#_o_tIX2hGD@6gm}X@2 zXPd)&&BtU#kOajexs}f5Dsz=Zl&rGNX?9wi*3Rb6mcEwT%=4{B6vI4uo^MY2GI^PA zNxC4rowCtl9%jDHyx9D(`AIWx4w{TklgVf?x=bE-j>GE2b3KOO|QOEw_w^X?e|A#4Zmq} z`DY(bD<9l1d-rMnz~Hy4x_(67-NH~LvS5ljW^?Fd<6hbQK#7IP#1j$kv^W-GB)~F$?dG@Nid+KQ_;iPERaVay+@dZr^)TtI~`?NARgF2>F`cFE4{B; z>}95)y-d-+7Iy56YBs_#Q<>srUq@N=>c5({L6s{LPPzK0B-Z)2^i>pGPLG@Fn#0DI z2H>E7)6!KBbiXdP|L=867oB|;JF!R9jyV=AxU+vj`!2Zoz1!|hpqI7pw4?Zova{dbquTB2pZByfflB}{=PQm2q2Ujlq{AP@q{CV90i3YaH3lp`XNWRJ&B7qJKicTg2U4B|qxh*=2~ZJc=sX&_BxHKD{O#h*_} zedy>N1f*V`oIL{QGpX`q${UpHK{lHxVq+KhOKl*%Pa8yEy?F6b54IKne04U|%7<2{ zT|`NgMJtem+*j%=i=*U`)-~3(wso#Y-CM2u+@H8k2^R!|$!LTWQOt43Mnll_9*a`- zBs?%AP#54D0!;xD3={@72Mz^j07JGK^cDIJ`8XdlbpL;wgtzL(t|zY!$Ra&@mvt_I zXv1nIkWjLIdkE(l9IJk}u*r|}3hzAj!iUEfI@2Ni_~u}jG1I54d4Y>w*0hVCuBjRK z=!k_EkiM=7@x!5g0y?`3aadv_Q1&uCkr?jp8apH%#Yf3;dYtE3I6seHi`S6#bREA* zk~m}#3M7^?)Jb!(=tFLy9f}D3QD0#c^dd({5F;maZZZ|s$M(4vGF~+ZNMczi&>??- zj6)O*4OG`a@gmwpzoaK9r7hT?DvP)#?n~|jq&8rSd*BL);}2j1B5YK@5M%5UuNu_{ z3#vU|TO0MZUJ27%uMN_Z6RfoeQaV%{N~Ute5I>K5;#vJS1xnEPD1C^3RC&ZGy=tI*uq9ErOMnEbB~hf_$RT6!s%}sOo-Z;e zPJ=;_1yKx2vQv^|YA_m8sg^;2{0b3FjU2BSL|GCfQRGuSr6*nBxxoAiAg5}n_+B(JW8yK(kd*gAxFJ9|yn{7#UjWzXYn~$=UC1-M3Vm0vU zPP=vktfj}LK#!^Dn?WP%O$YR*L+@2QNqYhpe1VO?+W0G+uWi)c&_36`086lOXD=g) zAj|4^sU^8$j31_tt2ouiZ8V?^rDGKO9KS_;PJYVp8U9EV?lG*x4|5y%wc-Z(VZ$@{ zDNgodmzakmVhtWC-ovfnSIBYj*Yv6K#dv3&}lHaAox7S_`r0 zljpiqXl!gmvpV6VmFQCaN$ZNo;0O-lQCb%$J*vH^9UyUXP-}-jiFb*c@g;}P*wq@EiZe~DCH{zH5{ zXp$TJ*Fim3x3JmLb85g+CK7BX%+@dg3nW55Pq-YO65K)}D&#a`4w#g{_mdiAtS8$! zvN0z6Q+c_87D7rqgsTGryk1Y*pi`C0&$l@U__Fc1s6MTbT(9_zj%~D;%(*cH`GH_e zk7vScmbS@OqT+tS5Ihmj6dLd%p$SVQ7|M%@DqIH%!kP&?p&drtHw8%EFoKjJ;ED;@#WZYD@o5T z>SSwg%2uNtW7%p}9)K@BHZ%KjHp#Bi*EJQIEwS$Dn61BRPX8sHrl+^Z#YlytNr8_D zscE)~kQ%T8c>S?Z3z@x#ibj*to@GyPPT#_5eG6B#hbvUoX~^glk=n_5rkYISCL_r- z;)D?!RkJ&0^bd~VSRLrh{mh9Kw+oH+;4eLRuxG4irib(RitBr}jaq}bHn!F#yIC)t z)MEjVEE`sa4T~G?ZHqOcQP6D8Y)wWrjkU~>b33yo8g3WobbCU23dV+?S%_EKxiqyd zgC)N%wopS~t%WBgq94BZQcE=#$kDztSVgYiQ?*YW9Qo*jf4XkS%pfs!^1Vp_h~Kn-g8}AsZXk^+PQ4Zebs3>!L*@$x@jNUi@dqz-9{EgO0y@i zzFrD_{ji?(r=iF8BYWba+R0E>8t5A!_L0I!Wu$wgw! zcvxI7D@HST7~}^L@8m@%leEKNupq?~lKc%BIK$eGa1l!jZl@Y?18QOxlU|XOW@Gul z)_D0hgRG6I1(&TXrqXj%T-$rJYM3lcRwlbAd+XEq+8R`=&kum??2xar0ehFj>G^Ff z%TnySYv-$)7TmJ*=J9e$mcppWaZjk>o!;xM9QsKJ=A3bhM?$UgMr>skhg=7kKCU){?cxH>_`XKd~P5ek*({ee3wvby0A1 zaddGFun%xod25XIMzO2C)LrW3=JInbOZg?1<-TX^TiyHZd)=~G*S|o_tOrZZn7P=* zj`%WSrqmdK=>Vok0h!rt2BgBJNQLWA@oLb*0}vrlI2H7Wm>tC-RA6E|rqEyrVf_Iy zlBHtGc8~(tygBx#{S@6eK!PihM;+(BaZ-#^H#-;RT zwc5d6Bh)B0_N2C~1J$@F%MBS#8Kf&0Gj?^wd;_>j;{aEsZ@nx#b#*Z?tx?Se(QJXP zP(1C-rU+)5VzD6qDyBOj$(KI5{7MVi{0-9>JyS@Ii0PR$=!&Ucs8{OkNo^5oYeJ!t zR0HkBMIKuSU#%*1oOY?_jxqbROWLbD@4~*gy`b{;amyA@nYeW04K+9yGD&W=wnHW03Vj$0F0!YHm~D5qU3xwhDC$2zaKc{3D!tRgHqEHPd#=XX~lLSu5x#c>oq2qn>X^t@^Xx?FWB(-o(H}F zU5ILLY6lmr?1yi;eNpe;w=&-Ff&qNPAAuO7MJ?(~aXt-NgSHyl8fA?uGtnAC8)s!1+)Vax0@2t<6(r$9JzCd7}%){$*&AM|h5%fixOi4W@A)C`o!a;}z zu3oY^ANQ2f^G41n&2g9(9y+>UJjO5osR@fc8eUwb{qWbzch^n1f7#SYcUR?hab<+u zox(Rg`uv_%A7cad|KX9#eP22-t$hFeW^(tlk3IhTr#C+aB6$#E;~L;@H`=L2EjSaG zvCgvg!o6&N!M|WxHqvZ6R$3Ix~&B_hdcFgvzg z#t8_S{rcMr?yT(CYVT$*Y4D!&lCxgyMb3!ZrBf4JyV-@$xvUQD&imj=+trB5M$d_o(Fx9Bx=p_S@Dw-^zFp3dT4iEr{?NY;?c zX|fuv@;}#zx`eS-Y`tH$U}uC_dCdD)u}BtsOvP5PFQ41(IY4ekAu??TR8x;?eFIN= z2kC>@sgbSPwkorA@Wt2Eo7LK7b0(Kel(vm|-G_Z8Yj4XR*QJv)Y>AfIlZ{z@>C!t} zZ?aggW>N}40^d*v@_E4@sA68J&lAZfC&fZj_Vr5pJT!Ul1Jq-0XN5T#K* zU&t5pr2%?0t1=Xs6R3fw0(&Wqt+`M*MKRD8GF|oa1yWh2h{Z`JVu;`-gxOLi zpRwYORPe8_xUgPm^a3BS%(ZQ}KRNx(^3d$bR< zpYG-lT)u$kXupf!guhs>J>T}0liuUQ^mR9CJEoER5S}#g&HN$$eg156vCSfWGaTTP zFEBxLjZvHKAs_u0-Aid(>ZPdE+M0z33G0Brb8)x*s2%*e7M=zE(&!T0#uyiqV%}J| zlJt@Kcq_xkAXm_Cm|WMcsokb_PYGMaEyg{<9%FO6_uHLlXGZM`+6{pdFSq-$ozPD8 zr^PCu+@zo6#Sj(!>CD0HRK$?(=cs74*>VGEX^~t749H@Q*lp^Vk~$ln3Fgp3s#J?V z5J^viV>8omT^desExT(u{B%i)`y8_QL@c8?Y0 zzL)!DE@#Qj%x%i$P;M}{FgKA)bA5SVm$xNzsbTjdua{qd$ON3{1<01meY?bI++Aw9_>5z_Y_gj2J%l#>#c^8Z!3x9n1TzT%!?E_2`)PRg2fhFDKWS&>HA7 zH`=6nMTf^RMw%+o7K)*_td&xwyr8xs!p0gTRa}RhM09B0bSD??R56gvi`H9KzIDgBefd_ zXOfKPCv_RJc&C<0BO7=3p1SxB#?IG6q`d)JYJ$9Mt=jJlJ}v$1_}N9@BxiVH_whcN z)L2J4M!IXfYsorcowU~2B7aOi<3E=_HlF5B3ujE$t&%$fc8%F*%X}Pdi;%vGW z8azxyPAWRfM1NhNAwUA=5V|IjN~WX9^rFp&%k|dDkX_V!DP|5F*E(W$XckJo_Y=vv z%3EK*BEIn-IHn!`{z2{M6*#zN#*9ZEnK5Gx$+{N{E3`My{zH3hapIZZKl9Ayjn6#8 z+PhM_g|3D6S|O9#pmyxy=;t8z7*}R0bHoCbTz^x4M`hrbfXuS-whZfn_)9 zW4pFK!Lq6wpzY(K?KYH-9#c#0Z=!ngx4?oDOz%BYSlOf%O ztJ;75pPCOJ+o$>|^fY!mcQEtxa3SPjR1OQ^a2rB99BbK45c9h&xN zIp(x;_e`9;eDSz(4{Em%ci&;lHeo9Uk22)6U?VZMkhy9*Q3MO;h@j*l*(w*x z4KkJei|m{1WUPIWeY^dAJGEO;gv|zk1`yJOH?!#gTg85yhT4W;t{C(M76<4l0|*1` zyR0aw42`I|*)y!VxkP_=pr}iY{$6HM7m~??V8ff4P4~XJvaV)S-|pS6FQAdNH&>SY z)UoF_?H|y_La=Bnv@xH|P=7Djgs_zBv3bJl?CYFsb05iOO2Q@CqM-0LIpj6v8nd#p!eVxo+WuDKJm-AZoOZY6FLN!<-{5*Ae|OgI zu&D{J^4#lPpZ{!rb9*7HCGif+C_<@imOlBN&B`ZsWo9SKKEGa81F&yY-iustqlkK1R23c-eoaR{YcaPmD1r6L)C$R-FtqVrmqW?crist=W>T!sGn3Ujz@ za=licT~DP>tjOM{M9B`IcFyhtFpmfVaWr49{7H*sm$m!ma*NP zMmE3x-3~(;N-Ywt0rpPLq_a0(b0fLgxvBT#u9-+@Z*a0`wh;U6GbT(g&2hT=YtP@X z@Y7SDew3&EY#TdzW??Wbf?uf_eg5q6I4+1@KO!%!An0=1s(XxFzv89)S9a>rE7Kj$ zaHUNiP`%{A51T>bGZSaX1N>v)!QNHd1remgN;^we^8j;=MfAClmvg(2$L?@qkDWNN zmy< zvSecC{IXxkLLCfm8jN6Q=hVFPU`#>0!HIl^9F%W}p{|CdNH!pa8WdS31Pib)m$6Z1 z)ti~16ymsQ`GwOS!2DdN61$FEd;DDF2jvc_L6UMeKwl__OK}p2V_9|wBb1St*#!y zY<(MtG!RJquY3BqJ9Ho!ASU*Ig&?5|NXdv#shyAkD@Y)U$jbrbCK=Sm`$eamq1cQ@ zed0fCDC5e6eq29c9k))<$Jy0+?fZgI43zRzHYn5>Kz{1xow84H8I56-M|1fOa-NcF z?1W1B9xOZxKt#QySJG>^{Z=gISwxyGev8C}XRlb0z=jmOb(`Z52pd|dh1_#OI= zp5#x;-zg`Jzo1{}1^%LVLH4WmB4js5nCnjKh69L$(etpz+7P_Z2Dj7DP#8EPzYo?GQd|w95(L` zVxQ^t{n(#$^lauoHSwRE_pkl`F!8TbFuJnhJ_@056fq{=ZBR{R(4LDsO>Ak(MWA7W zYGg;w0S$A>jlkAJ8CdB=8!4yO?dxkj91ivmhd2(`XwBI6=00rM@eX!r&uKsG+YJiR zkF>DwrBBIo@e!aSMzEwhW=Xh7U707oMaepGKmHtlES@v*lIW*iAx|hpU8H`v2LBG< zCMppe6+7duVig`Bt}|Q|E{bvvjfnY5jCNIe(?QB>RJu+XPHU8jbhD9VbP25G)hOe>TsD!Zsp>8cD;ZdSI^ee|$$fwD#N=XTk>%zlsUf;g43 zz`$j+#V}Pw%K8vClD?Jz&g^a1A(qfz3^<`$+}SZM^4t1?)ai2u%yv}|oHj(RT5}+z z)*O)OJB4DIjaV3@NrO$BOeaj7iDQRJv4I`7pGyw@C;x+#NxxZfqyDOhZ{U@eMy_3U z5N&K*d63*|8`bobCDov|v2hk#hcK%c>-~pW?-}tT?EyUMr8n>ZZ5>{&Z9VoW2@_8H z9A|5C`~%!y+sAm&tPQ2tL+?3oY_~m+#}3v+uh9~d+$Kv*WFRo$-EfQ~UnT1r;{}15 z3}(SfkVBvjLP1;D5P2QMAuV{jYByL+1?D^ybQQYlTpSx#)T66NOdoBur)9)kY<*f8 zr+R&{Mf$>+TvaA|iD1G?c3g(kw9c{AA`R#3DIXb4E@5KamwYi9q%v!u_54XTKvs~n z8{GCEM(B1Un)Pwtl)2PaH(SBQb_Ex^lUmV%1oTSc+z!r)^%s* z*u51zQzs~}?M^7CUUo?ui)iK`1Ig7V@XR=>UBqE+dGDOwqZSPrI>^_nWc*D&FdQ@a z;WF7@JHC6C?Q_$uHB905E$Zu?=1A+k)UovgN)f&oMwCDA=nA$N5Z)rGs1eWskc%K1{MGTiU$8A*#R z=PqUIuj}EP@9UoL*Zu3q^vsCao;Le-+jeC@7!VH$hs5Jv%P-}5`bp=*P_-<|Lt6d5&MCU2ZqCJuRQc&8b%3gi}Ch{Fc?$;&vJLi7x&s1>GpR+%C

HO?s5M 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 Date: Sun, 29 May 2022 14:31:32 +0530 Subject: [PATCH 452/857] Added Link to K&R C book (ANSI C) --- programming-language-resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index 6bf555e189..f05e6c4e5a 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -2,7 +2,7 @@ - C - [ANSI C Cheat Sheet]() - - K&R C book (ANSI C) + - [K&R C book (ANSI C)](https://www.edutechlearners.com/download/books/The%20C%20Programming%20Language%20by%20Kernighan%20&%20Ritchie%20PDF.pdf) - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) - GDB: - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) From 68799401c95f6f70c040f683cebfc15f9462065d Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Mon, 30 May 2022 13:35:46 +0530 Subject: [PATCH 453/857] Deleted Core Java Cheatsheet pdf --- extras/cheat sheets/Core Java Cheat Sheet.pdf | Bin 294622 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 extras/cheat sheets/Core Java Cheat Sheet.pdf diff --git a/extras/cheat sheets/Core Java Cheat Sheet.pdf b/extras/cheat sheets/Core Java Cheat Sheet.pdf deleted file mode 100644 index 8ed71c5b6b7ccb0a080f07205f56e48383862b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294622 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

HO?s5M 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 Date: Mon, 30 May 2022 14:19:18 +0530 Subject: [PATCH 454/857] Hi, I have added Java Cheatsheet. This cheatsheet is of Java Fundamentals and is of 2 pages. --- .../Java Fundamentals Cheatsheet.pdf | Bin 0 -> 397710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/cheat sheets/Java Fundamentals Cheatsheet.pdf diff --git a/extras/cheat sheets/Java Fundamentals Cheatsheet.pdf b/extras/cheat sheets/Java Fundamentals Cheatsheet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c52d2800f805f9be37fd3190129d3cea7df0275a GIT binary patch literal 397710 zcmc$`1zc2H*FR1u($X!AARx`qAR*nLl+p|^bT=rWlyr9q2uMpSDM)vB3JB6E4Zj1T zkM};_=ic{u-~Z?D;LMzT*4g{J*IsMwbM}1qqI@JG#sFqyLqn!aEomA-Lk5GGL6*8E zXvn<0Ou{x$h@G*eg$TqBdS8Txg&E8a27@`6x!76Rz-lz#&s*BuKfj=1dSqj%Z?6Zv zJb-b8F@-ULv4b&(F$3N$VXR>EVGL-Pl#K1npqJ;RU?4CKz<&^o7>qrP1#lJu$U=c{ zcEC3?7+c_sFi-;&II;u2D_(tvUVYbvaRy3kftMao3IVRy1&$g1aD^p|A&d=h&I*ul zhG7IGEn&=Q`1#S0p%(gAon!g6mzMSxb|4leX=8m`br3snMgat3<+%FPyzG~rBGgWu z2~ZT164c3#Nzxo*2o?JNA*{)yNl_4F zXJZd#Qj`TTGcvOPpAcJ9COJzB==Zuro$SOF?EsZC=|Mo?Un^z%Q7M21VrK`nv0xH` zIvDFg6~u)!|JAw6F8mlmK?@5@J6jOz_iix>TUyvbEiMZ#HJ|`ul7;FULxe1y)PX~0 z5IZ+Jh>MK{=rzO!5CdHcDL`#4?QQg+z-5;ZfXjY%`d4_DD*Mr{2vpBfAF2)l%t@0; z%-9S7%Oqw7bn5#FCJCsqp%Ksk`*%HFs^Gg;WS|y?c19o;Ze}J$dtJLr_Tn=@6qV9TL=tgP8JHM;xQO z?->)&Imi-fbicSU+e6;b-5ClFc%&|1UD8biFZgV_Dg%8&cs6-6eck?(mU7nWkYiUJ z7ppD2CS6t>OAS4#z93;qyN5}}ySf#5yoUn4#Vl%}Mo({b7;TEHi{=L06G@2T(x%g5 zDZN9vuG1i<*T+j~U#c`)yKZpjq<|*Ov!0x_^0+9|^d_b3b|XR4$sMcbOV%OExI`&S zI0~-s`0cq18yv8SVwO0U;3FQv$;`%Py_c19aBLzK7wf%WyUkrJHp_$za+riikVZX) zpEoSmzp{`Y>iXdcoIeKbQsw`$A+8_AKo}4*wzGW%wGp;7w*rh5Fbgigj?64=6s;h7 z(0^Ire;(%RaRqa7F*99__IC&S9}n_+{7itdGEPg6HXh&MBjmHe`zX}3>F<*1$=YKY zNohT?a7APBZ~DHyXZ4z`Ot;ld!c!RU@tp8mrudNK@QT~J8I}QM2i&#=wm$0f^yr^z zPV#CF)K;t9)?KrV&olOkH(XtpzNL$237jqy^whd;T0Hw2cQP`AO;}!6ygolqrcvXP zp_)Et)G;WQcQ()?u;cia9d=`D?ySOMiX=!3AMcA`(9+JLz@f|6{>{&@+Td3{<1Rt9 z0vAE~F0&t>dFCO#Uh3{D0)=8`ky6vv$86ssQ(M9$w|g1Ozq9O$J?5C<=Rt(0$n@T@ zC*dn@T(mX$Aca6@N(xRUOr_c`d@36#lR%0v3MMc^QAB6Q;b0?)G!B$G7|$+q5{i1W z4@a4hfLiU$ULn@PZD)>{^IYRo>Fw-rAuz#%`?^wr5f!R)pPRhL#^jS-Eo|FD1QNNd z6ICM(oYJ1f_P&Y^RC&=HGIUtIf0T8K$2KPFA@qD0`-z94%Q47S^@aV@)XK1hIfk8& z+?)qD8Ed{4p_v^t7mQ51Jc}9Y6%7c@=0f}!vQ-ox!&0~PS!q0g|3)s$<5R=#6Mc23WhX`zYaJMZ~ zLrL<-?wo78pLiFtvWjKV3{h%*s5ZO0KH(10-!|%vT}i|(X+L>312H8gcO^ zcpo?yWu8s~C~M{#;$ElnJEKrPgzn;c?6YXxQ6aId?Hl0c2ArTZ1d|K}xF@Sk$2VTG z%W}WCP2>j-Hd7PW$gO8N7$*Yvyi=pO{ld&rX2qjeFZA~4qeR3)=CGHs;EmC{tWMj* z-)<>V9Igb%up`!H;H|ytv@k2B_e{13XsahLs@l7ACS3lUlW>4wWbLis2bYpqhXn>F zO>WKR7ZNTv5Ql?#{Wb1?spODRr8Q>QN$qi=>5s^Ti5vY4nPDXIHndv#Dr?U2NwwWf zJ>!dFB}S70N9KZ8YqkjfnQw-jWhf}3Q`a_8B^M%T&KHh=rXoY7e0M@FzST^o9RF@w3>_$>A!jnUG>}ILW1%RaNiN&pnEiG5XT}+|VJ+%naJs9DZsnU! z^H?PoZzK!5N6P2XMSq%k`|46AJX3Ayw$ux1tYS|xa$$(A@1Cd(Q>(;B=l8|II$8k2@c zIY@uY#+c-o(|z5~xU7l}3DSty;p#3kB@wefn7nqHK11^eTOa%?UO~aynR&B$kfp_Q z;%RJU_SW#cE)jlMHnyj!hO^%bf!9@;V8$FZeCvsfr_0@9LzKPDb z9h4m=E!ejzch51sQgVH-iac=6QUNi!pg);Dj~!15^Wx{N$xx0+9E{(qLiII$XzgSC zGKT66R;KLzY??DHu6J$8wcA$OzVRyD9MAYYvV6wuS$&9)SE@JDUmR-<269-Yo3NU# zFqMFVYW%VFc*~y#cx8JQjn^N;C^J|Y&B3z_rI6etN9=i>V0-Tg1Kvcv@H21rc}9%N zEqtxoiZJUfJkqJR%dbbgEMN^kQ9phmJ5N7zyRn3$WVR?Z(!gHeV|(ReLI$dZ<)CIb zx$=Qev)QQlhz? za2PUZ{D1)NhLzr}8xJKugH6WieQbH7w(jRg&G&^@R*GMHng^J0M2tnJ{a&P*r!v+wojtRVLKa&llU!4s;M{L#b$)R@hLk)`1ptVh*5uCsdDjbyM31@VevsGWYRqz*2@tm zrHy)FJ+9f_?^%W9&JeN+BQ?kK1y#;du+V&X9Lm^;-n`KzglXa$LSG1`IU5%HRQ`Pa z% zZFB#apFx*1>c8e~@a1jXkDIW6GI5LBK%D=>%nb&n>+7kT1I+#pW@|3yUvJ6Q6V)9& znNdYb(97%34~D6X)wEcm>BX>;PGSZKw3}Zdpc^G4-Sxr{Lj3+#VR-yyyJdGCXZ>DD z^i=5M>eMQXkaCS)%0yaAZ|mUFvIeAva)K5yb7bzp55~N%T<5kti}wD${vIurQeHk&Y~g7>3rI_`~+y{;aUe_tZ%OcCUO7bzb?Hx%O<=C8_$0ix~9 zQ(tE`tlBYgWIE8$VfeDHGb_mTh|o52_fcmDUo&?|Q}y_wG@my&8rYXhx_t_TZ_#>V z8fIEmL8a63X#&_s8h(>r3ue6BI&KNexBuaT0C28KT=!YYm^A!zjP?qhzyv?L;Vv|L zJUx}}GpDJJs^)DSM&Evq&r02oXnCGRv4+3wuHkHDeO#1C#}m+Q=dh^a3rgZkWkul8 z!-$gR5l?7iHbm_tgtu+}mO>%zO z{HQOE8XW`p`WeQWY03RD$veZhBuO*5o?8xd=(7|K7J^UgIG93Vvp#$9!>!}k;Tg*I zw)R`m2Gh&8OiX`6bVEsXcRMuIMHfuhb3k+f!|V^3>I2cnblYaGxU8-N{9SKLt z7rPr@)QfWSnSEnTghh1l+LK;0iUDp^Hzecmjj6I+BhIz21TXOTA90mTyYYSb(xA$k z7hndP+L^0QvcB=Q9^wL3hvM0H#P za{X&I0h1W)*;`Dj20qzU-B>?N1uz<)L%940$LYUy5b)0jSrA~jzc|RRkADBeL4aqg zf94-t+^pZ9?X2s|bI{R7OOyk!d3Vq6Ww=kYh+$TOy_90k!xt0Hh6-+Tu*N-MFp zJ7GdKM~xON%&-4Eun#M(Rd@F5R>maNQtGAO*l2AN;3;O;>f(_kHhz+@>z8%Lb;MC9 zP{(r23!@!!bi*|#$vdiipAqzFO{r;Q^hCS*xRYOqBXEDF&r+;-HO?xiR?}>HcLKRB z8Q!ry_ps=0NGsCTBig{6u!A3g95~k%h~+K%^0zWp!^^lbLMd5^qwLCvSP`PXV43B zh5ez^-P5$vqWH5fQqja-LY!X9ixKlG?bE3& z_jDjojO*MZ@Zq3JzdD7PKyzVc#QZs(z?nnLTNL~`K-`U*g4Hlb6PI@>BD%M%s|&Pw&eoF1RL9J=?0nx*}QFO*Vl zgbd;7YVP45&1U<5Sij>p6T$pqP`>EiHd3uc9*rRCuigU#(_2p_7YR-JeGK`ziUR_i z`H&}15DU9Y8DM>h z^Ri9_kS3F;1+YS5Y+=YGsSi9;8{0WENc;>Km&+^6OiGr@7RHy$C?L*Xmt8I^`gPd_ z{Ofwp@6iZZn(6-r%H>1;{}{^UoyU(Apnrq%>k`mUC?Zf3h>E=;#KQL9F>w7i>frj1 z>iD^$@$2CH3j@RNmBIDjD1+-iD&r4pD8IE5Njr#{vEILHh5NtJ3ip51%Fi1{V5N`g zsj3=?frFEUnUReP#06$$sMK8O3b;tWd^cn#h z(67s7++SsXbrnItJ`|ah6(qkeEeh&gE_GiX-#4z%31JAXY}s zjCz*lOu#ZSlaQs2KGX(i?((I{qyVf)s)MdI#CfGtFgy1p&hM(#{OQ*+#uld6tzE9m z{_4dnzq-zU2hG-2&j@0#`_~Y`T%4C9&B@8m$if9;Vd1<~J0~}ok>j61{MEDmcMz}C z%3x~*h1%INnLr#M3WAy*o;Zg26zCJF}Ah)NBCJ-*{<-jURn+dVC4T0 zKkLtc@=x&p*75$im#Dx%yaOU6U<+4B{~5NQkrTl7n;%oIAJDmg-{=1D@U1CZIQiaY zYDT+n_14o*mQoKfX2)yM!$m#n30lcp$+tT0Ic-%pItQGdEqjK)o#0gpV2FO}5CSf@ zSmg*%rdPRx7to}AK3Cyhce*sgSoi#R-JNk}vM$B#83dQr>~ORH>}b{iNn1V#{JnMFC>N?lsrEgy^ z7(egGugklCI9;tPyEq*y8#`+tW3tz)^xgafACp%wL3Wz8vFKiN+L6NOK2?SykXg8M z9&#}Rle9r*&Vw`*b8!|DGc$ol)gQ&&K-(2x`RvOi5j4(iBoim5IX+tNaaGIadb$a% z9uDi-tu&66ezv@D1x|Clv!2AF34@=fkj3Q01`W;LaqzAvSTz`Lho|SKtH$i4@n{6IXqG#^EN=3Xl z{xyZTS)ILPYIjR1mzW4&)6n^K-F~k+Rn=1VX2l*phqI&mgu}!zagm{Ky7>kOGJXE8 z;uVGY#@+dXqbY9^W4qflrsZ{!)(KS-AI#m{Y39W&*%oSE*hg1im_pj8T9SeaqQ1($ zC2{94DP1hX+c)Yk&EG3yD16{Pz&R|iUtaC5Ho9|;{e`pMr~HBXbj5j%d#uanlNSZs zVZLmp)4@eKAlfPyTkW?Yt6GSgKiP zc&;!ct2PkuerQ8;-`tEdrlGB%XZ=D}C(6dRp((ybl*os@Ij&qqIhNJje(GsY>5%LL zon)l1?hcvx?iR}WPiemO3^>*p1X^hC;~ZyM!q1%_ok&xQWKo_``;>L}nYNs1l$<}C z?_WLHTHEh1&077|sP13TWw5=W^i67>i>H5qUrdr)sb&^-Qu}(FCD_2lj z8Sth`S#VRx5!e3Bkf#1r*^D2w#iEeCDx}mL&v;(tAgsKLVqK!7NGFyV%7EFM24I<8QR`iqQkNex@4hs|K^sIeIbOtOVf)t$E_+ZGqq zFx6+&@ZszOpPSAmZ+*VSW@gYh5sUHJeC?GJ@dJwK=34RZ0@95W16Hp_P>E4D08NG@ zR=M?@X6R~B4!x@_em?Soc%sYOC2H+WIph z8XD&CW=!)LRxrhn!l`i-S}Ix0lYz>!9cTslU9%!aluKe z!$+l=DHnWAqVd9#(iutW{@Sf^RDqdL{Erz^*dBqh?L|#w1D3X0W$>vh!=~TrhLF=7 zBuUaHhVcU;UnTH-+<$oJ*}Fcou03=9{&XkAeK4kD=|Zbl<*YE9v0#ube{n`G+Wml-p7f*TH7O2P%D^6uFz=khRML{~z3~Qb#eKC+26YOm%B6F`+%IP$nrCO~nQK&O0}G2* zJLS<`NVbX9r&67tUVoJ;+Y=Jr)nXPM%V%C~cFL=A#?-~Aox^flLcw}7aNbJ{@7+VD za3B)!yatvai%T(63mL&bj?VDQU{rRCE`M$<@>~F&zAjX7BFFHqGpQ(!QG%@@^!>!PWDbhyASyp2=~;QBTf81ox$V z7Z)wxQ6G7gtf_r`Uz$uNdn2E(9k+6$xl{xPuv{pxYgyypnKq_QJ$=flYGK^DSU);5UTbW{z#ZWp=E*1^oXG@G!@PuSchT1usBNaGZ-<)$=Na7MzD)Zwi|cOTai zxTC(UAn!^)?x`rUTlh{oVq>^dozt8Zx+r^S(l`g>&a-Y}QJkzqbMiq<5)6sysPCu= zp2JheV<5pJJ)51hNQJYIy}hI-BG#&DkA8xg69?xi|7HZi?beC&{X5^(c4i$*I*89A zv(sLe#;+@iZiQzI$>Kg{da+IA>r3rr>*UQco!i#LYDU za2>N&{jh!)i&;s+Vs6_#akF`fW%O|^`g|P2JKMHTzd79le`6Rwb~LeUkguMQ>LwD1W7lvGw!V?EFFn@iGxajE zg09cu1E=0wl;u|1FQZ2W8$ggDYiIYj}+6_BI0%3}C=6v2&U z#g89h8@|$N-;Z9wQIZklTRtbhf2XS0Kr}l9PZDj`Ya3d;0xz_2=LF^^v^ZVv8BBgS z%IkY{1(f(aALke&Ur1yW#3wVVV+=p?I1CyK?$ub{HnJCHwc;jl;;FGX!2GP&msk-f zP5cfi4)4B}TdX|S1>8-H?jCDad4!MF&R;52?Qn@-Qq|Su$x^DCmMcX_Lqbvdqjb`1 z5|Q-wVBt@3EHa9s%w){ln(oO^#`70K1)Vwv1^Mx+UYVyc@P$rihwQ@Z=@t}{=_d^8P0+bM&V1&f-LLX z2g$&4G~ndns%E;w=jd`WQf(%#)gZ!M%F{=JEJL`G%POw0=(fl3L!E*wAzQ2x!|ly% zC~>D6f-Ko0AE_|tS$P{uJ5UvZ&!A$l^E;iECCe*C9jF$$@!Zei0Dw;ooV=tp4PI5| zXodzV$(*x%qBzws;F`}7U(*5(2BotRFwAeX&)a=lO3NTH&ud!I4@l(a0yi78CADZj z42ok0H>WN*y|8{s660t6rGPZR`b}OQO2(JRvFgm-GVhfF)0Lo__oI|#Pyz?4A9$ZM za{0?HjbL-YrOcI(937p%?y&bq^&++o+Nbn3M50t$Sh`sR%8x*yBtRJ7UF;p zr3Cl4Pgs!PjuN`AwA>aS%1V?u&8Orc4U?DWV~C=e^H><^1!<`S=;tuqd?*vG*%kMj z`YW^smA2x|?6+6a7)OT0tdv0-zPJ_(yd#|R7$b_Id6D~FeGNheK_~q-ur-m17wJdv z?VzTY0)Z(bIZUKo+6x}JEoA&9FP?N-S^-Oz7)~zrPoW8^%t8eA1rs3knAfp>?L+5+^ z8o&9#cZl?s%}%W^nd@svAPu9rx(@=wL|yz+(s6HC7!IOXXRH~{zU6cB1FQDb2%ze2`ZEx6?=9e0ah!x1-L-~%R!PB2KOz9_Gm*)4V+E}t_Z zpqrFP9^WL;bV-5mzBiS~`(CHYUOkNjHJO**hywFpBe2n$zuZrJdoQmA1rhtfW3^yU zFTbSwlr0|2Mc5gOTq0aH8Jpu%Q3>P|SOt_Q+&p;f&)P}!zZo<%8f@~l^lUw3<7EyA z;NZoGugF8RzDxJUi>ZM1209x=cD{*Z&`UWH7NXlJ++iKc4E~b3K!8Ej%qtj-Qo8Co z`!MElZk0MFCnF|PNc$ufS8vA13SKjMS!G+(!Y%Z@5|x88>@qLh2l%y}3R=&}sASee zjJeUVs2tKFN#GkAA8KTU~$XLc7PWA@DmkZP_armcM-6F+2S zr4kfXD3Ngku@IVJQKf)vfSG)^v=;+!;Av-n9CMNL>&4N8j8c+YNZ9G*Qo#UPC7gx# zgS`!tV|v0UnWX-WZ#8IbrHvp|8YV{d9KvA)HsGUF@3<}2Qf8jV^*xWN43_g^k()lk zF_Oe|HHqtK9Vm)e9m`s&60+mS$Bu!x&JYkech6`F}VrPhS8)|s+5u>@pi z>!Y+P2{TZ2(Qc3{lFpUcRwk^ZiBQp#2D1n$wQAcfe&Vx^N_uH5EahF8#2t@zZ?{tG zFtvr(WXgCLoQwOc_pzyNaE&ND17MugPxBv1Az|>>n|LcpK^l67+Vw>evP(ifs3AG= zW%u?!Y(OiOn0d`&T`l_(3X@9${8Z2+rH&x;LX`SLp+^?qE8Q_&Qa-Bj@U_?QRiqHL zQqj(BRF_xW=$N&i-YKRsDA0H#WpUA0P*>%*lFO-mvb2J2wYyh?hJVMOt1LPEjuAVh z%%L9_wRl4dMS`T`jrpL1NEAZHB%9lnbo5PvEh>Bsjmas|dOffMHYE2n+!6tp9#*MZ zJt&U7QZzD$U-zjfavJ+r_ml2?4I3tpad2&tRSDFndej+xS{})=XzD?(WW_@naa;P9 zuir}t*dY4$Y_`d+fR8XUqipT*sGLC^shbJJN82uyW=YAn#=VwB5{0#q*pId~Lmc0j zSybh~AE4c4OMZncD+0Ue+sKK8IO&-{rJHIYQbbd?Sig}HgYb>Pn~b;h&}cR|ZWA#D zxR06VYo{0AK+Y>BAt#Zv@}c3c?q;G?ev;Qyni{PT%Up|qpCUiAjeeJ4&LpRP<*_u4 z3_@kQI^DG0#bP*xOq&9Vzo|G$N6kHaDpSc6!D?5h zm&yg775#6@xiy}Q_Oj1o-3{YfS0ii<&78e+;#wc<9nk$Lqh#fHyI-L2?o!FfTqKQ% zU_)*JnW4XalmY|o^y=NR$d_K5y}Nk|CNhh|V~q;PShafRUn0Zx%M~`l=`P0(A1<_4 z`QUlBG*8DCJt!`m0o~F11MfV%bClx4UW(@mrb~;R)ea?>Or~ z?h1^RvgeCD3pRsNPO?vz0;r-rvu{sQhYXb65abZa&w*HlMz((nGf#m( z7O#laAeTv{8wg5l&oGcc4tg7DmD?7#^-0rhjPjKWYBKS&6(pg}%7`kW>~XIua_>U9 z81irqpZhOFh;NynroOq~j!X6Yp^K#RH%RPLhrHq)qi5%bucm7g3rO2|Tn@vCBOA!h zTm6Yn>LPc7k^ND$pWKd7V(bsdHUE6(We#PwDg@v0XHI&jJf$pZj;ALHlV-w-+w~1` z9!-h&y(zm~aIye~mUYU$&_kS+ylf^i{Vh1j6*kBigV34_E>1E1oWe_+2`nO0BNyvf z>|IY&1i?|yRo7(RTs(6bJC}*K9@b1&m5%H#nYChR*1i_790qE>oL-Pj=BY>mX0bX9 z7Kjq9mh|v_Xe?8HWFrANlDG;fGXsn`R!8$zPT1nuo7l63#F(M6SlFZo#FFZ24>D3l zUJehGzob@0#wNO#7}`O{^1Jg~y_u}piF9sdK**O5F%G`>pTh8U}#K>`Tc?=NEx*ke$` z@F^NnbciK>4i~6%c)@4ThUJ;8D#hhdrm{v(xBRsr-{u3(8wF(ST8i!aOl)~{ZeEPu zNb}xScY84`gb9=-9X;qmNW!%7sdTg}?#!ymqtrN9Kv8cgFj78G#R=af+z(xuDmGJZ zI!WtGG|TImC5$HDeXeG^H-R2VspQVXpTentgMNTU_RwUuR<;l2epk~#uNIOhJ&dh> z2*jd`Od1N->VhwtQ+Z&1TB7A;*(bt8ZLRU5Hc_ zE}Y8tn0J5YiQ-qG$#GovyHS^qLsZBgVk=G+uy$2p)c|jqr;jU}UkoWvUyr++2O_AL zb)xiXiA9(5lIBwINzWrl6qAt@+MjEgu&_kycAm`J2qt}&BrDmfRdqt43FM5zMX`0A;<1KmityYm;2r77u=rfNA9Hdf=5A8m`6S%*W7KRgi?M>Z{($D*UAT6%_Yl}728R4*a9)x9QJ753oPDOX^?Gn z4E)xIO?O@N=##YU@mg8q z$qB&OX-~=hk}|Uc^x3MDB5=Ol30B_PN=7zjJsjxv`>j|!_4{s_C^a$S`9#V^Dhx^y zrq4n5^}7RaAzGHqo3hshlbRFYXas&EwDQ+%p`kf<7!q1n!oNtQ_W732M8qu}={9{2 zr&|{3EI$K}gpWIIIj4_W=!v3X#Ll?Fmm9p<4lA7`mVJBL(p@ z?5^@avOdjcSiuGY`LU;)s~V1WJPVLVC8zC=q7U znMFQ3til0vL=NRsL{m=!TO)M#!Zi5D-n`*5)6FLvKDugo!K zB{uZnC|S{2lD#R0ehcpucV9O6L{{BmgpVYrtzx}K>!wudE5u0R0v{3jiZtp}(h>Y{ zD8V}+RkG0hnz>AiYMC9>ybfinOVK~5lWQn_63GaY2-Udf6(qdq z#2zE7(xB2ls9%g6uAVQS^1?EkcIjB+5IsC#S)yS`wyGI!Bf4-{F`2;o`KN`gO0rLn z?C$nXVSx>JbRXUgWByRKO0>PbkBU`fuZ+DS5vw6&;>545#W~=bkAsC2K5t3)T#u=) zPDG71DxnG}iIC=|Y=5M`X5nWgX)NBbKpyYGxnJ`2)gxT$!7$K=R#gKR?Q~IAWlV}o zjFPotbl^=zY>9gkj4Y<*WSBMTj+Lg6CdsusD1BQB4L%zGnUWAa+uaOaL?2Bq z9S_gm&V0R*%M+PP5daMc_OJgFdwBzaokYZ1q7Jz5{y%UJjaF4svhZ^U|V-4#@aod!l7Oy`z!1 zR*fbUq2SY34N$)uf_+NYH&Cv}4#Crp2)O^;;vajaN%djBUfi&?<*7Yeszy zXl(1OPo3mK)B+J|WkCvldii24eR(a&1$?FCYPC96BN0_$!wPa%Gj`_I&OB^fPU-Rs zvt7qX*{w&m@jOluDeP~k-@Npio4nsxFU(1YXBO#t9>I{=N2u{-P?f!zfpdW)bgJx8 zIeht=2(3wzxxw8Gw()M?m;eqL&yKt%KMjK#H-4J%o3~n2tPx#EH(wH!5$t0VbYa{% zy%QK~l}P&Jjns!DzqhB(c#7UAu_XE3k12-Ps9AIs4FmGs^Rrk60XMdC54CDICyE%$ z7{qNPW)+qM9+qa57AvcdCZ33Gjov4Aafm8f>Q1ijlTVVh+54)zTNLG|f?u8;eTIum%QiB4>k0Okc+6b(}uRuhQ?JL~zN&p4zaN zJ)C~-Z3YJMCGliMDTFdJ3KqM(p|DJ4P>)L$xVj6S_wmS62+!<4i&c=OksvTkzNbvp z;D-Fnx|$;F5d%+n;2G3AC2gwzVZpjsEc5%&KW6HVwwe)Ot5s)Jh`U8O&kn+ zD6t`#1k*7p79%clsfyh)=H(r)v^QLiL%J|S253$p)uUW-j`}iKWj%Z`v=-Z&kT#Fy zS#{=YI{h^z|4UM4zH?Sbp|kj1z$>wbtJ6c3LnrImH}3~4RV&6o(heh?otm^@?-;Fk0^-(2Xmlkf4in|svPZFzQ%f4uOOeR-h z9<)He-hQ!EWlZX<6d`~2t4~;LMLz351F!`7dl3jSFnpExloMMnW|E|)2o($dR zROWH@+|`N*_t!b1wko+aRi6wD1;vD0ZG^rTz+yy z)Mvqw=7W*D(~oi^VX`B&?TWs0R-@je(nSXt`k>; zfWEWBfD@OzyGtqnm< z%F7E>c)hO@s8iA$U?>28R~Ji~1N5+K`CrLOSKCRiIae&-x0Zsg2u#4vS(fjO0eq;d z3xREg-#@P?AeTF9FNqewC--$ZnEAQ@%>2E70Dbzp3NZ5znIDyae_Rc|-ii7Px$A1n z?hl<`?|bFEHIju`{SAwa_0n$Hxi3j0KU1Of~OHUI}q44(ivZS5!0f^xzV@(S9(oOwM({89)|B(LY6UkW)uEZ--*UoQvPxZfwg zUkf1sMHetRVEX#yay<}0fcF@%63d55U*M{2PoSR|#D%6Tc_{iCL@wwOw+(e^J`6liOdl%5mN5^_|?GTK%r3 zYZd+mf+CPb#sozX*a2B$EP)&}e}eMsO!Ze#xUQjmH~$}5Q-0X_cPQ7& z`3oqQ32vZ2li&Oa!mks~UqOIeL%6p2-)iGpQ@?@muK^JTbYKBw<$(g)$p^CQ7+)R# z3D9LDe`nKrzgNSxihg1+0ZidC2M{BW!6zS3f-#WyhY?2bs`bmzr=E(7roZT$wsr41Vc8Zo+Z>q|}O{ry1wlW=SO z)3g47U=pUHOuOV1a&&E>B(#9MF{*f>0assvmv0vN6k9iyP zV_Ln;gCz^>SY%SRh5k4Rpazm-{m3PCHQx(EfNegOhQEgXs|WKR1M}B=95~px|B&-( zT~j(_veIU{r*L`yCjG7~G9sK)vqLC790>`$>J8N!wzgOrqny?o} z#TnZq^P};@YytGc3Cc|&7h5NFDd)SESs_ey7d>C?PY)IksQWQRPu;WTdVCjeb=oB! zi3>Yt*;!sZs5y5!c0NAZn;5YCwwWTY^noe(Vl)ODQDAmP>*9E?58izz<@9`~2iV*o zx3(w$Evqi^e1B$5z@4;(*ln&Q;_J}X)|9{_xxgX;`V^m-i~T(&cb>C-U1YM;O|!U` zo}=8sGgUWSSYl>wY7+ekb8!m!UQ|1}M%{8XDh~Udfgv;N z>B|o?Zam(AH;Clg=ljYP!#8qnDD^6-A>!GWc8mk|gUQwHssPCQ%(Vs3`>c_yuU}8F zaUCWhyWSUG^u8dswGjwDg2yK+dV}J_4dy;;*g}Vp^Fu{a9)^Oq8}drwympzs1|#qX zx+GnE2VQE&1D{IVSw4$loPA{J6#9SwIqgIuOJ1^{oJli%e&)@^E3E0{;^) zKKx534-*bu(%Ty7yU%q}K1URC7K?U(UeL3SiQ*Xy7%#viOy8ILfThZy-j#{& zcZ&U5>Vw7-g_SR!N;Lb?yox zuD|pob@DM9wKU^nu}%lyzHnI$-O`o94~?i3YdY_#TPQb-n<#%Y#b^yvSLN$WC5=vO zz>^O_iD7OMmueMRLDL&qz{*_k@ZD(^H(OvSAwwYZKvaEx?3dcn=^pw5UBY>n25c91 zq)5e!qv{5)pcj+wzWPQb&7Idq@VMfkNuK~|CFtzHmHoIyIOdHzN(Rx{2;notAge-E zC+7@yv?NQt*yQ52W~&}L;!m!h&3%)zGlC#4cd3XyvCU;99VM zMHr$X(JOUZByt2BK#epmwJeXSDbcIeZT(2eSvHKQir@@Ij<(NTf5B!?047`HA}qC| z&z*9Q+J{l%0zOi0kBsnyDoJ+Fj^u8T(!8}7o9&*-;X@)6D{I7AH_{M_(-J%MT6Yz% z;2BL+Vca`z(enejx7L#DCYEg3%nrS<1*7K=Q!;K-zc+MenM=msRSTR)r_L;c=30!) zXCZ#OsLk8Z3f7c$zWvZgr+T?VQTzEa%dTOyepRaLs@X6Bo+<>t!xlv;8} z(;&HghRq4)$fxrw*6fiAwtTQ5xJ>7Ll+*o8QXGEzyKvqNV(0=h$y#8ufY7D^*yb=p zveTtgN~s4`q76nXbtYkY&4UC~a%NnVfs1jEz6!eO^q-qwxSUxZABG5Ye%(8&dt&8v z!fwq1kJ^o8%rIXDRTm?BukyE+azMLWt-*AG(A3fV$_j8vEmJMOKJ*_E72R z-g*f3otVY*BLkYJ{R6l3_O~kpQqH?|lg`h+PG~19QTGr^&l7){HbQAJ`rz`3wU%O% zI5+K88R_Cq5J}yk$lfl!S$#d&jbanEl;7sAt{RU z+ZdmOsjY^U$t=2J%#mGJ%7|9o#l1Gi5$!!*DtW3#-F}v*JpI9((TZP?D;9m$MXU)E zAh?w9ms?xBzE5O>Ul4QnNScvL`9W8c1`SR^I%&%rn|fvE2&IQAs!i-B@szrrYZ^EY zV76HG%iQpv)jZT|!S9&!awv9$8boa&61lU|J+mER{UYS`w?Wd*Z5 zMt0$k3uP$}_@H~Eqop_HspJQ6GhUiN9!3qj3_L=|lfxuU#o#o$_M_6J4@5PIbWbGC zgNsIcwVv0y_lUc5>fC^!VZ5Mlcmer%H*&`j?}HGsb_bf7u6**rP`~)neJ>mtVFJyQ z%)63OIY(y!$0(<=G8JdTfJ6_mTU@vusR`@T!vcVdHum3hE~ND8~1PKcuYX z&^iTu4j_e+z>riyr;&OfT!R316ZiXbfN9^;7H83Dj6SqH|03H2Z&By&W z_b7))Hu2z#32>Y#;O^;y5$#C=AjzhUx*i&$p5mlX1_Zj7nad||MQHRs%sOk9x>{(Y zRya*qOG#fWq=JfY5J}enr}tPxq5A_O{v1t^xm+WN?LovKA{qw!;K0A z%=~2Y+M&9^B5#U}6Qz!-nOs>Z)Vgaori9jwKdQf_?C(ZYgR=njH+a}eAcx=LfBwno8qDQjjAbs#BKMi!#^4le18KIWZJf^-6Mn4{B1v->W^x53{=zzvfb`Hp7_eE9DGZ+EPzislEHCTXxr~ViLFcxtXr7>>gLvc`b7#1b!IXh zIytUQD$imhIT+sOh@NOO5?Z1RW=I3F%5}2uZqACLkB36)>=$h?;mnF`V3>rcxh7Ck zj$%4H$NVArJp9?Scm!fwI)OJj7|zSEYDS6bdk*K-`Ym6uOMqy`l#uS{)X|((~xAC>Tq$X1PYu0`a(P|*e$Dj zD9^%Fi`brvonZwsP2<8%K_->+D{#qj<_lCu8yjC>Jx30_GfTpiJ^Lx0sQPglQ#byG zbVlp)7T(xIAeQtb9m5X7w;_KLUgx!CIW6{6&-5H81A5T!N+mr0Dmgl?xQ1b;xW?yyCDC?m?HXmrq$ zqJl>4jQ&6s#}u=gZuD!*X~g3;Y;Ka)w)gE4NP+JO4<8ct5b5EJ&_lXPR&`Cp<96$x z&p&UXTqs8hFdvyr`I@mE54)fz_4<{5>syr0J`dHB?zbL+%R1Gzg#1s&awHSW2SFnx zF#}%ly96GS9M+6DaxYclK0>r)L}OL9T&#Ktc39-BACv|!;^!J==?%QtRpTjNj30?F zSd7P9I5y3+(+wXs6$>TKi<5^<{bGtP+}xI@HxThGcou~N)PE=G>^##+D3rDOSYnbk zD)}%LVJqB0A;dn}yeJr?M|W>XsLrHlKkZ>ALo&=l5?)+R?Yu3IxH>OvYixiuZw7yI zDgVK)iP^T-U2!QcDk;{Oty;WEp+tw|Lgy0_B-Q7L7y9IX( z?(XgyT!KSzcM0z95Zv8e&LnGR?Y;lI&bjC5KHP`;dJUbUiZLfut@Yme)U3m(-av4O zLtPKD-}8}hv${SGKd(Su2?=2Jf)Z+>{; zm+-5|B)UzuKgTu>L@^l?acr?rg4{}_C|P_TxnP}c8PlmgZR98A2sCN(N1j#;G(f2b|dte^0R|H-&(-6%cOF zO4z`+IU`?m8bzt}r9;4wD!UqM@}iPbi=sy!N_zZ?%8A6=JiPt;|4wZ>?C7n(ZTuTGD?exYNX z&{82bop;#FAB{*5o4{V4U&t7zNa<041&?%!)TcXRoz%)3UE)8mN^mym8V)7ekXTH2 zThLm2!0V%ujpNfgsGRfPn4GW7AjB1tqR&n|%Rz`rP2zqHImMt<5Gbld& zMke-*WCP<#jpf%DB;#v=;pSu-NAN3|Dn4#|)S;>6HBAn#3Bxw26oZ5XgKleFI>oq} zRfCG#QCQ-kZYF??W}CKnsZlo#|tUMIbe+i^?EQwQG@+{g{!m0tx*AL14UcmWI4V zkyfjATSO2}%LrGuT4ZjMr7m`I&p~AEh2IFIGrxj%%#-~O+J$o++eZ@8%a_UKjfL6 zQjI34>uz(G59T*WqXcv2%S&12R?JEih>@3BBQ=-9gI=`CMA#NlDx_ttB7z%wek$qe zmed&EgJJvjE+jJC zQQ94l5b#J6^6hXH1twU%pe`zWa#ccSS~j54zZ0EQ7~AEiHKP~<7`KNDS=x$VSh|Lb;l&^4JtnLf3`!HG?q&;isF`EH-P#lrZ| z;xbcnYB1olTFJsdwkaEPz(a-s8Y)y*Tv;%Fq63?wwq-;WtlgKlt-n&u5yd#mgFIXqz@=y70_5&*uDmnYJSh2TB z@EyCTX|P`)CmvNr7|L4^Rfl2C^_&8ML>WIQ%nQydf17)hkM0CK)S#kcSeCEN%1Obt zl_cN<4(!vf+17s?0zLk;1u<*Sp&~MgLD{Sg+ft=28h#Gr17n~J!?yOMgeN=VaOFs1 zdGRTz^=SRko!O~k@{5d1Kle1#QbUr8kwwG+Wa&|?Q{ z^Um9%7FBD@NwydrhG4u6t)htu!#LH@358a-D6F83=UhH08Dj8nk`MWt_(pwxvPFlPcEqDErG*)uaZA>C>}g&yh6a(aWPj);um+vZTvjx-ie z3is~k+qh_MHA-JIe&9gK^+3oBz_2#9jv@nUGTkPR>kBt)^L@)5FTRefg2Oimhu@8? z6+>gIHn0z9p~&otA#yb=rloa!F>7LHFbg9C;wUsRePM!-xh9O8N0J3%RE;^S^uBN6 z%`C#8Qcl}~{M>g*kt@W3gfe_*eP?Nu8Z7KS7Na5RPCK7&KXv!rLrb5Nw_vos7vHCK zp2?_>GY8iXFe#Ak+zYZE{ z`cX&ou{*}LJS!jt0rtEHQf&c;2Cy@?T8{@(o+UlG<(Hb|KDz^!D|$H}eWGSpUr)H? znwVau<#8+fQBB!x4DP|>13F%S;w$_@#pxJ;LjZVIncl9bOvI8`nkv9hMqFfXm zE}gFw5c?J8B5S^sq1zs-%z(IDBli%MPYOKRGRdHyjW{4Jg1kQzdyt^3O0WWz`_Nc% zGPp~@R-y!lyr z8}8@T*(V><-IqbgfV2-m;8qq3KxCxWQW70N);C=Eb{o`FJwql2f&j%yy3lV189KmZ z2~I@d4L`-vwexPt@~^1Y140WfKXiu6ftIh9ijZkK)skccY-}J`gYVYP^ zpVT_-QTk}^8&BT~ah4}@OtmhghLwJOVuKWf)-(v~zB_A^V_!t7&JDw#MzDa1k|KoG zC7v)DpuA2|0e1*UTcnkM>M%?;6t!@q3Ha(o_#j2WoO`RadWK`mGXvNAgtkdgt0MJr zaivq)h$>7l=Bk7bcVUC6giQJnYSS~T@P=(2{fs1P4|R00*Myd%LC0{EQ)G8HHT-H5oyCK<6_a<$Mmcm)wDRnu>u^VpOmmbScf8#on7V@jtdaL z8*MTBSQ0eVMmzPww1^L|8zlO3an_f7nUb!sd6Mn1I0`UEvXa3WyN1iKF{CiW=WBQ? zc0N7wq|fi~30|r5p;!tzC{dz2W}OaXOP4Bt?+q68Q%k5iYP*)Xl`kc->KWn;tHqVb z?_VVouAI$8rlvN>(Q|+O9{cgMCBtvQqU$TImf@0-qC;LDs!8!y{9%YqSCZ7Vr{IIVc$)JniBq4>=_~0c# zguGSJQVO-}Ix~I1TJ5M>LUZM!@WuYoY%zqgA8d=Sf^W=Y=e0C>#|Dw?F-`SXdv-iK9B>zx2|NnD({q0No`|>pKfBP^3 zoLGN548GgHSbqH9{%!B&zvym&gAw3f0m{F9ngEu8;V+gIaPk+q2srtRod=x!t1rX9 z{DS~qxPLnT@v&w2<6O(|FMpr^aDQd{Px6`nU3Js}Fefu0SBIX>zp}0TF8-xR>VQwf z$jPy^Ab|^@8NkUI0TdwrMZUh*$N;?6 z=;W0I`T6;&{!#q&FL_ITD-#PNfas*6gOQ~Q;7)8Y#glZ{*wv({Skk* z(f@%7WC7?c|D}A!fX~6m!1$liXOSGxUlNR(*PdS9V7}+sVN|kwMbPW9ZDfaoC>rS9 z@Dlz0NiPP&3e*v6_6I z3kIai3Gy+#AG0j;@r2JveD%StGO8tSqm`Z*w`&AKnEdRApe-Q*jnkG1Co#J&-4cxO zIaSe$QPJr!aEu!@)MfPX)C8A^nQ5%7Y0t4b;P8Wx$Hw+E8D5mM8;}US3nb+Vj8Yzm zC89pTpZLO3_%Wq@Mwa{gMS1853H?g2{esbUMQ2ij34dhL%%7A*`m(m`ZmZa8^hqt$ z=YKcqRYXCQcYH!%p+IjLBD>-s4(LHbDvFf=MMx8siy;&{%!vw-d%C|L^2k#_t4Dkt z=;0y6(E!GRiTP;eM@VS979z&$ddOT%`Dv`}?o@dmxM9v%lBzQ&{|XT474(Rj)QJbD z3_~I-9(J3>tAp^lW~FsO4!TUX4^4RVVuQ{0J4^u>S2M6Sr*<>a<&-kw&rBreXbMFw z6Kgv6-N2P=l1XjaO4b5)S|G+SJLuM5xXIj(j8J|q$X%X;!N?R&AV6<3D@la`(E%le z*?=r9=aX&edfVJxIAj55f(K0m>3wU0CmYcn9&1J8;*X+FfS1*`^0?c(Zlj;#fC6D`fpo6eF>?>r=}bN-jEm8PW>b)umX?z)rrFsp zE;g)|33ZCg>+7gPEnVx%Z}Wv@<&0-Z^S;=98`6|i$e}QgGF;$IkB5(0ywO{p>)_1* zj{b)CeU&P!I4q*{fP&(*JnUmg`H5cKp}_K;NVy-5CV^~DDag4eo;`A^g7yAMlnXNv z2mQ#`BD1Nn<2o=JEnIm8;ClR%un>Jv8{d{&zd}N%)9TWIfJ)r$HoBo0UNkTby*n)H zin-;NWNf?1C=+~G`1mFzW8}9vbO=mIOWyzCXt{(6o?tg77f#;w5d*$rNxJ*Qu|4Yoem@=+8d< zM!z>n7JlbLRcNV+3W88y8a3E!ee8ZnNkPa~c-CQKMMHFCCADx6A4O91>0KXc z7c=t69`Zt8*^PhS zh1ur!wvx6kA~^{omR!xqmp%XYCnIf)v1?} zhzf(^@ikDvLgD47whXnAMDHBqXltx!Vc{q*x8=CVS`r5)FBPUpe}uMO0gFh>+^Sj# ze8>>kg%Di{-0BkE!0Z3cIc8EtDtDzT)M>z_gq|a714)Fpkkhr{+orgZz2ujy-(PNr z7s^YsgrMG_|H|VkYh%T{8~xFP4a@nas~u-H+8xfN?b1R1S1jzsMVY8n;oHX&wiF5v zmqR{2VFR`dS4!*&*WhI~?}cw4@oE+(!|rQHUiNip;oz^j9H8U@$yhw@2V7sf&guOn zaGv~3Cd5tT!7>r^b|$u zX^lK9OlILMLTq_-vV*PMyx4j^hP@^>HYTD;45!xY`7t&ye)O zyIrIurpt_)ReHdHUkvgj?m>FAhV*7h*I0#X{t0uZbK#!#qs^=V4pmo7$E*N1URX(6 ztYBeA)E-n}2m7(o%)LvxvC7vHRvhidanv_Wqh2Z+Thn|FSjn<+U(-BT(>z5^-qS%4 za*ajjdH=p$lh1DR!Lpyu%A*3V$W(d50}+Hc?B=lUr}?oNzL~WcB%5LMSw(8)sf(5x z8GV>7M>U=?Xv}ZiCE9){HT01}DibOVF?_|nwurCbw2uegBnEvznS70Bi(E10q!!Rg zCv-*0W_ShtCRW_fEbACR#uiD5ed3z={0YI&%FFqvZ=Ub9y~KU5yu7eEGsk)g4=A9l z%Sx|M7py24bwjpm?~^VnxgIMwp{DS${FlKG;kDeI%sw1ohNa)-??LfAs(xAJJ^th; zfEw!x<2|jDpBCT1uQ#R2Esfcc(0qb`Y$5YRlO1=DrT!c-GBbVG?z1uRVRtxy#k0Ai zJe%%>ZgHK9U0K6&^p{IB4{rODbFaCjcz;zwk!EdAa+#2|GeL5m_T@H;+ z?rg)Z15I>8j&tlM{0cHB5r*vwXrlRHjv2}83^>SK%m09lPKMbCxu+ zKHTOS(u>pXKBsFJ*G%R9)9p`P4i3`_?AQ0y>H*!ot>VLVgZ_w zYa#42v!7X3<|H$156e@vvpq(z|2EbtC3f z;kqlnp#)MsnwD_L`&v^`@)T&gvwN6v4~$vYIj&_)Q@7LOoNS z1dzb$02Vz72V_CazC{w(;O_Osg{L zo(agxs9Q5xa6cI;gxx6FdnHkfZbiuMT;VmeQLemt4*tj`8h47G39?(I1IL16?MJ=# ztU4L2&{mIfT&nKdcB8fgp7SEr^m<^~ID-GGceCW2V%Qugl^Puv%W<>!y*uTrjk8W_ zM=hn9&Df(RuK_S~2dnE?ySEO#k{>Qt){f#fG`C5&OVIyZ_{6R*3tjDZ&~!oU9&7Vn=eRi+8qT%LLTP^2X@N#OX2p zp_&tFv9s;ANyP;=5BJD`5qlav{CN>p&%yYRRMklIhfFku?2C>7)3g%=rD+0sXnD<1 zEs|@T+79t_XP`Cqc>sT`56HapQvc-SF_{Ls?%51-N_k`Lf2_Pg zwSlw-*JT1@P1@I@fo{?&)FRwkbJ~lnjl%#v`6jU*yW$r{uuI7rA7|w80ND&{eew zVQMG%Unvmh#j(|)&exGo;Nfp1mB=|I`TtwerA~;24}PXlzdZ<$Y5L%*WJ z6LxrJCw)W>OpV7SSYwfk7h3CIj-|!oX?!EW}%1Qx^H1m}5qBszGiekyNr8?Rtw{7!1M7GFgI>1!-)Smh)CH8{ahM zh#Y*PGJq$a9w(nxgt!oT{b25vVI5xfQPfS>CPpuK#v`EICp#YHymG}V$TBDVaM%co z3Lp6Io+!J0XjH4!Ah^>7K!i%#WGD95=d$U-G)1_y-QZ0 z;5*7GjKCY-2EN;fbm*NH$=gl{o_jJ%mhcDTN%Ix#x~L@enYzV-Ar)AgSBHsAS|O;H zD2TAjIO5kc2ukr{ys(4KuD5i8=sdK-dSAL|A(?c≀@ag=rE4`o(WUt-y{H7UeZI%7}b}>}` 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%0Ar_5J0vB1js(UQQP+?nvvv4>)-$+* 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ℜx)bqOg^U3fJr4h7zdGq0qKx#kH22R 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%0DpRwg=JFb9&pI&4W_1Z>U3po(XO}+GQ0K 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 U$3d^cj`LDlety+mYD;PV553m3-T(jq literal 0 HcmV?d00001 From 18e863f3c5b6177035cd64afbdcafea8ff3bc128 Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Thu, 2 Jun 2022 11:14:18 +0530 Subject: [PATCH 455/857] Removed Unauthorised Links. Added purchase link to the K&R C Book [ANSI] --- programming-language-resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index f05e6c4e5a..07283b2884 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -2,7 +2,7 @@ - C - [ANSI C Cheat Sheet]() - - [K&R C book (ANSI C)](https://www.edutechlearners.com/download/books/The%20C%20Programming%20Language%20by%20Kernighan%20&%20Ritchie%20PDF.pdf) + - [K&R C book (ANSI C)](https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628) - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) - GDB: - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) From 9fbe9205acfaffe878baeece23c881d9179c3349 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erdem=20=C3=96zgen?= Date: Tue, 14 Jun 2022 13:16:40 +0300 Subject: [PATCH 456/857] add Neetcode for Coding Interview Video section --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 9490817ded..b086a214a0 100644 --- a/README.md +++ b/README.md @@ -561,6 +561,11 @@ Coding Interview Question Videos: - Good explanations of solution and the code - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +- [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) + - Good explanations of solution and the python code + - Also checkout [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list + - [Github links](https://github.com/neetcode-gh/leetcode) for all solutions code + - [Neetcode 150](https://neetcode.io/) Challenge sites: - [LeetCode](https://leetcode.com/) From 732334472cefbf272e91c0f4266e46e0fb6beb9f Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Tue, 28 Jun 2022 17:27:18 +0530 Subject: [PATCH 457/857] Updated the link of a book Updated the link of a book whose new edition has arrived in the market. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b086a214a0..ff9e38b334 100644 --- a/README.md +++ b/README.md @@ -1366,7 +1366,7 @@ You're never really done. - Chapter 9 - CPU Architecture - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization -- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X/ref=sr_1_1?crid=3KO6Y71CYFT7M&keywords=Introduction+to+Algorithms&qid=1656416998&s=books&sprefix=introduction+to+algorithms%2Cstripbooks-intl-ship%2C320&sr=1-1) - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) From c91bf0e1180c658e1d106618cc46a76cf86ed6f4 Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Wed, 29 Jun 2022 15:45:53 +0530 Subject: [PATCH 458/857] Removed Tracking info from link I have successfully shortened the URL and removed the tracking information. Please check that out. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff9e38b334..b01d1c4b13 100644 --- a/README.md +++ b/README.md @@ -1366,7 +1366,7 @@ You're never really done. - Chapter 9 - CPU Architecture - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization -- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X/ref=sr_1_1?crid=3KO6Y71CYFT7M&keywords=Introduction+to+Algorithms&qid=1656416998&s=books&sprefix=introduction+to+algorithms%2Cstripbooks-intl-ship%2C320&sr=1-1) +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) From 1370dadbedd2703e0e07ef795317fb7aa19fbff8 Mon Sep 17 00:00:00 2001 From: zidniryi Date: Fri, 1 Jul 2022 14:11:19 +0700 Subject: [PATCH 459/857] Update language improvements README-id.md Update language improvements README-id.md for better translation for native Indonesian people. --- translations/README-id.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-id.md b/translations/README-id.md index ba991e63e5..be40467ccb 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -493,8 +493,8 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] push(item) - [ ] insert(index, item) - menyisipkan item pada indeks, menggeser nilai indeks dan elemen tambahan ke kanan - [ ] prepend(item) - dapat menggunakan sisipan di atas pada indeks 0 - - [ ] pop() - hapus dari akhir, nilai kembali - - [ ] delete(index) - hapus item pada indeks, menggeser semua elemen tertinggal ke kiri + - [ ] pop() - menghapus item dari akhir, nilai kembali + - [ ] delete(index) - menghapus item pada indeks, menggeser semua elemen tertinggal ke kiri - [ ] remove(item) - mencari nilai dan menghapus indeks yang menahannya (meskipun di banyak tempat) - [ ] find(item) - mencari nilai dan mengembalikan indeks pertama dengan nilai itu, -1 jika tidak ditemukan - [ ] resize(new_capacity) // fungsi pribadi @@ -701,7 +701,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] Menerapkan sebuah max-heap: - [ ] insert - - [ ] sift_up - dibutuhkan untuk memasukkan + - [ ] sift_up - digunakan untuk memasukkan - [ ] get_max - mengembalikan item maksimal, tanpa menghapusnya - [ ] get_size() - mengembalikan jumlah elemen yang disimpan - [ ] is_empty() - mengembalikan nilai true jika heap tidak berisi elemen From fe1ec60459cb8ef2d502af581b536e5bbcd4375b Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Thu, 7 Jul 2022 17:39:53 +0200 Subject: [PATCH 460/857] Update links to Topcoder community articles --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b01d1c4b13..db5754c0fe 100644 --- a/README.md +++ b/README.md @@ -550,8 +550,8 @@ Gets messy quick. **I use a pencil and eraser.** Don't forget your key coding interview books [here](#interview-prep-books). Solving Problems: -- [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/) +- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) Coding Interview Question Videos: - [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) @@ -596,8 +596,8 @@ But don't forget to do coding problems from above while you learn! - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) Well, that's about enough of that. @@ -726,7 +726,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Binary search - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] Implement: - binary search (on sorted array of integers) @@ -1165,7 +1165,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) @@ -1425,7 +1425,7 @@ You're never really done. - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) From 85cea3e7972a24b1d24cadde3dd24ac0309c2425 Mon Sep 17 00:00:00 2001 From: Avi Parshan Date: Sat, 9 Jul 2022 22:55:22 +0300 Subject: [PATCH 461/857] Update README-he.md --- translations/README-he.md | 78 +++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/translations/README-he.md b/translations/README-he.md index a8289a3423..35ba881da9 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1,4 +1,4 @@ -# Coding Interview University +# Coding Interview University אוניברסיטיה של ראיונות קוד

על מה מדובר כאן?

@@ -350,7 +350,7 @@ Read more about choices: You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. -## Book List +## רשימת ספרים This is a shorter list than what I used. This is abbreviated to save you time. @@ -372,7 +372,7 @@ If you have tons of extra time: - all code is in C++, very good if you're looking to use C++ in your interview - a good book on problem solving in general. -### Computer Architecture +### מבנה המחשב If short on time: @@ -465,8 +465,8 @@ OR: - Can rent it on kindle - Half.com is a great resource for textbooks at good prices. - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [פתרון](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [פתרון](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) @@ -484,7 +484,7 @@ OR: - Would rather spend time on coding problems from another book or online coding problems. -## Before you Get Started +## לפני שאתם מתחילים This list grew over many months, and yes, it kind of got out of hand. @@ -588,8 +588,8 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) + - [סרטון](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [מצגות](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) @@ -606,9 +606,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. -## Data Structures +## מבנה נתונים -- ### Arrays +- ### מערכים - Implement an automatically resizing vector. - [ ] Description: - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) @@ -673,11 +673,11 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - No need to implement -- ### Stack +- ### מחסנית - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] Will not implement. Implementing with array is trivial. -- ### Queue +- ### תור - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] Implement using linked-list, with tail pointer: @@ -720,9 +720,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - get(key) - remove(key) -## More Knowledge +## ידע נוסף -- ### Binary search +- ### חיפוש בינארי - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) @@ -757,9 +757,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] absolute value: - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) -## Trees +## עצים -- ### Trees - Notes & Background +- ### עצים - Notes & Background - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - basic tree construction - traversal @@ -839,7 +839,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). -## Sorting +## מיונים - [ ] Notes: - Implement sorts & know best case/worst case, average complexity of each: @@ -960,7 +960,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th ## Even More Knowledge -- ### Recursion +- ### רקורסיה - [ ] Stanford lectures on recursion & backtracking: - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) @@ -1052,12 +1052,12 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. -- ### Caches - - [ ] LRU cache: +- ### מטמון + - [ ] LRU מטמון: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: + - [ ] CPU מטמון: - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) @@ -1121,7 +1121,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) -- ### Testing +- ### בדיקות - To cover: - how unit testing works - what are mock objects @@ -1276,7 +1276,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - infrastructure: load balancing, messaging - rough overview of any key algorithm that drives the service - consider bottlenecks and determine solutions - - Exercises: + - תרגילים : - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) @@ -1289,15 +1289,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th --- -## Final Review +## חזרה סופית This section will have shorter videos that can you watch pretty quickly to review most of the important concepts. It's nice if you want a refresher often. - [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) + - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) + - [סרטונים](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1372,7 +1372,7 @@ See [Book List above](#book-list) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) -## Your Resume +## קורות חיים שלך - [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed @@ -1434,7 +1434,7 @@ You're never really done. --- -## Additional Books +## ספרים נוספים - [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - an oldie but a goodie @@ -1450,7 +1450,7 @@ You're never really done. - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) -## Additional Learning +## לימודים נוספים - ### Dynamic Programming - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. @@ -1477,7 +1477,7 @@ You're never really done. - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Compilers +- ### קומפיילרים - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) @@ -1572,7 +1572,7 @@ You're never really done. - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) -- ### Networking +- ### רשתות - **if you have networking experience or want to be a systems engineer, expect questions** - otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) @@ -1694,7 +1694,7 @@ You're never really done. - I want to learn more about B-Tree since it's used so widely with very large data sets. - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - [ ] **AVL trees** + - [ ] **AVL עצים** - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly @@ -1808,8 +1808,8 @@ You're never really done. - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) -- ### Discrete math - - see videos below +- ### מטמטיקה בדידה + - יש סרטונים למטה - ### Machine Learning - [ ] Why ML? @@ -1830,7 +1830,7 @@ You're never really done. - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - Resources: - - Books: + - ספרים: - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) @@ -1838,11 +1838,11 @@ You're never really done. - Data School: http://www.dataschool.io/ - ### Go - - [ ] Videos: + - [ ] סרטונים: - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] Books: + - [ ] ספרים: - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) @@ -1905,7 +1905,7 @@ You're never really done. - nice explanation of tries - can be skipped -- [ ] **Sorting** +- [ ] **מינום** - [ ] Stanford lectures on sorting: - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) @@ -1983,7 +1983,7 @@ Sit back and enjoy. "Netflix and skill" :P - [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -## Computer Science Courses +## קורסים במדעי המחשב - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) From fcdb8b84e7fb13cc401412ddaddbe7c0a6559b04 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 11 Jul 2022 23:30:55 +0200 Subject: [PATCH 462/857] Starting Afrikaans translation --- translations/README-af.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 translations/README-af.md diff --git a/translations/README-af.md b/translations/README-af.md new file mode 100644 index 0000000000..c24e857efc --- /dev/null +++ b/translations/README-af.md @@ -0,0 +1,4 @@ +# Kodering Universiteit + +Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak, +maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! \ No newline at end of file From 937b109c0b694406c646c043f8bedc68e41fa172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Gonzalo=20G=C3=B3mez=20P=C3=A9rez?= <410890+marcogonzalo@users.noreply.github.com> Date: Tue, 12 Jul 2022 10:02:17 +0200 Subject: [PATCH 463/857] Fix anchor link to Big-O content --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index f80d6e06d0..00f84e692c 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -117,7 +117,7 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - [Lo que no verá cubierto](#lo-que-no-verá-cubierto) - [El plan diario](#el-plan-diario) - [Conocimientos Previos](#conocimientos-previos) -- [Complejidad algorítmica / Big-O / Análisis asintótico](#complejidad-algorítmica-big-o-análisis-asintótico) +- [Complejidad algorítmica / Big-O / Análisis asintótico](#complejidad-algorítmica--big-o--análisis-asintótico) - [Estructuras de datos](#estructuras-de-datos) - [Arreglos](#arreglos) - [Listas Enlazadas](#listas-enlazadas) From 148006d74376e5447cfb0c7bfaa3815c1705a208 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:40:18 +0200 Subject: [PATCH 464/857] Lines 10/1996 --- translations/README-af.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index c24e857efc..6588f688c5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1,4 +1,11 @@ # Kodering Universiteit -Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak, -maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! \ No newline at end of file +> Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak, +> maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my +> aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Jy hoef heel waarskynlik nie soveel soos ek te studeer nie. Maar alles wat jy nodig het is hier. +> +> Ek het ongeveer 8-12 gestudeer elke dag, vir maande. Hier is my storie: [Hoekom ek vol-tyd gestudeer het, vir 8 maande, vir 'n Google onderhoud](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Let asseblief op: ** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors. +> \ No newline at end of file From 7f90596ceaf4e10492a8524b9eaa81726e713000 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:44:46 +0200 Subject: [PATCH 465/857] Lines 20/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6588f688c5..15427bce79 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -8,4 +8,13 @@ > Ek het ongeveer 8-12 gestudeer elke dag, vir maande. Hier is my storie: [Hoekom ek vol-tyd gestudeer het, vir 8 maande, vir 'n Google onderhoud](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > **Let asseblief op: ** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors. -> \ No newline at end of file +> +> Die items wat hier gelys is sal jou goed voorberei vir tegniese onderhoude by omtrent enige sagteware maatskappy, +> insluitend die reuse: Amazon, Facebook, Google, en Microsoft. +> +> *Sterkte!* + +

+Vertalings: + +
\ No newline at end of file From 8facc8ae3fd53f0ca9e99d975c3542180641c76b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:45:25 +0200 Subject: [PATCH 466/857] Lines 30/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 15427bce79..0f3c6671d6 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -17,4 +17,14 @@
Vertalings: +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +-
\ No newline at end of file From f66ab3be972f225b6139986445ea2856d110b36a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:46:30 +0200 Subject: [PATCH 467/857] Lines 40/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 0f3c6671d6..045ea9add8 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -26,5 +26,15 @@ - [Japanese (日本語)](translations/README-ja.md) - [Russian](translations/README-ru.md) - [German](translations/README-de.md) -- +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + + + +
+Vertalings aan die gang: +
\ No newline at end of file From 057e9172b5cfa24b7ee4f7e08f6d10a57dbd96a7 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:48:03 +0200 Subject: [PATCH 468/857] Lines 50/1996 --- README.md | 201 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index db5754c0fe..747e4af77d 100644 --- a/README.md +++ b/README.md @@ -129,51 +129,62 @@ software development/engineering roles. ### Topics of Study -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [How computers process a program](#how-computers-process-a-program) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [Final Review](#final-review) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [The Study Plan](#the-study-plan) + - [Topics of Study](#topics-of-study) + - [Getting the Job](#getting-the-job) + - [Optional Extra Topics & Resources](#optional-extra-topics--resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [If you don't want to use git](#if-you-dont-want-to-use-git) + - [If you're comfortable with git](#if-youre-comfortable-with-git) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [A Note About Video Resources](#a-note-about-video-resources) + - [Choose a Programming Language](#choose-a-programming-language) + - [For this Study Plan](#for-this-study-plan) + - [For your Coding Interview](#for-your-coding-interview) + - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) + - [Interview Prep Books](#interview-prep-books) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Don't Make My Mistakes](#dont-make-my-mistakes) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) + - [4. Focus](#4-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Coding Question Practice](#coding-question-practice) + - [Coding Problems](#coding-problems) + - [Let's Get Started](#lets-get-started) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [Final Review](#final-review) + - [Update Your Resume](#update-your-resume) + - [Find a Job](#find-a-job) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) ### Getting the Job @@ -188,50 +199,62 @@ software development/engineering roles. ### Optional Extra Topics & Resources -- [Additional Books](#additional-books) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +- [Coding Interview University](#coding-interview-university) + - [What is it?](#what-is-it) + - [Table of Contents](#table-of-contents) + - [The Study Plan](#the-study-plan) + - [Topics of Study](#topics-of-study) + - [Getting the Job](#getting-the-job) + - [Optional Extra Topics & Resources](#optional-extra-topics--resources) + - [Why use it?](#why-use-it) + - [How to use it](#how-to-use-it) + - [If you don't want to use git](#if-you-dont-want-to-use-git) + - [If you're comfortable with git](#if-youre-comfortable-with-git) + - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) + - [A Note About Video Resources](#a-note-about-video-resources) + - [Choose a Programming Language](#choose-a-programming-language) + - [For this Study Plan](#for-this-study-plan) + - [For your Coding Interview](#for-your-coding-interview) + - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) + - [Interview Prep Books](#interview-prep-books) + - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) + - [Don't Make My Mistakes](#dont-make-my-mistakes) + - [1. You Won't Remember it All](#1-you-wont-remember-it-all) + - [2. Use Flashcards](#2-use-flashcards) + - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) + - [4. Focus](#4-focus) + - [What you won't see covered](#what-you-wont-see-covered) + - [The Daily Plan](#the-daily-plan) + - [Coding Question Practice](#coding-question-practice) + - [Coding Problems](#coding-problems) + - [Let's Get Started](#lets-get-started) + - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Data Structures](#data-structures) + - [More Knowledge](#more-knowledge) + - [Trees](#trees) + - [Sorting](#sorting) + - [Graphs](#graphs) + - [Even More Knowledge](#even-more-knowledge) + - [Final Review](#final-review) + - [Update Your Resume](#update-your-resume) + - [Find a Job](#find-a-job) + - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) + - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) + - [Have questions for the interviewer](#have-questions-for-the-interviewer) + - [Once You've Got The Job](#once-youve-got-the-job) + - [Additional Books](#additional-books) + - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) + - [Additional Learning](#additional-learning) + - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [Video Series](#video-series) + - [Computer Science Courses](#computer-science-courses) + - [Algorithms implementation](#algorithms-implementation) + - [Papers](#papers) + - [LICENSE](#license) --- From 42f35858aab41ef6bf04e6337e45d495bed8a17c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:48:58 +0200 Subject: [PATCH 469/857] Lines 60/1996 --- translations/README-af.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 045ea9add8..f2d939b609 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -37,4 +37,24 @@
Vertalings aan die gang: -
\ No newline at end of file +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) + + + +
+
+

+

+
\ No newline at end of file From 118ece0f699849ebb082f90158071d50fe88eeca Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:52:40 +0200 Subject: [PATCH 470/857] Lines 60/1996 --- translations/README-af.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-af.md b/translations/README-af.md index f2d939b609..6fdc132345 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -56,5 +56,6 @@
\ No newline at end of file From 661eeafe66350ec970d8f32a45e30f9bf9e91ef4 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 21:54:10 +0200 Subject: [PATCH 471/857] Lines 70/1996 --- translations/README-af.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 6fdc132345..0db8de318b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -58,4 +58,13 @@

Word 'n bydraer en borg Kodering Universiteit!

+

+ Spesiale dank aan: +

+

+ +

+

\ No newline at end of file From f253e48962c12060c7f2efdbdb2a205ba7b2f728 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:00:57 +0200 Subject: [PATCH 472/857] Lines 80/1996 --- translations/README-af.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 0db8de318b..0f166022e5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -56,7 +56,7 @@ \ No newline at end of file From 4c1c7a4cbb907e593c1580c7b271eca6870b291f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:08:35 +0200 Subject: [PATCH 473/857] Lines 90/1996 --- translations/README-af.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 0f166022e5..9390675831 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -77,5 +77,14 @@
Gitpod
+
+

+ Dev omgewings gebou vir die wolk +

+
+
+ Inheems geïntegreer met GitLab, GitHub, en Bitbucket, bou Gitpod outomaties en aanhoudend dev omgewings vir al jou takke. As gevolg kan span lede onmiddellik begin kodeer met vars dev omgewings vir elke nuwe taak - maak nie saak of jy 'n nuwe kenmerk bou, 'n fout wil reg maak, of werk aan 'n kode resensie nie. +
+

\ No newline at end of file From 3f6e25714cc83f79bfa33cae074cac266876135a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:11:59 +0200 Subject: [PATCH 474/857] Lines 100/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 9390675831..cc4cb3ff18 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -87,4 +87,13 @@

-
\ No newline at end of file +
+
+ +## Wat is dit? + +![Kodeering op die witbord - van HBO se Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Dié is my multi-maand studie plan om 'n sagteware ingeneur te word vir 'n groot maatskappy. + +**Benodighede:** From 32f5a770697718509c60227aa97dbd452555a74c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:21:10 +0200 Subject: [PATCH 475/857] Lines 110/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index cc4cb3ff18..26900ec856 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -97,3 +97,14 @@ Dié is my multi-maand studie plan om 'n sagteware ingeneur te word vir 'n groot maatskappy. **Benodighede:** +* 'n Bietjie ondervinding met kodeering (veranderlikes, lusse, metodes/funksies, ens) +* Geduld +* Tyd +* +Let wel dat die 'n studieplan vir 'n **sagteware ingeneur** pos is, nie 'n webontwikkeling pos nie. Groot maatskappeie soos Google, Amazon, +Facebook en Microsoft sien sagteware ingeneurs as verskilled van webontwikkeling ingeneurs. Byvoorbeeld, Amazon het +Frontend Ingeneurs (FEE) en Sagteware Ontwikkeling Ingeneurs (SDE). Die is 2 verskeie rolle en die onderhoude verskil, +omdat elkeen sy eie bevoegdhede het. Dié maatskappeie benodig rekenaar wetenskap kennis vir +sagteware ontwikkeling/ingeneur rolle. + +--- \ No newline at end of file From 62f341f0c85e29f4fb92cc3cc76c073f28aa7a28 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:24:08 +0200 Subject: [PATCH 476/857] Lines 120/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 26900ec856..a91af084b8 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -107,4 +107,14 @@ Frontend Ingeneurs (FEE) en Sagteware Ontwikkeling Ingeneurs (SDE). Die is 2 ver omdat elkeen sy eie bevoegdhede het. Dié maatskappeie benodig rekenaar wetenskap kennis vir sagteware ontwikkeling/ingeneur rolle. ---- \ No newline at end of file +--- + +## Inhoudsopgawe + +### Die Studie Plan + +- [Wat is dit?](#what-is-it) +- [Hoekom gebruik dit?](#why-use-it) +- [Hoe om dit te gebruik](#how-to-use-it) +- [Moenie voel dat jy nie slim genoeg is nie](#dont-feel-you-arent-smart-enough) +- ['n Nota Oor Video Hulpbronne](#a-note-about-video-resources) \ No newline at end of file From 80a7cf22e8cf925f61e9af903f556e328fcdfb3b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:28:55 +0200 Subject: [PATCH 477/857] Lines 130/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index a91af084b8..e6ef24356f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -117,4 +117,14 @@ sagteware ontwikkeling/ingeneur rolle. - [Hoekom gebruik dit?](#why-use-it) - [Hoe om dit te gebruik](#how-to-use-it) - [Moenie voel dat jy nie slim genoeg is nie](#dont-feel-you-arent-smart-enough) -- ['n Nota Oor Video Hulpbronne](#a-note-about-video-resources) \ No newline at end of file +- ['n Nota Oor Video Hulpbronne](#a-note-about-video-resources) +- [Kies 'n Programmeeringstaal](#choose-a-programming-language) +- [Boeke vir Datastrukture en Algoritmes](#books-for-data-structures-and-algorithms) +- [Onderhoud Voorbereïngsboeke](#interview-prep-books) +- [Moenie My Foute Maak Nie](#dont-make-my-mistakes) +- [Wat Jy Nie Sal Sien Gedek Word Nie](#what-you-wont-see-covered) +- [Die Daaglikse Plan](#the-daily-plan) +- [Kodeering Vrae Beoefening](#coding-question-practice) +- [Kodeering Probleme](#coding-problems) + +### Topics of Study \ No newline at end of file From dd9c61e6f1fcf4b962d0eb7062b68bcbf7cc152f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 22:56:00 +0200 Subject: [PATCH 478/857] Lines 140/1996 --- translations/README-af.md | 50 +++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index e6ef24356f..19e9bc44dc 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1,4 +1,4 @@ -# Kodering Universiteit +# Kodering Onderhoud Universiteit > Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak, > maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my @@ -56,7 +56,7 @@

- Word 'n bydraër en borg Kodering Universiteit! + Word 'n bydraër en borg Kodering Onderhoud Universiteit!

Spesiale dank aan: @@ -92,15 +92,15 @@ ## Wat is dit? -![Kodeering op die witbord - van HBO se Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +![Kodering op die witbord - van HBO se Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) Dié is my multi-maand studie plan om 'n sagteware ingeneur te word vir 'n groot maatskappy. **Benodighede:** -* 'n Bietjie ondervinding met kodeering (veranderlikes, lusse, metodes/funksies, ens) +* 'n Bietjie ondervinding met kodrering (veranderlikes, lusse, metodes/funksies, ens) * Geduld * Tyd -* + Let wel dat die 'n studieplan vir 'n **sagteware ingeneur** pos is, nie 'n webontwikkeling pos nie. Groot maatskappeie soos Google, Amazon, Facebook en Microsoft sien sagteware ingeneurs as verskilled van webontwikkeling ingeneurs. Byvoorbeeld, Amazon het Frontend Ingeneurs (FEE) en Sagteware Ontwikkeling Ingeneurs (SDE). Die is 2 verskeie rolle en die onderhoude verskil, @@ -113,18 +113,28 @@ sagteware ontwikkeling/ingeneur rolle. ### Die Studie Plan -- [Wat is dit?](#what-is-it) -- [Hoekom gebruik dit?](#why-use-it) -- [Hoe om dit te gebruik](#how-to-use-it) -- [Moenie voel dat jy nie slim genoeg is nie](#dont-feel-you-arent-smart-enough) -- ['n Nota Oor Video Hulpbronne](#a-note-about-video-resources) -- [Kies 'n Programmeeringstaal](#choose-a-programming-language) -- [Boeke vir Datastrukture en Algoritmes](#books-for-data-structures-and-algorithms) -- [Onderhoud Voorbereïngsboeke](#interview-prep-books) -- [Moenie My Foute Maak Nie](#dont-make-my-mistakes) -- [Wat Jy Nie Sal Sien Gedek Word Nie](#what-you-wont-see-covered) -- [Die Daaglikse Plan](#the-daily-plan) -- [Kodeering Vrae Beoefening](#coding-question-practice) -- [Kodeering Probleme](#coding-problems) - -### Topics of Study \ No newline at end of file +- [Wat is dit?](#wat-is-dit) +- [Hoekom gebruik dit?](#hoekom-gebruik-dit) +- [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik) +- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) +- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) +- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) +- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) +- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) +- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) +- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) +- [Die Daaglikse Plan](#die-daaglikse-plan) +- [Kodering Vrae Beoefening](#kodering-vrae-beoefening) +- [Kodering Probleme](#kodering-probleme) + +## Onderwerpe om te Studeer + +- [Kodering Onderhoud Universiteit]() + - [Wat is dit?](#wat-is-dit) + - [Inhoudsopgawe](#inhoudsopgawe) + - [Die Studie Plan](#die-studie-plan) + - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) + - [Kry die Werk](#kry-die-werk) + - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) + - [Hoekom gebruik dit?](#hoekom-gebruik-dit) + - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) \ No newline at end of file From 4034b2766cd1db68113309654e90b97314b9f02f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:01:08 +0200 Subject: [PATCH 479/857] Lines 150/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 19e9bc44dc..fd661b1df1 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -137,4 +137,16 @@ sagteware ontwikkeling/ingeneur rolle. - [Kry die Werk](#kry-die-werk) - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) - [Hoekom gebruik dit?](#hoekom-gebruik-dit) - - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) \ No newline at end of file + - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) + - [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie) + - [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is) + - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) + - ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) + - [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) + - [Vir die Studie Plan](#vir-die-studie-plan) + - [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud) + - [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) \ No newline at end of file From 3af07272161a3245efc19ed5c6269a0cddfdd1e5 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:06:27 +0200 Subject: [PATCH 480/857] Lines 160/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index fd661b1df1..fb9b9f608a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -149,4 +149,15 @@ sagteware ontwikkeling/ingeneur rolle. - [C](#c) - [Python](#python) - [Java](#java) - - [C++](#c-1) \ No newline at end of file + - [C++](#c-1) + - [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) + - [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het) + - [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) + - [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie) + - [2. Gebruik flitskaarte](#2-gebruik-flitskaarte) + - [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer) + - [4. Fokus](#4-fokus) + - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) + - [Die Daaglikse Plan](#die-daaglikse-plan) + - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) + - [Kodering Probleme](#kodering-probleme) \ No newline at end of file From cf5080c6390e76d3db5fcd2fdfb1c8d883973ae4 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:09:59 +0200 Subject: [PATCH 481/857] Lines 170/1996 --- translations/README-af.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index fb9b9f608a..14311b6f72 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -160,4 +160,11 @@ sagteware ontwikkeling/ingeneur rolle. - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) - [Die Daaglikse Plan](#die-daaglikse-plan) - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) - - [Kodering Probleme](#kodering-probleme) \ No newline at end of file + - [Kodering Probleme](#kodering-probleme) + - [Begin Solank](#begin-solank) + - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Datastrukture](#datastrukture) + - [Meer Kennis](#meer-kennis) + - [Bome](#bome) + - [Sorteer](#sorteer) + - [Grafieke](#grafieke) \ No newline at end of file From 2f36bf7b6f4af1f88770f995b49bb3a5697d02ce Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:19:33 +0200 Subject: [PATCH 482/857] Lines 180/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 14311b6f72..e02b5b1193 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -167,4 +167,14 @@ sagteware ontwikkeling/ingeneur rolle. - [Meer Kennis](#meer-kennis) - [Bome](#bome) - [Sorteer](#sorteer) - - [Grafieke](#grafieke) \ No newline at end of file + - [Grafieke](#grafieke) + - [Nog Meer Kennis](#nog-meer-kennis) + - [Finale Resensie](#finale-resensie) + - [Werk Jou CV By](#werk-jou-cv-by) + - [Kry 'n Werk](#kry-n-werk) + - [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) + - [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) + - [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) + - [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) + - [Bykomende Boeke](#bykomende-boeke) + - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) \ No newline at end of file From aea3907c16159dceeb5d9fce0e95bfb646646020 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:24:19 +0200 Subject: [PATCH 483/857] Lines 190/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e02b5b1193..41185584f2 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -177,4 +177,13 @@ sagteware ontwikkeling/ingeneur rolle. - [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) - [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) - [Bykomende Boeke](#bykomende-boeke) - - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) \ No newline at end of file + - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) + - [Bykomende Leer](#bykomende-leer) + - [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) + - [Video Reeks](#video-reeks) + - [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) + - [Algoritmes implementering](#algoritmes-implementering) + - [Papiere](#papiere) + - [LISENSIE](#lisensie) + +### Kry die Werk \ No newline at end of file From 4f3b18e8f4f7efabb3b6e221dc6992bb012c242e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 12 Jul 2022 23:29:02 +0200 Subject: [PATCH 484/857] Lines 200/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 41185584f2..1ab0d6f65c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -186,4 +186,15 @@ sagteware ontwikkeling/ingeneur rolle. - [Papiere](#papiere) - [LISENSIE](#lisensie) -### Kry die Werk \ No newline at end of file +### Kry die Werk + +- [Werk Jou CV By]() +- [Kry 'n Werk](#kry-n-werk) +- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) +- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) +- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) +- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) + +**---------------- Alles hieronder is opsioneel ----------------** + +### Opsionele Ekstra Onderwerpe & Hulpbronne \ No newline at end of file From 3174e473ce0f086b50feea76b7577f236e2be067 Mon Sep 17 00:00:00 2001 From: "MUH. AFRIZAL" <87596110+afrizal0@users.noreply.github.com> Date: Wed, 13 Jul 2022 05:32:09 +0800 Subject: [PATCH 485/857] update id translation --- translations/README-id.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/translations/README-id.md b/translations/README-id.md index ba991e63e5..f604400fe1 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1717,7 +1717,10 @@ Anda tidak pernah benar-benar selesai. - [Bagilah & Taklukkan: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Matematika diskrit - - lihat video di bawah ini + - Apa itu Matematika Diskrit? + - [Perkenalan Matematika Diskrit](https://www.youtube.com/watch?v=p2b2Vb-cYCs) + - Kuliah Gratis Matematika Diskrit + - [Kuliah Gratis Matematika Diskrit *CS 70: Discrete Mathematics and Probability Theory (Spring 2015, UC Berkeley)*()](http://www.infocobuild.com/education/audio-video-courses/computer-science/CS70-Spring2015-Berkeley/lecture-01.html) - ### Pembelajaran Mesin (Machine Learning) - Kenapa ML? @@ -1951,3 +1954,4 @@ Terjemahan Bahasa Indonesia dipersembahkan oleh - @[hwhung0111](https://github.com/hwhung0111) - @[fahminlb33](https://github.com/fahminlb33) - @[davidsetyanugraha](https://github.com/davidsetyanugraha) +- @[afrizal0](https://github.com/afrizal0) \ No newline at end of file From 4649d5e54e858ff7fb2f9aa2367b3682d7c52f0a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:18:04 +0200 Subject: [PATCH 486/857] Lines 210/1996 --- translations/README-af.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 1ab0d6f65c..d9a57bffb6 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -197,4 +197,17 @@ sagteware ontwikkeling/ingeneur rolle. **---------------- Alles hieronder is opsioneel ----------------** -### Opsionele Ekstra Onderwerpe & Hulpbronne \ No newline at end of file +### Opsionele Ekstra Onderwerpe & Hulpbronne + +- [Kodering Onderhoud Universiteit]() + - [Wat is dit?](#wat-is-dit) + - [Inhoudsopgawe](#inhoudsopgawe) + - [Die Studie Plan](#die-studie-plan) + - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) + - [Kry die Werk](#kry-die-werk) + - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) + - [Hoekom gebruik dit?](#hoekom-gebruik-dit) + - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) + - [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie) + - [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is) + - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) \ No newline at end of file From aff311dee3fcc8751c9948086cbfa30c5c0d3eea Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:19:23 +0200 Subject: [PATCH 487/857] Lines 260/1996 --- translations/README-af.md | 49 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index d9a57bffb6..3475b29b75 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -210,4 +210,51 @@ sagteware ontwikkeling/ingeneur rolle. - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) - [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie) - [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is) - - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) \ No newline at end of file + - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) + - ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) + - [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) + - [Vir die Studie Plan](#vir-die-studie-plan) + - [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud) + - [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) + - [C](#c) + - [Python](#python) + - [Java](#java) + - [C++](#c-1) + - [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) + - [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het) + - [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) + - [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie) + - [2. Gebruik flitskaarte](#2-gebruik-flitskaarte) + - [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer) + - [4. Fokus](#4-fokus) + - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) + - [Die Daaglikse Plan](#die-daaglikse-plan) + - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) + - [Kodering Probleme](#kodering-probleme) + - [Begin Solank](#begin-solank) + - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Datastrukture](#datastrukture) + - [Meer Kennis](#meer-kennis) + - [Bome](#bome) + - [Sorteer](#sorteer) + - [Grafieke](#grafieke) + - [Nog Meer Kennis](#nog-meer-kennis) + - [Finale Resensie](#finale-resensie) + - [Werk Jou CV By](#werk-jou-cv-by) + - [Kry 'n Werk](#kry-n-werk) + - [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) + - [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) + - [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) + - [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) + - [Bykomende Boeke](#bykomende-boeke) + - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) + - [Bykomende Leer](#bykomende-leer) + - [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) + - [Video Reeks](#video-reeks) + - [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) + - [Algoritmes implementering](#algoritmes-implementering) + - [Papiere](#papiere) + - [LISENSIE](#lisensie) + +--- + From aa18dcb31518153de361b2930738100424c738f2 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:35:48 +0200 Subject: [PATCH 488/857] Lines 270/1996 --- translations/README-af.md | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 3475b29b75..e6650d608b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -113,19 +113,15 @@ sagteware ontwikkeling/ingeneur rolle. ### Die Studie Plan -- [Wat is dit?](#wat-is-dit) -- [Hoekom gebruik dit?](#hoekom-gebruik-dit) -- [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik) -- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) -- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) -- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) -- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) -- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) -- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) -- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) -- [Die Daaglikse Plan](#die-daaglikse-plan) -- [Kodering Vrae Beoefening](#kodering-vrae-beoefening) -- [Kodering Probleme](#kodering-probleme) +- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) + - [Wat is dit?](#wat-is-dit) + - [Inhoudsopgawe](#inhoudsopgawe) + - [Die Studie Plan](#die-studie-plan) + - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) + - [Kry die Werk](#kry-die-werk) + - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) + - [Hoekom gebruik dit?](#hoekom-gebruik-dit) + - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) ## Onderwerpe om te Studeer @@ -258,3 +254,19 @@ sagteware ontwikkeling/ingeneur rolle. --- +## Hoekom gebruik dit? + +As jy wil werk as 'n sagteware ingeneur vir 'n groot maatskappy, hierdie is die goed wat jy moet ken. + +As jy uitgemis het op 'n rekenaar wetenskap graad, soos ek het, sal hierdie jou laat opvang en vier jaar van jou lewe spaar. + +Toe ek hierdie projek begin het, kon ek nie verskil tussen 'n stapel en 'n hoop nie, het niks van Big-O geweet nie, of enige iets van bome nie, of hoe om +'n grafiek te dwars nie. As ek 'n sorteer algoritme moes kode, kan ek jou verseker dit was verskriklik. +Elke datastruktuur wat ek ooit moes gebruik was ingebou in die taal, end ek het nie geweet hoe hulle werk +onder die kap nie. Ek het nooit nodig gehaad of geheue te bestuur nie, tensy 'n proses vir my 'n "te min +beskikbare geheue" fout gegee het, en dan moes ek 'n ander oplossing kry. Ek het 'n paar multidimensionele skikkings +in my lewe gebruik en duisende assosiatiewe skikkings, maar ek hoef nooit 'n datastruktuur van nuut af gebou het nie. + +Dis 'n lang plan. Dit gaan maande vat. As jy klaar gemaklik met baie van dié is gaan dit jou baie minder tyd vat. + +## Hoe om dit te gebruik? \ No newline at end of file From 86b8d65c0830427f40837a465472ba5c9b474e34 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:46:12 +0200 Subject: [PATCH 489/857] Lines 280/1996 --- translations/README-af.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index e6650d608b..f0f2b5e4a2 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -113,15 +113,19 @@ sagteware ontwikkeling/ingeneur rolle. ### Die Studie Plan -- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) - - [Wat is dit?](#wat-is-dit) - - [Inhoudsopgawe](#inhoudsopgawe) - - [Die Studie Plan](#die-studie-plan) - - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) - - [Kry die Werk](#kry-die-werk) - - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) - - [Hoekom gebruik dit?](#hoekom-gebruik-dit) - - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) +- [Wat is dit?]() +- [Hoekom gebruik dit?](#hoekom-gebruik-dit) +- [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik) +- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) +- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) +- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) +- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) +- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) +- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) +- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) +- [Die Daaglikse Plan](#die-daaglikse-plan) +- [Kodering Vrae Beoefening](#kodering-vrae-beoefening) +- [Kodering Probleme](#kodering-probleme) ## Onderwerpe om te Studeer @@ -269,4 +273,11 @@ in my lewe gebruik en duisende assosiatiewe skikkings, maar ek hoef nooit 'n dat Dis 'n lang plan. Dit gaan maande vat. As jy klaar gemaklik met baie van dié is gaan dit jou baie minder tyd vat. -## Hoe om dit te gebruik? \ No newline at end of file +## Hoe om dit te gebruik? + +Alles hieronder is 'n uitlyn, en jy moet elke item aan pak in orde van bo tot onder. + +Ek gebruik Github se spisiale markdown flavor, insluitend taaklyste om vordering te volg. + - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### As jy nie git wil gebruik nie \ No newline at end of file From cb2407f7ea37cf178dad6baaf6a534acf29f0ec6 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:51:49 +0200 Subject: [PATCH 490/857] Lines 290/1996 --- translations/README-af.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index f0f2b5e4a2..c635f67e02 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -280,4 +280,10 @@ Alles hieronder is 'n uitlyn, en jy moet elke item aan pak in orde van bo tot on Ek gebruik Github se spisiale markdown flavor, insluitend taaklyste om vordering te volg. - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -### As jy nie git wil gebruik nie \ No newline at end of file +### As jy nie git wil gebruik nie + +Op dié blad, kliek die Code knop naby die bookant, dan kliek "Download ZIP". Unzip die lêer en jy kan werk met die teks lêers. + +As jy in 'n kode redakteur is wat markdown verstaan, sal jy sien alles is mooi geformateer. + +![Hoe om die repo af te laai as 'n zip lêer](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) From 9aa150b2bf4321c81dbca8f435d93e0de38cb507 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:55:18 +0200 Subject: [PATCH 491/857] Lines 300/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index c635f67e02..8260cb6797 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -287,3 +287,13 @@ Op dié blad, kliek die Code knop naby die bookant, dan kliek "Download ZIP". Un As jy in 'n kode redakteur is wat markdown verstaan, sal jy sien alles is mooi geformateer. ![Hoe om die repo af te laai as 'n zip lêer](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### As jy gemaklik met git is + +Skep 'n nuwe tak sodat jy items soos dié kan merk, sit net 'n x in die hakies: [x] + + Virk 'n tak en vold die bevele hieronder + +Virk die Github repo https://github.com/jwasham/coding-interview-university deur om die Fork knop to druk. + +Kloon na jou plaaslike repo: From 4b96fa5c0aaf40c47e789ecb9c965b06a31d08a9 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 19:56:47 +0200 Subject: [PATCH 492/857] Lines 310/1996 --- translations/README-af.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 8260cb6797..b9828a7711 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -297,3 +297,18 @@ Skep 'n nuwe tak sodat jy items soos dié kan merk, sit net 'n x in die hakies: Virk die Github repo https://github.com/jwasham/coding-interview-university deur om die Fork knop to druk. Kloon na jou plaaslike repo: + + git clone git@github.com:/coding-interview-university.git + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + +Merk al die bokse met X nadat jy jou veranderinge voltooi het: + + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + +## Moenie voel asof jy nie slim genoeg is nie \ No newline at end of file From bb9912035dc117719736b62d52a5d42c602eb568 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:00:04 +0200 Subject: [PATCH 493/857] Lines 320/1996 --- translations/README-af.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index b9828a7711..e0ec04f92f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -311,4 +311,10 @@ Merk al die bokse met X nadat jy jou veranderinge voltooi het: git push --set-upstream origin progress git push --force -## Moenie voel asof jy nie slim genoeg is nie \ No newline at end of file +## Moenie voel asof jy nie slim genoeg is nie + +- Suksesvolle sagteware ingeneurs is slim, maar baie het onsekerhede dat hulle nie slim genoeg is nie. +- [Die mite van die Geniale Programeerder](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Dit is Gevaarlik om Alleen te Gaan: Struikel teen die Onsigbare Monsters in Tegnologie](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## 'n Nota Oor Video Hulpbronne \ No newline at end of file From 0565e215693aef77b836fec1b65d805f79155a06 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:23:55 +0200 Subject: [PATCH 494/857] Lines 330/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e0ec04f92f..d9c0dd1eae 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -317,4 +317,18 @@ Merk al die bokse met X nadat jy jou veranderinge voltooi het: - [Die mite van die Geniale Programeerder](https://www.youtube.com/watch?v=0SARbwvhupQ) - [Dit is Gevaarlik om Alleen te Gaan: Struikel teen die Onsigbare Monsters in Tegnologie](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## 'n Nota Oor Video Hulpbronne \ No newline at end of file +## 'n Nota Oor Video Hulpbronne + +Sekere videos is net beskikbaar as jy skryf vir 'n kurses in 'n Coursera of EdX klas. Dié is genoem MOOCs. +Soms is die klasse nie in sessie nie end jy sal moet wag vir 'n paar maande, so jy het nie toegang nie. + +Dit sal wonderlik wees om die aanlyn klasse te vervang met gratis en altyd-beskikbare openbare bronne, +soos YouTube videos (verkieslik universiteitslesings), sodat julle daarvanaf enige tyd kan leer, +nie net wanneer 'n spesifieke aanlyn kursus in sessie is nie. + +## Kies 'n Programmeeringstaal + +Jy sal 'n programmeringstaal moet kies vir die kodering onderhoude wat jy gaan doen, +maar jy sal dan ook 'n taal moet kies waarmee jy rekenaar wetenskap konsepte kan leer. + +Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou. \ No newline at end of file From 8615643553d04743815b828b62b60fcd605aa711 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:25:30 +0200 Subject: [PATCH 495/857] Lines 340/1996 --- translations/README-af.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index d9c0dd1eae..3c718977a6 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -331,4 +331,9 @@ nie net wanneer 'n spesifieke aanlyn kursus in sessie is nie. Jy sal 'n programmeringstaal moet kies vir die kodering onderhoude wat jy gaan doen, maar jy sal dan ook 'n taal moet kies waarmee jy rekenaar wetenskap konsepte kan leer. -Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou. \ No newline at end of file +Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou. + +### Vir die Studie Plan + +Toe ek die studie plan gedoen het, het ek 2 tale gebruik vir meeste van dit: C en Python + From 1668eca92562011b79ae899a3462486b55a565a4 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:38:52 +0200 Subject: [PATCH 496/857] Lines 350/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 3c718977a6..4d2c87c381 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -337,3 +337,14 @@ Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou. Toe ek die studie plan gedoen het, het ek 2 tale gebruik vir meeste van dit: C en Python +* C: Baie lae vlak. Laat jou toe om met pointers en geheue allocation/deallocation te werk, sodat jy die datastrukture en + algoritmes voel in jou bene. In hoër vlak tale soos Python en Java word die weggesteek van jou af. In daaglikse werk is dit wonderlik, + maar wanneer jy leer hoe die lae-vlak datastrukture gebou is, voel dit lekker om naby die metaal te wees. + - C is orals. Jy sal voorbeelde in boeke, lesings, vidoes, en *oral* sien wanner jy studeer. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Dié is 'n kort boek, maar dit sal jou 'n goeie vat gee oor die C taal en as jy dit 'n bikie oefen sal jy vinnig + vaardigheid bou. Deur om C te verstaan help dit jou om te verstaan hoe programme en geheue werk. + - Jy hoef nie super diep in die boek te gaan nie (of eens dit klaar te maak nie). Gaan net tot die punt waar jy C gemaklik kan lees en skryf. + - [Antwoorde vir vrae in die boek](https://github.com/lekkas/c-algorithms) +* Python: Modern en baie duur, ek het dit geleer want dis super nuttig en laat my toe om minder kode te skruf in 'n onderhoud. + From d147234e3fa78fac58c65ad3fb798927f162b0ea Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:40:26 +0200 Subject: [PATCH 497/857] Lines 360/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 4d2c87c381..b38b55b15e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -348,3 +348,13 @@ Toe ek die studie plan gedoen het, het ek 2 tale gebruik vir meeste van dit: C e - [Antwoorde vir vrae in die boek](https://github.com/lekkas/c-algorithms) * Python: Modern en baie duur, ek het dit geleer want dis super nuttig en laat my toe om minder kode te skruf in 'n onderhoud. +Die is my voorkeur. Doen jy wat vir jou pas, natuurlik. + +Jy mag dit dalk nie nodig kry nie, maar hier is 'n paar webwerwe om jou nuwe taal te leer: +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) \ No newline at end of file From 4a4a51243642940091b757599909b74771544242 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:43:07 +0200 Subject: [PATCH 498/857] Lines 370/1996 --- translations/README-af.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index b38b55b15e..e44197e920 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -357,4 +357,17 @@ Jy mag dit dalk nie nodig kry nie, maar hier is 'n paar webwerwe om jou nuwe taa - [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) -- [Codeforces](https://codeforces.com/) \ No newline at end of file +- [Codeforces](https://codeforces.com/) + +### Vir jou Kodering Onderhoud + +Jy kan 'n taal gebruik waarmee jy gemaklik in is om die kodeering deel van die onderhoud te doen, maar vir groot maatskappye is die goeie besluite: + +- C++ +- Java +- Python + +Jy kan ook dié gebruik, maar lees eers rond. Daar is baie caveats: + +- JavaScript +- Ruby \ No newline at end of file From eb9f87f30ee996f5156de02e5452d64a43a05f16 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:46:01 +0200 Subject: [PATCH 499/857] Lines 380/1996 --- translations/README-af.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e44197e920..9da008824e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -370,4 +370,11 @@ Jy kan 'n taal gebruik waarmee jy gemaklik in is om die kodeering deel van die o Jy kan ook dié gebruik, maar lees eers rond. Daar is baie caveats: - JavaScript -- Ruby \ No newline at end of file +- Ruby + +Hier is 'n artikel wat ek geskryf het oor hoe om 'n taal te kies vir die onderhoud: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Hierdie is die oorspronklike artikel wat my pos op basseer was: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) + +Jy moet baie gemaklik in die taal wees en kundig. + From d06ffe37359bb2870de6d396814ec80c2d03397b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:48:41 +0200 Subject: [PATCH 500/857] Lines 390/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 9da008824e..1bb3137ab5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -378,3 +378,13 @@ Hierdie is die oorspronklike artikel wat my pos op basseer was: [Choosing a Prog Jy moet baie gemaklik in die taal wees en kundig. +Lees meer oor besluite: +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[Sien taal-spesifieke hulpbronne hier](programming-language-resources.md) + +## Boeke vir Datastrukture en Algoritmes + +Die boek sal jou fondasie vir rekenaar wetenskap vorm. + +Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodeering doen. \ No newline at end of file From 5f280782a4019337593e40b32f31198d9647adb3 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 13 Jul 2022 20:51:33 +0200 Subject: [PATCH 501/857] Lines 400/1996 --- translations/README-af.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 1bb3137ab5..bf0fc9f648 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -387,4 +387,17 @@ Lees meer oor besluite: Die boek sal jou fondasie vir rekenaar wetenskap vorm. -Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodeering doen. \ No newline at end of file +Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodeering doen. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fondasie, Datastrukture, Sorteer, Soek, en Grafiek Algoritmes + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - deur Goodrich, Tamassia, Goldwasser + - Ek lief die boek. Dit dek alles en meer. + - Pythonic kode. + - my boekverslag: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ \ No newline at end of file From 1e57cf31e77339e882bd114417e0541b1e41d5de Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 19:51:52 +0200 Subject: [PATCH 502/857] Lines 410/1996 --- translations/README-af.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index bf0fc9f648..aa9f2f1203 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -400,4 +400,11 @@ Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodee - deur Goodrich, Tamassia, Goldwasser - Ek lief die boek. Dit dek alles en meer. - Pythonic kode. - - my boekverslag: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ \ No newline at end of file + - my gloeiende boekverslag: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Jou besluit: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) \ No newline at end of file From 14c5bfcb6fcca315076daaddeefce5ca1b04a773 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 19:52:42 +0200 Subject: [PATCH 503/857] Lines 420/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index aa9f2f1203..3df6030e74 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -407,4 +407,13 @@ Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodee Jou besluit: - Goodrich, Tamassia, Goldwasser - - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) \ No newline at end of file + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +Your choice: From 8b6a1b7261a7a2d8e41551efd0fea579d65b7e86 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 19:55:21 +0200 Subject: [PATCH 504/857] Lines 430/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 3df6030e74..dc8ffb9532 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -416,4 +416,15 @@ Jou besluit: ### C++ -Your choice: +Jou besluit: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Onderhoud Voorbereïngsboeke + +Jy hoef nie 'n klomp van die te koop nie. Eerlikwaar is "Craking the Coding Interview" heelwaarskynlik genoeg, +maar ek het meer gekoop om myself meer oefening te gee. Maar ek doen altyd te veel. \ No newline at end of file From ffdc08a39729cc6e558f67ab70808099af22de03 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 19:59:17 +0200 Subject: [PATCH 505/857] Lines 450/1996 --- translations/README-af.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index dc8ffb9532..9fe123df79 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -427,4 +427,23 @@ Jou besluit: ## Onderhoud Voorbereïngsboeke Jy hoef nie 'n klomp van die te koop nie. Eerlikwaar is "Craking the Coding Interview" heelwaarskynlik genoeg, -maar ek het meer gekoop om myself meer oefening te gee. Maar ek doen altyd te veel. \ No newline at end of file +maar ek het meer gekoop om myself meer oefening te gee. Maar ek doen altyd te veel. + +Ek het beide van die gekoop. Hulle het vir my genoeg oefening gegee. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Antwoorde in C++ en Java + - Hierdie is 'n goeie opwarming vir Cracking the Coding Interview + - Nie te moeilik nie. Meeste probleme mag dalk makliker wees as dié in die onderhoud (van wat ek gelees het) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - antwoorde in Java + +### As jy tonne ekstra tyd het: + +Kies een: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + From 55839ee6debc23d024d712bb4fe20306863b188b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:03:58 +0200 Subject: [PATCH 506/857] Lines 460/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 9fe123df79..5b12567fc7 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -447,3 +447,13 @@ Kies een: - [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +## Moenie My Foute Maak Nie + +Hierdie lys het gegroei oor baie maande, en ja, dit het uit die hand geruk. + +Hierdie is 'n paar foute wat ek gemaak het sodat jy 'n beter ervaaring het. En jy sal maande se tyd spaar. + +### 1. Jy Sal Nie Alles Onthou Nie + +Ek het ure lank videos gekyk en deeglike notas gevat, en maande later was daar baie wat ek nie meer onthou het nie. Ek het 3 dae spandeer +om deur my notas te gaan en flitskaarte te maak, sodat ek kon herleer. Ek het nie al daardie kennis nodig gehaad nie. From 985a0112e3bbcb66d1cd050f5b977d133ffda023 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:08:02 +0200 Subject: [PATCH 507/857] Lines 470/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 5b12567fc7..5b1224c311 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -457,3 +457,13 @@ Hierdie is 'n paar foute wat ek gemaak het sodat jy 'n beter ervaaring het. En j Ek het ure lank videos gekyk en deeglike notas gevat, en maande later was daar baie wat ek nie meer onthou het nie. Ek het 3 dae spandeer om deur my notas te gaan en flitskaarte te maak, sodat ek kon herleer. Ek het nie al daardie kennis nodig gehaad nie. + +Asseblief, lees sodat jy nie my foute maak nie: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Gebruik flitskaarte + +Om die probleem op te los, het ek a klein flitskaart webwerf gemaak waar ek 2 tipe flitskaarte kon byvoeg: algemeen en kode. + +Maak jou eie verniet: From 2f48747443be50d6ac71090b1352610ea566d45b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:14:06 +0200 Subject: [PATCH 508/857] Lines 480/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 5b1224c311..d67580c395 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -456,7 +456,7 @@ Hierdie is 'n paar foute wat ek gemaak het sodat jy 'n beter ervaaring het. En j ### 1. Jy Sal Nie Alles Onthou Nie Ek het ure lank videos gekyk en deeglike notas gevat, en maande later was daar baie wat ek nie meer onthou het nie. Ek het 3 dae spandeer -om deur my notas te gaan en flitskaarte te maak, sodat ek kon herleer. Ek het nie al daardie kennis nodig gehaad nie. +om deur my notas te gaan en flitskaarte te maak, sodat ek kon revisie. Ek het nie al daardie kennis nodig gehaad nie. Asseblief, lees sodat jy nie my foute maak nie: @@ -465,5 +465,15 @@ Asseblief, lees sodat jy nie my foute maak nie: ### 2. Gebruik flitskaarte Om die probleem op te los, het ek a klein flitskaart webwerf gemaak waar ek 2 tipe flitskaarte kon byvoeg: algemeen en kode. +Elke kaart se formatering was verskillend. Ek het 'n mobiele-eerste webwerf gemaak, so ek kon revisie op my foon en tablet, waarookal ek is. Maak jou eie verniet: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**Ek BEVEEL NIE AAN dat jy my flitskaarte gebruik nie.** Daar is te veel onnodige kaarte wat jy nie nodig het nie. + +Maar as jy nie na my wil luister nie, hier is hulle: +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + From f99ec118e1d014fc621a7a168ee83800ce37de99 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:21:45 +0200 Subject: [PATCH 509/857] Lines 490/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index d67580c395..11f6387cfe 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -477,3 +477,13 @@ Maar as jy nie na my wil luister nie, hier is hulle: - [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): - [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +Hou in gedagte dat ek oorboord gegaan het en het kaarte wat alles van assembly taal en Python trivia na masjien leer en statistiek dek. +Dit te veel vir wat nodig is. + +**Nota op flitskaarte:** Die eerste keer wat jy erken dat jy die anwoord ken, moenie dit as ken merk nie. Jy moet dieselfde +kaart sien en dit vele kere reg beantwoord voordat jy regtig dit ken. Herhaling sal die kennis diepier +in jou brein berê. + +As 'n alternatief na my flitskaart webwerf is [Anki](http://ankisrs.net/), wat vir my voorgestel is talle kere. +Dit gebruik 'n herhalingssisteem om te help onthou. Dit gebruikers-vriendelik, beskikbaar op alle platforms en het 'n wolk sync sisteem. +Dit kos $25 op iOS maar is verniet op ander platforms. From e859cf725a5339e85839fd491ac6251b9c3ebf4f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:27:54 +0200 Subject: [PATCH 510/857] Lines 500/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 11f6387cfe..8426111aa6 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -487,3 +487,13 @@ in jou brein berê. As 'n alternatief na my flitskaart webwerf is [Anki](http://ankisrs.net/), wat vir my voorgestel is talle kere. Dit gebruik 'n herhalingssisteem om te help onthou. Dit gebruikers-vriendelik, beskikbaar op alle platforms en het 'n wolk sync sisteem. Dit kos $25 op iOS maar is verniet op ander platforms. + +My flitskaart databasis in Anki formaat: https://ankiweb.net/shared/info/25173560 (dankie [@xiewenya](https://github.com/xiewenya)). + +Sommige studente het 'n kwessie na vore gebring dat daar wit spasie is in die formatering wat reg gemaak kan word met die volgende stappe: open deck, edit card, kliek cards, kies die "styling" radio knop, verg by die member "white-space: pre;" aan die einde van die card class. + +### 3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer + +HIERDIE IS BAIE BELANGRIK. + +Begin met die kodering onderhoud vrae terwyl jy datastrukture en algoritmes leer. From 49fb9a01d7e357c2b8f1db2f339b506eb8812d7f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:35:11 +0200 Subject: [PATCH 511/857] Lines 510/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 8426111aa6..77c1010aaf 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -120,7 +120,7 @@ sagteware ontwikkeling/ingeneur rolle. - ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) - [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) - [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) -- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) +- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereidingsboeke) - [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) - [Die Daaglikse Plan](#die-daaglikse-plan) @@ -497,3 +497,14 @@ Sommige studente het 'n kwessie na vore gebring dat daar wit spasie is in die fo HIERDIE IS BAIE BELANGRIK. Begin met die kodering onderhoud vrae terwyl jy datastrukture en algoritmes leer. + +Jy moet toepas wat jy leer om probleme op te los, of jy sal vergeet. Ek het die fout gemaak. + +Sodra jy 'n onderwerp geleer het, en voel sowat gemaklik met dit, byvoorbeeld, **linked lists**: +1. Maak een van die [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereidingsboeke) (of kodering probleem webwerve, onder gelys) oop +2. Doen 2 of 3 vrae met betrekking tot linked lists. +3. Beweeg aan na die volgende onderwerp. +4. Later, gaan terug en doen nog 2 of 3 linked list probleme. +5. Doen hierdie met elke nuwe onderwerp wat jy leer. + +**Hou aan probleme doen terwyl jy al hierdie goed leer, nie na die tyd nie.** From b87dca972409e5e038bb9b421f39cfbb3ccccafe Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:38:22 +0200 Subject: [PATCH 512/857] Lines 520/1996 --- translations/README-af.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 77c1010aaf..c99a80a8aa 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -508,3 +508,12 @@ Sodra jy 'n onderwerp geleer het, en voel sowat gemaklik met dit, byvoorbeeld, * 5. Doen hierdie met elke nuwe onderwerp wat jy leer. **Hou aan probleme doen terwyl jy al hierdie goed leer, nie na die tyd nie.** + +Jy word nie aangestel vir kennis nie, maar hoe jy die kennis toepas. + +Daar is baie hulpbronne vir dié glys onder. Gaan voort. + +### 4. Fokus + +Daar is 'n klomp afleidings wat jou kosbare tyd kan opvat. Fokus en konsentreer is moelik. Sit musiek +aan sonder lirieke en jy sal in staat wees of goed te fokus. From cc280bfd700dbdf12514b56f872d87df06518e6e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:41:13 +0200 Subject: [PATCH 513/857] Lines 530/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index c99a80a8aa..c5c49c26e2 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -517,3 +517,13 @@ Daar is baie hulpbronne vir dié glys onder. Gaan voort. Daar is 'n klomp afleidings wat jou kosbare tyd kan opvat. Fokus en konsentreer is moelik. Sit musiek aan sonder lirieke en jy sal in staat wees of goed te fokus. + +## Wat Jy Nie Sal Sien Gedek Word Nie + +Hierdie is algemene tegnologie maar is nie deel van hierdie studie plan nie: + +- SQL +- Javascript +- HTML, CSS, en ander front-end tegnologie. + +## Die Daaglikse Plan From 648c776c723d8ca33c693eacd3e40ef363032ef9 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:46:33 +0200 Subject: [PATCH 514/857] Lines 540/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index c5c49c26e2..9c56b4a6b0 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -527,3 +527,14 @@ Hierdie is algemene tegnologie maar is nie deel van hierdie studie plan nie: - HTML, CSS, en ander front-end tegnologie. ## Die Daaglikse Plan + +Die kursus gaan oor baie onderwerpe. Elkeen sal heerwaarskynlik jou 'n paar dae vat, of dalk tog 'n week of meer. Dit hang af van jou skedule. + +Elke dag, vat die volgende onderwerp op die lys, kyk 'n paar videos oor daardie onderwerp, en dan skryf 'n implimentering +van daardie datastruktuur of algoritme in die taal wat jy gekies het vir hierdie kursus. + +Jy kan my kode hier sien: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + From db9657308d401f9e485874cdf460685d20ca3835 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 20:51:48 +0200 Subject: [PATCH 515/857] Lines 550/1996 --- translations/README-af.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 9c56b4a6b0..35a6810f73 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -538,3 +538,15 @@ Jy kan my kode hier sien: - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) +Jy hoef nie elke algoritme the memoriseer nie. Jy moet net dit genoeg verstaan om jou eie implimenteering te skryf. + +## Kodering Vrae Beoefening + + Hoekom is dié hier? Ek's nie gereed vir onderhoude nie. + +[Dan gaan terug en lees die.](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer) + +Hoekom jy oplossings na programeringprobleme moet oefen: +- Probleem erkenning, en waar die regte datastrukture en algoritmes inpas +- Versameling van vereistes vir die probleem +- \ No newline at end of file From 25c91fdceadf037a43fa8bb53354b89fbf08f056 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 21:28:32 +0200 Subject: [PATCH 516/857] Lines 560/1996 --- translations/README-af.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 35a6810f73..cd42e1bb80 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -549,4 +549,11 @@ Jy hoef nie elke algoritme the memoriseer nie. Jy moet net dit genoeg verstaan o Hoekom jy oplossings na programeringprobleme moet oefen: - Probleem erkenning, en waar die regte datastrukture en algoritmes inpas - Versameling van vereistes vir die probleem -- \ No newline at end of file +- Praat oor hoe jy die probleem oplos soos jy sal in die onderhoud +- Kodering op 'n wit bord of papier, nie 'n rekenaar nie +- Om te formuleer wat die tyd-en-spasie-kompleksiteit vir jou oplossing is (sien Big-O onder) +- Toets jou oplossing + +Daar is 'n wonderlike inleiding vir metodiese, kommunikatiewe probleem oplossing in 'n onderhoud. Jy sal dié ook van die +programmeering boeke kry, maar ek het die uitstekend gevind: +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) From f74970afa35653252cda1414128533c5ed7c3625 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 21:34:37 +0200 Subject: [PATCH 517/857] Lines 570/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index cd42e1bb80..7cf75d28c9 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -557,3 +557,13 @@ Hoekom jy oplossings na programeringprobleme moet oefen: Daar is 'n wonderlike inleiding vir metodiese, kommunikatiewe probleem oplossing in 'n onderhoud. Jy sal dié ook van die programmeering boeke kry, maar ek het die uitstekend gevind: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) + +Skryf kode op 'n wit bord of papier, nie 'n rekenaar nie. Toets met sommige insette. Dan tik en toets dit op 'n rekenaar. + +As jy nie 'n wit bord by die huis het nie, tel 'n groot skryfblad op by die kuns winkel. Jy kan sit op die bank en oefen. +Dié is my "sofa whiteboard". Ek het die pen in die foto gesit vir skaal. As jy 'n pen gebruik gaan jy wens jy kon dit uitvee. +Word baie morsig. **Ek gebruik 'n potlood en uitveër.** + +![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**Kodering vrae oefening is nie oor oplossings van programmering probleme memoriseer nie.** From dc427333f74734bd64e141ef4f803edf855fb5b8 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 21:37:09 +0200 Subject: [PATCH 518/857] Lines 580/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 7cf75d28c9..304630aa87 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -567,3 +567,13 @@ Word baie morsig. **Ek gebruik 'n potlood en uitveër.** ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) **Kodering vrae oefening is nie oor oplossings van programmering probleme memoriseer nie.** + +## Kodering Problem + +Moenie jou sleutel kodering onderhoud boeke vergeet [hier](#onderhoud-voorbereidingsboeke) nie. + +Probleme Oplos: +- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +Kodering Onderhoud Vrae Videos: From f14506b0d3d6577ccbd40c1334b365631be17dab Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 21:40:15 +0200 Subject: [PATCH 519/857] Lines 590/1996 --- translations/README-af.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 304630aa87..e20310de55 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -577,3 +577,15 @@ Probleme Oplos: - [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) Kodering Onderhoud Vrae Videos: +- [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) + - Super om deur oplossings vir die kode te loop +- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Goeie verduidelikings van oplossings en die kode + - Jy kan 'n klomp kyk in 'n klein tyd +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +- [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) + - Goeie verduidelikings van die oplossings en die python kode + - Sien ook [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) vir all die vrae lyste + - [Github links](https://github.com/neetcode-gh/leetcode) vir al die oplossing lyste + - [Neetcode 150](https://neetcode.io/) \ No newline at end of file From 22079bcadd3528391fdfa75eb634d12febe6745a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 14 Jul 2022 21:43:03 +0200 Subject: [PATCH 520/857] Lines 600/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e20310de55..cc1d0a935c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -588,4 +588,14 @@ Kodering Onderhoud Vrae Videos: - Goeie verduidelikings van die oplossings en die python kode - Sien ook [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) vir all die vrae lyste - [Github links](https://github.com/neetcode-gh/leetcode) vir al die oplossing lyste - - [Neetcode 150](https://neetcode.io/) \ No newline at end of file + - [Neetcode 150](https://neetcode.io/) + +Uitdaging webwerwe: +- [LeetCode](https://leetcode.com/) + - My gunstelling kodering platform werf. Die geld vir die intekening is die moeite werd vir die moontlike 1-2 maande se voorbereiding. + - Sien Nick White en FisherCoder Videos bo om deur die kode toe loop. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) \ No newline at end of file From 20d02e94c7064ecb9fc3bd3deb624573036d4d71 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 21:15:20 +0200 Subject: [PATCH 521/857] Lines 611/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index cc1d0a935c..313bb9f2e2 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -598,4 +598,13 @@ Uitdaging webwerwe: - [TopCoder](https://www.topcoder.com/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [InterviewBit](https://www.interviewbit.com/) -- [Project Euler](https://projecteuler.net/) \ No newline at end of file +- [Project Euler](https://projecteuler.net/) + +## Begin Solank + +Oraait, genoeg praat, kom ons leer! + +Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie! + +## Algoritmiese kompleksiteit / Big-O / Asimptotiese analiese + From 52bdfd163aebc94a2f81d6a8d87154d30b42a33c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 21:20:13 +0200 Subject: [PATCH 522/857] Lines 620/1996 --- translations/README-af.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 313bb9f2e2..7cf54f7770 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -608,3 +608,17 @@ Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie! ## Algoritmiese kompleksiteit / Big-O / Asimptotiese analiese +- Niks hier om te implimenteer nie, jy kyk net videos en vat notas! Yay! +- Daar is baie videos hier. Kyk net genoeg tot dat jy dit verstaan. Jy kan altyd terug kom en revisie. +- Moenie bekommer as jy nie al die wiskunde verstaan nie. +- Jy moet net verstaan hoe om die kompleksiteit van 'n algoritme in terme van Big-O uit te druk. +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) \ No newline at end of file From eef8d697e0af183234e11d35c5ef3cc215d2091a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 21:23:17 +0200 Subject: [PATCH 523/857] Lines 630/1996 --- translations/README-af.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 7cf54f7770..7aaed82a04 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -621,4 +621,9 @@ Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie! - [ ] TopCoder (includes recurrence relations and master theorem): - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) \ No newline at end of file +- [ ] [Cheat sheet](http://bigocheatsheet.com/) + +Well, dis genoeg van daardie. + +Wanneer jy deur "Cracking the Coding Interview" gaan, is daar 'n hoofstuk oor hierdie, en by die einde is daar 'n quiz om te sien +of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. Dis 'n super revisie en toets. From 9864d1826e954cea3b647d04f70a36b9798250ad Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 21:37:32 +0200 Subject: [PATCH 524/857] Lines 650/1996 --- translations/README-af.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 7aaed82a04..71cda7da20 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -627,3 +627,26 @@ Well, dis genoeg van daardie. Wanneer jy deur "Cracking the Coding Interview" gaan, is daar 'n hoofstuk oor hierdie, en by die einde is daar 'n quiz om te sien of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. Dis 'n super revisie en toets. + +## Datastrukture + +- ### Skikkings + - [ ] Oor Skikkings: + - [Arrays (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) (Begin kyk van 15m 32s) + - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement 'n vektor (mutable skikking met outomatiese grootte verandering) + - [ ] Oefen kodering met skikkings en wysers, en wysers wiskunde om te spring na 'n indeks in pleks van indeksering te gebruik. + - [ ] Nuwe rou data skikking met gelokeerde geheue + - kan int skikking alokeer onder die kap, maar net nie die kenmerke gebruik nie + - begin met 16, of as begin nommer groter is, gebruik bevoegdhede van 2 - 16, 32, 64, 128 + - [ ] size() - hoeveelheid items + - [ ] capacity() - hoeveelheid items dit kan hou + - [ ] is_empty() + - [ ] at(index) - lewer item by gegewende indeks, omplof as indeks buite grens is + - [ ] push(item) + - [ ] insert(index, item) - voeg item by indeks, skuif daardie indeks se waarde en rank elemente regs + - [ ] prepend(item) - kan insert hierbo gebruik by indeks 0 + - [ ] pop() - verwyder van die einde, lewer waarde + - [ ] delete(indeks) - \ No newline at end of file From b88b908ef31ae8b2576c63b4e625fbaa02ab0e55 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 21:47:16 +0200 Subject: [PATCH 525/857] Lines 660/1996 --- translations/README-af.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 71cda7da20..7f26fe42b8 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -644,9 +644,19 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] size() - hoeveelheid items - [ ] capacity() - hoeveelheid items dit kan hou - [ ] is_empty() - - [ ] at(index) - lewer item by gegewende indeks, omplof as indeks buite grens is + - [ ] at(indeks) - lewer item by gegewende indeks, omplof as indeks buite grens is - [ ] push(item) - - [ ] insert(index, item) - voeg item by indeks, skuif daardie indeks se waarde en rank elemente regs + - [ ] insert(indeks, item) - voeg item by indeks, skuif daardie indeks se waarde en rank elemente regs - [ ] prepend(item) - kan insert hierbo gebruik by indeks 0 - [ ] pop() - verwyder van die einde, lewer waarde - - [ ] delete(indeks) - \ No newline at end of file + - [ ] delete(indeks) - skrap item by indeks, skuif al rank elemente links + - [ ] remove(item) - kyk vir waarde en verwyder indeks wat dit hou (al is dit in verskeie plekke) + - [ ] find(item) - kyk vir waarde en lewer eerste indeks met daardie waarde, -1 as dit nie bestaan nie + - [ ] resize(new_capacity) // privaat funksie + - wanner jy kapasiteit bereik, verander om die grootte te dubbel + - wanneer 'n item pop, as grootte 1/4 van kapasiteit is, verander na half + - [ ] Tyd + - O(1) om te add/verwyder aan die einde (geamoriënteer vir toekening van meer spasie), indekx, of updateer + - O(n) om te voeg/skrap elders + - [ ] Spasie + - \ No newline at end of file From 8015016d18ed2780d20b4996a3f1e3dfe0800ecd Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Fri, 15 Jul 2022 23:13:48 +0200 Subject: [PATCH 526/857] Lines 670/1996 --- translations/README-af.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 7f26fe42b8..2cb7ca630c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -232,7 +232,7 @@ sagteware ontwikkeling/ingeneur rolle. - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) - [Kodering Probleme](#kodering-probleme) - [Begin Solank](#begin-solank) - - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis) + - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algoritmiese-kompleksiteti--big-o--asimptotiese-analise) - [Datastrukture](#datastrukture) - [Meer Kennis](#meer-kennis) - [Bome](#bome) @@ -659,4 +659,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - O(1) om te add/verwyder aan die einde (geamoriënteer vir toekening van meer spasie), indekx, of updateer - O(n) om te voeg/skrap elders - [ ] Spasie - - \ No newline at end of file + - aaneenlopend in geheue, so nabyheid help prestasie + - spasie nodig - (skikking kapasiteit, wat >= n is) * item grootte, maar tot as dit 2n is, is dit steeds O(n) + +- ### Linked Lists + - [ ] Beskrywing: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - nie die hele video nie, net gedeeltes oor Node struct en geheue toekening \ No newline at end of file From 3ccfa8ddc01456ca14500dd5d6dc3df97c211d90 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 16:58:33 +0200 Subject: [PATCH 527/857] Lines 680/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 2cb7ca630c..6319e6c785 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -668,4 +668,14 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - nie die hele video nie, net gedeeltes oor Node struct en geheue toekening \ No newline at end of file + - nie die hele video nie, net gedeeltes oor Node struct en geheue toekening + - [ ] Linked List vs Skikkings: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [why you suld avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: Jy nodig wyser tot wyser kennis: + (vir wanneer jy 'n wyser paas na 'n funksie wat die address na waar die wyser wys verander) + Die blad is net om 'n houvas te kry op wyser na wyser. Ek beveel nie aan om hierdie lys transversale styl te lees nie. Leesbaarheid en onderhoudbaarheid ly van slimheid. + - [Wysers na Wysers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implement (Ek het dit gedoen met stert wyser en sonder): + - [ ] size() \ No newline at end of file From 4eec4d8069c5d075a3d49f257168d76fd2593265 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:09:18 +0200 Subject: [PATCH 528/857] Lines 690/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6319e6c785..83f37f1ffa 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -678,4 +678,14 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. Die blad is net om 'n houvas te kry op wyser na wyser. Ek beveel nie aan om hierdie lys transversale styl te lees nie. Leesbaarheid en onderhoudbaarheid ly van slimheid. - [Wysers na Wysers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] Implement (Ek het dit gedoen met stert wyser en sonder): - - [ ] size() \ No newline at end of file + - [ ] size() - lewer hoeveelheid data elemente in lys + - [ ] empty() - bool lewer waar as leeg + - [ ] value_at(indeks) - lewer die waarde van die nth item (begin by 0 vir eerste) + - [ ] push_front(waarde) - voeg 'n item aan die begin van die lys + - [ ] pop_front() - verwyder voorste item en lewer die waarde + - [ ] push_back(value) - voeg 'n item aan die einde + - [ ] pop_back() - verwyder laaste item en lewer die waarde + - [ ] front() - kry waarde van voorste item + - [ ] back() - kry waarde van laaste item + - [ ] insert(indeks, waarde) - voeg waarde by indeks, so huidige item by daardie indeks word gewys na deur nuwe item by daardie indeks + - [ ] \ No newline at end of file From c320804004c84dc03dbf0b536c2bb2660fbc4fcc Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:14:51 +0200 Subject: [PATCH 529/857] Lines 700/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 83f37f1ffa..900cd9bc99 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -688,4 +688,18 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] front() - kry waarde van voorste item - [ ] back() - kry waarde van laaste item - [ ] insert(indeks, waarde) - voeg waarde by indeks, so huidige item by daardie indeks word gewys na deur nuwe item by daardie indeks - - [ ] \ No newline at end of file + - [ ] erase(indeks) - verwyder node by gegewe indeks + - [ ] value_n_from_end(n) - lewer die waarde van die node by nth posisie van die einde van die lys af + - [ ] reverse() - keer die lys om + - [ ] remove_value(waarde) - verwyder die eerste item in die lys met dié waarde + - [ ] Doubly-linked List + - [Deskripsie (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Nie nodig om te implimenteer nie + +- ### Stapel + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Sal nie implementeer nie. Implementering met skikking is maklik + +- ### Queue + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) \ No newline at end of file From 9ebb125666850bcc33f770485640f585ce2796ed Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:17:58 +0200 Subject: [PATCH 530/857] Lines 710/1996 --- translations/README-af.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 900cd9bc99..0685ad90d0 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -702,4 +702,10 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) \ No newline at end of file + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] Implementeer met linked-list, met stert wyser: + - enqueue(waarde) - voeg waarde by posisie by stert + - dequeue() - lewer waarde en verwyder die minste onlangse gevoegde element (voorkant) + - empty() + - [ ] Implementeer met vaste-grootte skikking: + - \ No newline at end of file From de8fcc290bedf34b8cffae9ec03677af00faaa4d Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:21:06 +0200 Subject: [PATCH 531/857] Lines 720/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 0685ad90d0..efe44f5a30 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -708,4 +708,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - dequeue() - lewer waarde en verwyder die minste onlangse gevoegde element (voorkant) - empty() - [ ] Implementeer met vaste-grootte skikking: - - \ No newline at end of file + - enqueue(value) - voeg item aan einde van beskikbare + - dequeue() - lewer waarde en verwyder minste onlangse gevoegde element + - empty() + - full() + - [ ] Cost: + - 'n Slegte implementering met linked list waar jy enqueue by die hoof en dequeue by die stert sal wees O(n) + - enqueue: O(1) (amortized, linked list en array [probing]) + - dequeue: O(1) (linked list en array) + - empty: O(1) (linked list en array) + From 91f074295dc208a0f9e6bff56b10cb3a8fcc7717 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:22:03 +0200 Subject: [PATCH 532/857] Lines 730/1996 --- translations/README-af.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index efe44f5a30..e2527cd80e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -718,3 +718,20 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - dequeue: O(1) (linked list en array) - empty: O(1) (linked list en array) +- ### Hash table + - [ ] Videos: + - [ ] [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) + - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online Courses: + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) \ No newline at end of file From a6b666c63015b89b58ac8d26c545fcbe30fdf912 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:27:32 +0200 Subject: [PATCH 533/857] Lines 740/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e2527cd80e..ea93d49f56 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -714,6 +714,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - full() - [ ] Cost: - 'n Slegte implementering met linked list waar jy enqueue by die hoof en dequeue by die stert sal wees O(n) + want you sal die alement langs die laaste nodig hê, wat 'n volle transversal elke dequeue veroorsaak - enqueue: O(1) (amortized, linked list en array [probing]) - dequeue: O(1) (linked list en array) - empty: O(1) (linked list en array) @@ -734,4 +735,12 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) \ No newline at end of file + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implement met 'n skikking en gebruik linear probing + - hash(k, m) - m is grootte van hash table + - add(sleutel, waarde) - as sleutel al klaar beskikbaar is, opdateer waarde + - exists(sleutel) + - get(sleutel) + - remove(sleutel) + From ce3ba031d7eb58fc51c4cf995aba9202a52d91c9 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:29:37 +0200 Subject: [PATCH 534/857] Lines 750/1996 --- translations/README-af.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index ea93d49f56..b0c1e4de2a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -744,3 +744,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - get(sleutel) - remove(sleutel) +## Meer Kennis + +- ### Binary search + - [ ] [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) + - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] Implement: + - binary search (op 'n gesorteerde skikking van heelgetalle) + - binary search met recursion \ No newline at end of file From 38176c01385bf3aefd1693b9ac0528b742690011 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:29:55 +0200 Subject: [PATCH 535/857] Lines 760/1996 --- translations/README-af.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index b0c1e4de2a..c1f375e0e4 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -753,4 +753,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] Implement: - binary search (op 'n gesorteerde skikking van heelgetalle) - - binary search met recursion \ No newline at end of file + - binary search met recursion + +- ### Bitwise operations + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) \ No newline at end of file From b1b919bb1610b2d868d2f50f07c1849abd3a42f4 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:32:19 +0200 Subject: [PATCH 536/857] Lines 770/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c1f375e0e4..9e183580ea 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -756,4 +756,15 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - binary search met recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) \ No newline at end of file + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - jy moet baie van die bevoegdhede van 2 ken van (2^1 na 2^16 na 2^32) + - [ ] Verstaan baie goed hoe om bits te manipuleer met: &, |, ^, ~, >>, << + - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Good intro: + [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) \ No newline at end of file From f4d0b09a5e660aa3dcd4a1a43bf9a940dd86b7e7 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:33:43 +0200 Subject: [PATCH 537/857] Lines 780/1996 --- translations/README-af.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 9e183580ea..6ba3ebb321 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -759,7 +759,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - jy moet baie van die bevoegdhede van 2 ken van (2^1 na 2^16 na 2^32) - [ ] Verstaan baie goed hoe om bits te manipuleer met: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: + - [ ] Goeie intro: [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) @@ -767,4 +767,14 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) \ No newline at end of file + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2 en 1 se kompliment + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Tel set bits + - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Ruil waardes: \ No newline at end of file From 99162afd1ffdbc0f2eb2071ab36d0ce763ee0a69 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sat, 16 Jul 2022 17:47:24 +0200 Subject: [PATCH 538/857] Lines 800/1996 --- translations/README-af.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6ba3ebb321..31b39fb95c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -777,4 +777,28 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Ruil waardes: \ No newline at end of file + - [ ] Ruil waardes: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute value: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) + +## Bome + +- ### Bome - Notas & Agtergrond + - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basiese boom konstruksie + - traversal + - manipulasie algoritmes + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS notas: + - level order (BFS, met queue) + - tyd kompleksiteit: O(n) + - spasie kompleksiteit: beste: O(1), slegste: O(n/2)=O(n) + - DFS notas: + - tyd kompleksiteit: O(n) + - spasie kompleksiteit: + beste: O(log n) - gemidelde hoogte van boom + slegste: O(n) + - inorder (DFS: links, self, regs) + - postorder (DFS: links, regs, self) + - preorder (DFS: self, links, regs) From fa50a60b0ac049f333184c0e5c3a8cff90e0c70f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 20:35:04 +0200 Subject: [PATCH 539/857] Lines 810/1996 --- translations/README-af.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 31b39fb95c..05ede9d556 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -802,3 +802,9 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - inorder (DFS: links, self, regs) - postorder (DFS: links, regs, self) - preorder (DFS: self, links, regs) + +- ### Binary search trees: BSTs + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - C/C++: \ No newline at end of file From 00956d83515b5abf19d81689c7142eef90a345fd Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 20:39:29 +0200 Subject: [PATCH 540/857] Lines 820/1996 --- translations/README-af.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 05ede9d556..32935d9875 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -804,7 +804,17 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - preorder (DFS: self, links, regs) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [Binary Search Tree Revisie (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Inleiding (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - - C/C++: \ No newline at end of file + - C/C++: + - [ ] [Binary search tree - Implementering in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST implementation - memory allocation met stapels en hope (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Kry min en max element in 'n binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Kry hooggte van 'n binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binary tree traversal - breadth-first en depth-first strategieë (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Kyk of 'n binary tree 'b binary search tree is of nie(video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Verwyder 'n node van 'n Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Inorder Successor in 'n binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) \ No newline at end of file From 87e4a5b3565bd126f87d04a34ae01b83cdd5c3d3 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 20:46:31 +0200 Subject: [PATCH 541/857] Lines 830/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 32935d9875..15d3a4d0f5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -817,4 +817,18 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Kyk of 'n binary tree 'b binary search tree is of nie(video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Verwyder 'n node van 'n Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in 'n binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) \ No newline at end of file + - [ ] [Inorder Successor in 'n binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implement: + - [ ] insert // vog 'n waarde in 'n boom + - [ ] get_node_count // kry hoeveelheid waardes gestoor is + - [ ] print_values // print die waardes in die boom, van min na max + - [ ] delete_tree + - [ ] is_in_tree // waar wanneer 'n gegewende waarde in 'n boom is + - [ ] get_height // gee die hooggte in nodes (enkel node se hooggte is 1) + - [ ] get_min // gee die minimum waarde wat gestoor is in die boom + - [ ] get_max // gee die maksimum waarde wat gestoor is in die boom + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // gee volgende hoogste waarde in die boom na die gegewende waarde, -1 as niks + +- ### Heap / Priority Queue / Binary Heap \ No newline at end of file From 1b7ff89a303285d50d44b6eb0e6239c5df57ef81 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 20:50:43 +0200 Subject: [PATCH 542/857] Lines 850/1996 --- translations/README-af.md | 42 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 15d3a4d0f5..b69bb69e12 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -831,4 +831,44 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] delete_value - [ ] get_successor // gee volgende hoogste waarde in die boom na die gegewende waarde, -1 as niks -- ### Heap / Priority Queue / Binary Heap \ No newline at end of file +- ### Heap / Priority Queue / Binary Heap + - gevisualiseer as 'n boom, maar is gewoonlik lineêr gestoor (skikking, linked list) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Inleiding (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [Naïef implementering (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basese operasies (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudokode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - spring na begin (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Bou 'n heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: Heaps en Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Lineêr Tyd BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implementeer 'n max-heap: + - [ ] insert + - [ ] sift_up - needed for insert + - [ ] get_max - returns the max item, without removing it + - [ ] get_size() - return number of elements stored + - [ ] is_empty() - returns true if heap contains no elements + - [ ] extract_max - returns the max item, removing it + - [ ] sift_down - needed for extract_max + - [ ] remove(x) - removes item at index x + - [ ] heapify - create a heap from an array of elements, needed for heap_sort + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + +## Sorting + +- [ ] Notes: + - Implement sorts & know best case/worst case, average complexity of each: + - no bubble sort - it's terrible - O(n^2), except when n <= 16 + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) \ No newline at end of file From cf075a8c81dbe6b9b9a4ab3465e715f8e6798bd0 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 20:55:48 +0200 Subject: [PATCH 543/857] Lines 860/1996 --- translations/README-af.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index b69bb69e12..2d81edff69 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -849,15 +849,15 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Lineêr Tyd BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] Implementeer 'n max-heap: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(x) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + - [ ] sift_up - nodig vir insert + - [ ] get_max - gee die max item, sonder om dit te verwyder + - [ ] get_size() - gee hoeveelheid elemente gestoor is + - [ ] is_empty() - waar as heap geen elemente het nie + - [ ] extract_max - gee max item, en verwyder dit + - [ ] sift_down - nodig vir extract_max + - [ ] remove(x) - verwyder item by indeks x + - [ ] heapify - maak 'h heap van 'n skikking elemente, nodig vir heap_sort + - [ ] heap_sort() - vat 'n ongesorteerde skikking en verander dit na 'n gesorteerde skikking in-plek met 'n max heap of 'n min heap ## Sorting From fef66477942975ffdbec6035a5dfc3a020ec521e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:00:42 +0200 Subject: [PATCH 544/857] Lines 870/1996 --- translations/README-af.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 2d81edff69..8c16eb4aa1 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -859,16 +859,16 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] heapify - maak 'h heap van 'n skikking elemente, nodig vir heap_sort - [ ] heap_sort() - vat 'n ongesorteerde skikking en verander dit na 'n gesorteerde skikking in-plek met 'n max heap of 'n min heap -## Sorting +## Sorteer -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] Stability in sorting algorithms ("Is Quicksort stable?") +- [ ] Notas: + - Implementeer soterings & weet wat die beste/slegste gevalle is, gemidelde kompleksiteite van elk: + - geen bubble sort - dis verskriklik sleg - O(n^2), behalwe wanneer n <= 16 + - [ ] Stabiliteit in sorteer algoritmes ("Is Quicksort stabiel?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. + - [ ] Watse algoritmes kan op linked lists gebruik word? Watses op arrays? Watses op beide? + - I sal nie aan beveel om 'n linked list te sorteer nie, maar merge sort is doenbaar - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) \ No newline at end of file From 35bedef2cb8f6ce5a47208bc40b31559ab66f5c0 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:01:50 +0200 Subject: [PATCH 545/857] Lines 880/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 8c16eb4aa1..6edacf2520 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -871,4 +871,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - [ ] Watse algoritmes kan op linked lists gebruik word? Watses op arrays? Watses op beide? - I sal nie aan beveel om 'n linked list te sorteer nie, maar merge sort is doenbaar - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) \ No newline at end of file + - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Vir heapsort, sien Heap datastruktuur bo. Heap sort is fantasties, maar nie stabiel + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) \ No newline at end of file From 97171dececcce09ed5de4975e8dc2b23dd1727f2 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:02:09 +0200 Subject: [PATCH 546/857] Lines 890/1996 --- translations/README-af.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6edacf2520..6829e3156a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -880,4 +880,10 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) \ No newline at end of file + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) \ No newline at end of file From 5dbeec488f929f305a48a2eea255a96aaeb9d8c5 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:02:38 +0200 Subject: [PATCH 547/857] Lines 900/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6829e3156a..9302e3a58b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -886,4 +886,18 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) \ No newline at end of file + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) \ No newline at end of file From db0c5a12fb964eed8ad10a8586ecf45061d75423 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:03:00 +0200 Subject: [PATCH 548/857] Lines 910/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 9302e3a58b..11be1c3f43 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -900,4 +900,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) - [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) - [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) \ No newline at end of file +- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Merge sort kode: + - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Quick sort kode: + - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) \ No newline at end of file From d83f843462fde7f095dc7c27905415c0435f8340 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:04:37 +0200 Subject: [PATCH 549/857] Lines 916/1996 --- translations/README-af.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 11be1c3f43..618f91dd4a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -909,4 +909,8 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] Quick sort kode: - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) \ No newline at end of file + - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implementeer: + - [ ] Mergesort: O(n log n) gemiddelde en slegste gevalle + - [ ] Quicksort O(n log n) gemiddelde geval \ No newline at end of file From 92385f8dd1b7a3dc0aa781d700efb84b15d693d0 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 21:13:34 +0200 Subject: [PATCH 550/857] Lines 930/1996 --- translations/README-af.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 618f91dd4a..e563bd3639 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -913,4 +913,20 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] Implementeer: - [ ] Mergesort: O(n log n) gemiddelde en slegste gevalle - - [ ] Quicksort O(n log n) gemiddelde geval \ No newline at end of file + - [ ] Quicksort O(n log n) gemiddelde geval + - Selection sort en insertion sort is albei O(n^2) gemiddeld en slegste gevalle + - Vir heapsort, sien Heap datastrukture bo + +- [ ] Nie nodig nie, maar ek beveel hulle aan: + - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) \ No newline at end of file From 7c8e81779d2ceebfeebee628a05e4b3e9b65e249 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:38:39 +0200 Subject: [PATCH 551/857] Lines 940/1996 --- translations/README-af.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e563bd3639..028ec706a3 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -929,4 +929,11 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) \ No newline at end of file + - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +As 'n opsomming, hier is 'n visuele verteenwoordiging van [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). +As jy nog detail nodig het op hierdie onderwer, sien "Sorteer" seksie in [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) + +## Grafieke + +Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoordig, so die seksie is lank, soos bome en sortering was. From 386919780b03018646942ea6c43525e22eee7b36 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:43:59 +0200 Subject: [PATCH 552/857] Lines 950/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 028ec706a3..93ae283ac5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -937,3 +937,14 @@ As jy nog detail nodig het op hierdie onderwer, sien "Sorteer" seksie in [Bykome ## Grafieke Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoordig, so die seksie is lank, soos bome en sortering was. + +- Notas: + - Daar is 4 basiese maniere om 'n grafiek in geheue te verteenwoordig: + - objects and pointers + - adjacency matrix + - adjacency list + - adjacency map + - Familiariseer jouself met elke verteenwoordiging en sy voor- en nadele + - BFS en DFS - ken hulle computational kompleksiteit, hulle ruilings-waardes, en hoe om hulle te implimenteer in regte kode + - Wanner 'n vraag gevra word, kyk vir 'n grafiek-gebaseerde oplossing eerste, dan begeen aan as niks + From c08a4932f5cd85943f73dea61327be986b9fb851 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:44:26 +0200 Subject: [PATCH 553/857] Lines 960/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 93ae283ac5..96ec7bafa3 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -948,3 +948,14 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - BFS en DFS - ken hulle computational kompleksiteit, hulle ruilings-waardes, en hoe om hulle te implimenteer in regte kode - Wanner 'n vraag gevra word, kyk vir 'n grafiek-gebaseerde oplossing eerste, dan begeen aan as niks +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Skiena Lectures - great intro: + - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) \ No newline at end of file From 1c11edb19826edc39ea609012814f7537221bd8c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:45:09 +0200 Subject: [PATCH 554/857] Lines 970/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 96ec7bafa3..26d4bc099d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -958,4 +958,18 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) - - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) \ No newline at end of file + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Graphs (revisie en meer): + + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) From 19a9e59015ecacbdb6062e06236721a12bc9d176 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:48:32 +0200 Subject: [PATCH 555/857] Lines 990/1996 --- translations/README-af.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 26d4bc099d..7ef3ff5b56 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -973,3 +973,22 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Full Coursera Kursus: + - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Ek sou implimenteer: + - [ ] DFS met adjacency list (recursive) + - [ ] DFS met adjacency list (iterative met stack) + - [ ] DFS met adjacency matrix (recursive) + - [ ] DFS met adjacency matrix (iterative met stack) + - [ ] BFS met adjacency list + - [ ] BFS met adjacency matrix + - [ ] single-source shortest path (Dijkstra) + - [ ] minimum spanning tree + - DFS-based algorithms (sien Aduni videos bo): + - [ ] kyk vir cycle (nodig vir topological sort, aangesien ons wil kyk vir 'n cycle voordat ons begin) + - [ ] topological sort + - [ ] tel gekoppelde komponente in 'n grafiek + - [ ] lys sterk gokoppelde komponente + - [ ] kyk vir bipartite graph \ No newline at end of file From 8415adc8a22145aa7e89485a571cb0d3d887d83e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Sun, 17 Jul 2022 22:49:57 +0200 Subject: [PATCH 556/857] Lines 1000/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 7ef3ff5b56..1020f55a53 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -991,4 +991,13 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] topological sort - [ ] tel gekoppelde komponente in 'n grafiek - [ ] lys sterk gokoppelde komponente - - [ ] kyk vir bipartite graph \ No newline at end of file + - [ ] kyk vir bipartite graph + +## Nog Meer Kennis + +- ### Recursion + - [ ] Stanford lesings oor recursion & backtracking: + - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) \ No newline at end of file From 3ca0eba3db26aedb94986768996d34dcd19c4d46 Mon Sep 17 00:00:00 2001 From: "Md. Riadul Islam" Date: Mon, 18 Jul 2022 09:22:38 +0600 Subject: [PATCH 557/857] link proper way written --- translations/README-bn.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 194cf31e0b..03ea2510e4 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -562,23 +562,23 @@ -বাস্তবায়নের কিছুই নেই -এখানে প্রচুর ভিডিও রয়েছে। যতক্ষণ না আপনি এটি বুঝতে পারছেন ঠিক ততক্ষণ দেখুন। আপনি সর্বদা ফিরে এসে পর্যালোচনা করতে পারেন। -কিছু বক্তৃতা যদি খুব ম্যাথিক হয় তবে আপনি ব্যাকগ্রাউন্ডের জ্ঞান পেতে নীচে নেমে গিয়ে আলাদা গণিতের ভিডিওগুলি দেখতে পারেন। -- [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)] (https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)] (https://www.youtube.com/watch?v=V6mKVRU1evU) -- [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - স্কিয়েনা: - -[ভিডিও] (https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[স্লাইডস] (http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা] (http://discrete.gr/complexity/) -- [বৃদ্ধির অর্ডার (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [অ্যাসিপটোটিকস (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) -- [ইউসি বার্কলে বিগ ও (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)] (https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [চিত্রিত "বিগ ও" (ভিডিও)] (https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) + -[ভিডিও](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + -[স্লাইডস](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) +- [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা](http://discrete.gr/complexity/) +- [বৃদ্ধির অর্ডার (ভিডিও)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) +- [অ্যাসিপটোটিকস (ভিডিও)](https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) +- [ইউসি বার্কলে বিগ ও (ভিডিও)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) +- [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [চিত্রিত "বিগ ও" (ভিডিও)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): - -[গণনামূলক জটিলতা: বিভাগ 1] (https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) - -[গণনামূলক জটিলতা: বিভাগ 2] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) -- [চিট শিট] (http://bigocheatsheet.com/) + -[গণনামূলক জটিলতা: বিভাগ 1](https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) + -[গণনামূলক জটিলতা: বিভাগ 2](https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) +- [চিট শিট](http://bigocheatsheet.com/) From df104373ef6ab8f2788aafdacc872e2b267afe0a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:38:38 +0200 Subject: [PATCH 558/857] Links fixed --- translations/README-af.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 1020f55a53..85224e134d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -113,7 +113,7 @@ sagteware ontwikkeling/ingeneur rolle. ### Die Studie Plan -- [Wat is dit?]() +- [Wat is dit?](#wat-is-dit) - [Hoekom gebruik dit?](#hoekom-gebruik-dit) - [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik) - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) @@ -129,7 +129,7 @@ sagteware ontwikkeling/ingeneur rolle. ## Onderwerpe om te Studeer -- [Kodering Onderhoud Universiteit]() +- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) - [Wat is dit?](#wat-is-dit) - [Inhoudsopgawe](#inhoudsopgawe) - [Die Studie Plan](#die-studie-plan) @@ -188,7 +188,7 @@ sagteware ontwikkeling/ingeneur rolle. ### Kry die Werk -- [Werk Jou CV By]() +- [Werk Jou CV By](#werk-jou-cv-by) - [Kry 'n Werk](#kry-n-werk) - [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) - [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) @@ -199,7 +199,7 @@ sagteware ontwikkeling/ingeneur rolle. ### Opsionele Ekstra Onderwerpe & Hulpbronne -- [Kodering Onderhoud Universiteit]() +- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) - [Wat is dit?](#wat-is-dit) - [Inhoudsopgawe](#inhoudsopgawe) - [Die Studie Plan](#die-studie-plan) From 44c0b88e17b92e5d3715bf95a289da88c4a533f5 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:41:56 +0200 Subject: [PATCH 559/857] Lines 1011/1996 --- translations/README-af.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 85224e134d..921d705669 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1000,4 +1000,12 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) \ No newline at end of file + - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Wanneer is dit gepas om te gebruik? + - Hoe is sterk recursion beter as nie? + - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) + + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) \ No newline at end of file From c6f379b69ee6d81d4d8f3d75eab210df0e260e8e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:49:14 +0200 Subject: [PATCH 560/857] Lines 1030/1996 --- translations/README-af.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 921d705669..6d78e088c5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1008,4 +1008,30 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) - [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) \ No newline at end of file + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### Dinamiese Programering + - Jy sal heelwaarskynlik geen dinamiese probleme in die onderhoud sien nie, maar dis die moeite werd om + 'n probleem te herken as 'n dinamiese programering probleem. + - Hierde onderwerp kan redelik moeilik wees, omdat elke DP oplosbare probleem gedefinieer moet word as 'n recursion verhouding, en om daarmee op te kom is moeilik. + - Ek beveel aan om na soveel DP probleme te kyk as moontlik tot dat jy 'n goeie begrip van die patroon het. + - [ ] Videos: + - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] List of individual DP problems (each is short): + [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lecture notes: + - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) \ No newline at end of file From 16b2200f4908d103695cbff2fbcc95066214feb6 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:50:32 +0200 Subject: [PATCH 561/857] Lines 1060/1996 --- translations/README-af.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6d78e088c5..72cb89d219 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1034,4 +1034,27 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) \ No newline at end of file + - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Ontwerp patrone + - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Leer hierdie patrone: + - [ ] strategy + - [ ] singleton + - [ ] adapter + - [ ] prototype + - [ ] decorator + - [ ] visitor + - [ ] factory, abstract factory + - [ ] facade + - [ ] observer + - [ ] proxy + - [ ] delegate + - [ ] command + - [ ] state + - [ ] memento + - [ ] iterator + - [ ] composite + - [ ] flyweight + - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) \ No newline at end of file From 0285be248726a4a3817d85341a22564d87ae046c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:54:00 +0200 Subject: [PATCH 562/857] Lines 1070/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 72cb89d219..691c0679e4 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1057,4 +1057,16 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] composite - [ ] flyweight - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) \ No newline at end of file + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Ek weet die kanonieke boek is "Design Patterns: Elements of Reusable Object-Orientated Software", maar Head First is 'n goeie begin na OO ook. + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) + +- ### Kombinatorika (n kies k) & Probability + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academy: + - Kursus uitleg: + - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Net die videos - 41 (elkeen is eenvoudig en elkeen is kort): + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) \ No newline at end of file From f652b9adb249810ee94c7469e82f09865250ec6c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:57:35 +0200 Subject: [PATCH 563/857] Lines 1090/1996 --- translations/README-af.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 691c0679e4..280be1c31b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1069,4 +1069,20 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - Kursus uitleg: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - Net die videos - 41 (elkeen is eenvoudig en elkeen is kort): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) \ No newline at end of file + - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-Complete en Approximation Algorithms + - Ken die mees beroemde klasse van NP-complete probleme, soos traveling salesman en die knapsack probleem, + en wees reg om hulle the herken wanneer 'n onderhoudvoerder jou vir hulle vra in vermomming. + - Ken wat NP-complete beteken. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) \ No newline at end of file From 66743697b15b9930eb8d02f7cdc4118207f0f81a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 20:59:47 +0200 Subject: [PATCH 564/857] Lines 1100/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 280be1c31b..c8018cc580 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1085,4 +1085,18 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) \ No newline at end of file + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig bespreek amper-optimale oplossings vir die travaling salesman probleem: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Bladsye 1048 - 1140 in CLRS as jy dit het. + +- ### Hoe rekenare 'n program proses + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) \ No newline at end of file From 7e84eb7f965e9b619f8e2569807c00d86a96079e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:02:32 +0200 Subject: [PATCH 565/857] Lines 1130/1996 --- translations/README-af.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c8018cc580..6db6d224f6 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1099,4 +1099,31 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) \ No newline at end of file + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### Caches + - [ ] LRU cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU cache: + - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Prosesse en Threads + - [ ] Rekenaar Wetenskap 162 - Operating Systems (25 videos): + - vir prosesse en threads sien videos 1-11 + - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Dek: + - Prosesse, Threads, Concurrency kwessies + - Verskil tussen prosesse en threads + - Prosesse + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock \ No newline at end of file From 16ac1366cbd9b512c25b642a76053bf008725a32 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:10:09 +0200 Subject: [PATCH 566/857] Lines 1140/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6db6d224f6..eac1714a29 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1126,4 +1126,13 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - Monitors - How they work? - Deadlock - - Livelock \ No newline at end of file + - Livelock + - CPU aktiwiteit, onderbrekings, konteks verandering + - Moderne concurrency konstrukte met multicore prosesse + - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - Prosess hulpbronne benodighede (geheue: kode, statiese stoor, stack, heap, en ook file descriptors, i/o) + - Thread hulpbronne benodighede (deel boonstes (minus stack) met ander threads in die selfde proses maar elk het sy eie pc, stack counter, registers, en stack) + - Vurk is regtig net 'n kopie op skryf (net-lees) tot dat 'n nuwe proses na die geheue skryf, dan doen dit 'n vol kopie. + - Konteks verandering + - Koe konteks verandering geïnisieer word deur 'n operating sisteem en onderliggende hardeware? \ No newline at end of file From 62292e41ee6602fa134371b54de3f208e144ce27 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:10:38 +0200 Subject: [PATCH 567/857] Lines 1150/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index eac1714a29..39b0400cdb 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1135,4 +1135,14 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - Thread hulpbronne benodighede (deel boonstes (minus stack) met ander threads in die selfde proses maar elk het sy eie pc, stack counter, registers, en stack) - Vurk is regtig net 'n kopie op skryf (net-lees) tot dat 'n nuwe proses na die geheue skryf, dan doen dit 'n vol kopie. - Konteks verandering - - Koe konteks verandering geïnisieer word deur 'n operating sisteem en onderliggende hardeware? \ No newline at end of file + - Koe konteks verandering geïnisieer word deur 'n operating sisteem en onderliggende hardeware? + - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] concurrency in Python (videos): + - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [reference](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) From 4b931b5067f16195623ae95115055f1e722a094e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:12:21 +0200 Subject: [PATCH 568/857] Lines 1160/1996 --- translations/README-af.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 39b0400cdb..66a1fe5fc9 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1146,3 +1146,18 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Toets + - Om te dek: + - hoe eenheidstoetse werk + - wat is mock objects + - wat is integrasietoetse + - wat is dependency injection + - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Dependency injection: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) \ No newline at end of file From 9b0949bc66368c3ee5ee2e613ff630e96b867320 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:13:15 +0200 Subject: [PATCH 569/857] Lines 1170/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 66a1fe5fc9..616017c7c0 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1160,4 +1160,13 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) \ No newline at end of file + - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String soek & manipulasies + - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) \ No newline at end of file From 98afa2e8141608c0a4f5b79d14a44de18c7bfa48 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:17:17 +0200 Subject: [PATCH 570/857] Lines 1180/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 616017c7c0..6ea9833b73 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1169,4 +1169,13 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) \ No newline at end of file + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + As jy meer detail op hierde onderwerp doek, sien die "String Matching" seksie in [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) + +- ### Bome + - Let daarop dat daar verskillende soorte bome is. Somiges het prefikse, somige nie, en somige gebruik string in stede van bits + om die pad te volg + - Ek het deur die kode geliees, maar sal nie implimenteer nie + \ No newline at end of file From 4ac54547bb1a71aaec13106c294c6b4ec5c6e4b1 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:17:53 +0200 Subject: [PATCH 571/857] Lines 1190/1996 --- translations/README-af.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6ea9833b73..a67a73b717 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1178,4 +1178,12 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - Let daarop dat daar verskillende soorte bome is. Somiges het prefikse, somige nie, en somige gebruik string in stede van bits om die pad te volg - Ek het deur die kode geliees, maar sal nie implimenteer nie - \ No newline at end of file + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Short course videos: + - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) From ca620454d3d486eba03455ee20f1a48816488ba8 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Mon, 18 Jul 2022 21:18:37 +0200 Subject: [PATCH 572/857] Lines 1200/1996 --- translations/README-af.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index a67a73b717..e9de4a2852 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1187,3 +1187,14 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Floating Point Numbers + - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### Unicode + - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) From 5a006888f44f91d3ef080647961e1516f65f3342 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 18:00:06 +0200 Subject: [PATCH 573/857] Fix contents --- README.md | 202 +++++++++++++++++-------------------- translations/README-af.md | 204 +++++++++++++++++--------------------- 2 files changed, 179 insertions(+), 227 deletions(-) diff --git a/README.md b/README.md index 747e4af77d..80988028d1 100644 --- a/README.md +++ b/README.md @@ -129,62 +129,51 @@ software development/engineering roles. ### Topics of Study -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [The Study Plan](#the-study-plan) - - [Topics of Study](#topics-of-study) - - [Getting the Job](#getting-the-job) - - [Optional Extra Topics & Resources](#optional-extra-topics--resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [If you don't want to use git](#if-you-dont-want-to-use-git) - - [If you're comfortable with git](#if-youre-comfortable-with-git) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [A Note About Video Resources](#a-note-about-video-resources) - - [Choose a Programming Language](#choose-a-programming-language) - - [For this Study Plan](#for-this-study-plan) - - [For your Coding Interview](#for-your-coding-interview) - - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Interview Prep Books](#interview-prep-books) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Don't Make My Mistakes](#dont-make-my-mistakes) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) - - [4. Focus](#4-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Coding Question Practice](#coding-question-practice) - - [Coding Problems](#coding-problems) - - [Let's Get Started](#lets-get-started) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [Final Review](#final-review) - - [Update Your Resume](#update-your-resume) - - [Find a Job](#find-a-job) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) +- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Data Structures](#data-structures) + - [Arrays](#arrays) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [More Knowledge](#more-knowledge) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Trees](#trees) + - [Trees - Notes & Background](#trees---notes--background) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Graphs](#graphs) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Even More Knowledge](#even-more-knowledge) + - [Recursion](#recursion) + - [Dynamic Programming](#dynamic-programming) + - [Design Patterns](#design-patterns) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) + - [Caches](#caches) + - [Processes and Threads](#processes-and-threads) + - [Testing](#testing) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [Final Review](#final-review) ### Getting the Job @@ -199,63 +188,50 @@ software development/engineering roles. ### Optional Extra Topics & Resources -- [Coding Interview University](#coding-interview-university) - - [What is it?](#what-is-it) - - [Table of Contents](#table-of-contents) - - [The Study Plan](#the-study-plan) - - [Topics of Study](#topics-of-study) - - [Getting the Job](#getting-the-job) - - [Optional Extra Topics & Resources](#optional-extra-topics--resources) - - [Why use it?](#why-use-it) - - [How to use it](#how-to-use-it) - - [If you don't want to use git](#if-you-dont-want-to-use-git) - - [If you're comfortable with git](#if-youre-comfortable-with-git) - - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - - [A Note About Video Resources](#a-note-about-video-resources) - - [Choose a Programming Language](#choose-a-programming-language) - - [For this Study Plan](#for-this-study-plan) - - [For your Coding Interview](#for-your-coding-interview) - - [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Interview Prep Books](#interview-prep-books) - - [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - - [Don't Make My Mistakes](#dont-make-my-mistakes) - - [1. You Won't Remember it All](#1-you-wont-remember-it-all) - - [2. Use Flashcards](#2-use-flashcards) - - [3. Do Coding Interview Questions While You're Learning](#3-do-coding-interview-questions-while-youre-learning) - - [4. Focus](#4-focus) - - [What you won't see covered](#what-you-wont-see-covered) - - [The Daily Plan](#the-daily-plan) - - [Coding Question Practice](#coding-question-practice) - - [Coding Problems](#coding-problems) - - [Let's Get Started](#lets-get-started) - - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Data Structures](#data-structures) - - [More Knowledge](#more-knowledge) - - [Trees](#trees) - - [Sorting](#sorting) - - [Graphs](#graphs) - - [Even More Knowledge](#even-more-knowledge) - - [Final Review](#final-review) - - [Update Your Resume](#update-your-resume) - - [Find a Job](#find-a-job) - - [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - - [Have questions for the interviewer](#have-questions-for-the-interviewer) - - [Once You've Got The Job](#once-youve-got-the-job) - - [Additional Books](#additional-books) - - [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - - [Additional Learning](#additional-learning) - - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - - [Video Series](#video-series) - - [Computer Science Courses](#computer-science-courses) - - [Algorithms implementation](#algorithms-implementation) - - [Papers](#papers) - - [LICENSE](#license) - +- [Additional Books](#additional-books) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Additional Learning](#additional-learning) + - [Compilers](#compilers) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Parity & Hamming Code](#parity--hamming-code-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Computer Security](#computer-security) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Math for Fast Processing](#math-for-fast-processing) + - [Treap](#treap) + - [Linear Programming](#linear-programming-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Discrete math](#discrete-math) + - [Machine Learning](#machine-learning) +- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [Video Series](#video-series) +- [Computer Science Courses](#computer-science-courses) +- [Papers](#papers) --- ## Why use it? diff --git a/translations/README-af.md b/translations/README-af.md index e9de4a2852..e2e859e02f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -129,62 +129,51 @@ sagteware ontwikkeling/ingeneur rolle. ## Onderwerpe om te Studeer -- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) - - [Wat is dit?](#wat-is-dit) - - [Inhoudsopgawe](#inhoudsopgawe) - - [Die Studie Plan](#die-studie-plan) - - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) - - [Kry die Werk](#kry-die-werk) - - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) - - [Hoekom gebruik dit?](#hoekom-gebruik-dit) - - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) - - [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie) - - [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is) - - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) - - ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) - - [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) - - [Vir die Studie Plan](#vir-die-studie-plan) - - [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud) - - [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) - - [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het) - - [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) - - [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie) - - [2. Gebruik flitskaarte](#2-gebruik-flitskaarte) - - [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer) - - [4. Fokus](#4-fokus) - - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) - - [Die Daaglikse Plan](#die-daaglikse-plan) - - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) - - [Kodering Probleme](#kodering-probleme) - - [Begin Solank](#begin-solank) - - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis) - - [Datastrukture](#datastrukture) - - [Meer Kennis](#meer-kennis) - - [Bome](#bome) - - [Sorteer](#sorteer) - - [Grafieke](#grafieke) - - [Nog Meer Kennis](#nog-meer-kennis) - - [Finale Resensie](#finale-resensie) - - [Werk Jou CV By](#werk-jou-cv-by) - - [Kry 'n Werk](#kry-n-werk) - - [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) - - [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) - - [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) - - [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) - - [Bykomende Boeke](#bykomende-boeke) - - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) - - [Bykomende Leer](#bykomende-leer) - - [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) - - [Video Reeks](#video-reeks) - - [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) - - [Algoritmes implementering](#algoritmes-implementering) - - [Papiere](#papiere) - - [LISENSIE](#lisensie) +- [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Datastrukture](#datastrukture) + - [Skikkings](#skikkings) + - [Linked Lists](#linked-lists) + - [Stack](#stack) + - [Queue](#queue) + - [Hash table](#hash-table) +- [Meer Kennis](#meer-kennis) + - [Binary search](#binary-search) + - [Bitwise operations](#bitwise-operations) +- [Bome](#bome) + - [Bome - Notas & Agtergrond](#bome---notas--agtergrond) + - [Binary search trees: BSTs](#binary-search-trees-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - balanced search trees (general concept, not details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorting](#sorting) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Grafieke](#grafieke) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Nog Meer Kennis](#nog-meer-kennis) + - [Recursion](#recursion) + - [Dinamiese Programering](#dinamiese-programering) + - [Ontwerp Patrone](#ontwerp-patrone) + - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [NP, NP-Complete en Approximation Algorithms](#np-np-complete-en-approximation-algorithms) + - [Hoe rekenare 'n program proseseer](#hoe-rekenare-n-program-proseseer) + - [Caches](#caches) + - [Prosesse en Threads](#prosesse-en-threads) + - [Toets](#toets) + - [String searching & manipulations](#string-searching--manipulations) + - [Bome](#bome) + - [Floating Point Numbers](#floating-point-numbers) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Networking](#networking) +- [Finale revisie](#finale-revisie) ### Kry die Werk @@ -199,63 +188,50 @@ sagteware ontwikkeling/ingeneur rolle. ### Opsionele Ekstra Onderwerpe & Hulpbronne -- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit) - - [Wat is dit?](#wat-is-dit) - - [Inhoudsopgawe](#inhoudsopgawe) - - [Die Studie Plan](#die-studie-plan) - - [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer) - - [Kry die Werk](#kry-die-werk) - - [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne) - - [Hoekom gebruik dit?](#hoekom-gebruik-dit) - - [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik) - - [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie) - - [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is) - - [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie) - - ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne) - - [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal) - - [Vir die Studie Plan](#vir-die-studie-plan) - - [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud) - - [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes) - - [C](#c) - - [Python](#python) - - [Java](#java) - - [C++](#c-1) - - [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding) - - [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het) - - [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie) - - [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie) - - [2. Gebruik flitskaarte](#2-gebruik-flitskaarte) - - [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer) - - [4. Fokus](#4-fokus) - - [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie) - - [Die Daaglikse Plan](#die-daaglikse-plan) - - [Kodering Vrae Beoefening](#kodering-vrae-beoefening) - - [Kodering Probleme](#kodering-probleme) - - [Begin Solank](#begin-solank) - - [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algoritmiese-kompleksiteti--big-o--asimptotiese-analise) - - [Datastrukture](#datastrukture) - - [Meer Kennis](#meer-kennis) - - [Bome](#bome) - - [Sorteer](#sorteer) - - [Grafieke](#grafieke) - - [Nog Meer Kennis](#nog-meer-kennis) - - [Finale Resensie](#finale-resensie) - - [Werk Jou CV By](#werk-jou-cv-by) - - [Kry 'n Werk](#kry-n-werk) - - [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding) - - [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom) - - [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder) - - [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het) - - [Bykomende Boeke](#bykomende-boeke) - - [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering) - - [Bykomende Leer](#bykomende-leer) - - [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) - - [Video Reeks](#video-reeks) - - [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) - - [Algoritmes implementering](#algoritmes-implementering) - - [Papiere](#papiere) - - [LISENSIE](#lisensie) - +- [Bykomende Boeke](#bykomende-boeke) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (as jy 4+ jaar ondervinding het) +- [Bykomende Leer](#bykomende-leer) + - [Compilers](#compilers) + - [Emacs en vi(m)](#emacs-en-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Inligtingsteorie](#inligtingsteorie-videos) + - [Parity & Hamming Kode](#parity--hamming-kode-videos) + - [Entropy](#entropy) + - [Cryptography](#cryptography) + - [Compression](#compression) + - [Rekenaar sekuriteit](#rekenaar-sekuriteit) + - [Garbage collection](#garbage-collection) + - [Parallel Programming](#parallel-programming) + - [Messaging, Serialization, en Queueing Systems](#messaging-serialization-en-queueing-systems) + - [A*](#a) + - [Vinnige Fourier Transform](#vinnige-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Augmented Data Structures](#augmented-data-structures) + - [Balanced search trees](#balanced-search-trees) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Bome](#k-d-bome) + - [Skip lists](#skip-lists) + - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Wiskunde vir Vinnige Verwerking](#wiskunde-vir-vinnige-verwerking) + - [Treap](#treap) + - [Lineêre Programering](#lineêre-programering-videos) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Diskrete wiskunde](#diskrete-wiskunde) + - [Masjienleer](#masjienleer) +- [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) +- [Video Reeks](#video-reeks) +- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) +- [Papiere](#papiere) --- ## Hoekom gebruik dit? @@ -1093,7 +1069,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Bladsye 1048 - 1140 in CLRS as jy dit het. -- ### Hoe rekenare 'n program proses +- ### Hoe rekenare 'n program proseseer - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) From fdfe8bcd94428affbca62f624568d0e19fc73343 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 18:02:00 +0200 Subject: [PATCH 574/857] Add afrikaans --- translations/README-af.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-af.md b/translations/README-af.md index e2e859e02f..3a8dd2789c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -50,6 +50,7 @@ - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) From a16355ffd1c5faa74d5e95677a471c40a842b2aa Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 18:04:19 +0200 Subject: [PATCH 575/857] Whitespace fix --- README.md | 2 ++ translations/README-af.md | 1 + 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 80988028d1..2f6622e3b6 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) @@ -232,6 +233,7 @@ software development/engineering roles. - [Video Series](#video-series) - [Computer Science Courses](#computer-science-courses) - [Papers](#papers) + --- ## Why use it? diff --git a/translations/README-af.md b/translations/README-af.md index 3a8dd2789c..fcf6315ed1 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -233,6 +233,7 @@ sagteware ontwikkeling/ingeneur rolle. - [Video Reeks](#video-reeks) - [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) - [Papiere](#papiere) + --- ## Hoekom gebruik dit? From 7ed2cc8726ee357eb8685fdf03a498ccf1871b88 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 20:26:21 +0200 Subject: [PATCH 576/857] Lines 1200/1996 --- translations/README-af.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index fcf6315ed1..cc1c7bdc9e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1176,3 +1176,29 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Endianness + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Baie tegniese gesprek vir kernel devs. Moenie warrie as meeste oor jou kop gaan nie. + - Die eerste helfde is genoeg. + +- ### Networking + - **As jy netwerk ondervinding het of wil 'n reliability ingenieur of operations ingenieur word, verwag vrae** + - Anders is hierdie net goed om te weet + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- \ No newline at end of file From 0663c6f4c8c15a1206cfe26a8ad843f1107fcf66 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 20:30:15 +0200 Subject: [PATCH 577/857] Lines 1220/1996 --- translations/README-af.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index cc1c7bdc9e..6876f8824b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1201,4 +1201,18 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) +--- + +## Finalde Revisie + + Die seksie sal korter videos hê wat jy kan kyk redelik vinnig vir revisie van die mees belangrike konsepte. + Dis goed om die geheue tydelik te vervris. + +- [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) + - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (18 videos): + - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + --- \ No newline at end of file From c7409489071843e542edf19cc1af1663d29261ed Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 20:38:34 +0200 Subject: [PATCH 578/857] Lines 1240/1996 --- translations/README-af.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6876f8824b..633e19715e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1215,4 +1215,32 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) ---- \ No newline at end of file +--- + +## Werk Jou CV By + +- Sien Resume voorbereiding in die boeke: "Cracking The Coding Interview" en "Programming Interviews Exposed" +- Ek weet nie hoe belangrik dit is nie (jy kan jou eie navorsing doen) maar hier is 'n artikel oor hoe om jou resume ATS versoenbaar te maak: + - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Nota duer die outeur: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." +- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Gedetailleerde gids oor hoe om jou resume op te stel van niks, hoe om effektiewe resume inhoud te skryf, dit te optimiseer, en jou resume te toets + +## Kry die Werk + +- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Onderhoudproses & Algemene Voorbereiding + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) \ No newline at end of file From 75761eefd7aabe23b752cea5683fdbd337b081a5 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 20:47:13 +0200 Subject: [PATCH 579/857] Lines 1260/1996 --- translations/README-af.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 633e19715e..7692ebd11f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1235,7 +1235,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] How to Get a Job at the Big 4: +- [ ] Hoe om 'n werk by die Groot 4 te kry: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: @@ -1243,4 +1243,16 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] Cracking the Facebook Coding Interview: - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) \ No newline at end of file + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) + +- Prep Courses: + - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): + - Leer hoe om jouself gereed te maak vir sagteware ingeneur onderhoude van vorige Google onderhoudvoerders. + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - 'n Python sentriese onderhoudsvoorbereiding kursus wat datastrukture, algoritmes, spot onderhoude en baie meer dek. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - 'n Verniet Python sentriese datastruktuur en algorithme kursus. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Kry praktiese ervaring met oor 'n 100 datastrukture en algoritmiese oefeninge en leiding van 'n toegewyde mentor om jou te help voorberei vir onderhoude en on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Baie kere is dit nie jou tegniese bevoegdheid wat jou terug hou van jou droom werk kry nie, dis hoe jy in die gedragsonderhoude voer. \ No newline at end of file From fda74c9f269b83f96a5779cb05b4d817828ee92c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 20:58:22 +0200 Subject: [PATCH 580/857] Lines 1280/1996 --- translations/README-af.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 7692ebd11f..131ee1db69 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1255,4 +1255,27 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Kry praktiese ervaring met oor 'n 100 datastrukture en algoritmiese oefeninge en leiding van 'n toegewyde mentor om jou te help voorberei vir onderhoude en on-the-job scenarios. - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Baie kere is dit nie jou tegniese bevoegdheid wat jou terug hou van jou droom werk kry nie, dis hoe jy in die gedragsonderhoude voer. \ No newline at end of file + - Baie kere is dit nie jou tegniese bevoegdheid wat jou terug hou van jou droom werk kry nie, dis hoe jy in die gedragsonderhoude voer. + +Spot Onderhoude: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - Ek het die gebruik en dit het my gehelp ontspan vir die foon skerm en on-site onderhoud. +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model van onderhoudoefeninge. +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anoniem algoritme/system design onderoude met senior ingeneurs van FAANG anoniem. + +## Dink aan vir wanneer die onderhoud kom + +Dink oor sowat 20 onderhoud vrae wat jy sal kry, in die rigting van dié hieronder. Hê ten minste een antwoord vir elkeen. +Hê ook 'n storie, nie net data, oor iets wat jy bereik het. + +- Hoekom soek jy hierdie werk? +- Wat is 'n taai probleem wat jy opgelos het? +- Grootste uitdagings wat jy in die gesig gestaar het? +- Beste/slegste ontwerpe wat jy al gesien het? +- Idees om 'n produk te verbeter? +- Hoe werk jy beste as 'n individu en as deel van 'n span? +- Watse vernufte of ondervinding van jou sal 'n bate in die rol wees en hoekom? +- Wat het jy die meeste geniet by [werk x / projek y]? +- Wat was die grootste uitdaging wat jy in die gesig gestaar het by [werk x / pojek y]? +- Wat was die moeilikste gogga wat jy moes oplos by [werk x / projek y]? +- Wat het jy geleer by [werk x / projek y]? +- Wat sou jy beter gedoen het by [werk x / projek y]? \ No newline at end of file From 50ea363451ec176051baee882e3402e46912c6ea Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:08:04 +0200 Subject: [PATCH 581/857] Lines 1290/1996 --- translations/README-af.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 131ee1db69..ecabbf1ed5 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1278,4 +1278,17 @@ Hê ook 'n storie, nie net data, oor iets wat jy bereik het. - Wat was die grootste uitdaging wat jy in die gesig gestaar het by [werk x / pojek y]? - Wat was die moeilikste gogga wat jy moes oplos by [werk x / projek y]? - Wat het jy geleer by [werk x / projek y]? -- Wat sou jy beter gedoen het by [werk x / projek y]? \ No newline at end of file +- Wat sou jy beter gedoen het by [werk x / projek y]? + +- As jy dit moelik vind om met goeie antwoorde op te kom vir hierdie vrae is hier 'n paar idees: + - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Hê vrae vir die onderhoudvoerder + +'n Paar van meine (Ek ken moontlik al klaar die antwoorde, maar wil hulle opinie of span perspektief hé): + +- How groot is jou span? +- Hoe lyk jou dev cycle? Doen julle waterfall/sprints/agile? +- Is dit algemeen om na die sperdatum te jaag? Of is daar buigsaamheid? +- Hoe word besluite geneem op jou span? +- Hoeveel vergaderings het julle per week? \ No newline at end of file From d00ca6fe884bdefad2d2b655804eb64daba58498 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:11:01 +0200 Subject: [PATCH 582/857] Lines 1300/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index ecabbf1ed5..42e07cc54c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1291,4 +1291,16 @@ Hê ook 'n storie, nie net data, oor iets wat jy bereik het. - Hoe lyk jou dev cycle? Doen julle waterfall/sprints/agile? - Is dit algemeen om na die sperdatum te jaag? Of is daar buigsaamheid? - Hoe word besluite geneem op jou span? -- Hoeveel vergaderings het julle per week? \ No newline at end of file +- Hoeveel vergaderings het julle per week? +- Voel jy die omgewing help jou fokus? +- Wat werk jy aan? +- Wat hou jy van dit? +- Hoe is die werk lewe? +- Hoe is die werk/lewe belaans? + +## Sodra Jy Die Werk Het + +Geluk! + +Hou aan leer. + From d8a8293ecbbf5f518c3a65e61e25adeb6a9d100e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:14:26 +0200 Subject: [PATCH 583/857] Lines 1320/1996 --- translations/README-af.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 42e07cc54c..46648d10a4 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1304,3 +1304,18 @@ Geluk! Hou aan leer. +Jy is nooit regtig klaar nie. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Alles hieronder is opsioneel. Dit is NIE nodig vir 'n intreevlak ingeneur nie. + Alhowel, deur om dit te studeer sal jy meer blootstelling kry met CS konsepte, en sal beter voorbereid wees vir + enige sagteware ingeneur werk. Jy sal 'n veel meer afgeronde sagteware ingeneur wees. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- \ No newline at end of file From 82f9441c2702f86f238b6fa750b45b0c02d77672 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:16:54 +0200 Subject: [PATCH 584/857] Lines 1330/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 46648d10a4..7dd11137ec 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1318,4 +1318,16 @@ Jy is nooit regtig klaar nie. ***************************************************************************************************** ***************************************************************************************************** ---- \ No newline at end of file +--- + +## Bykomende Boeke + + Hierdie is hier sodat jy kan delf in 'n onderwerp wat jy interessant vind. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oue maar goeie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - 'n Moderne opsie +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - 'n Sagte inleiding na ontwerp patrone From e9ccdbcfa9c5dcbd8444458a954ff9891cf6606d Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:23:01 +0200 Subject: [PATCH 585/857] Lines 1340/1996 --- translations/README-af.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 7dd11137ec..c9075178f4 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1331,3 +1331,10 @@ Jy is nooit regtig klaar nie. - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - 'n Sagte inleiding na ontwerp patrone +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA die "Gang Of Four" boek, of GOF + - Die kanoniese ontwerp patrone boek +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As 'n revisie en probleem herkening + - Die algoritme katalogus porsie is ver buite die omvang van probleme wat jy in die onderhoud sal kry + - Die bok het 2 dele: \ No newline at end of file From 253fedd78d8d1d81396ad0b5528db67b3f839873 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:29:47 +0200 Subject: [PATCH 586/857] Lines 1350/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c9075178f4..fbe317501d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1337,4 +1337,14 @@ Jy is nooit regtig klaar nie. - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - As 'n revisie en probleem herkening - Die algoritme katalogus porsie is ver buite die omvang van probleme wat jy in die onderhoud sal kry - - Die bok het 2 dele: \ No newline at end of file + - Die bok het 2 dele: + - Klass teksboek oor datastrukture en algoritmes + - Pros: + - Is so goed 'n revisie soos enige teksboek sal wees + - Goeie stories van sy ondervinding met probleme oplos in die bedryf en akademie + - Kode voorbeelde in C + - Cons: + - Kan so dig en ondeurdringbaar soos CLRS wees, en in sommige gevalle, kan CLRS 'n beter alternatief wees vir sekere onderwerpe + - Hoofstukke 7, 8, 9 kan pynlik wees om te probeer volg, omdat sommige items nie goed verduidelik word nie en bonodig meer brain wat ek nie het nie + - Moenie my misverstaan nie: Ek hou van Skiena, sy onderrig style, en manerismes, maar ek mag dalk nie Stony Brook materiaal wees nie + \ No newline at end of file From ce4db8559c6ed82dc13ce5b73b3961c99adea57a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:38:05 +0200 Subject: [PATCH 587/857] Lines 1360/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index fbe317501d..ea19e42855 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1347,4 +1347,14 @@ Jy is nooit regtig klaar nie. - Kan so dig en ondeurdringbaar soos CLRS wees, en in sommige gevalle, kan CLRS 'n beter alternatief wees vir sekere onderwerpe - Hoofstukke 7, 8, 9 kan pynlik wees om te probeer volg, omdat sommige items nie goed verduidelik word nie en bonodig meer brain wat ek nie het nie - Moenie my misverstaan nie: Ek hou van Skiena, sy onderrig style, en manerismes, maar ek mag dalk nie Stony Brook materiaal wees nie - \ No newline at end of file + - Algorime katalogus: + - Die is die egte rede hoekom jy hierdie boek koop. + - Die boek is beter as 'n algoritme verwysing, en nie iets wat jy lees om heel te dek nie. + - Kan op Kindle huur + - Antwoorde + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Die boek was gepubliseer in 2004, en is sowat verouderd, maar dis 'n geweldige hulpbron om 'n rekenaar in kort te verstaan + - Die outeur het [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) uitgeving, so vat noemings en voorbeelde in HLA met 'n graan sout. Nie wyd gebruik nie, maar goeie voorbeelde van hoe assembly lyk + - \ No newline at end of file From 9d22c361522e9b4e68a72fc3151038c5577ee2ca Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:39:32 +0200 Subject: [PATCH 588/857] Lines 1370/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index ea19e42855..562bae4d0d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1357,4 +1357,13 @@ Jy is nooit regtig klaar nie. - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - Die boek was gepubliseer in 2004, en is sowat verouderd, maar dis 'n geweldige hulpbron om 'n rekenaar in kort te verstaan - Die outeur het [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) uitgeving, so vat noemings en voorbeelde in HLA met 'n graan sout. Nie wyd gebruik nie, maar goeie voorbeelde van hoe assembly lyk - - \ No newline at end of file + - Hierdie hoofstukke is die moeite werk om te lees vir 'n goeie fondament: + - Hoofstuk 2 - Numeric Representation + - Hoofstuk 3 - Binary Arithmetic and Bit Operations + - Hoofstuk 4 - Floating-Point Representation + - Hoofstuk 5 - Character Representation + - Hoofstuk 6 - Memory Organization and Access + - Hoofstuk 7 - Composite Data Types and Memory Objects + - Hoofstuk 9 - CPU Architecture + - Hoofstuk 10 - Instruction Set Architecture + - Hoofstuk 11 - Memory Architecture and Organization \ No newline at end of file From a94f0f365005502486c7129f0e5470385e7d0da8 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:45:45 +0200 Subject: [PATCH 589/857] Lines 1380/1996 --- translations/README-af.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 562bae4d0d..8afa3315e4 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1366,4 +1366,15 @@ Jy is nooit regtig klaar nie. - Hoofstuk 7 - Composite Data Types and Memory Objects - Hoofstuk 9 - CPU Architecture - Hoofstuk 10 - Instruction Set Architecture - - Hoofstuk 11 - Memory Architecture and Organization \ No newline at end of file + - Hoofstuk 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **Belangrik:** Om hierdie boek te lees sal beperkte waarde hê. Die boek is 'n goeie revisie van algoritmes en datastrukture, maar sal jou nie leer hoe om goeie kode te skryf nie. Jy moet in staat wees om goeie, effektiewe oplossings te programeer + - AKA CLR, soms CLRS, omdat Stein laat saamgekom het +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - Vir 'n ryker, meer geopdateerde (2017), maar langer behandeling + +## System Design, Scalability, Data Handling + +**Jy kan 'n paar ondtwerp vrae verwag as jy 4+ jare ondervinding het.** + +- \ No newline at end of file From 6262fde21673eb8d65be6700f1311455c2096a95 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:51:59 +0200 Subject: [PATCH 590/857] Lines 1390/1996 --- translations/README-af.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 8afa3315e4..e96609c46f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1377,4 +1377,19 @@ Jy is nooit regtig klaar nie. **Jy kan 'n paar ondtwerp vrae verwag as jy 4+ jare ondervinding het.** -- \ No newline at end of file +- Scalability en System Design is beide baie groot onderwerpe met onderwerpe en hulpbronne, omdat + daar baie is om te oorweeg wanneer 'n sagtewaar/hardewaar sisteem wat kan skaal geontwerp word. + Verwag om nogals 'n bikie tyd hierop te spandeer +- Oorwegings: + - Scalability: + - Distileer grood data stelle na 'n enkele waarde + - Transformeer een data stel na 'n ander een + - Hantering van baie groot bedrae van data + - System design + - features sets + - interfaces + - class hierarchies + - ontwerp van 'n sisteem onder sekere beperkings + - eenvoud en robuustheid + - tradeoffs + - performance analysis and optimization \ No newline at end of file From 37190f2dd6267b6f23e3634b073e58ac407ffa6b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Tue, 19 Jul 2022 21:54:02 +0200 Subject: [PATCH 591/857] Lines 1400/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e96609c46f..313037a527 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1392,4 +1392,16 @@ Jy is nooit regtig klaar nie. - ontwerp van 'n sisteem onder sekere beperkings - eenvoud en robuustheid - tradeoffs - - performance analysis and optimization \ No newline at end of file + - performance analysis and optimization +- [ ] **BEGIN HIER**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - Daar is baie hulpbronne in hierdie een. Look deur die artikels en voorbeelde. Ek wys 'n paar hieronder +- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) \ No newline at end of file From 4e4d89c563c8944d7a58739c97d8a8252084951b Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:37:59 +0200 Subject: [PATCH 592/857] Lines 1410/1996 --- translations/README-af.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 313037a527..1c61af7a65 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1,13 +1,13 @@ # Kodering Onderhoud Universiteit > Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak, -> maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my +> maar dit het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my > aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > Jy hoef heel waarskynlik nie soveel soos ek te studeer nie. Maar alles wat jy nodig het is hier. > > Ek het ongeveer 8-12 gestudeer elke dag, vir maande. Hier is my storie: [Hoekom ek vol-tyd gestudeer het, vir 8 maande, vir 'n Google onderhoud](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Let asseblief op: ** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors. +> **Let asseblief op:** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors. > > Die items wat hier gelys is sal jou goed voorberei vir tegniese onderhoude by omtrent enige sagteware maatskappy, > insluitend die reuse: Amazon, Facebook, Google, en Microsoft. @@ -1404,4 +1404,9 @@ Jy is nooit regtig klaar nie. - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) \ No newline at end of file +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Konsensus Algoritme: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) \ No newline at end of file From 01e23fd315b9a0f34df8070dc67275b07071ac01 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:39:10 +0200 Subject: [PATCH 593/857] Lines 1420/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 1c61af7a65..4145845a7c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1409,4 +1409,14 @@ Jy is nooit regtig klaar nie. - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) - - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) \ No newline at end of file + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - Jy nodig nie al dié nie. Kies net 'n paar wat vir jou interressant is. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) \ No newline at end of file From 82e9302401bedf52346fd73481a3844547e75ac4 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:39:42 +0200 Subject: [PATCH 594/857] Lines 1430/1996 --- translations/README-af.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 4145845a7c..959c316d6d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1419,4 +1419,12 @@ Jy is nooit regtig klaar nie. - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) \ No newline at end of file + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) \ No newline at end of file From feadb2a4de22804d2620759bfe757099e75ee669 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:40:28 +0200 Subject: [PATCH 595/857] Lines 1440/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 959c316d6d..363ec9e428 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1427,4 +1427,14 @@ Jy is nooit regtig klaar nie. - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) \ No newline at end of file + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) \ No newline at end of file From 887100d67f265ac01daa7a5b9a3758bc95036616 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:40:54 +0200 Subject: [PATCH 596/857] Lines 1450/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 363ec9e428..2fc81b5c2d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1437,4 +1437,14 @@ Jy is nooit regtig klaar nie. - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) \ No newline at end of file + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) \ No newline at end of file From 3cf300f596291422f5fb61520d893a9ab5874bc5 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:45:02 +0200 Subject: [PATCH 597/857] Lines 1460/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 2fc81b5c2d..f9fd9bb30c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1447,4 +1447,14 @@ Jy is nooit regtig klaar nie. - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) \ No newline at end of file + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] Sien "Messaging, Serialization, and Queueing Systems" ver onder vir informasie oor van die tegnologies wat dienste saam kan gom + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - Vir nog meer, sien "Mining Massive Datasets" video reeks in die [Video Reeks](#video-reeks) seksie +- [ ] Oefen die system design fase: Hier is 'n paar idees om op papier uit te werk, elkeen met dokumentasie oor hoe dit in die regte wêreld gehanteer was: + - revisie: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) \ No newline at end of file From 7ea16852fe62967d2bb1b894f3093eaa160a918a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:53:54 +0200 Subject: [PATCH 598/857] Lines 1480/1996 --- translations/README-af.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index f9fd9bb30c..d6b0b12639 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1457,4 +1457,29 @@ Jy is nooit regtig klaar nie. - [ ] Oefen die system design fase: Hier is 'n paar idees om op papier uit te werk, elkeen met dokumentasie oor hoe dit in die regte wêreld gehanteer was: - revisie: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) \ No newline at end of file + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - vloei: + 1. Verstaan die probleem en scope: + - Defineer die gebruik gevalle, met die onderhoudvoerder se hulp + - Stel addisionele kenmerke voor + - Verwyder items wat die onderhoudvoerder buite die scope ag + - Neem aan hoë beskikbaarheid sal nodig wees, voeg as 'n gebruik geval by + 2. Dink oor beperkings: + - Vra hoeveel versoeke per maand + - Vra hoeveel versoeke per sekonde (hulle mag dit dalk net gee of vir jou vra om dit uit te werk) + - Skat lees vs. skryf persentasie + - Hoeveel data word geskryf per sekonde + - Totale berging benodig oor 5 jaar + - Hoeveel data lees per sekonde + 3. Abstrakte ontwerp: + - Lae (dienste, data, caching) + - Infristraktuur: load balancing, messaging + - Rof oorsig van enige sleutel algoritmes wat die diens dryf + - Oorweeg knelpunte en determineer oplossings + - Oefeninge: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) \ No newline at end of file From dbc58ae4e8ff8b80b2256f37af83869d3e069f56 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:57:04 +0200 Subject: [PATCH 599/857] Lines 1490/1996 --- translations/README-af.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index d6b0b12639..e61f47c525 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1468,6 +1468,7 @@ Jy is nooit regtig klaar nie. - Vra hoeveel versoeke per maand - Vra hoeveel versoeke per sekonde (hulle mag dit dalk net gee of vir jou vra om dit uit te werk) - Skat lees vs. skryf persentasie + - Hou 80/20 reel byderhands wanneer jy die skatting doen - Hoeveel data word geskryf per sekonde - Totale berging benodig oor 5 jaar - Hoeveel data lees per sekonde @@ -1482,4 +1483,9 @@ Jy is nooit regtig klaar nie. - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) \ No newline at end of file + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Bykomende Leer + + Ek het hulle by gevoeg om jou te help 'n afgeronde sagteware ingeneur te word en bewus van sekere + tegnologies en algoritmes is, sodat jy 'n groter toolbox het. \ No newline at end of file From b02625c1b7537bbdc28b5939ce44e2e670b39217 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:58:52 +0200 Subject: [PATCH 600/857] Lines 1520/1996 --- translations/README-af.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index e61f47c525..fa2a3332c3 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1488,4 +1488,32 @@ Jy is nooit regtig klaar nie. ## Bykomende Leer Ek het hulle by gevoeg om jou te help 'n afgeronde sagteware ingeneur te word en bewus van sekere - tegnologies en algoritmes is, sodat jy 'n groter toolbox het. \ No newline at end of file + tegnologies en algoritmes is, sodat jy 'n groter toolbox het. + +- ### Compilers + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs and vi(m) + - Familiariseer jouself met 'n unix-gebaseerde kode editor + - vi(m): + - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - reeks van 4 videos: + - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - reeks van 3 (videos): + - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) \ No newline at end of file From 4983a002b0da8062a93cf89937b162e31739f678 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 10:59:48 +0200 Subject: [PATCH 601/857] Lines 1530/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index fa2a3332c3..c0c9c4763d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1516,4 +1516,18 @@ Jy is nooit regtig klaar nie. - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) \ No newline at end of file + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### Unix command line tools + - Ek het die lys hieronder met goeie gereedskap gevul. + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) \ No newline at end of file From 4bcc5ceff27d7949fd7c88fd466f4c2022d5235a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 11:01:21 +0200 Subject: [PATCH 602/857] Lines 1540/1996 --- translations/README-af.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c0c9c4763d..c23733ec8b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1530,4 +1530,12 @@ Jy is nooit regtig klaar nie. - tr - uniq - [strace](https://en.wikipedia.org/wiki/Strace) - - [tcpdump](https://danielmiessler.com/study/tcpdump/) \ No newline at end of file + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Inligtingsteorie (videos) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - Meer oor Markov processes: + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - Sien meer in MIT 6.050J Information and Entropy reeks hieronder \ No newline at end of file From 7659fa08fd22993fc0212704b96a15c104ecdd0e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 11:03:10 +0200 Subject: [PATCH 603/857] Lines 1560/1996 --- translations/README-af.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c23733ec8b..3bc643fb0e 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1538,4 +1538,24 @@ Jy is nooit regtig klaar nie. - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - Sien meer in MIT 6.050J Information and Entropy reeks hieronder \ No newline at end of file + - Sien meer in MIT 6.050J Information and Entropy reeks hieronder + +- ### Parity & Hamming Code (videos) + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: + - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropy + - Sien ook videos hieronder + - Maak seker om die inligtingsteorievideos eers te kyk + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptography + - Sien ook videos hieronder + - Maak seker om die inligtingsteorievideos eers te kyk + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file From 8e9b07ab83ffd398535b0d00099dc5661f077182 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 11:04:04 +0200 Subject: [PATCH 604/857] Lines 1570/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 3bc643fb0e..458ce4960a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1558,4 +1558,16 @@ Jy is nooit regtig klaar nie. - Maak seker om die inligtingsteorievideos eers te kyk - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compression + - Maak seker om die inligtingsteorievideos eers te kyk + - Computerphile (videos): + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) \ No newline at end of file From 1087b6b2a62af4b05849413dd2b99a024611bf1c Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 11:05:20 +0200 Subject: [PATCH 605/857] Lines 1590/1996 --- translations/README-af.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 458ce4960a..cb14558842 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -200,7 +200,7 @@ sagteware ontwikkeling/ingeneur rolle. - [Entropy](#entropy) - [Cryptography](#cryptography) - [Compression](#compression) - - [Rekenaar sekuriteit](#rekenaar-sekuriteit) + - [Rekenaar Sekuriteit](#rekenaar-sekuriteit) - [Garbage collection](#garbage-collection) - [Parallel Programming](#parallel-programming) - [Messaging, Serialization, en Queueing Systems](#messaging-serialization-en-queueing-systems) @@ -1570,4 +1570,19 @@ Jy is nooit regtig klaar nie. - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) \ No newline at end of file + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Rekenaar Sekuriteit + - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) From e3927169557df0a7adf18a2c06483de4cd82a505 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Wed, 20 Jul 2022 11:06:15 +0200 Subject: [PATCH 606/857] Lines 1600/1996 --- translations/README-af.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index cb14558842..dae086574f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1586,3 +1586,12 @@ Jy is nooit regtig klaar nie. - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Garbage collection +- [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) +- [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) +- [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel Programming + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) \ No newline at end of file From b54655cfc504804bca50e99e642ae506f896001f Mon Sep 17 00:00:00 2001 From: Benjamin <86069134+Auxidiom@users.noreply.github.com> Date: Wed, 20 Jul 2022 14:36:00 +0200 Subject: [PATCH 607/857] French translate --- translations/README-fr.md | 120 ++++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 58 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index 93effb77ed..825a5fa5b9 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -225,13 +225,13 @@ Print out a "[future Googler](https://github.com/jwasham/coding-interview-univer [![future Googler sign](https://dng5l3qzreal6.cloudfront.net/2016/Oct/Screen_Shot_2016_10_04_at_10_13_24_AM-1475601104364.png)](https://github.com/jwasham/coding-interview-university/blob/main/extras/future-googler.pdf) -## Did I Get the Job? +## Comment j'ai eu le job ? I'm in the queue right now. Hope to interview soon. Thanks for the referral, JP. -## Follow Along with Me +## Follow moi ailleurs My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) @@ -326,7 +326,7 @@ Tu pourrais aussi faire celles-ci, mais fait de la recherche avant. Il y aurait Tu dois être très comfortable avec la langue et tu dois aussi savoir beaucoup à propos la langue. -Lit à propos vos choix: +Lis à propos vos choix: - http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ - http://blog.codingforinterviews.com/best-programming-language-jobs/ - https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview @@ -335,109 +335,113 @@ Lit à propos vos choix: Vous voyiez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui va t'aider, regarde en dessous. -## Book List +## Liste de livres -This is a shorter list than what I used. This is abbreviated to save you time. +Voici une liste que j'ai réduite afin de vous faire gagner du temps. -### Interview Prep +### Préparation de l'entretien -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C++ and Java - - recommended in Google candidate coaching +- [ ] [Entretien de développement dévoilé : Les secrets pour avoir votre prochain job, 2 ème édition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) + - réponses en c++ et java + - recommandé par un candidat en coaching de Google - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) + - c'est un bon échuaffement pour cracker l'entretien de développement + - pas trop difficule, la plupart des problèmes seront plus faciles que ceux que vous arez dans l'entretien (de ce que j'ai lu) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". + - réponses en java + - recommandé sur le [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) + - Si vous voyez des personnes faire référence à "The Google Resume", c'était le livre remplacé par "Craking the Coding Interview" -If you have tons of extra time: +Si vous avez beaucoup de temps libre: - [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - all code is in C++, very good if you're looking to use C++ in your interview - - a good book on problem solving in general. + - Tout le code est en C++, très utile si vous cherchez à utiliser du C++ pendant l'entretien + - Un très bon livre sur la résolution de problème dans son ensemble -### Computer Architecture +### Architecture de l'ordinateur -If short on time: +Si vous n'avez pas beaucoup de temps : - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -If you have more time (I want this book): + - Le livre est un peu dépassé car il a été publié en 2004, mais il reste intéressant pour comprendre brièvement comment marche un ordinateur. + - L''ateur a inventé HLA, prenez donc ses remarques et ses exemples sur le HLA avec scpetisme. Il n'est pas souvent cité mais propose de nombreux exemples sur ce à quoi un assembleur ressemble + - Ces chapitres vous donneront des fondations : + - Chapitre 2 - Réprésentation numérique + - Chapitre 3 - Arithmétique binaire et les opérations bit à bit + - Chapitre 4 - Floating-Point Representation + - Chapitre 4 - La représentation de la virgule flottante + - Chapitre 5 - Représentation characterielle + - Chapitre 6 - Organisation et accès de la mémoire + - Chapitre 7 - Type de données composites et les objets de mémoire + - Chapitre 9 - Architecture CPU + - Chapitre 10 - Jeu d'instructions + - Chapitre 11 - Organisation et architecture de la mémoire + +Si vous avez plus de temps (Je veux ce livre): - [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment + - Pour quelque chose de plus récent (2011) mais qui prendre plus de temps. -### Language Specific +### Sur les langages -**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +**Vous avez besoin de choisir un langage pour l'entretien (voir au-dessus).** Voici mes recommendations sur les différents langages. Je n'ai pas des ressources pour tous les langages alors n'hésitez pas à en rajouter. -If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Si vous lisez un d'eux, vous devez d'abord avoir toutes des connaissances sur les structures de données et les algorithmes pour pouvoir faire des problèmes de codage. +**Vous pouvez passer toutes les vidéos de cours de ce projet**, à moins que vous voulez un avis. [Additional language-specific resources here.](programming-language-resources.md) ### C++ -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Je n'ai pas lu ces deux-là mais ils sont bien notées et écrit par Sedgewick. Il est incroyable. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +Si vous avez une meilleure recommendation pour le C++, dites le moi. Je recherche des ressources plus compréhensive. ### Java - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): + - les vidéos avec le contenu des livres (and Sedgewick!): - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) -OR: +OU: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. + - par Goodrich, Tamassia, Goldwasser + - utilisé pour du texte optionnel dans les cours d'introduction à l'informatique à l'UC Berkeley + - allez voir le raport que j'ai fait sur le Python proposé en-dessous. Ce livre couvre les mêmes sujets. ### Python - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser + - par Goodrich, Tamassia, Goldwasser - I loved this book. It covered everything and more. + - j'ai aimé ce livre, il couvrait tout voire plus. - Pythonic code - - my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ + - mon rapport : https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ -### Optional Books +### Livres optionnels -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** +**Plusieurs personnes les recommandes, cependant je pense qu'ils vont trop loin, à moins que vous ayez plusieurs années dans le dévleoppement logiciel and que vous vous attendez à un entretien bien plus difficile** - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: + - En tant qu'examen et reconnaissance de problème + - Le catalogue algorithmique est bien plus difficile que ce que vous aurez pendant l'entretien. + - Ce livre est divisé en deux parties : - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - pour: + - est une bonne critique comme n'importe quel manuel le serait + - des histoires intéressantes venant de son expérience dans la résolutionde problèmes dans l'industriel et l'académique + - des exemples de code en C + - contre: + - peut être aussi dense ou impénétrable que CLRS, et dans plusieurs cas, CLRS peut être une meilleure alternative sur certains sujets - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. + - les chapitres 7, 8, 9 peuvent être difficiles à suivre, comme certains points ne sont pas bien expliqués ou requiert une plus grande concentration pour comprendre + - ne vous méprenez pas, J'aime bien Skiena, sa pédagogie et ses manières mais je ne suis pas fais pas Stony Brook - algorithm catalog: - this is the real reason you buy this book. - about to get to this part. Will update here once I've made my way through it. From 6986d2bab6ea3fe962e986c3791f1b737efc7fb7 Mon Sep 17 00:00:00 2001 From: desire Date: Wed, 20 Jul 2022 18:18:48 +0300 Subject: [PATCH 608/857] fix: Add missing cmd on clone After cloning the repo, the command steps to add a progress branch was not changing to the new cloned directory before creating and checking out to the progress branch --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2f6622e3b6..58b90c3bae 100644 --- a/README.md +++ b/README.md @@ -277,6 +277,7 @@ Fork the GitHub repo https://github.com/jwasham/coding-interview-university by c Clone to your local repo: git clone git@github.com:/coding-interview-university.git + cd coding-interview-university git checkout -b progress git remote add jwasham https://github.com/jwasham/coding-interview-university git fetch --all From 68aa8b5fe4cb789f225635b40abe955bdb07aed7 Mon Sep 17 00:00:00 2001 From: Sandeep Mishra <87706790+sandeepmishratech@users.noreply.github.com> Date: Thu, 21 Jul 2022 11:32:37 +0530 Subject: [PATCH 609/857] Added One Useful Link Have added Scaler Topics Python Tutorial Page Under Python Section. Please Check the suggested changes. --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 07283b2884..a62c0cbd16 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -46,6 +46,7 @@ - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) + - [Python Programming Tutorial](https://www.scaler.com/topics/python/) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) From c0e3d1c17656a61a2c5795afad2568a275141a59 Mon Sep 17 00:00:00 2001 From: Bikash Daga <95040719+bikashdaga@users.noreply.github.com> Date: Thu, 21 Jul 2022 13:07:42 +0530 Subject: [PATCH 610/857] Added one Useful Link Have Added Scaler Topics links under Programming Exercises and Challenges. Please check the suggested changes --- translations/README-cn.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-cn.md b/translations/README-cn.md index 5e39743b3a..3258277b46 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1265,6 +1265,7 @@ - [InterviewBit](https://www.interviewbit.com) - [Project Euler (数学方向为主)](https://projecteuler.net/index.php?section=problems) - [Code Exercises](https://code-exercises.com/) +- [Scaler Topics](https://www.scaler.com/topics/) 语言学习网站,附带编码挑战: From 16b31f218616cdad748258cd57717d55694223e1 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:13:03 +0200 Subject: [PATCH 611/857] Lines 1630/1996 --- translations/README-af.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index dae086574f..8173559baa 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1594,4 +1594,39 @@ Jy is nooit regtig klaar nie. - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) \ No newline at end of file + - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging, Serialization, en Queueing Systems + - [Thrift](https://thrift.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Get Started](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloom Filter \ No newline at end of file From b240112b57bd9367c8df47f8f999e583fdcaa42f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:14:59 +0200 Subject: [PATCH 612/857] Lines 1640/1996 --- translations/README-af.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 8173559baa..89eab44d8b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1629,4 +1629,17 @@ Jy is nooit regtig klaar nie. - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) +- ### Bloom Filter + - 'n Bloom filter met m bits en k hashing funksies, het albei insertion en membership testing as O(k) + - ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Fast Fourier Transform + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - ### Bloom Filter \ No newline at end of file From 9d3ab73cfdde34aecf79016d294d049e7e7cd7ad Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:15:56 +0200 Subject: [PATCH 613/857] Lines 1640/1996 --- translations/README-af.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 89eab44d8b..6f19c017b1 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1631,15 +1631,10 @@ Jy is nooit regtig klaar nie. - ### Bloom Filter - 'n Bloom filter met m bits en k hashing funksies, het albei insertion en membership testing as O(k) - - ### A* - - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### Fast Fourier Transform - - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) -- ### Bloom Filter \ No newline at end of file +- ### HyperLogLog + - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) From fb160cad6ba9470b35dc13d313e0b7ffab57e212 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:18:06 +0200 Subject: [PATCH 614/857] Lines 1650/1996 --- translations/README-af.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 6f19c017b1..d40a5df80a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1638,3 +1638,12 @@ Jy is nooit regtig klaar nie. - ### HyperLogLog - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### Locality-Sensitive Hashing + - Gebruik om die ooreenkoms van dokumente te bepaal + - Die teenoorgestelde van MDS of SHA is gebruik om te bepaal of 2 dokumente/strings dieselfde is + - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) \ No newline at end of file From 272e16e36b7871ed98cb526678d137c95146241e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:22:53 +0200 Subject: [PATCH 615/857] Lines 1660/1996 --- translations/README-af.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index d40a5df80a..c6ff9155e3 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1646,4 +1646,18 @@ Jy is nooit regtig klaar nie. - ### van Emde Boas Trees - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) \ No newline at end of file + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Balanced search trees + - Ken ten minste een tipe balanced binary tree (en ken hoe om dit te implimenteer): + - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + A particularly interesting self-organizing data structure is the splay tree, which uses rotations + to move any accessed key to the root." - Skiena + - Van die het ek gekies om splay tree's te implementeer. Van wat ek gelees het, sal jy nie + 'n balanced search tree in jou onderjoud implimenteer nie. Maar ek wou blootstelling hê met een kodeer + en eerlikwaar is splay trees die bye se knieë. Ek het baie red-black tree kode gelees + - Splay tree: insert, delete funksies + \ No newline at end of file From bb4f52c16254cf1e9a8a05d28c3c73e204af00fa Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:39:23 +0200 Subject: [PATCH 616/857] Lines 1680/1996 --- translations/README-af.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index c6ff9155e3..f617184928 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1660,4 +1660,21 @@ Jy is nooit regtig klaar nie. 'n balanced search tree in jou onderjoud implimenteer nie. Maar ek wou blootstelling hê met een kodeer en eerlikwaar is splay trees die bye se knieë. Ek het baie red-black tree kode gelees - Splay tree: insert, delete funksies - \ No newline at end of file + As jy besluit om red/black trees te implimenteer, probeer hierdie: + - Soek en insertion funksies, skiep delete + - Ek wil meer oor B-Tree's leer omdat dit gebruik word met groot datastelle + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL trees** + - Prakties: + Van wat ek kan sê, word hierdie nie veel in die praktyk gebruik nie, maar ek kan sien waar dit sou gebruik word: + Die AVL boom is nog 'n stuktuur wat O(log n) search, insertion, en verwydering ondersteun. Dit is meer rigied + gebalanseer as red-black trees, wat lei na stadiger insertion en verwydering maar vinniger herwinning. Dit maak + dit aantreklik vir datastrukture wat een keer gebou word en laai sonder herkonstuksie, soos taal + woordeboeke (of program woordeboeke, soos die opcodes van 'n assembler of interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay trees** \ No newline at end of file From 1838f300ff4503f928ba1233b4067309ef038f5a Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:41:59 +0200 Subject: [PATCH 617/857] Lines 1690/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index f617184928..d5a7aa7ecb 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1677,4 +1677,14 @@ Jy is nooit regtig klaar nie. - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - **Splay trees** \ No newline at end of file + - **Splay trees** + - Prakties: + Splay bome is tipies gebruik in die implementering van caches, memory allocators, routers, garbage collctors, + data compression, ropes (vervanging van string gebruik vir lang teks strings), in Windows NT (in die virtual memory, + networking en file system kode) etc + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: + - Word baie wiskundig, maar kyk die laaste 10 minute vir seker + + - **Red/black trees** + - Die is 'n vertaling van die 2-3 boom (sien onder). \ No newline at end of file From 782104fc59240237bfa52abb8e5d8e3b8af1ea2e Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:51:35 +0200 Subject: [PATCH 618/857] Lines 1700/1996 --- translations/README-af.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index d5a7aa7ecb..8c300e9238 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1685,6 +1685,15 @@ Jy is nooit regtig klaar nie. - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - MIT Lecture: Splay Trees: - Word baie wiskundig, maar kyk die laaste 10 minute vir seker + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - **Red/black trees** - - Die is 'n vertaling van die 2-3 boom (sien onder). \ No newline at end of file + - Die is 'n vertaling van die 2-3 boom (sien onder). + - Prakties: + Red-black trees bied slegste-geval waarborge vir insertion tyd, deletion tyd, en soek tyd. + Dit maak hulle waardevol in tyd-sensitiewe toepe soos regte-tyd toepassings, + maar dit maak hulle waardevolle bou blokke in ander datastrukture wat slegste-geval waarborge voorsien: + byvoorbeeld, baie datastrukture wat in rekenaar meetkunde gebruik word kan gebaseer wees op red-black trees, en + die Completely Fair Scheduler gebruik in huidige Linux kernels gebruik red-black trees. In die 8ste weergawe van Java + word die Collection HashMap gemodifiseersodat in stede van 'n Linked List om identiese elemente te stoor met arm + hashcodes, word 'n Red-Black tree gebruik \ No newline at end of file From 95825e16b21b79e070926151dba076027748e92f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 10:58:59 +0200 Subject: [PATCH 619/857] Lines 1710/1996 --- translations/README-af.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 8c300e9238..dfb4d0bf8b 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1696,4 +1696,16 @@ Jy is nooit regtig klaar nie. byvoorbeeld, baie datastrukture wat in rekenaar meetkunde gebruik word kan gebaseer wees op red-black trees, en die Completely Fair Scheduler gebruik in huidige Linux kernels gebruik red-black trees. In die 8ste weergawe van Java word die Collection HashMap gemodifiseersodat in stede van 'n Linked List om identiese elemente te stoor met arm - hashcodes, word 'n Red-Black tree gebruik \ No newline at end of file + hashcodes, word 'n Red-Black tree gebruik + - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 search trees** + - Prakties: + 2-3 bome het vinniger inserts teen die uitgawe van stadiger searches (aangesien hooggte meer is in vergelyking met AVL trees). + - Jy sal 2-3 trees baie selde gebruik omdat die implentering verskeie tipe nodes gebruik. In plek daarvan, gebruk mense Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file From 8eb3f2b3e64a025ffdfc821d8c73d793a34e3b45 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:06:16 +0200 Subject: [PATCH 620/857] Lines 1720/1996 --- translations/README-af.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index dfb4d0bf8b..b0fe44de23 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1708,4 +1708,14 @@ Jy is nooit regtig klaar nie. - Jy sal 2-3 trees baie selde gebruik omdat die implentering verskeie tipe nodes gebruik. In plek daarvan, gebruk mense Red Black trees. - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - Prakties: + Vir elke 2-4 tree, is daar 'n ooreenstemmende red-black tree met data elemente in dieselfde orde. Die insertion en deletion + operations op 2-4 trees is ook ekwivalent na kleur-verandering en rotasies in red-black trees. Die maak 2-4 trees 'n + belangrike instrument om die logika angter red-black trees te verstaan, en dis hoekeom baie inleiding algoritmes tekste + 2-4 bome net voor red-black trees voorstel, selfs al word **2-4 trees nie gereeld in die praktyk gebruik word nie**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) \ No newline at end of file From d7e3ccbf408af4aaf627bacddcf5411056b60379 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:16:49 +0200 Subject: [PATCH 621/857] Lines 1740/1996 --- translations/README-af.md | 53 ++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index b0fe44de23..91e9408d29 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1702,20 +1702,39 @@ Jy is nooit regtig klaar nie. - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - - **2-3 search trees** - - Prakties: - 2-3 bome het vinniger inserts teen die uitgawe van stadiger searches (aangesien hooggte meer is in vergelyking met AVL trees). - - Jy sal 2-3 trees baie selde gebruik omdat die implentering verskeie tipe nodes gebruik. In plek daarvan, gebruk mense Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - **2-3-4 Trees (aka 2-4 trees)** - - Prakties: - Vir elke 2-4 tree, is daar 'n ooreenstemmende red-black tree met data elemente in dieselfde orde. Die insertion en deletion - operations op 2-4 trees is ook ekwivalent na kleur-verandering en rotasies in red-black trees. Die maak 2-4 trees 'n - belangrike instrument om die logika angter red-black trees te verstaan, en dis hoekeom baie inleiding algoritmes tekste - 2-4 bome net voor red-black trees voorstel, selfs al word **2-4 trees nie gereeld in die praktyk gebruik word nie**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) \ No newline at end of file + - **2-3 search trees** + - Prakties: + 2-3 bome het vinniger inserts teen die uitgawe van stadiger searches (aangesien hooggte meer is in vergelyking met AVL trees). + - Jy sal 2-3 trees baie selde gebruik omdat die implentering verskeie tipe nodes gebruik. In plek daarvan, gebruk mense Red Black trees. + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 Trees (aka 2-4 trees)** + - Prakties: + Vir elke 2-4 tree, is daar 'n ooreenstemmende red-black tree met data elemente in dieselfde orde. Die insertion en deletion + operations op 2-4 trees is ook ekwivalent na kleur-verandering en rotasies in red-black trees. Die maak 2-4 trees 'n + belangrike instrument om die logika angter red-black trees te verstaan, en dis hoekeom baie inleiding algoritmes tekste + 2-4 bome net voor red-black trees voorstel, selfs al word **2-4 trees nie gereeld in die praktyk gebruik word nie**. + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) trees** + - let wel: die N of K is die branching faktoor (max branches) + - binary trees is 'n 2-ary tree, met branching faktoor = 2 + - 2-3 trees is 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-Trees** + - Prettige feit: dis 'n misterie, maar die B kan staan vir Boeing, Balanced, of Bayer (mede-uitvinders) + - Prakties: + B-Trees word word gebruik in databasisse. Meeste moderne filesystems gebruik B-trees (of variante). Benewens + die gebruik in databasisse, word dit ook gebruik in filesystems om vinnige ewekansige toegang tot 'n arbitrêre + blok in 'n spesifieke lêer te gee. Die basiese probleem is om die lêer blok i address na 'n disk blok (of eerder 'n cylinder-head-sektor) address te verander + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) \ No newline at end of file From 9675adff0876845e5e10dedb48742af025c89572 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:27:00 +0200 Subject: [PATCH 622/857] Lines 1750/1996 --- translations/README-af.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 91e9408d29..11c6b2e717 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1731,10 +1731,24 @@ Jy is nooit regtig klaar nie. - Prakties: B-Trees word word gebruik in databasisse. Meeste moderne filesystems gebruik B-trees (of variante). Benewens die gebruik in databasisse, word dit ook gebruik in filesystems om vinnige ewekansige toegang tot 'n arbitrêre - blok in 'n spesifieke lêer te gee. Die basiese probleem is om die lêer blok i address na 'n disk blok (of eerder 'n cylinder-head-sektor) address te verander + blok in 'n spesifieke lêer te gee. Die basiese probleem is om die lêer blok i address na 'n disk blok + (of eerder 'n cylinder-head-sektor) address te verander - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) \ No newline at end of file + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - dek cache-oblivious B-Trees, baie interessante datastrukture + - die eerste 37 minute is baie tegnies en mag geskiep word (B is block size, cache line size) + + +- ### k-D Trees + - Fantasties om die hoeveelheid punte in 'n vierkant of hoër dimensie objek te kry + - 'n Goeie keuse vir k-nearest neighbors + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Skip lists + - "These are somewhat of a cult data structure" - Skiena + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) \ No newline at end of file From d5294b1b07963e532347b3285cc76a72d5dfdec1 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:27:21 +0200 Subject: [PATCH 623/857] Lines 1760/1996 --- translations/README-af.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 11c6b2e717..29678920d0 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1751,4 +1751,17 @@ Jy is nooit regtig klaar nie. - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) \ No newline at end of file + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + +- ### Network Flows + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Math for Fast Processing + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) \ No newline at end of file From 8a81b6148126175d350f0059727f5519c286613f Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:28:50 +0200 Subject: [PATCH 624/857] Lines 1780/1996 --- translations/README-af.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 29678920d0..02ba6e5ab8 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1764,4 +1764,21 @@ Jy is nooit regtig klaar nie. - ### Math for Fast Processing - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) \ No newline at end of file + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combination of a binary search tree and a heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Lineêre Programering (videos) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometry, Convex hull (videos) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) \ No newline at end of file From c468c48b15990dae84343d1be6a587460e881053 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:29:44 +0200 Subject: [PATCH 625/857] Lines 1800/1996 --- translations/README-af.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 02ba6e5ab8..1951917283 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1781,4 +1781,20 @@ Jy is nooit regtig klaar nie. - ### Geometry, Convex hull (videos) - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) \ No newline at end of file + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete math + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +- ### Machine Learning + - Hoekom ML? + - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) + - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) + - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) \ No newline at end of file From 86592af3bb9cd1dc4728acff42a9e36532bd3464 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:30:59 +0200 Subject: [PATCH 626/857] Lines 1820/1996 --- translations/README-af.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 1951917283..400850b3b7 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1797,4 +1797,21 @@ Jy is nooit regtig klaar nie. - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) \ No newline at end of file + - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) + - Kursusse: + - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) + - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) + - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) + - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) + - Hulpbronne: + - Boeke: + - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) + - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) + - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - Data School: http://www.dataschool.io/ + +--- + From c901649e739f1e23579e1f38b4bf29d2efa6e015 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:35:26 +0200 Subject: [PATCH 627/857] Lines 1840/1996 --- translations/README-af.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/translations/README-af.md b/translations/README-af.md index 400850b3b7..8a7f58e859 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1815,3 +1815,23 @@ Jy is nooit regtig klaar nie. --- +## Bykomende Detail op Sommige Vakke + + Ek het die by gevoeg om sommige idees wat al klaar bo aagebied was, maar nie ingesluit was nie + omdat dit te veel is, te versterk. Dis maklik om 'n onderwerp te oordoen + Jy wil in hierdie eeu aangestel word, nê? + +- **SOLIED** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) \ No newline at end of file From 103bf357688cb7527224c2b5b75b019c3d9f8f89 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:36:08 +0200 Subject: [PATCH 628/857] Lines 1850/1996 --- translations/README-af.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 8a7f58e859..6063761c64 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1834,4 +1834,21 @@ Jy is nooit regtig klaar nie. - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) \ No newline at end of file + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **Meer Dinamiese Programering** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) \ No newline at end of file From b76bce68491c266fc8777b78f39bff23b9d76651 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:36:57 +0200 Subject: [PATCH 629/857] Lines 1870/1996 --- translations/README-af.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index 6063761c64..76f9da2567 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1851,4 +1851,20 @@ Jy is nooit regtig klaar nie. - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) \ No newline at end of file + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Advanced Graph Processing** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Probability** (wiskundig, en gaan stadig, wat goed is vir wiskundige goed) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) \ No newline at end of file From 694157e8afaee5167959fe0976114258b9832823 Mon Sep 17 00:00:00 2001 From: Anri Lombard Date: Thu, 21 Jul 2022 11:45:53 +0200 Subject: [PATCH 630/857] First draft done --- translations/README-af.md | 130 +++++++++++++++++++++++++++++++++++++- 1 file changed, 128 insertions(+), 2 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 76f9da2567..d1412fb85a 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -231,7 +231,7 @@ sagteware ontwikkeling/ingeneur rolle. - [Masjienleer](#masjienleer) - [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke) - [Video Reeks](#video-reeks) -- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse) +- [Rekenaar Wetenskap Kursusse](#rekenaar-wetenshap-kursusse) - [Papiere](#papiere) --- @@ -1836,6 +1836,7 @@ Jy is nooit regtig klaar nie. - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + - **Union-Find** - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) @@ -1867,4 +1868,129 @@ Jy is nooit regtig klaar nie. - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) \ No newline at end of file +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer–Moore string search algorithm + - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - Begin goed, maar teen die tyd wat dit verby KMP gaan word dit meer ingewikkeld as wat dit hoef te wees + - goeie verduideliking van tries + - kan geskiep word + +- **Sorting** + + - Stanford lectures on sorting: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +## Video Reeks + +Sit terug en geniet. + +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) + +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Rekenaar Wetenskap Kursusse + +- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + +## Algoritmiese implementasie + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - meestal gevervang deur Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Die Dynamo papier het die NoSQL revolusie afgeskop +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: 'n Vinnige Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENSE + +[CC-BY-SA-4.0](./LICENSE.txt) From d97574ecd42b30df2efa7b0a3edef9a5bd2e8a76 Mon Sep 17 00:00:00 2001 From: Sandeep Mishra <87706790+sandeepmishratech@users.noreply.github.com> Date: Fri, 22 Jul 2022 09:42:33 +0530 Subject: [PATCH 631/857] Added a new resource Hi, I have added a new resource under Javascript - Javascript Tutorial - Learn From Scratch. Hope this small contribution will help the learners. :D --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index a62c0cbd16..81014d96e2 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -78,6 +78,7 @@ - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) + - [Javascript Tutorial - Learn From Scratch](https://www.scaler.com/topics/javascript/) - Rust - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) From 0187f27018eaef1d51b6523c0ff3669cc874abc3 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 25 Jul 2022 09:29:59 -0700 Subject: [PATCH 632/857] Removed machine learning section. It's not needed for software engineering interviews and is a completely different field. --- README.md | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/README.md b/README.md index 58b90c3bae..51e790b59d 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,6 @@ software development/engineering roles. - [Linear Programming](#linear-programming-videos) - [Geometry, Convex hull](#geometry-convex-hull-videos) - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Video Series](#video-series) - [Computer Science Courses](#computer-science-courses) @@ -1789,31 +1788,6 @@ You're never really done. - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) -- ### Machine Learning - - Why ML? - - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - Resources: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ - --- ## Additional Detail on Some Subjects @@ -1985,10 +1959,8 @@ Sit back and enjoy. - 2013: Spanner: Google’s Globally-Distributed Database: - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [video](https://www.usenix.org/node/170855) -- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) From c7f69947f4033c8be258bb6c6f7372b57a286ce5 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 31 Jul 2022 19:02:57 -0700 Subject: [PATCH 633/857] Does not check translations due to file size limit --- .github/workflows/links_checker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index 224aab6bed..4d582c0740 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -18,7 +18,7 @@ jobs: ## Check out code using Git - uses: actions/checkout@v3 - - name: Check all links at README.md and translations files + - name: Check all links at README.md but skips translations files id: lychee uses: lycheeverse/lychee-action@v1.4.1 with: @@ -35,7 +35,7 @@ jobs: --timeout 20 --max-concurrency 10 --no-progress - README.md translations/*.md + README.md env: ## Avoid rate limiting when checking github.com links GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 6001497deffd2acdd47e0c48160907edeea47956 Mon Sep 17 00:00:00 2001 From: anmolp476 <99687931+anmolp476@users.noreply.github.com> Date: Tue, 2 Aug 2022 13:39:35 -0400 Subject: [PATCH 634/857] Added another challenge site AlgoExpert is also a pretty popular website for coding interview practice. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 51e790b59d..011a5c986e 100644 --- a/README.md +++ b/README.md @@ -577,6 +577,8 @@ Challenge sites: - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [InterviewBit](https://www.interviewbit.com/) - [Project Euler](https://projecteuler.net/) +- [AlgoExpert](https://www.algoexpert.io/product) + - Created by Google engineers, this is also an excellent resource to hone your skills. ## Let's Get Started From 6b0562194c2bec4da4e2769b25e2d3286767ba18 Mon Sep 17 00:00:00 2001 From: Aryan Kumar <63502167+ArynKr@users.noreply.github.com> Date: Sun, 7 Aug 2022 16:49:59 +0530 Subject: [PATCH 635/857] Update README.md Upd: Proper casing. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 011a5c986e..7b87466f3c 100644 --- a/README.md +++ b/README.md @@ -652,7 +652,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Linked List vs Arrays: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. From e9ddd1b7b181493f413c92fa8c5fe8f18cf6014d Mon Sep 17 00:00:00 2001 From: Ashad001 <93534298+Ashad001@users.noreply.github.com> Date: Mon, 8 Aug 2022 21:56:09 +0500 Subject: [PATCH 636/857] Made some corrections in README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7b87466f3c..9e0654bbdc 100644 --- a/README.md +++ b/README.md @@ -292,8 +292,9 @@ Mark all boxes with X after you completed your changes: ## Don't feel you aren't smart enough - Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- Following videos may help you overcome this insecurity: + - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) ## A Note About Video Resources @@ -449,7 +450,7 @@ Make your own for free: - [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. +**I DON'T RECOMMEND using my flashcards.** There are too many and most of them are trivia that you don't need. But if you don't want to listen to me, here you go: - [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): @@ -1187,7 +1188,7 @@ Graphs can be used to represent many problems in computer science, so this secti - The first half is enough. - ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - **If you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - Otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) From 1850730449e396e3d1d7e108ad06bead2eddb295 Mon Sep 17 00:00:00 2001 From: Santiago Betancourt <78756825+Tiago08@users.noreply.github.com> Date: Wed, 10 Aug 2022 08:46:15 -0400 Subject: [PATCH 637/857] Fixed some typos --- translations/README-es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 00f84e692c..83f4f1befa 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -2,7 +2,7 @@ - Versión original: [Inglés](../README.md) -> Originalmente creé esto como una lista corta de temas a estudiar para volverse un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Posiblemente no tenga que estudiar mucho como yo. De todos modos, todo lo que necesita, esta aquí. +> Originalmente creé esto como una lista corta de temas a estudiar para volverme un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Posiblemente no tengas que estudiar tanto como yo. De todos modos, todo lo que necesitas, esta aquí. > > Durante muchos meses he estudiado diariamente de 8 a 12 horas. Esta es mi historia: [Por qué estudié a tiempo completo durante 8 meses para una entrevista con Google. (Art. Inglés)](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > @@ -223,7 +223,7 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, ## ¿Por qué usarlo? -Si desea trabajar como un Ingeniero de Software para una gran compañía, estas son los aspectos que debes de conocer. +Si desea trabajar como un Ingeniero de Software para una gran compañía, estas son los aspectos que debes conocer. Si, como yo, te perdiste la carrera de informática, esto te pondrá al día y te ahorrará cuatro años de tu vida. From ab5b6ecdde7b96129a88bf512a07168c15e3a9b8 Mon Sep 17 00:00:00 2001 From: Santiago Betancourt <78756825+Tiago08@users.noreply.github.com> Date: Wed, 10 Aug 2022 08:48:19 -0400 Subject: [PATCH 638/857] Update README-es.md --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 83f4f1befa..29daead820 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -2,7 +2,7 @@ - Versión original: [Inglés](../README.md) -> Originalmente creé esto como una lista corta de temas a estudiar para volverme un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Posiblemente no tengas que estudiar tanto como yo. De todos modos, todo lo que necesitas, esta aquí. +> Originalmente creé esto como una lista corta de temas a estudiar para volverme un Ingeniero de Software, pero creció hasta ser la gran lista que puede apreciar actualmente. Después de pasar por este plan de estudios, ¡[fui contratado como Ingeniero de Desarrollo de Software en Amazon! (Art. en Inglés)](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) Posiblemente no tengas que estudiar tanto como yo. De todos modos, todo lo que necesitas, esta aquí. > > Durante muchos meses he estudiado diariamente de 8 a 12 horas. Esta es mi historia: [Por qué estudié a tiempo completo durante 8 meses para una entrevista con Google. (Art. Inglés)](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > From 280395cb6f3230b960664599d2c3aea399f3a093 Mon Sep 17 00:00:00 2001 From: amansingh1999 <39962391+amansingh1999@users.noreply.github.com> Date: Thu, 11 Aug 2022 01:00:59 +0530 Subject: [PATCH 639/857] Updating README-hi.md With some Hindi words --- translations/README-hi.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 1c715b5eb3..f73ad93cda 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -49,7 +49,7 @@ यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें। -यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि Google, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट जैसी बड़ी सॉफ्टवेयर कंपनियों की दृष्टि में सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर/वेब डेवलपमेंट से भिन्न है , और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है। +यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि गूगल, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट जैसी बड़ी सॉफ्टवेयर कंपनियों की दृष्टि में सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर/वेब डेवलपमेंट से भिन्न है , और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है। यदि आप एक विश्वसनीय इंजीनियर या सिस्टम इंजीनियर बनना चाहते हैं, तो वैकल्पिक सूची (नेटवर्किंग, सुरक्षा) से अधिक जानें। @@ -71,7 +71,7 @@ - [इसमे क्या समाविष्ट नहीं हे](#इसमे-क्या-समाविष्ट-नहीं-हे) - [पूर्व प्रयोजनीय ज्ञान](#prerequisite-knowledge) - [दैनिक योजना](#the-daily-plan) -- [अल्गोरिथम जटिलता / बिग-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) +- [अल्गोरिथम जटिलता / बिग-O / Asymptotic विश्लेषण](#algorithmic-complexity--big-o--asymptotic-analysis) - [डेटा संरचनाएं](#data-structures) - [ऐरे](#arrays) - [लिंक्ड लिस्ट](#linked-lists) @@ -130,7 +130,7 @@ - [van Emde Boas Trees](#van-emde-boas-trees) - [Augmented Data Structures](#augmented-data-structures) - [स्किप लिस्ट](#skip-lists) - - [Network Flows](#network-flows) + - [नेटवर्क प्रवाह](#network-flows) - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [फास्ट प्रोसेसिंग के लिए गणित](#math-for-fast-processing) - [Treap](#treap) @@ -165,7 +165,7 @@ memory" का एरर न दे, और तब मुझे कोई वै ## कभी भी आप चालाक नहीं हो ऐसा ना सोचो - सफल सॉफ्टवेयर इंजीनियर चालाक होते हें, पर बहुत लोगो को असुरक्षा होती है किी वो चालाक नहीं हैं ! -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [प्रतिभाशाली प्रोग्रामर की कल्पित कथा](https://www.youtube.com/watch?v=0SARbwvhupQ) ## विडियो संसाधनों के बारे में @@ -1288,7 +1288,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - ### Implement system routines - understand what lies beneath the programming APIs you use - - can you implement them? + - क्या आप उन्हें लागू कर सकते हैं? - ### String searching & manipulations - [ ] [Search pattern in text (विडियो)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) @@ -1399,14 +1399,14 @@ Take coding challenges every day, as many as you can. ## Once you're closer to the interview - [ ] Cracking The Coding Interview Set 2 (विडियो): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) + - [कोड इंटरव्यू क्रैक करना](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) ## आपका रिज्यूमे - [एक (थोड़ा) कम भयंकर रिज्यूमे करने के लिए दस सुझाव](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- Great stuff at the back of Cracking The Coding Interview +- कोडिंग इंटरव्यू को क्रैक करने के लिए उपयोगी सामान ## इंटरव्यू की सोंच @@ -1458,7 +1458,7 @@ Take coding challenges every day, as many as you can. - See more in MIT 6.050J Information and Entropy series below. - ### Parity & Hamming Code (विडियो) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [ ] [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - [ ] Hamming Code: - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) From dcb03ffc3befc59761b9a1b0a93ca903541ea751 Mon Sep 17 00:00:00 2001 From: AlishaSingh <111339102+AlishaSingh16@users.noreply.github.com> Date: Wed, 17 Aug 2022 18:25:42 +0530 Subject: [PATCH 640/857] Added resource in the repos. --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 81014d96e2..89081a8246 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -34,6 +34,7 @@ - [Let us C++](https://books.google.co.in/books/about/Let_Us_C++.html?id=6HrjAAAACAAJ) - [C++ Primer](https://books.google.co.in/books/about/C++_Primer.html?id=J1HMLyxqJfgC&redir_esc=y) - [C++ Tutorial for Beginners](https://www.youtube.com/watch?v=vLnPwxZdW4Y) + - [C++ Interview Questions](https://www.interviewbit.com/cpp-interview-questions) - Python - [Python Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/python-cheat-sheet-v1.pdf) - [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA) From 6827b1a6c5f03ac2431b5f8359c0aad944dba181 Mon Sep 17 00:00:00 2001 From: Vaishnavi Amira Yada <108050528+Vaishnaviamirayada@users.noreply.github.com> Date: Thu, 18 Aug 2022 13:56:56 +0530 Subject: [PATCH 641/857] Added a useful resource Have added a useful resource to learn programming languages from the scaler topics in the resource section. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9e0654bbdc..83544a0f8e 100644 --- a/README.md +++ b/README.md @@ -337,6 +337,7 @@ You may not need it, but here are some sites for learning a new language: - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) - [Codeforces](https://codeforces.com/) +- [Scaler Topics](https://www.scaler.com/topics/) ### For your Coding Interview From 7f3b17a40a6df103c70fd96ec4324a8682f78738 Mon Sep 17 00:00:00 2001 From: AlishaSingh <111339102+AlishaSingh16@users.noreply.github.com> Date: Thu, 18 Aug 2022 16:42:15 +0530 Subject: [PATCH 642/857] Added few new resources to this repos. --- programming-language-resources.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 89081a8246..084293fd12 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -4,6 +4,7 @@ - [ANSI C Cheat Sheet]() - [K&R C book (ANSI C)](https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628) - [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M) + - [Top C Programming Interview Questions](https://www.interviewbit.com/c-interview-questions) - GDB: - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=USPvePv1uzE) - [Harvard CS50 - GDB (video)](https://www.youtube.com/watch?v=y5JmQItfFck) @@ -48,12 +49,15 @@ - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - [Python Programming Tutorial](https://www.scaler.com/topics/python/) + - [Python Interview Questions](https://www.interviewbit.com/python-interview-questions) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) + - [Java Cheat Sheet](https://www.interviewbit.com/java-cheat-sheet) - [Introduction To Programming In Java](http://introcs.cs.princeton.edu/java/home/) - [Algorithms 4th Ed - Algorithm Book In Java](http://algs4.cs.princeton.edu/home/) - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) + - [Top Java Interview Questions and Answers](https://www.interviewbit.com/java-interview-questions) - Go - [The Go programming Language](https://golang.org/) - [The Go programming Language (book)](http://www.gopl.io/) @@ -65,21 +69,26 @@ - [Go Proverbs - Rob Pike (video)](https://www.youtube.com/watch?v=PAAkCSZUG1c) - [Gophercises - Free course on Coding Exercises in Go](https://gophercises.com) - HTML + - [HTML Cheat Sheet](https://www.interviewbit.com/html-cheat-sheet) - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) - [W3 Schools](https://www.w3schools.com/html/) + - [Html Interview Questions](https://www.interviewbit.com/html-interview-questions) - CSS - [Quick CSS Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf8JIgLcu3sHigvQjTw_aC9C) - [CSS Crash Course for absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - [Basic CSS](https://www.freecodecamp.org/learn/responsive-web-design/basic-css/) - [W3 Schools](https://www.w3schools.com/css/) + - [Top 30+ CSS Interview Questions](https://www.interviewbit.com/css-interview-questions) - Javascript + - [JavaScript Cheat Sheet](https://www.interviewbit.com/javascript-cheat-sheet) - [Learn Javascript in 12 minutes](https://www.youtube.com/watch?v=Ukg_U3CnJWI) - [Javascript Beginner Tutorials](https://www.youtube.com/playlist?list=PL41lfR-6DnOrwYi5d824q9-Y6z3JdSgQa) - [Javascript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/) - [Javascript Algorithms With Explanations](https://github.com/trekhleb/javascript-algorithms) - [Javascript Tutorial - Learn From Scratch](https://www.scaler.com/topics/javascript/) + - [Javascript Interview Questions and Answers](https://www.interviewbit.com/javascript-interview-questions) - Rust - [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html) - [Rust by Example](https://doc.rust-lang.org/stable/rust-by-example/) From faca7000fc0d9fc7568bbc050874b1f74d500e5f Mon Sep 17 00:00:00 2001 From: "Ali M. Khadir" Date: Tue, 23 Aug 2022 02:11:22 +0300 Subject: [PATCH 643/857] edit first section & What is it section --- translations/README-ar.md | 56 ++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index a9004d89f6..1eaface15a 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1,16 +1,25 @@ # الإعداد لمقابلة البرمجة -> أنشأتها في المقام الأول كلائحة قصيرة من المواضيع الدراسية لكيف يصبح المرء مهندس برمجيات، ولكن سرعان ما كبرت هذه القائمة إلى ما تراه أمامك اليوم. بعد خوض هذه الخطة الدراسية, -[تم توظيفي كمهندس تطوير برمجيات لدى أمازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! على الأغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود -هنا -> -> درست لمدة ٨-١٢ ساعة في اليوم, لعدة أشهر. هذه هي قصتي: [لماذا درست دواما كاملا لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) -> -> العناصر المذكورة في هذه اللائحة ستجهزك جيدا لمقابلة تقنية مع تقريبا أي شركة برمجية, حتى الشركات العملاقة: أمازون، فيسبوك، قوقل، وميكروسوفت -> -> بالتوفيق - -

+
+ +> لقد قمت بأنشاء هذا في الأصل كلائحة صغيرة تحتوي على مواضيع دراسية الغرض من دراستها ان أصبح مهندس برامجيات، +> لكنها توسعت الى قائمة كبيرة التي تراها اليوم. بعد ان قمتُ بدراسة لائحة المواضيع هذه وحسب الخطة، [حصلت على عمل كمهندس برامجيات في شركة امازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) +>! على الأغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود هنا. +> +>درستُ لمدة ٨-١٢ ساعة في اليوم, لعدة أشهر. هذه هي قصتي: [لماذا كرستُ كل وقتي لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **ملاحظة:** لن تحتاج للدراسة بقدر ما فعلت انا، لقد اهدرت المزيد من الوقت والجهد على مواضيع لم اكن بحاجة الى معرفتها، مزيد حول ذلك ادناه، سوف اساعدك بالوصول الى هناك دون اضاعة وقتك الثمين. +> +> المواضيع المدرجة في هذه اللائحة ستجهزك جيدا لاجراء مقابلة تقنية مع اي شركة برمجية تقريبا، حتى الشركات العملاقة: أمازون، فيسبوك، قوقل، وميكروسوفت. +> +>بالتوفيق. +> + +
+ + + +
الترجمات: - [中文版本](translations/README-cn.md) @@ -24,7 +33,7 @@
-
+
ترجمات تحت الإعداد: - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) @@ -43,8 +52,9 @@
+
+ -## ما هذا؟ -هي خطتي متعددة الأشهر للوصول من مطور ويب (تعليم ذاتي، بدون درجة علمية في علوم الحاسب) لمنصب مهندس برمجيات لشركة عملاقة - +## ما هذا! +

+ Coding at the whiteboard - from HBO's Silicon Valley +

-![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +هذه خطتي الدراسية التي تستغرق عدة اشهر من اجل ان اصبح مهندس برامجيات في شركة عملاقة. -تم إعدادها لمهنسي البرمجيات الجدد أو أولئك المنتقلين من تطوير الويب إلى هندسة البرمجيات (حيث المعرفة بعلوم الحاسب ضرورية) إذا كان لديك العديد من سنوات الخبرة في بناء تطبيقات الويب أو البرمجيات، خذ في عين الإعتبار ان المقابلة ستكون اصعب +**المتطلبات:** +* خبرة قليلة في البرمجة (المتغيرات، التكرارات، الدوال، الخ). +* صبر. +* وقت. -إذا كانت لديك العديد من سنوات الخبرة في تطوير الويب, خذ في عين الإعتبار أن الشركات االبرمجية الضخمة مثل قوقل, فيسبوك, و ميكروسوفت ينظرون إلى هندسة البرمجيات بشكل مختلف عن تطوير البرمجيات/ويب, و تحتاج إلى معرفة علوم الحاسب +ملاحظة: هذه الخطة الدراسية هي من اجل ان تصبح مهندس برامجيات وليس من اجل ان تصبح مطور تطبيقات للويب. كبرى الشركات التقنية مثل كوكل، امازون، مايكروسوفت، فيسبوك ينظرون الى مهندس البرامجيات بنظرة مختلفة عن مطور البرامجيات/الويب، على سبيل المثال شركة امازون لديها مهندس الواجهات (Frontend Engineers) ولديها مهندس تطوير برامجيات (Software Development Engineers) ولكل منها دور مختلف والمقابلة التقنية لكل منها مختلفة تماما، لكن بصورة عام تتطلب هذه الشركات معرفة بعلوم الحاسوب للمتقدمين لشغل ادوار تخص تطوير البرامجيات او هندسة البرامجيات. -إذا اردت ان تصبح مهندس موثوقية أو مهندس عمليات, ادرس اكثر من القائمة الإختيارية (شبكات, امن) - ---- +
## الفهرس From ba2bed417fc3618e00902d0a6cb1f5ebb5e48fcb Mon Sep 17 00:00:00 2001 From: "Ali M. Khadir" Date: Tue, 23 Aug 2022 10:47:08 +0300 Subject: [PATCH 644/857] edit Table of Contents --- translations/README-ar.md | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 1eaface15a..586204da67 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -108,8 +108,12 @@ ## الفهرس -- [ما هذا؟](#ما-هذا؟) -- [لماذا استخدمه؟](#لماذا-استخدمه؟) + +
+ + +- [ما هذا؟](#ما-هذا) +- [لماذا استخدم هذه الخطة الدراسية؟](#لماذا-استخدم-هذه-الخطة-الدراسية) - [كيفية استخدامها](#كيفية-استخدامها) - [عن مصادر مقاطع الفديو](#عن-مصادر-مقاطع-الفديو) - [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#مراحل-المقابلة-الشخصية-و-الإستعداد-العام-للمقابلة) @@ -119,18 +123,18 @@ - [ما لن تجده هنا](#ما-لن-تجده-هنا) - [الخطة اليومية](#الخطة-اليومية) - [معرفة مسبقة](#المعرفة-المسبقة) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) +- [تقدير وتحليل أداء الخوارزميات (Algorithmic complexity / Big-O / Asymptotic analysis)](#algorithmic-complexity--big-o--asymptotic-analysis) +- [هياكل البيانات (Data Structures)](#data-structures) + - [المصفوفات (Arrays)](#arrays) + - [العقد المترابطة (Linked Lists)](#linked-lists) + - [المكدس (Stack)](#stack) + - [الطابور (Queue)](#queue) + - [جداول التجزئة (Hash table)](#hash-table) +- [معرفة اضافية](#more-knowledge) + - [الـ Binary search](#binary-search) + - [الـ Bitwise operations](#bitwise-operations) +- [الشجرة (Trees)](#trees) + - [الشجرة - ملاحظات - ومعلومات اساسية (Trees - Notes & Background)](#trees---notes--background) - [Binary search trees: BSTs](#binary-search-trees-bsts) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - balanced search trees (general concept, not details) @@ -224,7 +228,10 @@ --- -## لماذا استخدمه؟ + +
+ +## لماذا استخدم هذه الخطة الدراسية؟ أقوم بمتابعة هذه الخطة لتحضير إلى المقابلة الشخصية بجوجل. لقد قمت بناء مواقع ويب، وتقديم خدمات ذات صلة، وبناء شركات ناشئة منذ 1997. لدي درجة علمية في الاقتصاد، وليس في علوم الحاسب. أنا شخص ناجح في مجال عملي، ولكنني أريد أن أعمل بجوجل. أريد أن أعمل على أنظمة كبيرة والحصول على فهم كبير في أنظمة الحاسوب، كفاءة الخوارزميات، كقاءة الهياكل البيانية، اللغات الأقرب إلى الآلة وكيفية عملها. وإذ لم تعرف أين منها لن تعينك جوجل. From 131e8a90b1908ac6f0ec88d75ff3a2eeeb85ee9e Mon Sep 17 00:00:00 2001 From: "Ali M. Khadir" Date: Tue, 23 Aug 2022 11:02:48 +0300 Subject: [PATCH 645/857] update the Table of Contents section --- translations/README-ar.md | 176 +++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 89 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 586204da67..84ee901e0f 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -115,7 +115,7 @@ - [ما هذا؟](#ما-هذا) - [لماذا استخدم هذه الخطة الدراسية؟](#لماذا-استخدم-هذه-الخطة-الدراسية) - [كيفية استخدامها](#كيفية-استخدامها) -- [عن مصادر مقاطع الفديو](#عن-مصادر-مقاطع-الفديو) +- [عن مصادر مقاطع الفيديو](#عن-مصادر-مقاطع-الفديو) - [مراحل المقابلة الشخصية & الإستعداد العام للمقابلة](#مراحل-المقابلة-الشخصية-و-الإستعداد-العام-للمقابلة) - [اختر لغة برمجية واحدة للمقابلة البرمجية](#اختر-لغة-برمجية-واحدة-للمقابلة-البرمجية) - [لائحة الكتب](#لائحة-الكتب) @@ -135,98 +135,96 @@ - [الـ Bitwise operations](#bitwise-operations) - [الشجرة (Trees)](#trees) - [الشجرة - ملاحظات - ومعلومات اساسية (Trees - Notes & Background)](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- + - [الـ Binary search trees: BSTs](#binary-search-trees-bsts) + - [الـ Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - الـ balanced search trees (general concept, not details) + - الـ traversals: preorder, inorder, postorder, BFS, DFS +- [الـ Sorting](#sorting) + - الـ selection + - الـ insertion + - الـ heapsort + - الـ quicksort + - الـ merge sort +- [الـ Graphs](#graphs) + - الـ directed + - الـ undirected + - الـ adjacency matrix + - الـ adjacency list + - الـ traversals: BFS, DFS +- [الـ Even More Knowledge](#even-more-knowledge) + - [الـ Recursion](#recursion) + - [الـ Dynamic Programming](#dynamic-programming) + - [الـ Object-Oriented Programming](#object-oriented-programming) + - [الـ Design Patterns](#design-patterns) + - [الـ Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) + - [الـ NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [الـ Caches](#caches) + - [الـ Processes and Threads](#processes-and-threads) + - [الـ Testing](#testing) + - [الـ Scheduling](#scheduling) + - [الـ String searching & manipulations](#string-searching--manipulations) + - [الـ Tries](#tries) + - [الـ Floating Point Numbers](#floating-point-numbers) + - [الـ Unicode](#unicode) + - [الـ Endianness](#endianness) + - [الـ Networking](#networking) +- [الـ System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [الـ Final Review](#final-review) +- [الـ Coding Question Practice](#coding-question-practice) +- [الـ Coding exercises/challenges](#coding-exerciseschallenges) +- [الـ Once you're closer to the interview](#once-youre-closer-to-the-interview) +- [الـ Your Resume](#your-resume) +- [الـ Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) +- [الـ Have questions for the interviewer](#have-questions-for-the-interviewer) +- [الـ Once You've Got The Job](#once-youve-got-the-job) + ## Additional Resources -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +- [الـ Additional Books](#additional-books) +- [الـ Additional Learning](#additional-learning) + - [الـ Compilers](#compilers) + - [الـ Emacs and vi(m)](#emacs-and-vim) + - [الـ Unix command line tools](#unix-command-line-tools) + - [الـ Information theory](#information-theory-videos) + - [الـ Parity & Hamming Code](#parity--hamming-code-videos) + - [الـ Entropy](#entropy) + - [الـ Cryptography](#cryptography) + - [الـ Compression](#compression) + - [الـ Computer Security](#computer-security) + - [الـ Garbage collection](#garbage-collection) + - [الـ Parallel Programming](#parallel-programming) + - [الـ Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) + - [الـ A*](#a) + - [الـ Fast Fourier Transform](#fast-fourier-transform) + - [الـ Bloom Filter](#bloom-filter) + - [الـ HyperLogLog](#hyperloglog) + - [الـ Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [الـ van Emde Boas Trees](#van-emde-boas-trees) + - [الـ Augmented Data Structures](#augmented-data-structures) + - [الـ Balanced search trees](#balanced-search-trees) + - الـ AVL trees + - الـ Splay trees + - الـ Red/black trees + - الـ 2-3 search trees + - الـ 2-3-4 Trees (aka 2-4 trees) + - الـ N-ary (K-ary, M-ary) trees + - الـ B-Trees + - [الـ k-D Trees](#k-d-trees) + - [الـ Skip lists](#skip-lists) + - [الـ Network Flows](#network-flows) + - [الـ Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [الـ Math for Fast Processing](#math-for-fast-processing) + - [الـ Treap](#treap) + - [الـ Linear Programming](#linear-programming-videos) + - [الـ Geometry, Convex hull](#geometry-convex-hull-videos) + - [الـ Discrete math](#discrete-math) + - [الـ Machine Learning](#machine-learning) +- [الـ Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +- [الـ Video Series](#video-series) +- [الـ Computer Science Courses](#computer-science-courses) +- [الـ Papers](#papers) ----
From c77444385fcee9fb7c89ad15ff5f14dd4fbf1b50 Mon Sep 17 00:00:00 2001 From: YangQi <2419731931@qq.com> Date: Tue, 23 Aug 2022 20:25:10 +0800 Subject: [PATCH 646/857] docs: replace inline code with code blocks --- translations/README-cn.md | 44 ++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 3258277b46..a8492930ec 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -188,31 +188,33 @@ 在学习过程中,我使用 GitHub 特殊语法的 markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 -**创建一个新的分支,以便你可以像这样去勾选计划的进展:直接往方括号中填写一个字符 x 即可:[x]**。 +创建一个新的分支,以便你可以像这样去勾选计划的进展:直接往方括号中填写一个字符 x 即可:[x]。 - Fork一个分支,并跟随以下的指令 +```sh +Fork 一个分支,并跟随以下的指令 +``` 通过单击 Fork 按钮来 fork GitHub 仓库:[jwasham/coding-interview-university](https://github.com/jwasham/coding-interview-university) - 克隆项目到本地 - -`git checkout -b progress` - -`git remote add jwasham https://github.com/jwasham/coding-interview-university` - -`git fetch --all` - - 在你完成了一些修改后,在框框中打 x - -`git add .` - -`git commit -m "Marked x"` - -`git rebase jwasham/main` - -`git push --set-upstream origin progress` - -`git push --force` +克隆项目到本地 + +```sh +git clone git@github.com:/coding-interview-university.git +cd coding-interview-university +git checkout -b progress +git remote add jwasham https://github.com/jwasham/coding-interview-university +git fetch --all +``` + +在你完成了一些修改后,在框框中打 x + +```sh +git add . +git commit -m "Marked x" +git rebase jwasham/main +git push --set-upstream origin progress +git push --force +``` [更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) From 8c8e48306ca1e27cb43b48440edd205ebead21c3 Mon Sep 17 00:00:00 2001 From: YangQi Date: Tue, 23 Aug 2022 20:38:38 +0800 Subject: [PATCH 647/857] docs: add video Description --- translations/README-cn.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 3258277b46..bd2ddbbd8f 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -186,7 +186,7 @@ 下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 -在学习过程中,我使用 GitHub 特殊语法的 markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 +在学习过程中,我使用 GitHub 特殊语法的 Markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 **创建一个新的分支,以便你可以像这样去勾选计划的进展:直接往方括号中填写一个字符 x 即可:[x]**。 @@ -216,18 +216,20 @@ [更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - ## 不要觉得自己不够聪明 - 大多数成功的软件工程师都非常聪明,但他们都有一种觉得自己不够聪明的不安全感。 -- [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [不要单打独斗:面对技术中的隐形怪物](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- 下面的视频可以帮助你克服这种不安全感: + - [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [不要单打独斗:面对技术中的隐形怪物](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +> 译注:观看视频需要访问 YouTube,不知道访问方式的朋友可以看看这个:[free](https://github.com/freefq/free)。 ## 相关视频资源 部分视频只能通过在 Coursera 或者 Edx 课程上注册登录才能观看。这些视频被称为网络公开课程(MOOC)。有时候某些课程需要等待好几个月才能获取,这期间你无法观看这些课程的影片。 - 很感谢你能帮我把网络公开课程的视频链接转换成公开的,可持续访问的视频源,比如 YouTube 视频,以代替那些在线课程的视频。此外,一些大学的讲座视频也是我所青睐的。 +很感谢你能帮我把网络公开课程的视频链接转换成公开的,可持续访问的视频源,比如 YouTube 视频,以代替那些在线课程的视频。此外,一些大学的讲座视频也是我所青睐的。 ## 面试过程 & 通用的面试准备 From 38ddfacb4bfd91459561762afb96c6800d4abca5 Mon Sep 17 00:00:00 2001 From: YangQi Date: Wed, 24 Aug 2022 09:47:10 +0800 Subject: [PATCH 648/857] docs: remove the solution --- translations/README-cn.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index bd2ddbbd8f..cb66465ea6 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -223,8 +223,6 @@ - [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ) - [不要单打独斗:面对技术中的隐形怪物](https://www.youtube.com/watch?v=1i8ylq4j_EY) -> 译注:观看视频需要访问 YouTube,不知道访问方式的朋友可以看看这个:[free](https://github.com/freefq/free)。 - ## 相关视频资源 部分视频只能通过在 Coursera 或者 Edx 课程上注册登录才能观看。这些视频被称为网络公开课程(MOOC)。有时候某些课程需要等待好几个月才能获取,这期间你无法观看这些课程的影片。 From 7c6679f7ac0801ef5487480f1a8cc5dfaea84453 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 23 Aug 2022 19:13:41 -0700 Subject: [PATCH 649/857] Updates fork and clone instructions. --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 83544a0f8e..5e4a16bba0 100644 --- a/README.md +++ b/README.md @@ -269,25 +269,29 @@ If you're open in a code editor that understands markdown, you'll see everything Create a new branch so you can check items like this, just put an x in the brackets: [x] - Fork a branch and follow the commands below +1. ***Fork the GitHub repo:*** `https://github.com/jwasham/coding-interview-university` by clicking on the Fork button. -Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. + ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -Clone to your local repo: +1. Clone to your local repo: + ``` git clone git@github.com:/coding-interview-university.git cd coding-interview-university git checkout -b progress git remote add jwasham https://github.com/jwasham/coding-interview-university git fetch --all + ``` -Mark all boxes with X after you completed your changes: +1. Mark all boxes with X after you completed your changes: + ``` git add . git commit -m "Marked x" git rebase jwasham/main git push --set-upstream origin progress git push --force + ``` ## Don't feel you aren't smart enough From d18b4aa79f26f8a1e7355bbb18be3bf628a7586b Mon Sep 17 00:00:00 2001 From: YangQi Date: Wed, 24 Aug 2022 10:29:17 +0800 Subject: [PATCH 650/857] docs: synchronous update --- translations/README-cn.md | 42 ++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index a8492930ec..c55b438c94 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -184,37 +184,33 @@ ## 如何使用它 -下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 - 在学习过程中,我使用 GitHub 特殊语法的 markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 -创建一个新的分支,以便你可以像这样去勾选计划的进展:直接往方括号中填写一个字符 x 即可:[x]。 +下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 -```sh -Fork 一个分支,并跟随以下的指令 -``` +1. 通过单击 Fork 按钮来 fork GitHub 仓库:`https://github.com/jwasham/coding-interview-university` -通过单击 Fork 按钮来 fork GitHub 仓库:[jwasham/coding-interview-university](https://github.com/jwasham/coding-interview-university) + ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -克隆项目到本地 +2. 克隆项目到本地: -```sh -git clone git@github.com:/coding-interview-university.git -cd coding-interview-university -git checkout -b progress -git remote add jwasham https://github.com/jwasham/coding-interview-university -git fetch --all -``` + ```sh + git clone git@github.com:/coding-interview-university.git + cd coding-interview-university + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + ``` -在你完成了一些修改后,在框框中打 x +3. 在你完成了一些修改后,在框框中打 x: -```sh -git add . -git commit -m "Marked x" -git rebase jwasham/main -git push --set-upstream origin progress -git push --force -``` + ```sh + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + ``` [更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) From 8b2c91eba18e94ee9012768df6046500f5518fa4 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 23 Aug 2022 19:33:06 -0700 Subject: [PATCH 651/857] Removed sponsor. --- README.md | 11 ----------- translations/README-af.md | 11 ----------- translations/README-ar.md | 11 ----------- translations/README-bg.md | 11 ----------- translations/README-bn.md | 11 ----------- translations/README-cn.md | 11 ----------- translations/README-de.md | 11 ----------- translations/README-es.md | 11 ----------- translations/README-fa.md | 11 ----------- translations/README-fr.md | 11 ----------- translations/README-he.md | 11 ----------- translations/README-hi.md | 11 ----------- translations/README-id.md | 11 ----------- translations/README-ja.md | 11 ----------- translations/README-kh.md | 11 ----------- translations/README-ko.md | 11 ----------- translations/README-pl.md | 11 ----------- translations/README-ptbr.md | 11 ----------- translations/README-ru.md | 11 ----------- translations/README-th.md | 11 ----------- translations/README-tr.md | 11 ----------- translations/README-tw.md | 11 ----------- translations/README-uk.md | 11 ----------- translations/README-ur.md | 11 ----------- translations/README-uz.md | 11 ----------- translations/README-vi.md | 11 ----------- 26 files changed, 286 deletions(-) diff --git a/README.md b/README.md index 5e4a16bba0..182e35d41f 100644 --- a/README.md +++ b/README.md @@ -62,17 +62,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-af.md b/translations/README-af.md index d1412fb85a..7cef840fd9 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -62,17 +62,6 @@

Spesiale dank aan:

-

- -

-
- Gestig in 2018, OSS Capital is die eerste en enigste waagkapitaal platform gefokus
uitsluitlik om vroeë stadium COSS (komersiële oop bron) opstart stigters te ondersteun.
-
-
-

-

diff --git a/translations/README-ar.md b/translations/README-ar.md index a9004d89f6..a52f8528a1 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -51,17 +51,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-bg.md b/translations/README-bg.md index edc41be86d..eceb217772 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -55,17 +55,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-bn.md b/translations/README-bn.md index 03ea2510e4..4e3588195b 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -58,17 +58,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-cn.md b/translations/README-cn.md index cb66465ea6..3109e2f310 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -16,17 +16,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-de.md b/translations/README-de.md index bf609dfc4f..ffb5e4adf4 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -52,17 +52,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-es.md b/translations/README-es.md index 29daead820..32d2567fe2 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -54,17 +54,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-fa.md b/translations/README-fa.md index ace57dc8e9..1cd9600606 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -58,17 +58,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-fr.md b/translations/README-fr.md index 93effb77ed..42969cc6e0 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -13,17 +13,6 @@ Traductions:

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-he.md b/translations/README-he.md index a8289a3423..422f303d52 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -25,17 +25,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-hi.md b/translations/README-hi.md index f73ad93cda..501eb68a79 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -13,17 +13,6 @@

इन सब को विशेष धन्यवाद:

-

- -

-
- 2018 में स्थापित, OSS Capital पहला और एकमात्र उद्यम पूंजी मंच है जो विशेष रूप से
प्रारंभिक चरण COSS (वाणिज्यिक ओपन सोर्स) स्टार्टअप संस्थापकों का समर्थन करने पर केंद्रित है।
-
-
-

-

diff --git a/translations/README-id.md b/translations/README-id.md index ba991e63e5..26118abc5e 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -10,17 +10,6 @@ Versi asli: [Bahasa Inggris](../README.md)

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-ja.md b/translations/README-ja.md index 6033f89639..b9e9595a8b 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -41,17 +41,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-kh.md b/translations/README-kh.md index 351e302627..2f399e920c 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -54,17 +54,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-ko.md b/translations/README-ko.md index 906050fe70..5a4a61a2eb 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -59,17 +59,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-pl.md b/translations/README-pl.md index a743d33f69..7c5a4e0988 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -51,17 +51,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 64c60266ba..888eaf395f 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -47,17 +47,6 @@ Traduções em progresso:

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-ru.md b/translations/README-ru.md index 6a0caea84c..91012d6b17 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -10,17 +10,6 @@

Особые благодарности:

-

- -

-
- Основанная в 2018, OSS Capital - первая и единственная венчурная платформа, ориентированная
исключительно для поддержки основателей стартапов на ранней стадии COSS (commercial open source - коммерческий открытый источник).
-
-
-

-

diff --git a/translations/README-th.md b/translations/README-th.md index d771a5e02f..907c4441fc 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -34,17 +34,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-tr.md b/translations/README-tr.md index 850862ff2c..0f793fa34e 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -57,17 +57,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-tw.md b/translations/README-tw.md index 122ed929c9..496d5b1534 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -52,17 +52,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-uk.md b/translations/README-uk.md index ba91119880..0bf56163fc 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -60,17 +60,6 @@ Microsoft.

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-ur.md b/translations/README-ur.md index cf5ea32f20..b6a842d5fb 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -52,17 +52,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-uz.md b/translations/README-uz.md index 5147b43c9a..229d210288 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -20,17 +20,6 @@ Asl versiyasi: [Inglizcha](../README.md)

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

diff --git a/translations/README-vi.md b/translations/README-vi.md index 116b4f83ce..7a0c73c5ba 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -37,17 +37,6 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

From 7d85c9ebb590bd16e4be2ab8e35aa5168e637dea Mon Sep 17 00:00:00 2001 From: YangFong Date: Wed, 24 Aug 2022 14:31:16 +0800 Subject: [PATCH 652/857] docs: update new content --- translations/README-cn.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index fd886ba982..3d0b1a932e 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -173,10 +173,22 @@ ## 如何使用它 -在学习过程中,我使用 GitHub 特殊语法的 markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 - 下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 +在学习过程中,我使用 GitHub 特殊语法的 Markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 + +- [更多关于 Github-flavored Markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### 如果你不想使用 Git + +在该页面上,单击顶部附近的 Code 按钮,然后单击“Download ZIP”。解压文件,就可以使用文本文件了。 + +如果你打开一个代码编辑器,你会看到所有格式都很好。 + +![How to download the repo as a zip file](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### 如果你不介意 Git + 1. 通过单击 Fork 按钮来 fork GitHub 仓库:`https://github.com/jwasham/coding-interview-university` ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) @@ -201,8 +213,6 @@ git push --force ``` -[更多关于 Github-flavored markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - ## 不要觉得自己不够聪明 - 大多数成功的软件工程师都非常聪明,但他们都有一种觉得自己不够聪明的不安全感。 From a0ba6b03586436af9c8120374121f8ab3ee4d8c7 Mon Sep 17 00:00:00 2001 From: "Ali M. Khadir" Date: Wed, 24 Aug 2022 13:12:21 +0300 Subject: [PATCH 653/857] Update README-ar.md --- translations/README-ar.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 063d72a62a..ad3ad61329 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -168,8 +168,7 @@ - [الـ Once You've Got The Job](#once-youve-got-the-job) -## Additional Resources - +## مصادر اضافية - [الـ Additional Books](#additional-books) - [الـ Additional Learning](#additional-learning) - [الـ Compilers](#compilers) From 824a265ab67cd700834c3306850b07828951745b Mon Sep 17 00:00:00 2001 From: "Ali M. Khadir" Date: Wed, 24 Aug 2022 23:39:52 +0300 Subject: [PATCH 654/857] Update README-ar.md --- translations/README-ar.md | 49 +++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index ad3ad61329..f51480a3b9 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -234,40 +234,43 @@ **اصنع مسار جديد يمكن من خلاله أن تضع علامة [x]** - - احصل على نسخة خاصة "fork" بك واتبع هذه الأوامر - - Clone to your local repo - -`git clone git@github.com:/coding-interview-university.git` - -`git checkout -b progress` - -`git remote add jwasham https://github.com/jwasham/coding-interview-university` - -`git fetch --all` + احصل على نسخة خاصة "fork" بك واتبع هذه الأوامر +1- Clone to your local repo + ``` + git clone git@github.com:/coding-interview-university.git + cd coding-interview-university + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all +``` دون بعلامة X بعد الإنتهاء من دراسة العنصر +``` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force +``` -`git add .` - -`git commit -m "Marked x"` +[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -`git rebase jwasham/main` -`git push --set-upstream origin progress` +## هل تشعر أنك لست بالذكاء الكافي -`git push --force` -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +
+ + +- مهندسوا جوجل أذكياء، وربما لديهم عدم الأمان لأنهم ليسوا بالذكاء الكافي، حتى وهي في جوجل +- شاهد هذا الفيديو عبر اليوتيوب [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) +- شاهد هذا الفيديو عبر اليوتيوب [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## هل تشعر أنك لست بالذكاء الكافي -- مهندسوا جوجل أذكياء، وربما لديهم عدم الأمان لأنهم ليسوا بالذكاء الكافي، حتى وهي في جوجل -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +
## عن مصادر مقاطع الفديو From e7ddfafedc8429019a61bb265edbc0404f3ebba9 Mon Sep 17 00:00:00 2001 From: Mohit Date: Sat, 20 Aug 2022 17:43:45 +0530 Subject: [PATCH 655/857] Fix grammatical error in README.md --- README.md | 160 +++++++++++++++++++++++++++--------------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 182e35d41f..f4448e31fe 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that is below. I'll help you get there without wasting your precious time. > > The items listed here will prepare you well for a technical interview at just about any software company, > including the giants: Amazon, Facebook, Google, and Microsoft. @@ -228,9 +228,9 @@ software development/engineering roles. If you want to work as a software engineer for a large company, these are the things you have to know. -If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. +If you missed out on getting a degree in computer science, as I did, this will catch you up and save four years of your life. -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. Every data structure I had ever used was built into the language, and I didn't know how they worked under the hood at all. I never had to manage memory unless a process I was running would give an "out of @@ -243,7 +243,7 @@ It's a long plan. It may take you months. If you are familiar with a lot of this Everything below is an outline, and you should tackle the items in order from top to bottom. -I'm using GitHub's special markdown flavor, including tasks lists to track progress. +I'm using GitHub's special markdown flavor, including task lists to track progress. - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ### If you don't want to use git @@ -303,16 +303,16 @@ not just when a specific online course is in session. You'll need to choose a programming language for the coding interviews you do, but you'll also need to find a language that you can use to study computer science concepts. -Preferably the language would be the same, so that you only need to be proficient in one. +Preferably the language would be the same so that you only need to be proficient in one. ### For this Study Plan When I did the study plan, I used 2 languages for most of it: C and Python * C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + and algorithms in your bones. In higher-level languages like Python or Java, these are hidden from you. In day-to-day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - C is everywhere. You'll see examples in books, lectures, and videos *everywhere* while you're studying. - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. @@ -340,7 +340,7 @@ You can use a language you are comfortable in to do the coding part of the inter - Java - Python -You could also use these, but read around first. There may be caveats: +You could also use these but read around first. There may be caveats: - JavaScript - Ruby @@ -349,7 +349,7 @@ Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -You need to be very comfortable in the language and be knowledgeable. +You need to be very comfortable with the language and be knowledgeable. Read more about choices: - [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) @@ -429,7 +429,7 @@ Here are some mistakes I made so you'll have a better experience. And you'll sav ### 1. You Won't Remember it All I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards, so I could review. I didn't need all of that knowledge. +through my notes and making flashcards, so I could review them. I didn't need all of that knowledge. Please, read so you won't make my mistakes: @@ -458,12 +458,12 @@ same card and answer it several times correctly before you really know it. Repet your brain. An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. -It uses a repetition system to help you remember. It's user-friendly, available on all platforms and has a cloud sync system. +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. My flashcard database in Anki format: 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. +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, and add the member "white-space: pre;" to the card class. ### 3. Do Coding Interview Questions While You're Learning @@ -471,7 +471,7 @@ 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. +You need to apply what you're learning to solve 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) @@ -482,7 +482,7 @@ Once you've learned a topic, and feel somewhat comfortable with it, for example, **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. +You're not being hired for knowledge, but for how you apply the knowledge. There are many resources for this, listed below. Keep going. @@ -504,7 +504,7 @@ These are prevalent technologies but not part of this study 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. +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) @@ -527,7 +527,7 @@ Why you need to practice doing programming problems: - Coming up with time and space complexity for your solutions (see Big-O below) - Testing your solutions -There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming +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/) @@ -535,7 +535,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input 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.** +Gets messy quickly. **I use a pencil and eraser.** ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -554,12 +554,12 @@ Coding Interview Question Videos: - [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-) - - Good explanations of solution and the code + - Good explanations of the solution and the code - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) - [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) - - Good explanations of solution and the python code - - Also checkout [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list + - Good explanations of the solution and the python code + - Also check out [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list - [Github links](https://github.com/neetcode-gh/leetcode) for all solutions code - [Neetcode 150](https://neetcode.io/) @@ -600,7 +600,7 @@ But don't forget to do coding problems from above while you learn! 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 +When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end, there is a quiz to see if you can identify the runtime complexity of different algorithms. It's a super review and test. ## Data Structures @@ -615,13 +615,13 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] 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 - 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 the power of 2 - 16, 32, 64, 128 - [ ] size() - number of items - [ ] capacity() - number of items it can hold - [ ] is_empty() - [ ] at(index) - returns item at given index, blows up if index out of bounds - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] insert(index, item) - inserts an item at index, shifts that index's value and trailing elements to the right - [ ] prepend(item) - can use insert above at index 0 - [ ] pop() - remove from end, return value - [ ] delete(index) - delete item at index, shifting all trailing elements left @@ -629,9 +629,9 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - [ ] resize(new_capacity) // private function - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half + - when popping an item, if the size is 1/4 of capacity, resize to half - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(1) to add/remove at the end (amortized for allocations for more space), index, or update - O(n) to insert/remove elsewhere - [ ] Space - contiguous in memory, so proximity helps performance @@ -648,7 +648,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: + - [ ] Gotcha: you need a pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) @@ -662,7 +662,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] pop_back() - removes end item and returns its value - [ ] front() - get value of front item - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] insert(index, value) - insert value at index, so a current item at that index is pointed to by a new item at index - [ ] erase(index) - removes node at given index - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - [ ] reverse() - reverses the list @@ -673,12 +673,12 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Will not implement. Implementing with array is trivial + - [ ] Will not implement. Implementing with the array is trivial - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Implement using linked-list, with tail pointer: + - [ ] Implement using linked-list, with a tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) - empty() @@ -688,8 +688,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - empty() - full() - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue + - a bad implementation using a linked list where you enqueue at the head and dequeue at the tail would be O(n) + because you'd need the next to last element, causing a full traversal of each dequeue - enqueue: O(1) (amortized, linked list and array [probing]) - dequeue: O(1) (linked list and array) - empty: O(1) (linked list and array) @@ -712,8 +712,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] Implement with array using linear probing - - hash(k, m) - m is size of hash table + - [ ] Implement with the array using linear probing + - hash(k, m) - m is the size of the hash table - add(key, value) - if key already exists, update value - exists(key) - get(key) @@ -727,7 +727,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] Implement: - - binary search (on sorted array of integers) + - binary search (on a sorted array of integers) - binary search using recursion - ### Bitwise operations @@ -848,11 +848,11 @@ if you can identify the runtime complexity of different algorithms. It's a super - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable +- For heapsort, see the Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) @@ -890,7 +890,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above + - For heapsort, see the Heap data structure above - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) @@ -911,7 +911,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Graphs -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +Graphs can be used to represent many problems in computer science, so this section is long like trees and sorting were. - Notes: - There are 4 basic ways to represent a graph in memory: @@ -920,7 +920,7 @@ Graphs can be used to represent many problems in computer science, so this secti - adjacency list - adjacency map - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - BFS and DFS - know their computational complexity, their trade-offs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none - [ ] MIT(videos): @@ -962,7 +962,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] single-source shortest path (Dijkstra) - [ ] minimum spanning tree - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] check for the cycle (needed for topological sort, since we'll check for the cycle before starting) - [ ] topological sort - [ ] count connected components in a graph - [ ] list strongly connected components @@ -1043,10 +1043,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Khan Academy: - Course layout: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): + - Just the videos - 41 (each is simple and each is short): - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms +- ### NP, NP-Complete, and Approximation Algorithms - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. @@ -1064,7 +1064,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - Peter Norvig discusses near-optimal solutions to the traveling salesman problem: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. @@ -1099,7 +1099,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Mutexes - Semaphores - Monitors - - How they work? + - How do they work? - Deadlock - Livelock - CPU activity, interrupts, context switching @@ -1107,8 +1107,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its pc, stack counter, registers, and stack) + - Forking is copying on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) @@ -1147,12 +1147,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + If you need more detail on this subject, see the "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits to track the path - - I read through code, but will not implement + - I read through the code, but will not implement - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1164,7 +1164,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [Stanford Lecture (real-world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers @@ -1178,7 +1178,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. + - Very technical talk for kernel devs. Don't worry if most are over your head. - The first half is enough. - ### Networking @@ -1217,7 +1217,7 @@ Graphs can be used to represent many problems in computer science, so this secti ## Update Your Resume - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: +- I don't know how important this is (you can do your research) but here is an article on making your resume ATS Compliant: - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." @@ -1246,13 +1246,13 @@ Graphs can be used to represent many problems in computer science, so this secti - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - A Python-centric interview prep course that covers data structures, algorithms, mock interviews, and much more. - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. + - A free Python-centric data structures and algorithms course. - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform in the behavioral interview. Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview @@ -1277,7 +1277,7 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: +- If you find it hard to come up with good answers to these types of interview questions, here are some ideas: - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) ## Have questions for the interviewer @@ -1292,7 +1292,7 @@ Some of mine (I already may know the answers, but want their opinion or team per - Do you feel your work environment helps you concentrate? - What are you working on? - What do you like about it? -- What is the work life like? +- What is work-life like? - How is the work/life balance? ## Once You've Got The Job @@ -1342,7 +1342,7 @@ You're never really done. - Code examples in C - Cons: - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Chapters 7, 8, and 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - Algorithm catalog: - This is the real reason you buy this book. @@ -1365,7 +1365,7 @@ You're never really done. - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures but won't teach you how to write good code. You have to be able to code a decent solution efficiently - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment @@ -1457,16 +1457,16 @@ You're never really done. - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - - Define the use cases, with interviewer's help + - Define the use cases, with the interviewer's help - Suggest additional features - - Remove items that interviewer deems out of scope + - Remove items that the interviewer deems out of scope - Assume high availability is required, add as a use case 2. Think about constraints: - Ask how many requests per month - Ask how many requests per second (they may volunteer it or make you do the math) - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second + - Keep the 80/20 rule in mind when estimating + - How much data is written per second - Total storage required over 5 years - How much data read per second 3. Abstract design: @@ -1484,7 +1484,7 @@ You're never really done. ## Additional Learning - I added them to help you become a well-rounded software engineer, and to be aware of certain + I added them to help you become a well-rounded software engineer and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers @@ -1546,12 +1546,12 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see videos below + - Also see the videos below - Make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see videos below + - Also see the videos below - Make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) @@ -1627,7 +1627,7 @@ You're never really done. - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) + - Given a Bloom filter with m bits and k hashing functions, both insertion, and membership testing are O(k) - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) @@ -1638,7 +1638,7 @@ You're never really done. - ### Locality-Sensitive Hashing - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are the same - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees @@ -1666,7 +1666,7 @@ You're never really done. - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it + balanced than red-black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) @@ -1690,8 +1690,8 @@ You're never really done. Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + for example, many data structures used in computational geometry can be based on red-black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red-black trees. In version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) @@ -1702,24 +1702,24 @@ You're never really done. - **2-3 search trees** - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - You would use 2-3 trees very rarely because its implementation involves different types of nodes. Instead, people use Red-Black trees. - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. + For every 2-4 trees, there are corresponding red-black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red-black trees. This makes 2-4 trees an + important tool for understanding the logic behind red-black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red-black trees, even though **2-4 trees are not often used in practice**. - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 + - binary trees are 2-ary trees, with branching factor = 2 - 2-3 trees are 3-ary - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) @@ -1737,11 +1737,11 @@ You're never really done. - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - the first 37 minutes are very technical and may be skipped (B is block size, cache line size) - ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object + - Great for finding a number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) @@ -1789,7 +1789,7 @@ You're never really done. ## Additional Detail on Some Subjects - I added these to reinforce some ideas already presented above, but didn't want to include them + I added these to reinforce some ideas already presented above but didn't want to include them above because it's just too much. It's easy to overdo it on a subject. You want to get hired in this century, right? @@ -1949,7 +1949,7 @@ Sit back and enjoy. - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - The Dynamo paper kicked off the NoSQL revolution -- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - 2012: AddressSanitizer: A Fast Address Sanity Checker: - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) From f6d824a29fc45954f2b09bd6f5607bb0866c22f4 Mon Sep 17 00:00:00 2001 From: Mohit Date: Sun, 28 Aug 2022 18:47:21 +0530 Subject: [PATCH 656/857] Update README-hi.md --- translations/README-hi.md | 191 ++++++++++++++++++-------------------- 1 file changed, 91 insertions(+), 100 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 501eb68a79..0828ab1787 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -114,15 +114,15 @@ - [संगणक सुरक्षा](#computer-security) - [पैरेलल प्रोग्रामिंग](#parallel-programming) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [Fast Fourier Transform](#fast-fourier-transform) + - [फास्ट फूरियर ट्रांसफॉर्म](#fast-fourier-transform) - [ब्लूम फ़िल्टर](#bloom-filter) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) + - [एम्दे बोस पेड़](#van-emde-boas-trees) + - [संवर्धित डेटा संरचनाएं](#augmented-data-structures) - [स्किप लिस्ट](#skip-lists) - [नेटवर्क प्रवाह](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [असंबद्ध सेट और संघ खोजें](#disjoint-sets--union-find) - [फास्ट प्रोसेसिंग के लिए गणित](#math-for-fast-processing) - - [Treap](#treap) + - [ट्रीप](#treap) - [लीनियर प्रोग्रामिंग](#linear-programming)    - [ज्यामिति, कॉन्वेक्स हल](#geometry-convex-hull) - [डिस्क्रीट मैथ](#discrete-math) @@ -428,7 +428,7 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय भी शामिल है): - [कम्प्यूटेशनल जटिलता: धारा 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [प्रवंचक पत्रक](http://bigocheatsheet.com/) @@ -439,87 +439,81 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] विवरण: - [एरे (विडियो)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - [Dynamic Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold + - [ ] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी): + - [ ] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें। + - [ ]आवंटित स्मृति के साथ नया कच्चा डेटा सरणी - हुड के तहत int सरणी आवंटित कर सकता है, बस इसकी सुविधाओं का उपयोग न करें - 16 से शुरू करें, या यदि प्रारंभिक संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128 + - [ ] size() - वस्तुओं की संख्या + - [ ] capacity() - इसमें रखी जा सकने वाली वस्तुओं की संख्या - [ ] is_empty() - [ ] at(index) - returns item at given index, blows up if index out of bounds - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] insert(index, item) - इंडेक्स में आइटम डालें, उस इंडेक्स के मान और अनुगामी तत्वों को दाईं ओर शिफ्ट करें + - [ ] prepend(item) - इंडेक्स 0 पर ऊपर इंसर्ट का उपयोग कर सकते हैं + - [ ] pop() - अंत से हटा दें, वापसी मूल्य + - [ ] delete(index) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करना + - [ ] remove(item) - मूल्य की तलाश करता है और इसे धारण करने वाले सूचकांक को हटा देता है (भले ही कई स्थानों पर हो) + - [ ] find(item) - मूल्य की तलाश करता है और उस मूल्य के साथ पहला सूचकांक देता है, -1 यदि नहीं मिला + - [ ] // निजी फ़ंक्शन + - जब आप क्षमता तक पहुंचते हैं, तो आकार को दोगुना करने के लिए आकार बदलें + - पॉपिंग करते समय एक आइटम, यदि आकार क्षमता का 1/4 है, आधा करने के लिए आकार बदलें - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere + - O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन + - O(n) कहीं और डालने/निकालने के लिए - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) + - स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है + - स्थान की आवश्यकता = (array क्षमता, जो> = n) * size of item, लेकिन भले ही 2n, फिर भी O(n) - ### Linked Lists - - [ ] Description: + - [ ] विवरण: - [ ] [Singly Linked Lists (विडियो)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (विडियो)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - [ ] [C Code (विडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. + - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश। - [ ] Linked List vs Arrays: - [Core Linked Lists Vs Arrays (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - [In The Real World Linked Lists Vs Arrays (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - [ ] [why you should avoid linked lists (विडियो)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [ ] Gotcha: आपको पॉइंटर टू पॉइंटर नॉलेज की आवश्यकता है: (जब आप किसी फ़ंक्शन को पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) यह पृष्ठ केवल पीटीआर से पीटीआर पर एक समझ प्राप्त करने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है। - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] implement (मैंने टेल पॉइंटर के साथ और बिना किया): + - [ ] size() - सूची में डेटा तत्वों की संख्या देता है + - [ ] empty() - खाली होने पर boolean सही होता है + - [ ] value_at(index) - nth आइटम का मान देता है (पहले के लिए 0 से शुरू) + - [ ] push_front (value) - जोड़ता है सूची के सामने एक आइटम + - [ ] pop_front () - सामने की वस्तु को हटा दें और उसका मूल्य वापस करें + - [ ] push_back (value) - अंत में एक आइटम जोड़ता है + - [ ] pop_back () - अंतिम आइटम को हटा देता है और उसका मूल्य लौटाता है + - [ ] front() - सामने की वस्तु का मूल्य प्राप्त करें + - [ ] back() - अंतिम वस्तु का मूल्य प्राप्त करें + - [ ] insert(index, value) - सूचकांक पर मूल्य डालें, इसलिए उस सूचकांक पर वर्तमान आइटम नए द्वारा इंगित किया गया है इंडेक्स पर आइटम + - [ ] erase(index) - दिए गए इंडेक्स पर नोड को हटाता है| + - [ ] value_n_from_end(n) - सूची के अंत से nth स्थिति पर नोड का मान देता है + - [ ] reverse() - सूची को उलट देता है + - [ ] remove_value(value) - इस मान के साथ सूची में पहला आइटम हटा देता है - [ ] Doubly-linked List - [Description (विडियो)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - No need to implement - ### Stack - [ ] [Stacks (विडियो)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] Will not implement. Implementing with array is trivial. + - [ ] अमल नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है। - ### Queue - [ ] [Queue (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) - - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element - - empty() - - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) + - [ ] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके कार्यान्वित करें: + - enqueue(value) - पूंछ पर स्थिति पर मूल्य जोड़ता है - dequeue () - मूल्य लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है + - empty () + - [ ] निश्चित आकार का उपयोग करके कार्यान्वित करें सरणी: + - enqueue(value) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है + - dequeue () - मूल्य लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है + - empty () + - full () + - [ ] Cost: + - लिंक्ड सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर एनक्यू और पूंछ पर डेक्यू O(n) होगा क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक डीक्यू में एक पूर्ण ट्रैवर्सल हो + - enqueue: O(1) (परिशोधन, लिंक्ड सूची और सरणी [probing]) + - dequeue : O(1) (लिंक की गई सूची और सरणी) + - empty: O(1) (लिंक की गई सूची और सरणी) - ### Hash table - [ ] विडियो: @@ -538,9 +532,9 @@ memory" का एरर न दे, और तब मुझे कोई वै - [Instant Uploads And Storage Optimization In Dropbox (विडियो)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - [Distributed Hash Tables (विडियो)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - [ ] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें + - hash(k, m) - हैश टेबल का आकार है + - add(key, value) -यदि key पहले से मौजूद है, तो मान अपडेट करें - exists(key) - get(key) - remove(key) @@ -551,22 +545,22 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (विडियो)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (विडियो)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. + - कर्नेल डेवलपर के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें। + - पहला हाफ काफी है। - ### Binary search - [ ] [Binary Search (विडियो)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Binary Search (विडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion + - [ ] कार्यान्वित करें: + - बाइनरी खोज (पूर्णांकों की क्रमबद्ध सरणी पर) + - रिकर्सन का उपयोग करके बाइनरी खोज - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - आपको 2 की शक्तियों में से कई को जानना चाहिए (2^1 प्रति 2^16 तथा 2^32) + - [ ] बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: + - [ ] अच्छा परिचय: [Bit Manipulation (विडियो)](https://www.youtube.com/watch?v=7jkIUgLC29I) - [ ] [C Programming Tutorial 2-10: Bitwise Operators (विडियो)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) @@ -630,20 +624,20 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] [Delete a node from Binary Search Tree (विडियो)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (विडियो)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max - - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] insert // पेड़ में मूल्य डालें + - [ ] get_node_count // संग्रहीत मूल्यों की गिनती प्राप्त करें + - [ ] print_values ​​// पेड़ में मूल्यों को न्यूनतम से अधिकतम तक प्रिंट करता है + - [ ] delete_tree + - [ ] is_in_tree // यदि दिया गया मान मौजूद है तो सत्य लौटाता है ट्री + - [ ] get_height // नोड्स में ऊंचाई लौटाता है (एकल नोड की ऊंचाई 1 है) + - [ ] get_min // ट्री में संग्रहीत न्यूनतम मान लौटाता है + - [ ] get_max // ट्री में संग्रहीत अधिकतम मान लौटाता है + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // दिए गए मान के बाद ट्री में अगला-उच्चतम मान लौटाता है, -1 यदि कोई नहीं - ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) + - एक पेड़ के रूप में देखा जाता है, लेकिन आमतौर पर भंडारण में रैखिक होता है (सरणी, लिंक्ड सूची) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Introduction (विडियो)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [Naive Implementations (विडियो)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) @@ -658,23 +652,20 @@ memory" का एरर न दे, और तब मुझे कोई वै - [ ] [MIT: Heaps and Heap Sort (विडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (विडियो)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: - - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] अधिकतम-ढेर लागू करें: + - [ ] insert + - [ ] sift_up - सम्मिलित करने के लिए आवश्यक + - [ ] get_max - अधिकतम आइटम लौटाता है, इसे हटाए बिना - [ ] get_size () - संग्रहीत तत्वों की वापसी संख्या - [ ] is_empty () - यदि ढेर में कोई तत्व नहीं है + - [ ] Extract_max - अधिकतम आइटम लौटाता है, इसे हटाता है + - [ ] sift_down - Extract_max के लिए आवश्यक + - [ ] remove (i) - इंडेक्स x पर आइटम हटा देता है + - [ ] heapify - एक से ढेर बनाएं तत्वों की सरणी, heap_sort के लिए आवश्यक + - [ ] heap_sort() - एक क्रमबद्ध सरणी लें और इसे अधिकतम ढेर का उपयोग करके एक क्रमबद्ध सरणी में बदल दें + - नोट: इसके बजाय एक न्यूनतम ढेर का उपयोग करने से संचालन की बचत होगी, लेकिन आवश्यक स्थान को दोगुना कर देगा ( जगह पर नहीं कर सकता)। - ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. + - ध्यान दें कि विभिन्न प्रकार के tries हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ पथ को ट्रैक करने के लिए बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं। + - मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा। - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] Short course विडियो: - [ ] [Introduction To Tries (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) From f2565a8c2f9a68143733b7e598905e2b1b05a1d2 Mon Sep 17 00:00:00 2001 From: Mohit Date: Sun, 28 Aug 2022 18:51:00 +0530 Subject: [PATCH 657/857] Revert "Fix grammatical error in README.md" This reverts commit e7ddfafedc8429019a61bb265edbc0404f3ebba9. --- README.md | 160 +++++++++++++++++++++++++++--------------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index f4448e31fe..182e35d41f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that is below. I'll help you get there without wasting your precious time. +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. > > The items listed here will prepare you well for a technical interview at just about any software company, > including the giants: Amazon, Facebook, Google, and Microsoft. @@ -228,9 +228,9 @@ software development/engineering roles. If you want to work as a software engineer for a large company, these are the things you have to know. -If you missed out on getting a degree in computer science, as I did, this will catch you up and save four years of your life. +If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to +When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. Every data structure I had ever used was built into the language, and I didn't know how they worked under the hood at all. I never had to manage memory unless a process I was running would give an "out of @@ -243,7 +243,7 @@ It's a long plan. It may take you months. If you are familiar with a lot of this Everything below is an outline, and you should tackle the items in order from top to bottom. -I'm using GitHub's special markdown flavor, including task lists to track progress. +I'm using GitHub's special markdown flavor, including tasks lists to track progress. - [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ### If you don't want to use git @@ -303,16 +303,16 @@ not just when a specific online course is in session. You'll need to choose a programming language for the coding interviews you do, but you'll also need to find a language that you can use to study computer science concepts. -Preferably the language would be the same so that you only need to be proficient in one. +Preferably the language would be the same, so that you only need to be proficient in one. ### For this Study Plan When I did the study plan, I used 2 languages for most of it: C and Python * C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher-level languages like Python or Java, these are hidden from you. In day-to-day work, that's terrific, + and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - - C is everywhere. You'll see examples in books, lectures, and videos *everywhere* while you're studying. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. @@ -340,7 +340,7 @@ You can use a language you are comfortable in to do the coding part of the inter - Java - Python -You could also use these but read around first. There may be caveats: +You could also use these, but read around first. There may be caveats: - JavaScript - Ruby @@ -349,7 +349,7 @@ Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -You need to be very comfortable with the language and be knowledgeable. +You need to be very comfortable in the language and be knowledgeable. Read more about choices: - [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) @@ -429,7 +429,7 @@ Here are some mistakes I made so you'll have a better experience. And you'll sav ### 1. You Won't Remember it All I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards, so I could review them. I didn't need all of that knowledge. +through my notes and making flashcards, so I could review. I didn't need all of that knowledge. Please, read so you won't make my mistakes: @@ -458,12 +458,12 @@ same card and answer it several times correctly before you really know it. Repet your brain. An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. -It uses a repetition system to help you remember. It's user-friendly, available on all platforms, and has a cloud sync system. +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. My flashcard database in Anki format: 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, and add the member "white-space: pre;" to the card class. +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. ### 3. Do Coding Interview Questions While You're Learning @@ -471,7 +471,7 @@ 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 solve problems, or you'll forget. I made this mistake. +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) @@ -482,7 +482,7 @@ Once you've learned a topic, and feel somewhat comfortable with it, for example, **Keep doing problems while you're learning all this stuff, not after.** -You're not being hired for knowledge, but for how you apply the knowledge. +You're not being hired for knowledge, but how you apply the knowledge. There are many resources for this, listed below. Keep going. @@ -504,7 +504,7 @@ These are prevalent technologies but not part of this study 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. +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) @@ -527,7 +527,7 @@ Why you need to practice doing programming problems: - Coming up with time and space complexity for your solutions (see Big-O below) - Testing your solutions -There is a great intro for methodical, communicative problem-solving in an interview. You'll get this from the programming +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/) @@ -535,7 +535,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input 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 quickly. **I use a pencil and eraser.** +Gets messy quick. **I use a pencil and eraser.** ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -554,12 +554,12 @@ Coding Interview Question Videos: - [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-) - - Good explanations of the solution and the code + - Good explanations of solution and the code - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) - [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) - - Good explanations of the solution and the python code - - Also check out [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list + - Good explanations of solution and the python code + - Also checkout [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list - [Github links](https://github.com/neetcode-gh/leetcode) for all solutions code - [Neetcode 150](https://neetcode.io/) @@ -600,7 +600,7 @@ But don't forget to do coding problems from above while you learn! 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 +When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end there is a quiz to see if you can identify the runtime complexity of different algorithms. It's a super review and test. ## Data Structures @@ -615,13 +615,13 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] 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 - can allocate int array under the hood, just not use its features - - start with 16, or if starting number is greater, use the power of 2 - 16, 32, 64, 128 + - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 - [ ] size() - number of items - [ ] capacity() - number of items it can hold - [ ] is_empty() - [ ] at(index) - returns item at given index, blows up if index out of bounds - [ ] push(item) - - [ ] insert(index, item) - inserts an item at index, shifts that index's value and trailing elements to the right + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - [ ] prepend(item) - can use insert above at index 0 - [ ] pop() - remove from end, return value - [ ] delete(index) - delete item at index, shifting all trailing elements left @@ -629,9 +629,9 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - [ ] resize(new_capacity) // private function - when you reach capacity, resize to double the size - - when popping an item, if the size is 1/4 of capacity, resize to half + - when popping an item, if size is 1/4 of capacity, resize to half - [ ] Time - - O(1) to add/remove at the end (amortized for allocations for more space), index, or update + - O(1) to add/remove at end (amortized for allocations for more space), index, or update - O(n) to insert/remove elsewhere - [ ] Space - contiguous in memory, so proximity helps performance @@ -648,7 +648,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need a pointer to pointer knowledge: + - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) @@ -662,7 +662,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] pop_back() - removes end item and returns its value - [ ] front() - get value of front item - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so a current item at that index is pointed to by a new item at index + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - [ ] erase(index) - removes node at given index - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - [ ] reverse() - reverses the list @@ -673,12 +673,12 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Will not implement. Implementing with the array is trivial + - [ ] Will not implement. Implementing with array is trivial - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Implement using linked-list, with a tail pointer: + - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) - empty() @@ -688,8 +688,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - empty() - full() - [ ] Cost: - - a bad implementation using a linked list where you enqueue at the head and dequeue at the tail would be O(n) - because you'd need the next to last element, causing a full traversal of each dequeue + - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) + because you'd need the next to last element, causing a full traversal each dequeue - enqueue: O(1) (amortized, linked list and array [probing]) - dequeue: O(1) (linked list and array) - empty: O(1) (linked list and array) @@ -712,8 +712,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] Implement with the array using linear probing - - hash(k, m) - m is the size of the hash table + - [ ] Implement with array using linear probing + - hash(k, m) - m is size of hash table - add(key, value) - if key already exists, update value - exists(key) - get(key) @@ -727,7 +727,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] Implement: - - binary search (on a sorted array of integers) + - binary search (on sorted array of integers) - binary search using recursion - ### Bitwise operations @@ -848,11 +848,11 @@ if you can identify the runtime complexity of different algorithms. It's a super - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see the Heap data structure above. Heap sort is great, but not stable +- For heapsort, see Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) @@ -890,7 +890,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see the Heap data structure above + - For heapsort, see Heap data structure above - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) @@ -911,7 +911,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Graphs -Graphs can be used to represent many problems in computer science, so this section is long like trees and sorting were. +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - Notes: - There are 4 basic ways to represent a graph in memory: @@ -920,7 +920,7 @@ Graphs can be used to represent many problems in computer science, so this secti - adjacency list - adjacency map - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade-offs, and how to implement them in real code + - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none - [ ] MIT(videos): @@ -962,7 +962,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] single-source shortest path (Dijkstra) - [ ] minimum spanning tree - DFS-based algorithms (see Aduni videos above): - - [ ] check for the cycle (needed for topological sort, since we'll check for the cycle before starting) + - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - [ ] topological sort - [ ] count connected components in a graph - [ ] list strongly connected components @@ -1043,10 +1043,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Khan Academy: - Course layout: - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each is simple and each is short): + - Just the videos - 41 (each are simple and each are short): - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete, and Approximation Algorithms +- ### NP, NP-Complete and Approximation Algorithms - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. @@ -1064,7 +1064,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to the traveling salesman problem: + - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. @@ -1099,7 +1099,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Mutexes - Semaphores - Monitors - - How do they work? + - How they work? - Deadlock - Livelock - CPU activity, interrupts, context switching @@ -1107,8 +1107,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its pc, stack counter, registers, and stack) - - Forking is copying on write (read-only) until the new process writes to memory, then it does a full copy. + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) @@ -1147,12 +1147,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see the "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits to track the path - - I read through the code, but will not implement + - I read through code, but will not implement - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1164,7 +1164,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) - - [ ] [Stanford Lecture (real-world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers @@ -1178,7 +1178,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most are over your head. + - Very technical talk for kernel devs. Don't worry if most is over your head. - The first half is enough. - ### Networking @@ -1217,7 +1217,7 @@ Graphs can be used to represent many problems in computer science, so this secti ## Update Your Resume - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- I don't know how important this is (you can do your research) but here is an article on making your resume ATS Compliant: +- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." @@ -1246,13 +1246,13 @@ Graphs can be used to represent many problems in computer science, so this secti - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python-centric interview prep course that covers data structures, algorithms, mock interviews, and much more. + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python-centric data structures and algorithms course. + - A free Python centric data structures and algorithms course. - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform in the behavioral interview. + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview @@ -1277,7 +1277,7 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -- If you find it hard to come up with good answers to these types of interview questions, here are some ideas: +- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) ## Have questions for the interviewer @@ -1292,7 +1292,7 @@ Some of mine (I already may know the answers, but want their opinion or team per - Do you feel your work environment helps you concentrate? - What are you working on? - What do you like about it? -- What is work-life like? +- What is the work life like? - How is the work/life balance? ## Once You've Got The Job @@ -1342,7 +1342,7 @@ You're never really done. - Code examples in C - Cons: - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - Chapters 7, 8, and 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - Algorithm catalog: - This is the real reason you buy this book. @@ -1365,7 +1365,7 @@ You're never really done. - Chapter 10 - Instruction Set Architecture - Chapter 11 - Memory Architecture and Organization - [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - AKA CLR, sometimes CLRS, because Stein was late to the game - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment @@ -1457,16 +1457,16 @@ You're never really done. - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - - Define the use cases, with the interviewer's help + - Define the use cases, with interviewer's help - Suggest additional features - - Remove items that the interviewer deems out of scope + - Remove items that interviewer deems out of scope - Assume high availability is required, add as a use case 2. Think about constraints: - Ask how many requests per month - Ask how many requests per second (they may volunteer it or make you do the math) - Estimate reads vs. writes percentage - - Keep the 80/20 rule in mind when estimating - - How much data is written per second + - Keep 80/20 rule in mind when estimating + - How much data written per second - Total storage required over 5 years - How much data read per second 3. Abstract design: @@ -1484,7 +1484,7 @@ You're never really done. ## Additional Learning - I added them to help you become a well-rounded software engineer and to be aware of certain + I added them to help you become a well-rounded software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers @@ -1546,12 +1546,12 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see the videos below + - Also see videos below - Make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see the videos below + - Also see videos below - Make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) @@ -1627,7 +1627,7 @@ You're never really done. - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion, and membership testing are O(k) + - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) @@ -1638,7 +1638,7 @@ You're never really done. - ### Locality-Sensitive Hashing - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are the same + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees @@ -1666,7 +1666,7 @@ You're never really done. - In practice: From what I can tell, these aren't used much in practice, but I could see where they would be: The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red-black trees, leading to slower insertion and removal but faster retrieval. This makes it + balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) @@ -1690,8 +1690,8 @@ You're never really done. Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red-black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red-black trees. In version 8 of Java, + for example, many data structures used in computational geometry can be based on red–black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) @@ -1702,24 +1702,24 @@ You're never really done. - **2-3 search trees** - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 trees very rarely because its implementation involves different types of nodes. Instead, people use Red-Black trees. + - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: - For every 2-4 trees, there are corresponding red-black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red-black trees. This makes 2-4 trees an - important tool for understanding the logic behind red-black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red-black trees, even though **2-4 trees are not often used in practice**. + For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an + important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) - - binary trees are 2-ary trees, with branching factor = 2 + - binary trees are a 2-ary tree, with branching factor = 2 - 2-3 trees are 3-ary - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) @@ -1737,11 +1737,11 @@ You're never really done. - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical and may be skipped (B is block size, cache line size) + - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - ### k-D Trees - - Great for finding a number of points in a rectangle or higher dimension object + - Great for finding number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) @@ -1789,7 +1789,7 @@ You're never really done. ## Additional Detail on Some Subjects - I added these to reinforce some ideas already presented above but didn't want to include them + I added these to reinforce some ideas already presented above, but didn't want to include them above because it's just too much. It's easy to overdo it on a subject. You want to get hired in this century, right? @@ -1949,7 +1949,7 @@ Sit back and enjoy. - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - The Dynamo paper kicked off the NoSQL revolution -- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - 2012: AddressSanitizer: A Fast Address Sanity Checker: - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) From ab8ee4f80be857057a19faff1b828c6c29660f99 Mon Sep 17 00:00:00 2001 From: We1Y1C <66491095+We1Y1Chen@users.noreply.github.com> Date: Sun, 28 Aug 2022 23:18:26 -0400 Subject: [PATCH 658/857] Update README-cn.md --- translations/README-cn.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 3d0b1a932e..9295453194 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1,4 +1,4 @@ -# Coding Interview University +# 编程面试大学 原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间的推移而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 @@ -11,10 +11,10 @@

- Dev environments built for the cloud + 为云构建的开发环境

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Gitpod、GitLab、GitHub 和 Bitbucket 原生集合,自动且持续地为你的所有分支预构建开发环境。因此,团队成员可以立即开始为每项新任务使用全新的开发环境进行编码 - 无论您是在构建新功能、想要修复错误还是进行代码审查。

From 26f6113c3db1ace8f526287b3ac7f7fd5e85baa9 Mon Sep 17 00:00:00 2001 From: Kapil Chauhan Date: Wed, 31 Aug 2022 06:26:27 +0530 Subject: [PATCH 659/857] Create Readme in Hindi By (Kapil Chauhan) Hi! This is going to be my first contribution --- README-hi.md | 1952 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1952 insertions(+) create mode 100644 README-hi.md diff --git a/README-hi.md b/README-hi.md new file mode 100644 index 0000000000..41aef6e591 --- /dev/null +++ b/README-hi.md @@ -0,0 +1,1952 @@ +# कोडिंग इंटरव्यू यूनिवर्सिटी + +> मैंने मूल रूप से इसे एक सॉफ्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी टू-डू सूची के रूप में बनाया था, +> लेकिन यह उस बड़ी सूची तक बढ़ गया है जिसे आप आज देखते हैं। इस अध्ययन योजना को पढ़ने के बाद, [मुझे काम पर रखा गया +> Amazon में एक सॉफ्टवेयर डेवलपमेंट इंजीनियर के रूप में](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> आपको शायद उतना अध्ययन नहीं करना पड़ेगा जितना मैंने किया था। वैसे भी, आपकी जरूरत की हर चीज यहां है। +> +> मैंने कई महीनों तक प्रतिदिन लगभग 8-12 घंटे अध्ययन किया। यह मेरी कहानी है: [मैंने एक Google साक्षात्कार के लिए 8 महीने तक पूर्णकालिक अध्ययन क्यों किया](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-साक्षात्कार-cc662ce9bb13) +> +> **कृपया ध्यान दें:** आपको मेरे जितना अध्ययन करने की आवश्यकता नहीं होगी। मैंने उन चीजों पर बहुत समय बर्बाद किया जो मुझे जानने की जरूरत नहीं थी। उसके बारे में अधिक जानकारी नीचे। मैं आपका कीमती समय बर्बाद किए बिना वहां पहुंचने में आपकी मदद करूंगा। +> +> यहां सूचीबद्ध आइटम आपको किसी भी सॉफ्टवेयर कंपनी में तकनीकी साक्षात्कार के लिए अच्छी तरह से तैयार करेंगे, +> दिग्गजों सहित: अमेज़ॅन, फेसबुक, गूगल और माइक्रोसॉफ्ट। +> +> *आपको शुभकामनाएं!* + +
+ +अनुवाद: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + +
+ +
+ +अनुवाद जारी है +: + +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) + +
+ +
+
+

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

+

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

+

+ +

+
+

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

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

+
+
+ +## What is it? + +![ +व्हाइटबोर्ड पर कोडिंग - एचबीओ की सिलिकॉन वैली से](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + + +एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है। + +**Required:** + +* कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि) +* धैर्य +* समय +ध्यान दें कि यह **सॉफ्टवेयर इंजीनियरिंग** के लिए एक अध्ययन योजना है, न कि वेब विकास के लिए। Google, Amazon जैसी बड़ी सॉफ्टवेयर कंपनियां, +फेसबुक और माइक्रोसॉफ्ट सॉफ्टवेयर इंजीनियरिंग को वेब डेवलपमेंट से अलग मानते हैं। उदाहरण के लिए, अमेज़ॅन के पास है +फ्रंटएंड इंजीनियर्स (FEE) और सॉफ्टवेयर डेवलपमेंट इंजीनियर्स (SDE)। ये 2 अलग-अलग भूमिकाएँ और साक्षात्कार हैं +वे समान नहीं होंगे, क्योंकि प्रत्येक की अपनी योग्यताएं हैं। इन कंपनियों को कंप्यूटर विज्ञान के ज्ञान की आवश्यकता होती है +सॉफ्टवेयर विकास / इंजीनियरिंग भूमिकाएँ। + +--- + +## विषयसूची + +### अध्ययन योजना +- [यह क्या है?](#क्या-क्या है-यह) +- [इसका उपयोग क्यों करें?](# Why-use-it) +- [इसका उपयोग कैसे करें] (# कैसे-कैसे उपयोग करें-इसे) +- [यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं](#न-महसूस-आप-नहीं-स्मार्ट-पर्याप्त) +- [वीडियो संसाधनों के बारे में एक नोट](#a-नोट-के बारे में-वीडियो-संसाधन) +- [एक प्रोग्रामिंग भाषा चुनें] (# प्रोग्रामिंग भाषा चुनें) +- [डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें](#books-for-data-structures-and-algorithms) +- [साक्षात्कार तैयारी पुस्तकें](#साक्षात्कार-तैयारी-किताबें) +- [मेरी गलतियाँ न करें] (# मेरी गलतियाँ न करें) +- [जो आप कवर नहीं देखेंगे] (# क्या-आप-नहीं-देख-कवर) +- [दैनिक योजना](#दैनिक योजना) +- [कोडिंग प्रश्न अभ्यास] (# कोडिंग-प्रश्न-अभ्यास) +- [कोडिंग समस्याएं] (# कोडिंग-समस्याएं) + +### अध्ययन के विषय + +- [एल्गोरिदमिक जटिलता / बिग-ओ / एसिम्प्टोटिक विश्लेषण] (# एल्गोरिदमिक-जटिलता--बिग-ओ--एसिम्प्टोटिक-विश्लेषण) +- [डेटा संरचनाएं] (# डेटा-संरचनाएं) + - [सरणी](#सरणी) + - [लिंक की गई सूचियाँ] (# लिंक्ड-सूचियाँ) + - [स्टैक] (#स्टैक) + - [कतार] (# कतार) + - [हैश टेबल] (# हैश-टेबल) +- [अधिक ज्ञान](# अधिक-ज्ञान) + - [द्विआधारी खोज](#द्विआधारी-खोज) + - [बिटवाइज ऑपरेशंस](#बिटवाइज-ऑपरेशंस) +- [पेड़](#पेड़) + - [पेड़ - नोट्स और पृष्ठभूमि](#trees---notes--background) + - [बाइनरी सर्च ट्री: BSTs](#binary-search-trees-bsts) + - [ढेर/प्राथमिकता कतार/बाइनरी हीप](# हीप--प्राथमिकता-कतार--द्विआधारी-ढेर) + - संतुलित खोज पेड़ (सामान्य अवधारणा, विवरण नहीं) + - ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर, बीएफएस, डीएफएस +- [छँटाई] (# छँटाई) + - चयन + - प्रविष्टि + - ढेर बनाएं और छांटें + - जल्दी से सुलझाएं + - मर्ज़ सॉर्ट +- [ग्राफ](#ग्राफ) + - निर्देशित + - अप्रत्यक्ष + - सहखंडज मैट्रिक्स + - निकटता सूची + - ट्रैवर्सल: बीएफएस, डीएफएस +- [और भी अधिक ज्ञान] (# और भी अधिक-ज्ञान) + - [पुनरावृत्ति] (# रिकर्सन) + - [डायनामिक प्रोग्रामिंग] (# डायनामिक-प्रोग्रामिंग) + - [डिज़ाइन पैटर्न] (# डिज़ाइन-पैटर्न) + - [कॉम्बिनेटोरिक्स (n चुनें k) और प्रायिकता](#combinatorics-n-choose-k--probability) + - [एनपी, एनपी-पूर्ण और अनुमान एल्गोरिदम] (# एनपी-एनपी-पूर्ण-और-सन्निकटन-एल्गोरिदम) + - [कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं](#how-कंप्यूटर-प्रोसेस-ए-प्रोग्राम) + - [कैश] (# कैश) + - [प्रक्रियाएं और धागे] (# प्रक्रियाएं-और-धागे) + - [परीक्षण] (# परीक्षण) + - [स्ट्रिंग खोज और जोड़तोड़] (# स्ट्रिंग-खोज--हेरफेर) + - [कोशिश करता है] (# प्रयास करता है) + - [फ़्लोटिंग पॉइंट नंबर] (# फ़्लोटिंग-पॉइंट-नंबर) + - [यूनिकोड] (# यूनिकोड) + - [एंडियननेस](#endianness) + - [नेटवर्किंग] (# नेटवर्किंग) +- [अंतिम समीक्षा](#अंतिम समीक्षा) +### नौकरी पाना + +- [अपना रिज्यूमे अपडेट करें](#अपडेट-अपना रिज्यूमे) +- [नौकरी खोजें](# एक नौकरी खोजें) +- [साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी](#साक्षात्कार-प्रक्रिया-सामान्य-साक्षात्कार-तैयारी) +- [साक्षात्कार आने के समय के बारे में सोचें] +- [साक्षात्कारकर्ता के लिए प्रश्न हैं](#हैव-प्रश्न-के लिए-साक्षात्कारकर्ता) +- [वन्स यू हैव गॉट द जॉब] (# वन्स-यूव-गोट-द-जॉब) + +***** इस बिंदु के नीचे सब कुछ वैकल्पिक है ----------------** + +### वैकल्पिक अतिरिक्त विषय और संसाधन + +- [अतिरिक्त पुस्तकें](#अतिरिक्त पुस्तकें) +- [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग] (# सिस्टम-डिज़ाइन-स्केलेबिलिटी-डेटा-हैंडलिंग) (यदि आपके पास 4+ वर्ष का अनुभव है) +- [अतिरिक्त शिक्षण](#अतिरिक्त-शिक्षण) + - [संकलक](#संकलक) + - [Emacs और vi(m)](#emacs-and-vim) + - [यूनिक्स कमांड लाइन टूल्स] (# यूनिक्स-कमांड-लाइन-टूल्स) + - [सूचना सिद्धांत](#सूचना-सिद्धांत-वीडियो) + - [समता और हैमिंग कोड] (# समता--हैमिंग-कोड-वीडियो) + - [एंट्रॉपी] (#एंट्रॉपी) + - [क्रिप्टोग्राफी](#क्रिप्टोग्राफी) + - [संपीड़न](#संपीड़न) + - [कंप्यूटर सुरक्षा](#कंप्यूटर-सुरक्षा) + - [कचरा संग्रह] (# कचरा संग्रह) + - [समानांतर प्रोग्रामिंग] (# समानांतर प्रोग्रामिंग) + - [मैसेजिंग, सीरियलाइज़ेशन, और क्यूइंग सिस्टम](#messaging-serialization-and-queueing-systems) + - [ए*](#ए) + - [फास्ट फूरियर ट्रांसफॉर्म](#फास्ट-फूरियर-ट्रांसफॉर्म) + - [ब्लूम फ़िल्टर](#ब्लूम-फ़िल्टर) + - [हाइपरलॉगलॉग](#हाइपरलॉगलॉग) + - [इलाके-संवेदनशील हैशिंग](#इलाके-संवेदी-हैशिंग) + - [वैन एम्दे बोस ट्री](#van-emde-boas-trees) + - [संवर्धित डेटा संरचनाएं] (# संवर्धित-डेटा-संरचनाएं) + - [संतुलित खोज वृक्ष](#संतुलित-खोज-वृक्ष) + - एवीएल पेड़ + - स्प्ले पेड़ + - लाल/काले पेड़ + - 2-3 सर्च ट्री + - 2-3-4 पेड़ (उर्फ 2-4 पेड़) + - एन-आर्य (के-आर्य, एम-आर्य) पेड़ + - बी-पेड़ + - [के-डी पेड़](#के-डी-पेड़) + - [छोड़ें सूचियां](#छोड़ें-सूचियां) + - [नेटवर्क प्रवाह](# नेटवर्क-प्रवाह) + - [असंबद्ध सेट और संघ खोजें] (# असंबद्ध-सेट--संघ-खोज) + - [तेजी से प्रसंस्करण के लिए गणित](# गणित के लिए तेजी से प्रसंस्करण) + - [ट्रीप] (#treap) + - [रैखिक प्रोग्रामिंग](#रैखिक-प्रोग्रामिंग-वीडियो) + - [ज्यामिति, उत्तल पतवार] (# ज्यामिति-उत्तल-पतवार-वीडियो) + - [असतत गणित] (# असतत-गणित) +- [कुछ विषयों पर अतिरिक्त विवरण](#अतिरिक्त-विवरण-पर-कुछ-विषयों) +- [वीडियो श्रृंखला](#वीडियो-श्रृंखला) +- [कंप्यूटर विज्ञान पाठ्यक्रम](#कंप्यूटर-विज्ञान-पाठ्यक्रम) +- [कागजात](#कागजात) + +--- + +## इसका उपयोग क्यों करें? + +अगर आप किसी बड़ी कंपनी में सॉफ्टवेयर इंजीनियर के तौर पर काम करना चाहते हैं तो ये बातें आपको जाननी चाहिए। + +यदि आप कंप्यूटर विज्ञान में डिग्री प्राप्त करने से चूक गए, जैसे मैंने किया, तो यह आपको पकड़ लेगा और आपके जीवन के चार साल बचाएगा। + +जब मैंने इस परियोजना को शुरू किया, तो मुझे ढेर से ढेर का पता नहीं था, बिग-ओ को कुछ भी नहीं पता था, या पेड़ों के बारे में कुछ भी नहीं पता था, या कैसे करना है +एक ग्राफ पार करें। अगर मुझे एक सॉर्टिंग एल्गोरिदम कोड करना पड़ा, तो मैं आपको बता सकता हूं कि यह भयानक होता। +मेरे द्वारा उपयोग की जाने वाली प्रत्येक डेटा संरचना भाषा में बनाई गई थी, और मुझे नहीं पता था कि उन्होंने कैसे काम किया +हुड के नीचे बिल्कुल। मुझे कभी भी स्मृति का प्रबंधन नहीं करना पड़ा जब तक कि मैं जो प्रक्रिया चला रहा था वह "आउट ऑफ" +मेमोरी" त्रुटि, और फिर मुझे एक समाधान खोजना होगा। मैंने अपने जीवन में कुछ बहुआयामी सरणियों का उपयोग किया और +हजारों सहयोगी सरणियाँ, लेकिन मैंने कभी भी खरोंच से डेटा संरचनाएँ नहीं बनाईं। + +यह एक लंबी योजना है। आपको महीनों लग सकते हैं। यदि आप पहले से ही इसके बारे में बहुत कुछ जानते हैं तो इसमें आपको बहुत कम समय लगेगा। + +## इसका उपयोग कैसे करना है + +नीचे सब कुछ एक रूपरेखा है, और आपको ऊपर से नीचे तक वस्तुओं से निपटना चाहिए। + +मैं गिटहब के विशेष मार्कडाउन स्वाद का उपयोग कर रहा हूं, जिसमें प्रगति को ट्रैक करने के लिए कार्य सूचियां शामिल हैं। + - [GitHub-फ्लेवर्ड मार्कडाउन के बारे में अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### यदि आप git . का उपयोग नहीं करना चाहते हैं + +इस पृष्ठ पर, शीर्ष के पास कोड बटन पर क्लिक करें, फिर "ज़िप डाउनलोड करें" पर क्लिक करें। फ़ाइल को अनज़िप करें और आप टेक्स्ट फ़ाइलों के साथ काम कर सकते हैं। + +यदि आप एक ऐसे कोड संपादक में खुले हैं जो मार्कडाउन को समझता है, तो आप देखेंगे कि सब कुछ अच्छी तरह से स्वरूपित है। + +![रेपो को ज़िप फ़ाइल के रूप में कैसे डाउनलोड करें](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### यदि आप गिट के साथ सहज हैं + +एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जाँच कर सकें, बस कोष्ठक में एक x डालें: [x] +1. *** फोर्क द गिटहब रेपो:*** `https://github.com/jwasham/coding-interview-university` फोर्क बटन पर क्लिक करके। + + ![फोर्क द गिटहब रेपो](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. अपने स्थानीय रेपो को क्लोन करें: + + ``` + git क्लोन git@github.com:/coding-interview-university.git + सीडी कोडिंग-साक्षात्कार-विश्वविद्यालय + गिट चेकआउट-बी प्रगति + git रिमोट jwasham जोड़ें https://github.com/jwasham/coding-interview-university + गिट फ़ेच --all + ``` + +1. अपने परिवर्तन पूर्ण करने के बाद सभी बक्सों को X से चिह्नित करें: + + ``` + गिट जोड़ें। + गिट प्रतिबद्ध-एम "चिह्नित एक्स" + git rebase jwasham/main + गिट पुश --सेट-अपस्ट्रीम मूल प्रगति + गिट पुश --फोर्स + ``` + +## यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं + +- सफल सॉफ्टवेयर इंजीनियर होशियार होते हैं, लेकिन बहुतों में असुरक्षा की भावना होती है कि वे पर्याप्त स्मार्ट नहीं हैं। +- निम्नलिखित वीडियो आपको इस असुरक्षा को दूर करने में मदद कर सकते हैं: + - [द मिथ ऑफ़ द जीनियस प्रोग्रामर](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [इट्स डेंजरस टू गो अलोन: बैटलिंग द इनविजिबल मॉन्स्टर्स इन टेक](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## वीडियो संसाधनों के बारे में एक नोट + +कुछ वीडियो केवल कौरसेरा या एडएक्स कक्षा में नामांकन करके उपलब्ध होते हैं। इन्हें एमओओसी कहा जाता है। +कभी-कभी कक्षाएं सत्र में नहीं होती हैं, इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है। + +ऑनलाइन पाठ्यक्रम संसाधनों को मुफ्त और हमेशा उपलब्ध सार्वजनिक स्रोतों से बदलना बहुत अच्छा होगा, +जैसे YouTube वीडियो (अधिमानतः विश्वविद्यालय व्याख्यान), ताकि आप लोग इनका कभी भी अध्ययन कर सकें, +केवल तब नहीं जब कोई विशिष्ट ऑनलाइन पाठ्यक्रम सत्र में हो। + +## प्रोग्रामिंग भाषा चुनें + +आपके द्वारा किए जाने वाले कोडिंग साक्षात्कार के लिए आपको एक प्रोग्रामिंग भाषा चुननी होगी, +लेकिन आपको एक ऐसी भाषा भी ढूंढनी होगी जिसका उपयोग आप कंप्यूटर विज्ञान अवधारणाओं का अध्ययन करने के लिए कर सकें। + +अधिमानतः भाषा वही होगी, इसलिए आपको केवल एक में कुशल होने की आवश्यकता है। + +### इस अध्ययन योजना के लिए + +जब मैंने अध्ययन की योजना बनाई, तो मैंने इसमें से अधिकांश के लिए 2 भाषाओं का उपयोग किया: C और Python + +* सी: बहुत निम्न स्तर। आपको पॉइंटर्स और मेमोरी आवंटन/डीलोकेशन से निपटने की अनुमति देता है, ताकि आप डेटा संरचनाओं को महसूस कर सकें + और आपकी हड्डियों में एल्गोरिदम। पायथन या जावा जैसी उच्च स्तरीय भाषाओं में, ये आपसे छिपी हुई हैं। दिन-प्रतिदिन के काम में, यह बहुत बढ़िया है, + लेकिन जब आप सीख रहे हैं कि ये निम्न-स्तरीय डेटा संरचनाएं कैसे बनाई जाती हैं, तो धातु के करीब महसूस करना बहुत अच्छा होता है। + - सी हर जगह है। जब आप अध्ययन कर रहे हों तो आपको पुस्तकों, व्याख्यानों, वीडियो, *हर जगह* में उदाहरण दिखाई देंगे। + - [द सी प्रोग्रामिंग लैंग्वेज, वॉल्यूम 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - यह एक छोटी किताब है, लेकिन यह आपको सी भाषा पर एक अच्छी पकड़ देगी और यदि आप इसका थोड़ा अभ्यास करते हैं + आप जल्दी से कुशल हो जाएंगे। C को समझने से आपको यह समझने में मदद मिलती है कि प्रोग्राम और मेमोरी कैसे काम करते हैं। + - आपको किताब में बहुत गहराई तक जाने की जरूरत नहीं है (या इसे खत्म भी करें)। बस वहां पहुंचें जहां आप सी में पढ़ने और लिखने में सहज हों। + - [पुस्तक में प्रश्नों के उत्तर](https://github.com/lekkas/c-algorithms) +* पायथन: आधुनिक और बहुत अभिव्यंजक, मैंने इसे सीखा क्योंकि यह बहुत उपयोगी है और मुझे एक साक्षात्कार में कम कोड लिखने की भी अनुमति देता है। + +यह मेरी पसंद है। आप वही करते हैं जो आपको पसंद है, बिल्कुल। + +आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन नई भाषा सीखने के लिए यहां कुछ साइटें दी गई हैं: +- [व्यायाम](https://exercism.org/tracks) +- [कोडवार्स] (http://www.codewars.com) +- [कोडिलिटी](https://codility.com/programmers/) +- [हैकरअर्थ](https://www.hackerearth.com/) +- [क्षेत्र ऑनलाइन न्यायाधीश (spoj)] (http://www.spoj.com/) +- [कोडशेफ](https://www.codechef.com/) +- [कोडफोर्स] (https://codeforces.com/) +- [स्केलर विषय](https://www.scaler.com/topics/) + +### आपके कोडिंग इंटरव्यू के लिए + +आप उस भाषा का उपयोग कर सकते हैं जिसमें आप साक्षात्कार के कोडिंग भाग को करने के लिए सहज हैं, लेकिन बड़ी कंपनियों के लिए, ये ठोस विकल्प हैं: + +- सी++ +- जावा +- पायथन + +आप इनका उपयोग भी कर सकते हैं, लेकिन पहले पढ़ लें। चेतावनी हो सकती है: + +- जावास्क्रिप्ट +- माणिक +साक्षात्कार के लिए भाषा चुनने के बारे में मैंने यहां एक लेख लिखा है: +[कोडिंग इंटरव्यू के लिए एक भाषा चुनें](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)। +यह मूल लेख है जिस पर मेरी पोस्ट आधारित थी: [साक्षात्कार के लिए प्रोग्रामिंग भाषा चुनना](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- नौकरियां/) + +आपको भाषा में बहुत सहज होने और जानकार होने की आवश्यकता है। + +विकल्पों के बारे में और पढ़ें: +- [अपने कोडिंग साक्षात्कार के लिए सही भाषा चुनें](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[यहां भाषा-विशिष्ट संसाधन देखें] (प्रोग्रामिंग-भाषा-संसाधन.एमडी) + +## डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें + +यह पुस्तक कंप्यूटर विज्ञान के लिए आपकी नींव बनाएगी। + +बस एक को चुनें, ऐसी भाषा में जिसमें आप सहज हों। आप बहुत सारी रीडिंग और कोडिंग कर रहे होंगे। + +### सी + +- [सी में एल्गोरिदम, भाग 1-5 (बंडल), तीसरा संस्करण](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - बुनियादी बातों, डेटा संरचनाएं, छँटाई, खोज, और ग्राफ़ एल्गोरिथम + +### पायथन + +- [पायथन में डेटा संरचनाएं और एल्गोरिदम](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - गुडरिक, तमासिया, गोल्डवासेर द्वारा + - मुझे यह किताब पसंद आई। इसने सब कुछ और बहुत कुछ कवर किया। + - पाइथोनिक कोड + - माय ग्लोइंग बुक रिपोर्ट: 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/) + - नि: शुल्क कौरसेरा पाठ्यक्रम जो पुस्तक को कवर करता है (लेखकों द्वारा पढ़ाया जाता है!): + - [एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) + - [एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) + +### सी++ + +आपकी पंसद: + +- गुडरिक, तमासिया और माउंट + - [C++ में डेटा संरचनाएं और एल्गोरिदम, दूसरा संस्करण](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- सेडगेविक और वेन + - [सी ++ में एल्गोरिदम, भाग 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/) + +## साक्षात्कार तैयारी पुस्तकें +आपको इनमें से एक गुच्छा खरीदने की ज़रूरत नहीं है। ईमानदारी से "कोडिंग साक्षात्कार को क्रैक करना" शायद पर्याप्त है, +लेकिन मैंने खुद को और अधिक अभ्यास देने के लिए और अधिक खरीदा। लेकिन मैं हमेशा बहुत ज्यादा करता हूं। + +मैंने ये दोनों खरीदे। उन्होंने मुझे काफी अभ्यास दिया। + +- [प्रोग्रामिंग इंटरव्यू एक्सपोज़्ड: कोडिंग योर वे थ्रू इंटरव्यू, चौथा संस्करण](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - सी ++ और जावा में उत्तर + - कोडिंग इंटरव्यू को क्रैक करने के लिए यह एक अच्छा अभ्यास है + - ज्यादा मुश्किल नहीं है। एक साक्षात्कार में आप जो देखेंगे उससे अधिकतर समस्याएं आसान हो सकती हैं (जो मैंने पढ़ा है) +- [कोडिंग साक्षात्कार को क्रैक करना, छठा संस्करण] (http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - जावा में उत्तर + +### यदि आपके पास अतिरिक्त समय है: + +एक का चयन: + +- [प्रोग्रामिंग साक्षात्कार के तत्व (C++ संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [पायथन में प्रोग्रामिंग साक्षात्कार के तत्व](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [सहयोगी परियोजना - पुस्तक में हर समस्या के लिए विधि आधार और परीक्षण मामले](https://github.com/gardncl/elements-of-programming-interviews) + +## मेरी गलती मत करो + +यह सूची कई महीनों में बढ़ी, और हाँ, यह हाथ से निकल गई। + +यहां कुछ गलतियां हैं जो मैंने की हैं ताकि आपके पास बेहतर अनुभव हो। और आप महीनों का समय बचाएंगे। + +### 1. आपको यह सब याद नहीं रहेगा + +मैंने घंटों वीडियो देखे और प्रचुर मात्रा में नोट्स लिए, और महीनों बाद बहुत कुछ ऐसा था जो मुझे याद नहीं था। मैंने जाने में 3 दिन बिताए +अपने नोट्स और फ्लैशकार्ड बनाकर, ताकि मैं समीक्षा कर सकूं। मुझे उस सब ज्ञान की आवश्यकता नहीं थी। + +कृपया, पढ़ें ताकि आप मेरी गलतियाँ न करें: + +[रिटेनिंग कंप्यूटर साइंस नॉलेज](https://startupnextdoor.com/retaining-computer-science-knowledge/)। + +### 2. फ्लैशकार्ड का प्रयोग करें + +समस्या को हल करने के लिए, मैंने एक छोटी फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड। +प्रत्येक कार्ड में अलग-अलग स्वरूपण होते हैं। मैंने एक मोबाइल-फर्स्ट वेबसाइट बनाई है, इसलिए मैं अपने फोन या टैबलेट पर समीक्षा कर सकता हूं, चाहे मैं कहीं भी रहूं। + +मुफ्त में अपना बनाएं: + +- [फ्लैशकार्ड साइट रेपो](https://github.com/jwasham/computer-science-flash-cards) + +**मैं अपने फ्लैशकार्ड का उपयोग करने की अनुशंसा नहीं करता।** बहुत अधिक हैं और उनमें से अधिकांश सामान्य ज्ञान हैं जिनकी आपको आवश्यकता नहीं है। + +लेकिन अगर आप मेरी बात नहीं सुनना चाहते हैं, तो आप यहां जाएं: +- [माई फ्लैश कार्ड डेटाबेस (1200 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [माई फ्लैश कार्ड डेटाबेस (एक्सट्रीम - 1800 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + + +ध्यान रखें कि मैं पानी में डूब गया था और मेरे पास असेंबली भाषा और पायथन ट्रिविया से लेकर मशीन लर्निंग और सांख्यिकी तक सब कुछ कवर करने वाले कार्ड हैं। +जो आवश्यक है उसके लिए यह बहुत अधिक है। + +**फ्लैशकार्ड पर ध्यान दें:** पहली बार जब आप पहचानते हैं कि आपको उत्तर पता है, तो इसे ज्ञात के रूप में चिह्नित न करें। आपको देखना है +एक ही कार्ड और वास्तव में इसे जानने से पहले कई बार सही उत्तर दें। दोहराव उस ज्ञान को और गहरा कर देगा +आपका दिमाग। + +मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प [अंकी] (http://ankisrs.net/) है, जिसकी मुझे कई बार सिफारिश की गई है। +यह आपको याद रखने में मदद करने के लिए एक दोहराव प्रणाली का उपयोग करता है। यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफार्मों पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है। +आईओएस पर इसकी कीमत 25 डॉलर है लेकिन यह अन्य प्लेटफॉर्म पर मुफ्त है। + +Anki प्रारूप में मेरा फ्लैशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद [@xiewenya](https://github.com/xiewenya))। + +कुछ छात्रों ने सफेद स्थान के साथ स्वरूपण मुद्दों का उल्लेख किया है जिन्हें निम्नलिखित करके ठीक किया जा सकता है: डेक खोलें, कार्ड संपादित करें, कार्ड क्लिक करें, "स्टाइलिंग" रेडियो बटन चुनें, सदस्य "व्हाइट-स्पेस: प्री;" जोड़ें। कार्ड वर्ग के लिए। + +### 3. जब आप सीख रहे हों तो साक्षात्कार के प्रश्नों की कोडिंग करें + +यह बहुत महत्वपूर्ण है। + +जब आप डेटा संरचना और एल्गोरिदम सीख रहे हों, तब साक्षात्कार के प्रश्नों की कोडिंग करना शुरू करें। + +आप जो सीख रहे हैं उसे समस्याओं को हल करने के लिए लागू करने की आवश्यकता है, या आप भूल जाएंगे। मैंने यह गलती की। + +एक बार जब आप कोई विषय सीख लेते हैं, और उसके साथ कुछ सहज महसूस करते हैं, उदाहरण के लिए, **लिंक्ड सूचियां**: +1. [कोडिंग इंटरव्यू बुक्स] (#इंटरव्यू-प्रेप-बुक्स) (या कोडिंग प्रॉब्लम वेबसाइट्स, नीचे सूचीबद्ध) में से एक खोलें +1. लिंक्ड सूचियों के संबंध में 2 या 3 प्रश्न करें। +1. अगले सीखने के विषय पर आगे बढ़ें। +1. बाद में, वापस जाएं और अन्य 2 या 3 लिंक की गई सूची की समस्याएं करें। +1. अपने द्वारा सीखे गए प्रत्येक नए विषय के साथ ऐसा करें। + +**समस्याएँ तब करते रहें जब आप यह सब सीख रहे हों, उसके बाद नहीं।** + +आपको ज्ञान के लिए काम पर नहीं रखा जा रहा है, लेकिन आप ज्ञान को कैसे लागू करते हैं। + +इसके लिए कई संसाधन हैं, जो नीचे सूचीबद्ध हैं। बढ़ा चल। + +### 4. फोकस + +बहुत सारे विकर्षण हैं जो मूल्यवान समय ले सकते हैं। फोकस और एकाग्रता कठिन है। कुछ संगीत चालू करें +गीत के बिना और आप बहुत अच्छी तरह से ध्यान केंद्रित करने में सक्षम होंगे। + +## जिसे आप कवर नहीं देखेंगे + +ये प्रचलित प्रौद्योगिकियां हैं लेकिन इस अध्ययन योजना का हिस्सा नहीं हैं: + +- एसक्यूएल +- जावास्क्रिप्ट +- HTML, CSS और अन्य फ्रंट-एंड प्रौद्योगिकियां + +## दैनिक योजना + +यह कोर्स बहुत सारे विषयों पर चलता है। प्रत्येक में शायद आपको कुछ दिन लगेंगे, या शायद एक सप्ताह या उससे भी अधिक समय लगेगा। यह आपके शेड्यूल पर निर्भर करता है। + +प्रत्येक दिन, सूची में अगला विषय लें, उस विषय के बारे में कुछ वीडियो देखें, और फिर एक कार्यान्वयन लिखें +उस डेटा संरचना या एल्गोरिथम की भाषा में जिसे आपने इस पाठ्यक्रम के लिए चुना है। + +आप मेरा कोड यहाँ देख सकते हैं: + - [सी] (https://github.com/jwasham/practice-c) + - [सी++](https://github.com/jwasham/practice-cpp) + - [पायथन](https://github.com/jwasham/practice-python) + +आपको प्रत्येक एल्गोरिदम को याद रखने की आवश्यकता नहीं है। आपको अपना खुद का कार्यान्वयन लिखने में सक्षम होने के लिए इसे पर्याप्त रूप से समझने में सक्षम होना चाहिए। + +## कोडिंग प्रश्न अभ्यास + + यह यहाँ क्यों है? मैं साक्षात्कार के लिए तैयार नहीं हूं। + +[फिर वापस जाएं और इसे पढ़ें।](#3-डू-कोडिंग-साक्षात्कार-प्रश्न-जबकि-आप-सीख रहे हैं) + +आपको प्रोग्रामिंग समस्याओं का अभ्यास करने की आवश्यकता क्यों है: +- समस्या की पहचान, और जहां सही डेटा संरचनाएं और एल्गोरिदम फिट होते हैं +- समस्या के लिए आवश्यकताओं को इकट्ठा करना +- समस्या के माध्यम से अपने तरीके से बात करना जैसे आप साक्षात्कार में करेंगे +- व्हाइटबोर्ड या पेपर पर कोडिंग, कंप्यूटर पर नहीं +- आपके समाधान के लिए समय और स्थान की जटिलता के साथ आ रहा है (नीचे बिग-ओ देखें) +- अपने समाधानों का परीक्षण + +एक साक्षात्कार में व्यवस्थित, संचार समस्या समाधान के लिए एक महान परिचय है। आप इसे प्रोग्रामिंग से प्राप्त करेंगे +साक्षात्कार पुस्तकें भी, लेकिन मुझे यह बकाया लगा: +[एल्गोरिदम डिज़ाइन कैनवास](http://www.hiredintech.com/algorithm-design/) + +व्हाइटबोर्ड या पेपर पर कोड लिखें, कंप्यूटर पर नहीं। कुछ नमूना इनपुट के साथ परीक्षण करें। फिर इसे टाइप करें और कंप्यूटर पर इसका परीक्षण करें। + +अगर आपके घर में व्हाइटबोर्ड नहीं है, तो किसी आर्ट स्टोर से एक बड़ा ड्राइंग पैड लें। आप सोफे पर बैठकर अभ्यास कर सकते हैं। +यह मेरा "सोफा व्हाइटबोर्ड" है। मैंने फोटो में पेन को सिर्फ स्केल के लिए जोड़ा है। यदि आप कलम का उपयोग करते हैं, तो आप चाहते हैं कि आप मिटा सकें। +जल्दी गन्दा हो जाता है। **मैं पेंसिल और इरेज़र का उपयोग करता हूं।** + +![मेरा सोफ़ा व्हाइटबोर्ड](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**कोडिंग प्रश्न अभ्यास प्रोग्रामिंग समस्याओं के उत्तर याद रखने के बारे में नहीं है।** + +## कोडिंग समस्याएं + +अपनी मुख्य कोडिंग साक्षात्कार पुस्तकें [यहां] (# साक्षात्कार-प्रीप-किताबें) न भूलें। + +समस्याओं को सुलझा रहा: +- [कैसे समाधान खोजें](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [टॉपकोडर प्रॉब्लम स्टेटमेंट को कैसे डिसाइड करें](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +कोडिंग साक्षात्कार प्रश्न वीडियो: +- [आईडीसर्व (88 वीडियो)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [तुषार रॉय (5 प्लेलिस्ट)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - समस्या समाधान के पूर्वाभ्यास के लिए सुपर +- [निक व्हाइट - LeetCode Solutions (187 वीडियो)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - समाधान और कोड की अच्छी व्याख्या + - आप कम समय में कई देख सकते हैं +- [फिशरकोडर - लीटकोड सॉल्यूशंस](https://youtube.com/FisherCoder) +- [नीटकोड - ब्लाइंड 75 लीटकोड सॉल्यूशंस](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) + - समाधान और अजगर कोड की अच्छी व्याख्या + - सभी प्रश्नों की सूची के लिए [एक्सेल शीट](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) भी चेकआउट करें + - [Github लिंक](https://github.com/neetcode-gh/leetcode) सभी समाधान कोड के लिए + - [नीटकोड 150](https://neetcode.io/) + +चुनौती साइटें: +- [लीटकोड] (https://leetcode.com/) + - मेरी पसंदीदा कोडिंग समस्या साइट। यह आपके द्वारा तैयार किए जा रहे 1-2 महीनों के लिए सदस्यता राशि के लायक है। + - कोड वॉक-थ्रू के लिए ऊपर निक व्हाइट और फिशरकोडर वीडियो देखें। +- [हैकररैंक](https://www.hackerrank.com/) +- [टॉपकोडर](https://www.topcoder.com/) +- [गीक्स फॉर गीक्स](https://practice.geeksforgeeks.org/explore/?page=1) +- [इंटरव्यूबिट] (https://www.interviewbit.com/) +- [प्रोजेक्ट यूलर](https://projecteuler.net/) +- [AlgoExpert](https://www.algoexpert.io/product) + - Google इंजीनियरों द्वारा बनाया गया, यह आपके कौशल को सुधारने के लिए भी एक उत्कृष्ट संसाधन है। + +## आएँ शुरू करें + +ठीक है, बहुत हुई बात, आइए जानें! + +लेकिन जब आप सीखते हैं तो ऊपर से कोडिंग की समस्याएं करना न भूलें! + +## एल्गोरिथम जटिलता / बिग-ओ / स्पर्शोन्मुख विश्लेषण + +- यहां लागू करने के लिए कुछ भी नहीं है, आप केवल वीडियो देख रहे हैं और नोट्स ले रहे हैं! वाह! +- यहां बहुत सारे वीडियो हैं। जब तक आप इसे समझ न लें, तब तक पर्याप्त देखें। आप हमेशा वापस आ सकते हैं और समीक्षा कर सकते हैं। +- अगर आप इसके पीछे का सारा गणित नहीं समझते हैं तो चिंता न करें। +- आपको बस यह समझने की जरूरत है कि बिग-ओ के संदर्भ में एल्गोरिथम की जटिलता को कैसे व्यक्त किया जाए। +- [ ] [हार्वर्ड CS50 - स्पर्शोन्मुख संकेतन (वीडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [बिग ओ नोटेशन (सामान्य त्वरित ट्यूटोरियल) (वीडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [स्कीना (वीडियो)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [यूसी बर्कले बिग ओ (वीडियो)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [परिशोधन विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय शामिल हैं): + - [कम्प्यूटेशनल जटिलता: सेक्शन 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [चीट शीट] (http://bigocheatsheet.com/) + +खैर, बस इतना ही काफी है। + +जब आप "Cracking the Coding Interview" के माध्यम से जाते हैं, तो इस पर एक अध्याय है, और अंत में देखने के लिए एक प्रश्नोत्तरी है +यदि आप विभिन्न एल्गोरिदम की रनटाइम जटिलता की पहचान कर सकते हैं। यह एक सुपर समीक्षा और परीक्षण है। + +## डेटा संरचनाएं + +- ### सरणी + - [ ] सरणियों के बारे में: + - [सरणी (वीडियो)](https://www.coursera.org/lecture/data-structs/arrays-OsBSF) + - [यूसी बर्कले CS61B - लीनियर और मल्टी-डिम एरेज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s से देखना शुरू करें) + - [डायनामिक एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [जैग्ड ऐरे (वीडियो)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी): + - [] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें। + - [] आवंटित स्मृति के साथ नया कच्चा डेटा सरणी + - हुड के नीचे इंट सरणी आवंटित कर सकते हैं, बस इसकी विशेषताओं का उपयोग न करें + - 16 से शुरू करें, या यदि शुरुआती संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128 + - [] आकार () - वस्तुओं की संख्या + - [] क्षमता () - इसमें रखी जा सकने वाली वस्तुओं की संख्या + - [ ] खाली है() + - [ ] at(index) - दिए गए इंडेक्स पर आइटम लौटाता है, अगर इंडेक्स सीमा से बाहर हो जाता है तो ब्लो अप हो जाता है + - [] पुश (आइटम) + - [] सम्मिलित करें (सूचकांक, आइटम) - सूचकांक में आइटम सम्मिलित करता है, उस सूचकांक के मूल्य और अनुगामी तत्वों को दाईं ओर स्थानांतरित करता है + - [] प्रीपेन्ड (आइटम) - इंडेक्स 0 . पर ऊपर इंसर्ट का उपयोग कर सकते हैं + - [] पॉप () - अंत से हटा दें, वापसी मूल्य + - [] हटाएं (सूचकांक) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करें + - [] हटाएं (आइटम) - मूल्य की तलाश करता है और इसे धारण करने वाले इंडेक्स को हटा देता है (भले ही कई जगहों पर) + - [] ढूंढें (आइटम) - मूल्य की तलाश करता है और उस मूल्य के साथ पहली अनुक्रमणिका देता है, -1 अगर नहीं मिला + - [] आकार बदलें (नई_क्षमता) // निजी फ़ंक्शन + - जब आप क्षमता तक पहुँच जाते हैं, तो आकार को दोगुना करने के लिए आकार बदलें + - किसी आइटम को पॉप करते समय, यदि आकार क्षमता का 1/4 है, तो आकार बदलकर आधा कर दें + - [ ] समय + - O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन + - ओ (एन) कहीं और डालने/निकालने के लिए + - [ ] अंतरिक्ष + - स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है + - स्थान की आवश्यकता = (सरणी क्षमता, जो> = n है) * वस्तु का आकार, लेकिन भले ही 2n, फिर भी O(n) +- ### लिंक्ड सूचियां + - [ ] विवरण: + - [ ] [सिंगली लिंक्ड लिस्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [सीएस 61बी - लिंक्ड सूचियां 1 (वीडियो)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [सीएस 61बी - लिंक्ड सूचियां 2 (वीडियो)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [सी कोड (वीडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश + - [] लिंक्ड लिस्ट बनाम एरेज़: + - [कोर लिंक्ड लिस्ट बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [इन द रियल वर्ल्ड लिंक्ड लिस्ट्स बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd ) + - [ ] [आपको लिंक की गई सूचियों (वीडियो) से क्यों बचना चाहिए](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [] गोचा: आपको पॉइंटर टू पॉइंटर नॉलेज चाहिए: + (जब आप किसी फ़ंक्शन के लिए एक पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) + यह पेज सिर्फ पीटीआर से पीटीआर तक को समझने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है। + - [पॉइंटर्स टू पॉइंटर्स](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [] लागू करें (मैंने टेल पॉइंटर के साथ और बिना किया): + - [] आकार () - सूची में डेटा तत्वों की संख्या लौटाता है + - [] खाली () - खाली होने पर बूल सही हो जाता है + - [] 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)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement +- ### ढेर + - [ ] [स्टैक (वीडियो)](https://www.coursera.org/lecture/data-structs/stacks-UdKzQ) + - [ ] लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है + +- ### कतार + - [ ] [कतार (वीडियो)](https://www.coursera.org/lecture/data-structs/queues-EShpq) + - [ ] [सर्कुलर बफर/फीफो](https://en.wikipedia.org/wiki/Circular_buffer) + - [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें: + - एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है + - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है + - खाली() + - [] निश्चित आकार के सरणी का उपयोग करके कार्यान्वित करें: + - एनक्यू (मान) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है + - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है + - खाली() + - भरा हुआ() + - [ ] लागत: + - लिंक की गई सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर कतार लगाते हैं और पूंछ पर dequeue ओ (एन) होगा + क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक dequeue एक पूर्ण ट्रैवर्सल हो जाएगा + - एनक्यू: ओ (1) (परिशोधन, लिंक्ड सूची और सरणी [जांच]) + - dequeue: O(1) (लिंक की गई सूची और सरणी) + - खाली: ओ (1) (लिंक की गई सूची और सरणी) + +- ### हैश टेबल + - [] वीडियो: + - [ ] [हैशिंग विद चेनिंग (वीडियो)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [टेबल डबलिंग, कार्प-राबिन (वीडियो)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ओपन एड्रेसिंग, क्रिप्टोग्राफिक हैशिंग (वीडियो)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [पायकॉन 2010: द माइटी डिक्शनरी (वीडियो)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [पायकॉन 2017: द डिक्शनरी इवन माइटियर (वीडियो)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(उन्नत) रैंडमाइजेशन: यूनिवर्सल एंड परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(उन्नत) परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + +- [ ] ऑनलाइन पाठ्यक्रम: + - [ ] [कोर हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [डेटा संरचनाएं (वीडियो)](https://www.coursera.org/learn/data-structs/home/week/4) + - [ ] [फोन बुक प्रॉब्लम (वीडियो)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [] वितरित हैश टेबल: + - [ड्रॉपबॉक्स (वीडियो) में तत्काल अपलोड और संग्रहण अनुकूलन](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [डिस्ट्रिब्यूटेड हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें + - हैश (के, एम) - एम हैश टेबल का आकार है + - जोड़ें (कुंजी, मान) - यदि कुंजी पहले से मौजूद है, तो मान अपडेट करें + - मौजूद है (कुंजी) + - चाबी देना) + - हटाएं (कुंजी) + +## अधिक ज्ञान + +- ### द्विआधारी खोज + - [ ] [बाइनरी सर्च (वीडियो)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [बाइनरी सर्च (वीडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [विस्तार] (https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [खाका](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] अमल में लाना: + - द्विआधारी खोज (पूर्णांक के क्रमबद्ध सरणी पर) + - पुनरावर्तन का उपयोग कर द्विआधारी खोज +- ### बिटवाइज़ ऑपरेशन + - [ ] [बिट्स चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - आपको इनमें से कई के बारे में पता होना चाहिए 2 से 2 की शक्तियां (2^1 से 2^16 और 2^32) + - [] के साथ बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, << + - [ ] [शब्द](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [] अच्छा परिचय: + [बिट मैनिपुलेशन (वीडियो)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [सी प्रोग्रामिंग ट्यूटोरियल 2-10: बिटवाइज़ ऑपरेटर्स (वीडियो)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [बिट मैनिपुलेशन] (https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [बिटवाइज ऑपरेशन](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [बिथैक्स](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [द बिट ट्विडलर](https://bits.stephan-brumme.com/) + - [ ] [द बिट ट्विडलर इंटरएक्टिव](https://bits.stephan-brumme.com/interactive.html) + - [ ] [बिट हैक्स (वीडियो)](https://www.youtube.com/watch?v=ZusiKXcz_ac) +- [ ] [प्रैक्टिस ऑपरेशंस](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [] 2s और 1s पूरक + - [बाइनरी: प्लसस और माइनस (हम दो के पूरक का उपयोग क्यों करते हैं) (वीडियो)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s पूरक](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s पूरक](https://en.wikipedia.org/wiki/Two%27s_complement) + - [] काउंट सेट बिट्स + - [एक बाइट में बिट्स गिनने के 4 तरीके (वीडियो)](https://youtu.be/Hzuzo9NJrlc) + - [काउंट बिट्स](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [32 बिट पूर्णांक में सेट बिट्स की संख्या की गणना कैसे करें](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32 -बिट-पूर्णांक) + - [] स्वैप मान: + - [स्वैप] (https://bits.stephan-brumme.com/swap.html) + - [ ] निरपेक्ष मूल्य: + - [निरपेक्ष पूर्णांक](https://bits.stephan-brumme.com/absInteger.html) +## पेड़ + +- ### पेड़ - नोट्स और पृष्ठभूमि + - [ ] [श्रृंखला: पेड़ (वीडियो)] (https://www.coursera.org/lecture/data-structs/trees-95qda) + - मूल वृक्ष निर्माण + - ट्रैवर्सल + - हेरफेर एल्गोरिदम + - [ ] [बीएफएस (चौड़ाई-पहली खोज) और डीएफएस (गहराई-पहली खोज) (वीडियो)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - बीएफएस नोट: + - स्तर आदेश (बीएफएस, कतार का उपयोग करके) + - समय जटिलता: ओ (एन) + - अंतरिक्ष जटिलता: सर्वोत्तम: ओ (1), सबसे खराब: ओ (एन/2) = ओ (एन) + - डीएफएस नोट: + - समय जटिलता: ओ (एन) + - अंतरिक्ष जटिलता: + सबसे अच्छा: ओ (लॉग एन) - औसत। पेड़ की ऊंचाई + सबसे खराब: ओ (एन) + - क्रम में (डीएफएस: बाएं, स्वयं, दाएं) + - पोस्टऑर्डर (डीएफएस: बाएं, दाएं, स्वयं) + - प्रीऑर्डर (डीएफएस: स्वयं, बाएं, दाएं) + +- ### बाइनरी सर्च ट्री: बीएसटी + - [ ] [बाइनरी सर्च ट्री रिव्यू (वीडियो)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [परिचय (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/E7cXP/introduction) + - [ ] [एमआईटी (वीडियो)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - सी/सी++: + - [ ] [बाइनरी सर्च ट्री - सी/सी++ (वीडियो) में कार्यान्वयन](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [बीएसटी कार्यान्वयन - स्टैक और हीप में मेमोरी आवंटन (वीडियो)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [बाइनरी सर्च ट्री (वीडियो) में न्यूनतम और अधिकतम तत्व खोजें](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [एक बाइनरी ट्री की ऊंचाई ज्ञात करें (वीडियो)](https://www.youtube.com/watch?v=_pnqMz5nrRs&सूची=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [बाइनरी ट्री ट्रैवर्सल - चौड़ाई-पहली और गहराई-पहली रणनीतियां (वीडियो)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [बाइनरी ट्री: लेवल ऑर्डर ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बाइनरी ट्री ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर (वीडियो)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [जांचें कि बाइनरी ट्री बाइनरी सर्च ट्री है या नहीं (वीडियो)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बाइनरी सर्च ट्री (वीडियो) से एक नोड हटाएं](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [बाइनरी सर्च ट्री (वीडियो) में क्रमागत उत्तराधिकारी](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] अमल में लाना: + - [] डालें // ट्री में वैल्यू डालें + - [] 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)) + - [ ] [परिचय (वीडियो)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [बेवकूफ कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/z3l9N/naive-implementations) + - [ ] [बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [वृक्ष ऊंचाई टिप्पणी (वीडियो)](https://www.coursera.org/learn/data-structs/supplement/S5xxz/tree-height-remark) + - [ ] [बुनियादी संचालन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/0g1dl/basic-operations) + - [ ] [पूर्ण बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/gl5Ni/complete-binary-trees) + - [ ] [स्यूडोकोड (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [हीप सॉर्ट - जंप टू स्टार्ट (वीडियो)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [हीप सॉर्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [ढेर बनाना (वीडियो)](https://www.coursera.org/lecture/data-structures/build-a-heap-dwrOS) + - [ ] [एमआईटी: हीप्स एंड हीप सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [सीएस 61बी व्याख्यान 24: प्राथमिकता कतारें (वीडियो)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [रैखिक समय BuildHeap (अधिकतम-ढेर)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [] अधिकतम ढेर लागू करें: + - [ ] डालना + - [] 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 + - [] एल्गोरिदम को छांटने में स्थिरता ("क्या क्विकसॉर्ट स्थिर है?") + - [सॉर्टिंग एल्गोरिथम स्थिरता](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [एल्गोरिदम छँटाई में स्थिरता](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [एल्गोरिदम छँटाई में स्थिरता](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [एल्गोरिदम छँटाई - स्थिरता](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] लिंक्ड सूचियों पर कौन से एल्गोरिदम का उपयोग किया जा सकता है? सरणी पर कौन सा? दोनों पर कौन सा? + - मैं एक लिंक्ड सूची को सॉर्ट करने की अनुशंसा नहीं करता, लेकिन मर्ज सॉर्ट करने योग्य है। + - [लिंक्ड लिस्ट के लिए मर्ज सॉर्ट](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें। ढेर छँटाई महान है, लेकिन स्थिर नहीं है + +- [ ] [सेजविक - मर्जसॉर्ट (5 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. मर्जसॉर्ट](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. बॉटम अप मर्जसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. छँटाई जटिलता](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. तुलनित्र](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. स्थिरता](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [सेजविक - क्विकसॉर्ट (4 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. क्विकसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. चयन](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. डुप्लीकेट कुंजियाँ](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. सिस्टम सॉर्ट](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) +- [ ] यूसी बरकेले: + - [ ] [सीएस 61बी लेक्चर 29: सॉर्टिंग I (वीडियो)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [सीएस 61बी लेक्चर 30: सॉर्टिंग II (वीडियो)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [सीएस 61बी व्याख्यान 32: छँटाई III (वीडियो)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [सीएस 61बी व्याख्यान 33: छँटाई वी (वीडियो)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [बबल सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [बबल सॉर्ट का विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [सम्मिलन सॉर्ट, मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [सम्मिलन क्रमित करें (वीडियो)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [क्विकसोर्ट (वीडियो)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [चयन क्रम (वीडियो)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [] मर्ज सॉर्ट कोड: + - [ ] [आउटपुट ऐरे (सी) का उपयोग करना] (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++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [] त्वरित सॉर्ट कोड: + - [ ] [कार्यान्वयन (सी)] (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) + - [ ] [कार्यान्वयन (पायथन)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] अमल में लाना: + - [] मर्जसॉर्ट: ओ (एन लॉग एन) औसत और सबसे खराब स्थिति + - [] क्विकसॉर्ट ओ (एन लॉग एन) औसत मामला + - चयन प्रकार और सम्मिलन प्रकार दोनों ओ (एन ^ 2) औसत और सबसे खराब स्थिति हैं + - हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें + - [] आवश्यक नहीं है, लेकिन मैंने उनकी सिफारिश की: + - [ ] [सेजविक - रेडिक्स सॉर्ट्स (6 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. जावा में स्ट्रिंग्स](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. कुंजी अनुक्रमित गिनती](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. कम से कम महत्वपूर्ण अंक प्रथम स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. सबसे महत्वपूर्ण अंक पहली स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 वे रेडिक्स क्विकसॉर्ट](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. प्रत्यय सरणी](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [रेडिक्स सॉर्ट](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [रेडिक्स सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [रेडिक्स सॉर्ट, काउंटिंग सॉर्ट (रैखिक समय दिए गए प्रतिबंध) (वीडियो)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [यादृच्छिककरण: मैट्रिक्स गुणा, क्विकॉर्ट, फ्रीवाल्ड्स एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [रैखिक समय (वीडियो) में छंटनी](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +संक्षेप में, यहां [15 सॉर्टिंग एल्गोरिदम](https://www.youtube.com/watch?v=kPRA0W1kECg) का एक दृश्य प्रतिनिधित्व है। +यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "सॉर्टिंग" अनुभाग देखें। + +## रेखांकन + +कंप्यूटर विज्ञान में कई समस्याओं का प्रतिनिधित्व करने के लिए रेखांकन का उपयोग किया जा सकता है, इसलिए यह खंड लंबा है, जैसे पेड़ और छँटाई थी। + +- टिप्पणियाँ: + - मेमोरी में ग्राफ को दर्शाने के 4 बुनियादी तरीके हैं: + - ऑब्जेक्ट्स और पॉइंटर्स + - सहखंडज मैट्रिक्स + - निकटता सूची + - आसन्न नक्शा + - प्रत्येक प्रतिनिधित्व और उसके पेशेवरों और विपक्षों से खुद को परिचित करें + - बीएफएस और डीएफएस - उनकी कम्प्यूटेशनल जटिलता, उनके व्यापार बंद, और उन्हें वास्तविक कोड में कैसे लागू किया जाए, इसके बारे में जानें + - जब कोई प्रश्न पूछा जाए, तो पहले ग्राफ़-आधारित समाधान देखें, फिर यदि कोई नहीं है तो आगे बढ़ें + +- [] एमआईटी (वीडियो): + - [ ] [चौड़ाई-पहली खोज](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [गहराई-पहली खोज](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [] स्कीएना व्याख्यान - महान परिचय: + - [ ] [CSE373 2020 - लेक्चर 10 - ग्राफ़ डेटा स्ट्रक्चर (वीडियो)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - व्याख्यान 11 - ग्राफ़ ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - व्याख्यान 12 - गहराई पहली खोज (वीडियो)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - व्याख्यान 13 - न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - व्याख्यान 14 - न्यूनतम फैले हुए पेड़ (नहीं) (वीडियो)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - लेक्चर 15 - ग्राफ़ एल्गोरिथम (2 नहीं) (वीडियो)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [] रेखांकन (समीक्षा और अधिक): + + - [ ] [6.006 सिंगल-सोर्स शॉर्टेस्ट पाथ प्रॉब्लम (वीडियो)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 डिजस्ट्रा (वीडियो)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 बेलमैन-फोर्ड (वीडियो)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 स्पीड अप दिज्क्स्ट्रा (वीडियो)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम I - टोपोलॉजिकल सॉर्टिंग, न्यूनतम स्पैनिंग ट्री, प्राइम का एल्गोरिथम - लेक्चर 6 (वीडियो)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9WBSy2Em) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम II - डीएफएस, बीएफएस, क्रुस्कल का एल्गोरिदम, संघ डेटा संरचना खोजें - व्याख्यान 7 (वीडियो)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7B&index=7S5S ) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम III: सबसे छोटा रास्ता - व्याख्यान 8 (वीडियो)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [अदुनी: ग्राफ़ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9 (वीडियो)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [सीएस 61बी 2014: भारित ग्राफ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [लालची एल्गोरिदम: न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [मजबूत रूप से जुड़े घटक कोसाराजू का एल्गोरिथम ग्राफ़ एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- पूर्ण कौरसेरा कोर्स: + - [ ] [ग्राफ़ पर एल्गोरिदम (वीडियो)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- मैं लागू करूंगा: + - [] आसन्न सूची के साथ डीएफएस (पुनरावर्ती) + - [] आसन्न सूची के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) + - [] आसन्न मैट्रिक्स के साथ डीएफएस (पुनरावर्ती) + - [] आसन्न मैट्रिक्स के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) + - [ ] बीएफएस आसन्न सूची के साथ + - [] आसन्न मैट्रिक्स के साथ बीएफएस + - [] एकल-स्रोत सबसे छोटा पथ (दिज्क्स्ट्रा) + - [ ] न्यूनतम फैलाव वाला पेड़ + - डीएफएस-आधारित एल्गोरिदम (ऊपर Aduni वीडियो देखें): + - [] साइकिल की जांच करें (टोपोलॉजिकल सॉर्ट के लिए आवश्यक है, क्योंकि हम शुरू करने से पहले साइकिल की जांच करेंगे) + - [] टोपोलॉजिकल सॉर्ट + - [] एक ग्राफ में जुड़े घटकों की गणना करें + - [] दृढ़ता से जुड़े घटकों की सूची बनाएं + - [] द्विदलीय ग्राफ के लिए जाँच करें + +## Even More Knowledge +- ### रिकर्सन + - [ ] स्टैनफोर्ड रिकर्सन और बैकट्रैकिंग पर व्याख्यान: + - [ ] [व्याख्यान 8 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [व्याख्यान 9 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [व्याख्यान 10 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [व्याख्यान 11 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - इसका उपयोग कब करना उचित है? + - टेल रिकर्सन कैसे बेहतर नहीं है? + - [ ] [टेल रिकर्सन क्या है यह इतना बुरा क्यों है?](https://www.quora.com/What-is-tail-recursion- Why-is-it-so-bad) + - [ ] [टेल रिकर्सन (वीडियो)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [किसी भी पुनरावर्ती समस्या को हल करने के लिए 5 सरल चरण (वीडियो)](https://youtu.be/ngCos392W4w) + +बैकट्रैकिंग ब्लूप्रिंट: [जावा](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-) पलिंड्रोम-विभाजन)) +[पायथन](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### गतिशील प्रोग्रामिंग + - आप शायद अपने साक्षात्कार में कोई गतिशील प्रोग्रामिंग समस्या नहीं देखेंगे, लेकिन यह पहचानने में सक्षम होने के लायक है + गतिशील प्रोग्रामिंग के लिए एक उम्मीदवार के रूप में समस्या। + - यह विषय काफी कठिन हो सकता है, क्योंकि प्रत्येक डीपी घुलनशील समस्या को एक पुनरावर्ती संबंध के रूप में परिभाषित किया जाना चाहिए, और इसके साथ आना मुश्किल हो सकता है। + - मेरा सुझाव है कि जब तक आपको इसमें शामिल पैटर्न की ठोस समझ न हो, तब तक डीपी समस्याओं के कई उदाहरण देखें। + - [] वीडियो: + - [ ] [स्किएना: CSE373 2020 - लेक्चर 19 - डायनेमिक प्रोग्रामिंग का परिचय (वीडियो)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [स्किएना: CSE373 2020 - लेक्चर 20 - एडिट डिस्टेंस (वीडियो)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [स्किएना: CSE373 2020 - व्याख्यान 20 - दूरी संपादित करें (जारी) (वीडियो)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [स्किएना: CSE373 2020 - लेक्चर 21 - डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [स्किएना: CSE373 2020 - व्याख्यान 21 - गतिशील प्रोग्रामिंग और समीक्षा (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग 0 (59:18 बजे शुरू होता है) (वीडियो)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग I - लेक्चर 11 (वीडियो)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग II - लेक्चर 12 (वीडियो)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [] व्यक्तिगत डीपी समस्याओं की सूची (प्रत्येक संक्षिप्त है): + [डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] येल व्याख्यान नोट्स: + - [ ] [डायनामिक प्रोग्रामिंग](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] कौरसेरा: + - [ ] [आरएनए सेकेंडरी स्ट्रक्चर प्रॉब्लम (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [एक गतिशील प्रोग्रामिंग एल्गोरिथम (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [डीपी एल्गोरिथम (वीडियो) का चित्रण](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + +- [ ] [डीपी एल्गोरिथम (वीडियो) का रनिंग टाइम] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [डीपी बनाम पुनरावर्ती कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [वैश्विक जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [स्थानीय जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### डिजाइन पैटर्न्स + - [ ] [त्वरित यूएमएल समीक्षा (वीडियो)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] ये पैटर्न सीखें: + - [ ] रणनीति + - [] सिंगलटन + - [] एडेप्टर + - [] प्रोटोटाइप + - [ ] डेकोरेटर + - [] आगंतुक + - [] कारखाना, अमूर्त कारखाना + - [] मुखौटा + - [ ] देखने वाला + - [] प्रॉक्सी + - [ ] प्रतिनिधि + - [ ] आज्ञा + - [ ] राज्य + - [ ] स्मृति चिन्ह + - [] पुनरावर्तक + - [] समग्र + - [] फ्लाईवेट + - [ ] [वीडियो की शृंखला (27 वीडियो)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [पुस्तक: हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/059607124) + - मुझे पता है कि विहित पुस्तक "डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर के तत्व" है, लेकिन हेड फर्स्ट ओओ के शुरुआती लोगों के लिए बहुत अच्छा है। + - [आसान संदर्भ: 101 डिज़ाइन पैटर्न और डेवलपर्स के लिए सुझाव](https://sourcemaking.com/design-patterns-and-tips) + + +- ### कॉम्बिनेटरिक्स (n चुनें k) और प्रायिकता + - [ ] [गणित कौशल: भाज्य, क्रमचय और संयोजन कैसे खोजें (चुनें) (वीडियो)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [मेक स्कूल: प्रोबेबिलिटी (वीडियो)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [मेक स्कूल: मोर प्रोबेबिलिटी एंड मार्कोव चेन्स (वीडियो)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] खान अकादमी: + - कोर्स लेआउट: + - [ ] [मूल सैद्धांतिक संभावना](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - बस वीडियो - 41 (प्रत्येक सरल हैं और प्रत्येक छोटा है): + - [ ] [संभाव्यता की व्याख्या (वीडियो)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### एनपी, एनपी-पूर्ण और सन्निकटन एल्गोरिदम + - एनपी-पूर्ण समस्याओं के सबसे प्रसिद्ध वर्गों के बारे में जानें, जैसे यात्रा विक्रेता और बस्ता समस्या, + और जब कोई साक्षात्कारकर्ता आपसे वेश में पूछे तो उन्हें पहचानने में सक्षम हो। + - जानिए एनपी-पूर्ण का क्या मतलब है। + - [ ] [कम्प्यूटेशनल जटिलता (वीडियो)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [] साइमनसन: + - [ ] [लालची Algs. II और एनपी पूर्णता का परिचय (वीडियो)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [एनपी पूर्णता II और कटौती (वीडियो)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी पूर्णता III (वीडियो)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी पूर्णता IV (वीडियो)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [] स्कीना: + - [ ] [CSE373 2020 - व्याख्यान 23 - एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - व्याख्यान 24 - संतुष्टि (वीडियो)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - व्याख्यान 25 - अधिक एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - व्याख्यान 26 - एनपी-पूर्णता चुनौती (वीडियो)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [जटिलता: पी, एनपी, एनपी-पूर्णता, कटौती (वीडियो)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [जटिलता: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [जटिलता: फिक्स्ड-पैरामीटर एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - पीटर नॉरविग ने ट्रैवलिंग सेल्समैन की समस्या के निकट-इष्टतम समाधानों पर चर्चा की: + - [जुपिटर नोटबुक](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - यदि आपके पास सीएलआरएस में पृष्ठ 1048 - 1140 है। + +- ### कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं + + - [ ] [सीपीयू किसी प्रोग्राम को कैसे निष्पादित करता है (वीडियो)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [कंप्यूटर कैसे कैलकुलेट करते हैं - ALU (वीडियो)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [रजिस्टर और रैम (वीडियो)](https://youtu.be/fpnE6UAfbtU) + - [ ] [सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) (वीडियो)](https://youtu.be/FZGugFqdr60) + - [ ] [निर्देश और कार्यक्रम (वीडियो)](https://youtu.be/zltgXvg6r3k) + +- ### कैश + - [] एलआरयू कैश: + - [ ] [LRU कैश का जादू (गूगल देव के 100 दिन) (वीडियो)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [एलआरयू (वीडियो) लागू करना](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU कैश (C++) (वीडियो)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [] सीपीयू कैश: + - [ ] [MIT 6.004 L15: मेमोरी पदानुक्रम (वीडियो)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: कैश की समस्या (वीडियो)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### प्रक्रियाएं और सूत्र + - [ ] कंप्यूटर साइंस 162 - ऑपरेटिंग सिस्टम (25 वीडियो): + - प्रक्रियाओं और थ्रेड्स के लिए वीडियो देखें 1-11 + - [ऑपरेटिंग सिस्टम और सिस्टम प्रोग्रामिंग (वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [एक प्रक्रिया और एक धागे में क्या अंतर है?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - कवर: + - प्रक्रियाएं, सूत्र, समवर्ती मुद्दे + - प्रक्रियाओं और धागे के बीच अंतर + - प्रक्रियाएं + - धागे + - ताले + - म्यूटेक्स + - सेमाफोरस + - मॉनिटर्स + - वे कैसे काम करते हैं? + - गतिरोध + - लाइवलॉक + - सीपीयू गतिविधि, इंटरप्ट, संदर्भ स्विचिंग + - मल्टीकोर प्रोसेसर के साथ आधुनिक समवर्ती निर्माण + - [पेजिंग, सेगमेंटेशन और वर्चुअल मेमोरी (वीडियो)](https://youtu.be/O4nwUqQodAg) + - [व्यवधान (वीडियो)](https://youtu.be/iKlAWIKEyuw) + - प्रक्रिया संसाधन की जरूरत (मेमोरी: कोड, स्टैटिक स्टोरेज, स्टैक, हीप, और फाइल डिस्क्रिप्टर, i/o) + - एक ही प्रक्रिया में अन्य थ्रेड्स के साथ थ्रेड रिसोर्स की जरूरत (ऊपर के शेयर (माइनस स्टैक) लेकिन प्रत्येक का अपना पीसी, स्टैक काउंटर, रजिस्टर और स्टैक होता है) + - फोर्किंग वास्तव में कॉपी ऑन राइट (रीड-ओनली) है जब तक कि नई प्रक्रिया मेमोरी को नहीं लिखती है, तब यह पूरी कॉपी करता है। + - प्रसंग स्विचिंग + - ऑपरेटिंग सिस्टम और अंतर्निहित हार्डवेयर द्वारा संदर्भ स्विचिंग कैसे शुरू की जाती है? + - [ ] [सी++ में थ्रेड (श्रृंखला - 10 वीडियो)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [सीएस 377 स्प्रिंग '14: मैसाचुसेट्स विश्वविद्यालय से ऑपरेटिंग सिस्टम](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [] पायथन में संगामिति (वीडियो): + - [ ] [थ्रेड्स पर शॉर्ट सीरीज़](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [पायथन थ्रेड्स](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [पायथन जीआईएल को समझना (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [संदर्भ] (http://www.dabeaz.com/GIL) + - [ ] [डेविड बेज़ले - पाइथॉन कंकरेंसी फ्रॉम द ग्राउंड अप: लाइव! - पाइकॉन 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [मुख्य वक्ता डेविड बेज़ले - रुचि के विषय (पायथन एसिंकियो)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [पायथन में म्यूटेक्स](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### परिक्षण + - आच्छादित करना: + - यूनिट परीक्षण कैसे काम करता है + - नकली वस्तुएं क्या हैं + - एकीकरण परीक्षण क्या है + - निर्भरता इंजेक्शन क्या है + - [ ] [जेम्स बाख के साथ एजाइल सॉफ्टवेयर टेस्टिंग (वीडियो)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [जेम्स बाख द्वारा सॉफ्टवेयर परीक्षण पर खुला व्याख्यान (वीडियो)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [स्टीव फ्रीमैन - टेस्ट-ड्रिवेन डेवलपमेंट (यही हमारा मतलब नहीं था) (वीडियो)](https://vimeo.com/83960706) + - [स्लाइड्स] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] निर्भरता इंजेक्शन: + - [ ] [वीडियो](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [परीक्षण के ताओ] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [परीक्षा कैसे लिखें](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +-### स्ट्रिंग खोज और जोड़तोड़ + - [ ] [सेडगेविक - प्रत्यय सरणी (वीडियो)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [सेजविक - सबस्ट्रिंग सर्च (वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. सबस्ट्रिंग सर्च का परिचय](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. ब्रूट-फोर्स सबस्ट्रिंग सर्च](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. नुथ-मॉरिस प्रैट](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. बॉयर-मूर](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. राबिन-कार्प](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [पाठ में खोज पैटर्न (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/tAfHI/search-pattern-in-text) + + यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "स्ट्रिंग मिलान" अनुभाग देखें। + +- ### कोशिश करता है + - ध्यान दें कि विभिन्न प्रकार के प्रयास हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं + पथ को ट्रैक करने के लिए + - मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा + - [ ] [सेजविक - ट्राइज़ (3 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. आर वे ट्राइस](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-trys) + - [ ] [2. टर्नरी खोज प्रयास](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-trys) + - [ ] [3. चरित्र आधारित संचालन](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [डेटा संरचनाओं और प्रोग्रामिंग तकनीकों पर नोट्स](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] लघु ​​पाठ्यक्रम वीडियो: + - [ ] [प्रयासों का परिचय (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-trys) + - [ ] [प्रयासों का प्रदर्शन (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-trys) + - [ ] [एक ट्री को लागू करना (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [द ट्री: ए नेग्लेक्टेड डेटा स्ट्रक्चर](https://www.toptal.com/java/the-trie-a-neglected-data-struct) + - [ ] [टॉपकोडर - ट्राईज़ का उपयोग करना](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [स्टैनफोर्ड लेक्चर (असली दुनिया में इस्तेमाल का मामला) (वीडियो)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [एमआईटी, उन्नत डेटा संरचनाएं, स्ट्रिंग्स (आधे रास्ते में बहुत अस्पष्ट हो सकती हैं) (वीडियो)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### दशमलव संख्याएं + - [ ] साधारण 8-बिट: [फ़्लोटिंग पॉइंट नंबरों का प्रतिनिधित्व - 1 (वीडियो - गणना में त्रुटि है - वीडियो विवरण देखें)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### यूनिकोड + - [ ] [पूर्ण न्यूनतम हर सॉफ्टवेयर डेवलपर बिल्कुल, सकारात्मक रूप से यूनिकोड और कैरेक्टर सेट के बारे में जानना चाहिए]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [पाठ के साथ काम करने के लिए हर प्रोग्रामर को क्या बिल्कुल, सकारात्मक रूप से एन्कोडिंग और कैरेक्टर सेट के बारे में जानने की जरूरत है](http://kunsttube.net/encoding/) +-### अंतहीनता + - [ ] [बिग एंड लिटिल एंडियन](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian. एचटीएमएल) + - [ ] [बिग एंडियन बनाम लिटिल एंडियन (वीडियो)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [बिग एंड लिटिल एंडियन इनसाइड/आउट (वीडियो)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - कर्नेल देवों के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें। + - पहला हाफ काफी है। + +- ### नेटवर्किंग + - **यदि आपके पास नेटवर्किंग का अनुभव है या आप एक विश्वसनीयता इंजीनियर या संचालन इंजीनियर बनना चाहते हैं, तो प्रश्नों की अपेक्षा करें** + - अन्यथा, यह जानना अच्छा है + - [ ] [खान अकादमी](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [यूडीपी और टीसीपी: ट्रांसपोर्ट प्रोटोकॉल की तुलना (वीडियो)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [टीसीपी/आईपी और ओएसआई मॉडल की व्याख्या! (वीडियो)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [इंटरनेट पर पैकेट ट्रांसमिशन। नेटवर्किंग और टीसीपी/आईपी ट्यूटोरियल। (वीडियो)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (वीडियो)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [एसएसएल और एचटीटीपीएस (वीडियो)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [एसएसएल/टीएलएस (वीडियो)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (वीडियो)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [वीडियो सीरीज़ (21 वीडियो) (वीडियो)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [सबनेटिंग डिमिस्टिफाइड - भाग 5 सीआईडीआर नोटेशन (वीडियो)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [] सॉकेट: + - [ ] [जावा - सॉकेट - परिचय (वीडियो)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [सॉकेट प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## अंतिम समीक्षा + + इस अनुभाग में छोटे वीडियो होंगे जिन्हें आप अधिकांश महत्वपूर्ण अवधारणाओं की समीक्षा करने के लिए बहुत तेज़ी से देख सकते हैं। + यदि आप अक्सर एक पुनश्चर्या चाहते हैं तो यह अच्छा है। + +- [] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) + - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - माइकल साम्बोल (18 वीडियो): + - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## अपना रिज्यूमे अपडेट करें + +- किताबों में तैयारी की जानकारी फिर से शुरू करें देखें: "कोडिंग इंटरव्यू क्रैकिंग" और "प्रोग्रामिंग इंटरव्यू एक्सपोज्ड" +- मुझे नहीं पता कि यह कितना महत्वपूर्ण है (आप अपना खुद का शोध कर सकते हैं) लेकिन यहां आपके रेज़्यूमे को एटीएस के अनुरूप बनाने पर एक लेख है: + - [कैसे बनाएं या जांचें कि आपका रिज्यूमे एटीएस के अनुरूप है या नहीं](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for -मुक्त) +- [गेल मैकडॉवेल (क्रैकिंग द कोडिंग इंटरव्यू के लेखक) द्वारा ["दिस इज़ व्हाट ए गुड रिज्यूमे शुड लुक लाइक"](https://www.careercup.com/resume), + - लेखक द्वारा नोट: "यह यूएस-केंद्रित रिज्यूमे के लिए है। भारत और अन्य देशों के लिए सीवी की अलग-अलग अपेक्षाएं हैं, हालांकि कई बिंदु समान होंगे।" +- [टेक इंटरव्यू हैंडबुक द्वारा "स्टेप-बाय-स्टेप रेज़्यूमे गाइड"](https://www.techinterviewhandbook.org/resume/guide) + - शुरू से अपना रिज्यूमे कैसे सेट करें, इस बारे में विस्तृत गाइड, प्रभावी रिज्यूमे सामग्री लिखें, इसे ऑप्टिमाइज़ करें और अपने रिज्यूमे का परीक्षण करें + + +## एक नौकरी ढूंढो + +- [नौकरियां खोजने के लिए साइटें](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी + +- [ ] [2021 में इंजीनियरिंग इंटरव्यू कैसे पास करें](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [तकनीकी भर्ती का रहस्योद्घाटन](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] बिग 4 में नौकरी कैसे प्राप्त करें: + - [ ] [बिग 4 में नौकरी कैसे पाएं - Amazon, Facebook, Google और Microsoft (वीडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [बिग 4.1 में नौकरी कैसे पाएं (फॉलो-अप वीडियो)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] कोडिंग इंटरव्यू सेट 1 को क्रैक करना: + - [ ] [गेल एल मैकडॉवेल - क्रैकिंग द कोडिंग इंटरव्यू (वीडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [लेखक गेल लाकमैन मैकडॉवेल के साथ कोडिंग इंटरव्यू क्रैक करना (वीडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] फेसबुक कोडिंग इंटरव्यू को क्रैक करना: + - [ ] [दृष्टिकोण](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [समस्या पूर्वाभ्यास](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- तैयारी पाठ्यक्रम: + - [सॉफ्टवेयर इंजीनियर इंटरव्यू अनलीशेड (पेड कोर्स)](https://www.udemy.com/software-engineer-interview-unleashed): + - Google के किसी पूर्व साक्षात्कारकर्ता से सॉफ़्टवेयर इंजीनियर साक्षात्कार के लिए स्वयं को तैयार करने का तरीका जानें. + - [पायथन फॉर डेटा स्ट्रक्चर्स, एल्गोरिदम, और इंटरव्यू (पेड कोर्स)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - एक पायथन केंद्रित साक्षात्कार तैयारी पाठ्यक्रम जिसमें डेटा संरचनाएं, एल्गोरिदम, नकली साक्षात्कार और बहुत कुछ शामिल है। + - [पायथन का उपयोग करके डेटा संरचनाओं और एल्गोरिदम का परिचय (उडेसिटी फ्री कोर्स)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - एक मुफ्त पायथन केंद्रित डेटा संरचनाएं और एल्गोरिदम पाठ्यक्रम। + - [डेटा संरचनाएं और एल्गोरिदम नैनोडेग्री! (उडेसिटी पेड नैनोडेग्री)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - साक्षात्कार और नौकरी के परिदृश्य के लिए तैयार करने में मदद करने के लिए एक समर्पित सलाहकार से 100 से अधिक डेटा संरचनाओं और एल्गोरिदम अभ्यास और मार्गदर्शन के साथ व्यावहारिक अभ्यास प्राप्त करें। + - [बिहेवियरल इंटरव्यू ग्रोकिंग (शिक्षा मुक्त कोर्स)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - कई बार, यह आपकी तकनीकी योग्यता नहीं है जो आपको अपने सपनों की नौकरी में उतरने से रोकती है, यह है कि आप व्यवहारिक साक्षात्कार पर कैसा प्रदर्शन करते हैं। + +नकली साक्षात्कार: +- [Gainlo.co: बड़ी कंपनियों के नकली साक्षात्कारकर्ता] (http://www.gainlo.co/#!/) - मैंने इसका इस्तेमाल किया और इससे मुझे फोन स्क्रीन और साइट पर साक्षात्कार के लिए आराम करने में मदद मिली +- [प्रैम्प: पीयर-टू-पीयर मॉडल ऑफ़ प्रैक्टिस इंटरव्यूज़] (https://www.pramp.com/) +- [interviewing.io: वरिष्ठ इंजीनियरों के साथ मॉक इंटरव्यू का अभ्यास करें](https://interviewing.io) - अनाम एल्गोरिथम/सिस्टम डिज़ाइन साक्षात्कार FAANG के वरिष्ठ इंजीनियरों के साथ गुमनाम रूप से + +## इंटरव्यू कब आए, इसके बारे में सोचें + +नीचे दी गई मदों की पंक्तियों के साथ आपको मिलने वाले लगभग 20 साक्षात्कार प्रश्नों के बारे में सोचें। प्रत्येक के लिए कम से कम एक उत्तर दें। +आपके द्वारा हासिल की गई किसी चीज़ के बारे में, केवल डेटा ही नहीं, एक कहानी रखें। + +- आपको यह नौकरी क्यों चाहिए? +- आपने कौन सी कठिन समस्या हल की है? +- सबसे बड़ी चुनौतियों का सामना करना पड़ा? +- सबसे अच्छा / सबसे खराब डिजाइन देखा गया? +- मौजूदा उत्पाद में सुधार के लिए विचार +- आप एक व्यक्ति के रूप में और एक टीम के हिस्से के रूप में सबसे अच्छा कैसे काम करते हैं? +- आपका कौन सा कौशल या अनुभव भूमिका में संपत्ति होगा और क्यों? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे ज्यादा क्या पसंद आया? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे बड़ी चुनौती क्या थी? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे कठिन बग क्या था? +- आपने [जॉब x / प्रोजेक्ट y] में क्या सीखा? +- [जॉब x / प्रोजेक्ट y] में आपने क्या बेहतर किया होगा? + +- यदि आपको इस प्रकार के साक्षात्कार प्रश्नों के अच्छे उत्तर प्राप्त करने में कठिनाई होती है, तो यहां कुछ उपाय दिए गए हैं: + - [सामान्य साक्षात्कार प्रश्न और उनके उत्तर](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## साक्षात्कारकर्ता के लिए प्रश्न हैं + +मेरे कुछ (मैं पहले से ही उत्तर जानता हूं, लेकिन उनकी राय या टीम परिप्रेक्ष्य चाहता हूं): + +- आपकी टीम कितनी बड़ी है? +- आपका देव चक्र कैसा दिखता है? क्या आप वाटरफॉल/स्प्रिंट/फुर्तीली करते हैं? +- क्या समय सीमा के लिए दौड़ आम है? या कोई लचीलापन है? +- आपकी टीम में निर्णय कैसे लिए जाते हैं? +- आप प्रति सप्ताह कितनी बैठकें करते हैं? +- क्या आपको लगता है कि आपके काम का माहौल आपको ध्यान केंद्रित करने में मदद करता है? +- आप किस पर काम कर रहे हैं? +- आपको इसमें क्या पसंद है? +- काम का जीवन कैसा है? +- कार्य/जीवन संतुलन कैसा है? + +## एक बार आपको नौकरी मिल गई + +बधाई हो! + +सीखते रहो। + +आप वास्तव में कभी नहीं कर रहे हैं। + +--- + + *********************************************** *********************************************** * + *********************************************** *********************************************** * + + इस बिंदु के नीचे सब कुछ वैकल्पिक है। प्रवेश स्तर के साक्षात्कार के लिए इसकी आवश्यकता नहीं है। + हालांकि, इनका अध्ययन करके, आप अधिक सीएस अवधारणाओं के बारे में अधिक जानकारी प्राप्त करेंगे, और इसके लिए बेहतर तरीके से तैयार होंगे + कोई भी सॉफ्टवेयर इंजीनियरिंग जॉब। आप बहुत अधिक कुशल सॉफ्टवेयर इंजीनियर होंगे। + + *********************************************** *********************************************** * + *********************************************** *********************************************** * + +--- + +## अतिरिक्त पुस्तकें + यहां हैं ताकि आप किसी ऐसे विषय पर जा सकें जो आपको रुचिकर लगे। + +- [यूनिक्स प्रोग्रामिंग पर्यावरण](https://www.amazon.com/dp/013937681X) + - एक बूढ़ी लेकिन एक गुडी +- [लिनक्स कमांड लाइन: एक पूर्ण परिचय](https://www.amazon.com/dp/1593273894/) + - एक आधुनिक विकल्प +- [टीसीपी/आईपी इलस्ट्रेटेड सीरीज](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/gp/product/0596007124/) + - डिजाइन पैटर्न के लिए एक सौम्य परिचय +- [डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंट डी सॉफ़्टवेयर के तत्व](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - उर्फ ​​"गैंग ऑफ़ फोर" पुस्तक, या GOF + - विहित डिजाइन पैटर्न पुस्तक +- [एल्गोरिदम डिजाइन मैनुअल] (http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (स्कीना) + - समीक्षा और समस्या की पहचान के रूप में + - एल्गोरिथम कैटलॉग भाग आपको साक्षात्कार में मिलने वाली कठिनाई के दायरे से बाहर है + - इस पुस्तक के 2 भाग हैं: + - डेटा संरचनाओं और एल्गोरिदम पर कक्षा की पाठ्यपुस्तक + - पेशेवरों: + - एक अच्छी समीक्षा है क्योंकि कोई भी एल्गोरिदम पाठ्यपुस्तक होगी + - उद्योग और शिक्षा जगत में समस्याओं को सुलझाने के उनके अनुभवों की अच्छी कहानियाँ + - सी . में कोड उदाहरण + - दोष: + - सीएलआरएस जितना घना या अभेद्य हो सकता है, और कुछ मामलों में, सीएलआरएस कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है + - अध्याय 7, 8, 9 का पालन करने की कोशिश करना दर्दनाक हो सकता है, क्योंकि कुछ वस्तुओं को अच्छी तरह से समझाया नहीं गया है या मेरे पास जितना दिमाग है उससे अधिक दिमाग की आवश्यकता है + - मुझे गलत मत समझो: मुझे स्कीना, उनकी शिक्षण शैली और तौर-तरीके पसंद हैं, लेकिन मैं स्टोनी ब्रुक सामग्री नहीं हो सकता + - एल्गोरिथम कैटलॉग: + - यही असली कारण है कि आप इस किताब को खरीदते हैं। + - यह पुस्तक एक एल्गोरिथम संदर्भ के रूप में बेहतर है, न कि कुछ ऐसा जिसे आप कवर टू कवर पढ़ते हैं। + - इसे किंडल पर किराए पर ले सकते हैं + - उत्तर: + - [समाधान](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [इरेटा](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [महान कोड लिखें: खंड 1: मशीन को समझना](https://www.amazon.com/Write-Great-Code-Understand-Machine/dp/1593270038) + - पुस्तक 2004 में प्रकाशित हुई थी, और कुछ पुरानी है, लेकिन कंप्यूटर को संक्षेप में समझने के लिए यह एक बढ़िया संसाधन है + - लेखक ने [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) का आविष्कार किया, इसलिए नमक के एक दाने के साथ HLA में उल्लेख और उदाहरण लें। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन असेंबली कैसा दिखता है इसके अच्छे उदाहरण हैं + - आपको एक अच्छी नींव देने के लिए ये अध्याय पढ़ने लायक हैं: + - अध्याय 2 - संख्यात्मक प्रतिनिधित्व + - अध्याय 3 - बाइनरी अंकगणित और बिट संचालन + - अध्याय 4 - फ़्लोटिंग-पॉइंट प्रतिनिधित्व + - अध्याय 5 - चरित्र प्रतिनिधित्व + - अध्याय 6 - स्मृति संगठन और पहुंच + - अध्याय 7 - समग्र डेटा प्रकार और मेमोरी ऑब्जेक्ट + - अध्याय 9 - सीपीयू वास्तुकला + - अध्याय 10 - निर्देश सेट वास्तुकला + - अध्याय 11 - स्मृति वास्तुकला और संगठन +- [एल्गोरिदम का परिचय](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **महत्वपूर्ण:** इस पुस्तक को पढ़ने का केवल सीमित महत्व होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक बेहतरीन समीक्षा है, लेकिन यह आपको अच्छा कोड लिखना नहीं सिखाएगी। आपको एक अच्छे समाधान को कुशलता से कोड करने में सक्षम होना चाहिए + - उर्फ ​​सीएलआर, कभी-कभी सीएलआरएस, क्योंकि स्टीन खेल के लिए देर हो चुकी थी +- [कंप्यूटर आर्किटेक्चर, छठा संस्करण: एक मात्रात्मक दृष्टिकोण] (https://www.amazon.com/dp/0128119055) + - एक अमीर, अधिक अप-टू-डेट (2017) के लिए, लेकिन लंबे समय तक इलाज + +## सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग + +**यदि आपके पास 4+ वर्ष का अनुभव है तो आप सिस्टम डिज़ाइन प्रश्नों की अपेक्षा कर सकते हैं।** + +- कई विषयों और संसाधनों के साथ स्केलेबिलिटी और सिस्टम डिज़ाइन बहुत बड़े विषय हैं, क्योंकि + सॉफ़्टवेयर/हार्डवेयर सिस्टम को डिज़ाइन करते समय विचार करने के लिए बहुत कुछ है जो स्केल कर सकता है। + इस पर काफी समय बिताने की अपेक्षा करें +- विचार: + - मापनीयता + - बड़े डेटा सेट को एकल मानों पर डिस्टिल करें + - एक डेटा सेट को दूसरे में बदलना + - अश्लील रूप से बड़ी मात्रा में डेटा को संभालना + - प्रणाली की रूपरेखा + - सुविधाएँ सेट + - इंटरफेस + - वर्ग पदानुक्रम + - कुछ बाधाओं के तहत एक प्रणाली को डिजाइन करना + - सादगी और मजबूती + - ट्रेडऑफ़ + - प्रदर्शन विश्लेषण और अनुकूलन +- [ ] **यहां शुरू करें**: [सिस्टम डिजाइन प्राइमर](https://github.com/donnemartin/system-design-primer) +- [ ] [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://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [सिस्टम डिज़ाइन इंटरव्यू](https://github.com/checkcheckzz/system-design-interview) - इसमें बहुत सारे संसाधन हैं। लेखों और उदाहरणों के माध्यम से देखें। मैंने उनमें से कुछ को नीचे रखा है +- [ ] [कैसे एक सिस्टम डिजाइन साक्षात्कार में सफलता प्राप्त करें](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/) +- [ ] [संदर्भ स्विच करने में कितना समय लगता है?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [डेटासेंटर में लेन-देन (वीडियो)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [कैप प्रमेय का एक सादा अंग्रेजी परिचय](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [] आम सहमति एल्गोरिदम: + - [ ] पैक्सोस - [पैक्सोस एग्रीमेंट - कंप्यूटरफाइल (वीडियो)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] बेड़ा - [बेड़ा वितरित आम सहमति एल्गोरिथ्म का एक परिचय (वीडियो)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [पढ़ने में आसान पेपर](https://raft.github.io/) + - [ ] [इन्फोग्राफिक] (http://thesecretlivesofdata.com/raft/) +- [ ] [लगातार हैशिंग] (http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [नोएसक्यूएल पैटर्न] (http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [] मापनीयता: + - आपको इन सब की जरूरत नहीं है। बस कुछ ऐसे चुनें जिनमें आपकी रुचि हो। + - [ ] [शानदार अवलोकन (वीडियो)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [] लघु ​​श्रृंखला: + - [क्लोन] (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) + - [ ] [डिस्ट्रिब्यूटेड कंप्यूटिंग की गलतियां समझाया](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [जेफ डीन - Google पर सॉफ्टवेयर सिस्टम बनाना और सीखे गए पाठ (वीडियो)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [स्केल के लिए आर्किटेक्चरिंग सिस्टम का परिचय](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [ऐप इंजन और क्लाउड डेटास्टोर (वीडियो) का उपयोग करके मोबाइल गेम को वैश्विक दर्शकों तक पहुंचाना](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Google प्लैनेट-स्केल इंफ़्रा के लिए प्लैनेट-स्केल इंजीनियरिंग कैसे करता है (वीडियो)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [एल्गोरिदम का महत्व](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [शार्डिंग] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [लंबे गेम के लिए इंजीनियरिंग - एस्ट्रिड एटकिंसन कीनोट (वीडियो)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [30 मिनट में 7 साल के YouTube मापनीयता पाठ](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) + - [वीडियो](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [कैसे पेपैल ने केवल 8VMs का उपयोग करके प्रतिदिन अरबों लेन-देन किया](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -जू.एचटीएमएल) + - [ ] [बड़े डेटासेट में डुप्लीकेट कैसे निकालें](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [जॉन कोवी के साथ एटीसी के पैमाने और इंजीनियरिंग संस्कृति के अंदर एक नज़र (वीडियो)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [व्हाट लेड अमेज़ॉन टू इट्स ओन माइक्रोसर्विसेज आर्किटेक्चर](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [कंप्रेस करना या न करना, यह उबर का सवाल था](https://eng.uber.com/trip-data-squeeze/) + - [ ] [अनुमानित क्वेरी संसाधन का उपयोग कब किया जाना चाहिए?] + - [ ] [एकल डेटासेंटर से 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/2/1/a-patreon-architecture-short.html) + - [ ] [टिंडर: सबसे बड़े अनुशंसा इंजनों में से एक कैसे तय करता है कि आप आगे किसे देखेंगे?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-सबसे बड़ा-सिफारिश-इंजन-de.html) + - [ ] [एक आधुनिक कैश का डिज़ाइन](http://highscalability.com/blog/2016/1/25/design-of-a-आधुनिक-cache.html) + - [ ] [फेसबुक स्केल पर लाइव वीडियो स्ट्रीमिंग](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.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/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) + - [ ] [विलंबता हर जगह है और यह आपको बिक्री पर खर्च करती है - इसे कैसे कुचलें] (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 बिलियन ट्रांजैक्शन ए डे](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) + - [ ] [ईएसपीएन का आर्किटेक्चर स्केल पर - 100,000 दुह नुह नुह्स प्रति सेकेंड पर परिचालन](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -नुह-नुह.एचटीएमएल) + - [ ] सेवाओं को आपस में जोड़ने वाली कुछ तकनीकों के बारे में जानकारी के लिए नीचे "मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम" देखें। + - [ ] ट्विटर: + - [ओ'रेली माईएसक्यूएल सीई 2011: जेरेमी कोल, "@Twitter पर बड़ा और छोटा डेटा" (वीडियो)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [पैमाने पर समयरेखा](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - और भी अधिक के लिए, [वीडियो श्रृंखला](#वीडियो-श्रृंखला) अनुभाग में "बड़े पैमाने पर डेटासेट खनन" वीडियो श्रृंखला देखें +- [ ] सिस्टम डिजाइन प्रक्रिया का अभ्यास करना: कागज पर काम करने की कोशिश करने के लिए यहां कुछ विचार दिए गए हैं, प्रत्येक में कुछ दस्तावेज हैं कि इसे वास्तविक दुनिया में कैसे संभाला गया था: + - समीक्षा करें: [सिस्टम डिज़ाइन प्राइमर](https://github.com/donnemartin/system-design-primer) + - [HiredInTech से सिस्टम डिज़ाइन] (http://www.hiredintech.com/system-design/) + - [चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - बहे: + 1. समस्या और दायरे को समझें: + - साक्षात्कारकर्ता की सहायता से उपयोग के मामलों को परिभाषित करें + - अतिरिक्त सुविधाओं का सुझाव दें + - उन वस्तुओं को हटा दें जिन्हें साक्षात्कारकर्ता दायरे से बाहर मानता है + - मान लें कि उच्च उपलब्धता की आवश्यकता है, उपयोग के मामले के रूप में जोड़ें + 2. बाधाओं के बारे में सोचें: + - पूछें कि प्रति माह कितने अनुरोध हैं + - पूछें कि प्रति सेकंड कितने अनुरोध हैं (वे इसे स्वयंसेवा कर सकते हैं या आपको गणित कर सकते हैं) + - अनुमान पढ़ता है बनाम प्रतिशत लिखता है + - अनुमान लगाते समय 80/20 नियम को ध्यान में रखें + - प्रति सेकंड कितना डेटा लिखा जाता है + - 5 वर्षों में कुल संग्रहण की आवश्यकता + - प्रति सेकंड कितना डेटा पढ़ता है + 3. सार डिजाइन: + - परतें (सेवा, डेटा, कैशिंग) + - इन्फ्रास्ट्रक्चर: लोड बैलेंसिंग, मैसेजिंग + - सेवा को चलाने वाले किसी भी प्रमुख एल्गोरिथम का मोटे तौर पर अवलोकन + - बाधाओं पर विचार करें और समाधान निर्धारित करें + - व्यायाम: + - [एक यादृच्छिक अद्वितीय आईडी जनरेशन सिस्टम डिज़ाइन करें](https://blog.twitter.com/2010/announcing-snowflake) + - [की-वैल्यू डेटाबेस डिज़ाइन करें] (http://www.slideshare.net/dvirsky/introduction-to-redis) + - [तस्वीर साझा करने वाला सिस्टम डिज़ाइन करें](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [एक सिफारिश प्रणाली डिजाइन करें](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [यूआरएल-शॉर्टनर सिस्टम डिज़ाइन करें: ऊपर से कॉपी किया गया] (http://www.hiredintech.com/system-design/the-system-design-process/) + - [एक कैश सिस्टम डिज़ाइन करें](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## अतिरिक्त शिक्षा +मैंने उन्हें एक संपूर्ण सॉफ़्टवेयर इंजीनियर बनने में आपकी सहायता करने के लिए, और कुछ के बारे में जागरूक होने के लिए जोड़ा है + प्रौद्योगिकियों और एल्गोरिदम, तो आपके पास एक बड़ा टूलबॉक्स होगा। + +- ### कंपाइलर्स + - [एक कंपाइलर ~1 मिनट में कैसे काम करता है (वीडियो)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [हार्वर्ड CS50 - कंपाइलर (वीडियो)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [सी++ (वीडियो)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [कंपाइलर ऑप्टिमाइज़ेशन को समझना (C++) (वीडियो)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs और vi(m) + - यूनिक्स-आधारित कोड संपादक से खुद को परिचित करें + - vi (एम): + - [विम 01 के साथ संपादन - इंस्टॉलेशन, सेटअप और मोड (वीडियो)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [वीआईएम एडवेंचर्स](http://vim-adventures.com/) + - 4 वीडियो का सेट: + - [vi/vim संपादक - पाठ 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [vi/vim संपादक - पाठ 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [vi/vim संपादक - पाठ 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [vi/vim संपादक - पाठ 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Emacs के बजाय Vi का उपयोग करना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - एमएसीएस: + - [बेसिक्स Emacs ट्यूटोरियल (वीडियो)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3 का सेट (वीडियो): + - [Emacs Tutorial (शुरुआती) -भाग 1- फ़ाइल कमांड, कट/कॉपी/पेस्ट, कर्सर कमांड](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (शुरुआती) -भाग 2- बफर प्रबंधन, खोज, M-x grep और rgrep मोड](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (शुरुआती) -भाग 3- एक्सप्रेशन, स्टेटमेंट, ~/.emacs फ़ाइल और पैकेज](https://www.youtube.com/watch?v=paSgzPso-yc) + - [ईविल मोड: या, हाउ आई लर्न टू स्टॉप वरीइंग एंड लव Emacs (वीडियो)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Emacs के साथ C प्रोग्राम लिखना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) +- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन द्वारा वीडियो)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) +- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन के नोट्स)](https://systemcrafters.net/emacs-entials/absolute-beginners-guide-to-emacs/) + +- ### यूनिक्स कमांड लाइन टूल्स + - मैंने नीचे दी गई सूची को अच्छे टूल से भरा। + - दे घुमा के + - बिल्ली + - ग्रेपी + - सेडो + - अजीब + - कर्ल या wget + - क्रम से लगाना + - त्रि + - uniq + - [स्ट्रेस] (https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### सूचना सिद्धांत (वीडियो) + - [खान अकादमी](https://www.khanacademy.org/computing/computer-science/informationtheory) + - मार्कोव प्रक्रियाओं के बारे में अधिक जानकारी: + - [कोर मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [कोर इम्प्लीमेंटिंग मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [प्रोजेक्ट = मार्कोव टेक्स्ट जेनरेशन वॉक थ्रू](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - नीचे MIT 6.050J सूचना और एन्ट्रापी श्रृंखला में और देखें + +- ### समता और हैमिंग कोड (वीडियो) + - [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [समता](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - हैमिंग कोड: + - [त्रुटि का पता लगाना](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [त्रुटि सुधार](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [त्रुटि जांच](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### एन्ट्रॉपी + - नीचे दिए गए वीडियो भी देखें + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - [सूचना सिद्धांत, क्लाउड शैनन, एन्ट्रॉपी, अतिरेक, डेटा संपीड़न और बिट्स (वीडियो)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### क्रिप्टोग्राफी + - नीचे दिए गए वीडियो भी देखें + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - [खान अकादमी सीरीज](https://www.khanacademy.org/computing/computer-science/cryptography) + - [क्रिप्टोग्राफी: हैश फंक्शन](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [क्रिप्टोग्राफी: एन्क्रिप्शन](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### संपीड़न + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - कंप्यूटरफाइल (वीडियो): + - [संपीड़न](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [संपीड़न में एन्ट्रापी](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [उल्टा पेड़ (हफमैन ट्री)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [अतिरिक्त बिट्स/ट्रिट्स - हफ़मैन ट्री](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [टेक्स्ट में एलिगेंट कंप्रेशन (LZ 77 मेथड)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [पाठ संपीड़न संभावनाओं को पूरा करता है](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [कंप्रेसर हेड वीडियो](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(वैकल्पिक) Google डेवलपर लाइव: GZIP पर्याप्त नहीं है!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### कंप्यूटर सुरक्षा + - [एमआईटी (23 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [परिचय, थ्रेट मॉडल](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [अपहरण हमलों को नियंत्रित करें](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [बफ़र ओवरफ़्लो एक्सप्लॉइट्स एंड डिफेंस](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [विशेषाधिकार पृथक्करण](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [क्षमता](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [सैंडबॉक्सिंग नेटिव कोड](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [वेब सुरक्षा मॉडल](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [वेब एप्लिकेशन सुरक्षित करना](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [प्रतीकात्मक निष्पादन](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क सुरक्षा](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क प्रोटोकॉल](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [साइड-चैनल अटैक](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### कचरा संग्रहण + - [पायथन में जीसी (वीडियो)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [डीप डाइव जावा: कचरा संग्रह अच्छा है!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [डीप डाइव पायथन: सीपीथॉन में कचरा संग्रह (वीडियो)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### समानांतर प्रोग्रामिंग + - [कोर्सेरा (स्काला)](https://www.coursera.org/learn/parprog1/home/week/1) + - [उच्च प्रदर्शन समानांतर कंप्यूटिंग के लिए कुशल पायथन (वीडियो)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम + - [बचत](https://thrift.apache.org/) + - [ट्यूटोरियल](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [प्रोटोकॉल बफ़र्स](https://developers.google.com/protocol-buffers/) + - [ट्यूटोरियल](https://developers.google.com/protocol-buffers/docs/tutorials) + - [जीआरपीसी] (http://www.grpc.io/) + - [Java Developers के लिए gRPC 101 (वीडियो)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [रेडिस] (http://redis.io/) + - [ट्यूटोरियल] (http://try.redis.io/) + - [अमेज़ॅन एसक्यूएस (कतार)] (https://aws.amazon.com/sqs/) + - [अमेज़ॅन एसएनएस (पब-सब)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [आरंभ करें](https://www.rabbitmq.com/getstarted.html) + - [अजवाइन](http://www.celeryproject.org/) + - [अजवाइन के साथ पहला कदम](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [परिचय - मैनुअल पढ़ें](http://zeromq.org/intro:read-the-manual) + - [एक्टिवएमक्यू] (http://activemq.apache.org/) + - [काफ्का](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [एव्रो](https://avro.apache.org/) + +- ### ए* + - [एक खोज एल्गोरिथम](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ए* पाथफाइंडिंग (E01: एल्गोरिथम स्पष्टीकरण) (वीडियो)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### फास्ट फूरियर ट्रांसफॉर्म + - [फूरियर ट्रांसफॉर्म के लिए एक इंटरएक्टिव गाइड](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [फूरियर रूपांतरण क्या है? इसका उपयोग किस लिए किया जाता है?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [फूरियर रूपांतरण क्या है? (वीडियो)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [फूट डालो और जीतो: एफएफटी (वीडियो)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [एफएफटी को समझना](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### ब्लूम फ़िल्टर + - एम बिट्स और के हैशिंग फ़ंक्शन के साथ ब्लूम फ़िल्टर को देखते हुए, सम्मिलन और सदस्यता परीक्षण दोनों ओ (के) हैं + - [ब्लूम फिल्टर (वीडियो)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [ब्लूम फिल्टर | विशाल डेटासेट का खनन | स्टैनफोर्ड यूनिवर्सिटी (वीडियो)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [ट्यूटोरियल](http://billmill.org/bloomfilter-tutorial/) + - [ब्लूम फ़िल्टर ऐप कैसे लिखें](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### हाइपरलॉग लॉग + - [केवल 1.5KB मेमोरी का उपयोग करके एक अरब विशिष्ट वस्तुओं की गणना कैसे करें](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -ऑब्जेक्ट्स-us.html) + +- ### इलाके-संवेदनशील हैशिंग + - दस्तावेजों की समानता निर्धारित करने के लिए प्रयुक्त + - MD5 या SHA के विपरीत जिनका उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या 2 दस्तावेज़/स्ट्रिंग बिल्कुल समान हैं + - [सिम्हाशिंग (उम्मीद है) मेड सिंपल](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### वैन एम्दे बोस पेड़ + - [फूट डालो और जीतो: वैन एम्दे बोस ट्री (वीडियो)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [एमआईटी व्याख्यान नोट्स](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) + +- ### संवर्धित डेटा संरचनाएं + - [सीएस 61बी लेक्चर 39: ऑगमेंटिंग डेटा स्ट्रक्चर](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### संतुलित खोज पेड़ + - कम से कम एक प्रकार के संतुलित बाइनरी ट्री को जानें (और जानें कि इसे कैसे लागू किया जाता है): + - "संतुलित खोज वृक्षों में, AVL और 2/3 वृक्ष अब अप्रचलित हैं, और लाल-काले वृक्ष अधिक लोकप्रिय प्रतीत होते हैं। + एक विशेष रूप से दिलचस्प स्व-व्यवस्थित डेटा संरचना स्प्ले ट्री है, जो रोटेशन का उपयोग करती है + किसी भी एक्सेस की गई कुंजी को रूट पर ले जाने के लिए।" - स्कीना + - इनमें से मैंने एक स्प्ले ट्री लगाने का फैसला किया। मैंने जो पढ़ा है, उससे आप लागू नहीं करेंगे a + आपके साक्षात्कार में संतुलित खोज वृक्ष। लेकिन मैं एक को कोडिंग करने के लिए एक्सपोजर चाहता था + और चलो इसका सामना करते हैं, स्प्ले ट्री मधुमक्खी के घुटने हैं। मैंने बहुत सारे लाल-काले पेड़ कोड पढ़े हैं + - स्प्ले ट्री: सम्मिलित करें, खोजें, कार्यों को हटाएं + यदि आप लाल/काले पेड़ को लागू करना समाप्त कर देते हैं तो इन्हें आजमाएं: + - खोज और सम्मिलन कार्य, हटाना छोड़ना + - मैं बी-ट्री के बारे में अधिक जानना चाहता हूं क्योंकि यह बहुत बड़े डेटा सेट के साथ इतने व्यापक रूप से उपयोग किया जाता है + - [सेल्फ बैलेंसिंग बाइनरी सर्च ट्री](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **एवीएल पेड़** + - प्रयोग में: + मैं जो कह सकता हूं, उससे व्यवहार में इनका अधिक उपयोग नहीं किया जाता है, लेकिन मैं देख सकता था कि वे कहाँ होंगे: + एवीएल पेड़ ओ (लॉग एन) खोज, सम्मिलन और हटाने का समर्थन करने वाली एक और संरचना है। यह अधिक कठोर है + लाल-काले पेड़ों की तुलना में संतुलित, धीमी प्रविष्टि और हटाने के लिए अग्रणी लेकिन तेजी से पुनर्प्राप्ति। यह बनाता है + डेटा संरचनाओं के लिए आकर्षक जिसे एक बार बनाया जा सकता है और पुनर्निर्माण के बिना लोड किया जा सकता है, जैसे भाषा + शब्दकोश (या प्रोग्राम डिक्शनरी, जैसे असेंबलर या दुभाषिया के ऑपकोड) + - [MIT AVL ट्री / AVL सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [एवीएल पेड़ (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/Qq5E0/avl-trees) + - [एवीएल ट्री इंप्लीमेंटेशन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/PKEBC/avl-tree-implementation) + - [स्प्लिट एंड मर्ज](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **स्प्ले ट्री** + - प्रयोग में: + स्प्ले ट्री आमतौर पर कैश, मेमोरी एलोकेटर, राउटर, कचरा संग्रहकर्ता के कार्यान्वयन में उपयोग किया जाता है, + डेटा संपीड़न, रस्सियों (लंबे पाठ स्ट्रिंग्स के लिए प्रयुक्त स्ट्रिंग का प्रतिस्थापन), Windows NT में (वर्चुअल मेमोरी में, + नेटवर्किंग और फाइल सिस्टम कोड) आदि + - [सीएस 61बी: स्प्ले ट्रीज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - एमआईटी व्याख्यान: स्प्ले पेड़: + - बहुत मैथली हो जाता है, लेकिन आखिरी 10 मिनट जरूर देखें। + - [वीडियो](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **लाल/काले पेड़** + - ये एक 2-3 पेड़ का अनुवाद हैं (नीचे देखें)। + - प्रयोग में: + लाल-काले पेड़ प्रविष्टि समय, विलोपन समय और खोज समय के लिए सबसे खराब स्थिति की गारंटी देते हैं। + यह न केवल उन्हें समय-संवेदी अनुप्रयोगों जैसे रीयल-टाइम अनुप्रयोगों में मूल्यवान बनाता है, + लेकिन यह उन्हें अन्य डेटा संरचनाओं में मूल्यवान बिल्डिंग ब्लॉक बनाता है जो सबसे खराब स्थिति की गारंटी प्रदान करते हैं; + उदाहरण के लिए, कम्प्यूटेशनल ज्यामिति में उपयोग की जाने वाली कई डेटा संरचनाएं लाल-काले पेड़ों पर आधारित हो सकती हैं, और + वर्तमान लिनक्स कर्नेल में प्रयुक्त पूर्णतः फेयर शेड्यूलर लाल-काले पेड़ों का उपयोग करता है। जावा के संस्करण 8 में, + संग्रह हैश मैप को इस तरह संशोधित किया गया है कि लिंक्डलिस्ट का उपयोग करने के बजाय समान तत्वों को खराब के साथ संग्रहीत करने के लिए + हैशकोड, एक लाल-काले पेड़ का उपयोग किया जाता है + - [अदुनी - एल्गोरिथम - लेक्चर 4 (लिंक जंप टू स्टार्टिंग पॉइंट) (वीडियो)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [अदुनी - एल्गोरिदम - व्याख्यान 5 (वीडियो)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [रेड-ब्लैक ट्री](https://en.wikipedia.org/wiki/Red%E2%80%93ब्लैक_ट्री) + - [एन इंट्रोडक्शन टू बाइनरी सर्च एंड रेड ब्लैक ट्री](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 पेड़ खोजें** + - प्रयोग में: + धीमी खोजों की कीमत पर 2-3 पेड़ों में तेजी से सम्मिलित होते हैं (चूंकि ऊंचाई एवीएल पेड़ों की तुलना में अधिक है)। + - आप 2-3 पेड़ का प्रयोग बहुत ही कम करेंगे क्योंकि इसके कार्यान्वयन में विभिन्न प्रकार के नोड्स शामिल हैं। इसकी जगह लोग लाल काले पेड़ों का इस्तेमाल करते हैं। + - [23-वृक्ष अंतर्ज्ञान और परिभाषा (वीडियो)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23-ट्री का बाइनरी व्यू](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 पेड़ (छात्र पाठ) (वीडियो)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 पेड़ (उर्फ 2-4 पेड़)** + - प्रयोग में: + प्रत्येक 2-4 पेड़ के लिए, समान क्रम में डेटा तत्वों के साथ संबंधित लाल-काले पेड़ होते हैं। सम्मिलन और विलोपन + 2-4 पेड़ों पर संचालन भी लाल-काले पेड़ों में रंग-फ्लिपिंग और घुमाव के बराबर है। इससे 2-4 पेड़ बन जाते हैं + लाल-काले पेड़ों के पीछे के तर्क को समझने के लिए महत्वपूर्ण उपकरण, और यही कारण है कि कई परिचयात्मक एल्गोरिथम ग्रंथ परिचय देते हैं + लाल-काले पेड़ों के ठीक पहले 2-4 पेड़, भले ही **2-4 पेड़ अक्सर व्यवहार में उपयोग नहीं किए जाते**। + - [सीएस 61बी व्याख्यान 26: संतुलित खोज पेड़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [नीचे ऊपर 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ऊपर से नीचे 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) पेड़** + - नोट: एन या के शाखा कारक है (अधिकतम शाखाएं) + - बाइनरी ट्री एक 2-एरी ट्री है, ब्रांचिंग फैक्टर के साथ = 2 + - 2-3 पेड़ हैं 3-आर्य + - [के-आरी ट्री](https://en.wikipedia.org/wiki/K-ary_tree) + + - **बी-पेड़** + - मजेदार तथ्य: यह एक रहस्य है, लेकिन बी बोइंग, बैलेंस्ड या बायर (सह-आविष्कारक) के लिए खड़ा हो सकता है। + - प्रयोग में: + बी-पेड़ व्यापक रूप से डेटाबेस में उपयोग किए जाते हैं। अधिकांश आधुनिक फाइल सिस्टम बी-पेड़ (या वेरिएंट) का उपयोग करते हैं। निम्न के अलावा + डेटाबेस में इसका उपयोग, बी-पेड़ का उपयोग फाइल सिस्टम में भी किया जाता है ताकि मनमाने ढंग से त्वरित यादृच्छिक पहुंच की अनुमति मिल सके + किसी विशेष फ़ाइल में ब्लॉक करें। मूल समस्या फ़ाइल ब्लॉक i एड्रेस को डिस्क ब्लॉक में बदल रही है + (या शायद एक सिलेंडर-हेड-सेक्टर के लिए) पता + - [बी-ट्री](https://en.wikipedia.org/wiki/B-tree) + - [बी-ट्री डेटास्ट्रक्चर](http://btechsmartclass.com/data_structures/b-trees.html) + - [बी-पेड़ों का परिचय (वीडियो)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [बी-ट्री डेफिनिशन एंड इंसर्शन (वीडियो)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [बी-ट्री डिलीशन (वीडियो)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - मेमोरी पदानुक्रम मॉडल (वीडियो)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - कैशे-अनभिज्ञ बी-पेड़ों को शामिल करता है, बहुत ही रोचक डेटा संरचनाएं + - पहले 37 मिनट बहुत तकनीकी हैं, छोड़े जा सकते हैं (बी ब्लॉक आकार, कैश लाइन आकार है) + + +- ### के-डी पेड़ + - एक आयत या उच्च आयाम वाली वस्तु में अंकों की संख्या खोजने के लिए बढ़िया + - k-निकटतम पड़ोसियों के लिए एक अच्छा फिट + - [केएनएन के-डी ट्री एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### सूचियां छोड़ें + - "ये कुछ हद तक एक पंथ डेटा संरचना के हैं" - स्कीना + - [रैंडमाइज़ेशन: स्किप लिस्ट (वीडियो)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [एनिमेशन और थोड़ा और विवरण के लिए](https://en.wikipedia.org/wiki/Skip_list) + +- ### नेटवर्क प्रवाह + - [फोर्ड-फुलकरसन 5 मिनट में — स्टेप बाय स्टेप उदाहरण (वीडियो)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [फोर्ड-फुलकर्सन एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [नेटवर्क फ़्लो (वीडियो)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### अलग सेट और संघ खोजें + - [यूसीबी 61बी - डिसजॉइंट सेट; छँटाई और चयन (वीडियो)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [सेजविक एल्गोरिथम - यूनियन-फाइंड (6 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### फास्ट प्रोसेसिंग के लिए गणित + - [पूर्णांक अंकगणित, करात्सुबा गुणन (वीडियो)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [चीनी अवशेष प्रमेय (क्रिप्टोग्राफी में प्रयुक्त) (वीडियो)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### ट्रीप + - बाइनरी सर्च ट्री और ढेर का संयोजन + - [ट्रीप](https://en.wikipedia.org/wiki/Treap) + - [डेटा संरचनाएं: समझाया गया जाल (वीडियो)](https://www.youtube.com/watch?v=6podLUYinH8) + - [सेट ऑपरेशंस में एप्लिकेशन](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### रैखिक प्रोग्रामिंग (वीडियो) + - [रैखिक प्रोग्रामिंग](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [न्यूनतम लागत ढूँढना](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [अधिकतम मूल्य ढूँढना](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [पायथन के साथ रैखिक समीकरण हल करें - सिम्पलेक्स एल्गोरिथम](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### ज्यामिति, उत्तल पतवार (वीडियो) + - [ग्राफ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ज्यामितीय एल्गोरिदम: ग्राहम और जार्विस - व्याख्यान 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [फूट डालो और जीतो: उत्तल हल, माध्यिका खोज](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### डिस्क्रीट मैथ + - [कंप्यूटर साइंस 70, 001 - स्प्रिंग 2015 - असतत गणित और संभाव्यता सिद्धांत](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [शाई सिमोंसन द्वारा असतत गणित (19 वीडियो)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [आईआईटी रोपड़ एनपीटीईएल द्वारा असतत गणित](https://nptel.ac.in/courses/106/106/106106183/) + +--- + +## कुछ विषयों पर अतिरिक्त विवरण + + मैंने इन्हें ऊपर प्रस्तुत किए गए कुछ विचारों को सुदृढ़ करने के लिए जोड़ा, लेकिन उन्हें शामिल नहीं करना चाहता था + ऊपर क्योंकि यह बहुत अधिक है। किसी विषय पर इसे ज़्यादा करना आसान है। + आप इस सदी में काम पर रखना चाहते हैं, है ना? + +- **ठोस** + - [ ] [बॉब मार्टिन सॉलिड प्रिंसिपल्स ऑफ़ ऑब्जेक्ट ओरिएंटेड एंड एजाइल डिज़ाइन (वीडियो)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] एस - [एकल उत्तरदायित्व सिद्धांत](http://www.oodesign.com/single-responsibility-principle.html) | [प्रत्येक वस्तु के लिए एकल जिम्मेदारी](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [अधिक स्वाद](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] ओ - [खुला/बंद सिद्धांत](http://www.oodesign.com/open-close-principle.html) | [उत्पादन स्तर पर वस्तुएं विस्तार के लिए तैयार हैं लेकिन संशोधन के लिए नहीं](https://en.wikipedia.org/wiki/Open/closed_principle) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYhlUzODc) + - [ ] एल - [लिस्कोव प्रतिस्थापन सिद्धांत](http://www.oodesign.com/liskov-s-substitute-principle.html) | [आधार वर्ग और व्युत्पन्न वर्ग 'आईएस ए' सिद्धांत का पालन करते हैं](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitute-principle) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTMlh&hl&hl) + - [ ] मैं - [इंटरफ़ेस अलगाव सिद्धांत] (http://www.oodesign.com/interface-segregation-principle.html) | ग्राहकों को उन इंटरफेस को लागू करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते हैं + - [5 मिनट में इंटरफ़ेस अलग करने का सिद्धांत (वीडियो)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYm) + - [ ] डी - [निर्भरता उलटा सिद्धांत] (http://www.oodesign.com/dependency-inversion-principle.html) | वस्तुओं की संरचना में निर्भरता कम करें। + - [निर्भरता उलटा सिद्धांत क्यों है और यह महत्वपूर्ण क्यों है](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=hi + - **संघ-ढूंढें** + - [अवलोकन](https://www.coursera.org/learn/data-structs/lecture/JssSY/overview) + - [बेवकूफ कार्यान्वयन](https://www.coursera.org/learn/data-structs/lecture/EM5D0/naive-implementations) + - [पेड़](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [यूनियन बाय रैंक](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [पथ संपीड़न](https://www.coursera.org/learn/data-structs/lecture/Q9CVI/path-compression) + - [विश्लेषण विकल्प](https://www.coursera.org/learn/data-structs/lecture/GQQLN/analysis-Optional) + +- **अधिक गतिशील प्रोग्रामिंग** (वीडियो) + - [6.006: डायनेमिक प्रोग्रामिंग I: फिबोनाची, सबसे छोटे रास्ते](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: डायनामिक प्रोग्रामिंग II: टेक्स्ट जस्टिफिकेशन, ब्लैकजैक](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: डीपी III: कोष्ठक, संपादित दूरी, नॅप्सैक](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: डीपी IV: गिटार फिंगरिंग, टेट्रिस, सुपर मारियो ब्रदर्स] (https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: डायनामिक प्रोग्रामिंग और उन्नत डीपी](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: डायनामिक प्रोग्रामिंग: ऑल-पेयर्स शॉर्टेस्ट पाथ्स](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: डायनामिक प्रोग्रामिंग (छात्र पाठ)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **उन्नत ग्राफ़ प्रोसेसिंग** (वीडियो) + - [तुल्यकालिक वितरित एल्गोरिदम: समरूपता-ब्रेकिंग। सबसे छोटे रास्ते फैले पेड़](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [एसिंक्रोनस डिस्ट्रिब्यूटेड एल्गोरिथम: सबसे छोटे पथ फैले पेड़](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) +- एमआईटी **संभाव्यता** (मैथी, और धीरे-धीरे जाएं, जो मैथी चीजों के लिए अच्छा है) (वीडियो): + - [MIT 6.042J - प्रायिकता परिचय](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - सशर्त संभावना](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [एमआईटी 6.042जे - इंडिपेंडेंस](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - रैंडम वैरिएबल](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - उम्मीद I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - उम्मीद II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - बड़े विचलन](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - रैंडम वॉक](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [साइमनसन: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **स्ट्रिंग मिलान** + - राबिन-कार्प (वीडियो): + - [राबिन कार्प्स एल्गोरिथम](https://www.coursera.org/lecture/data-structs/rabin-karps-algorithm-c0Qkw) + - [प्रीकंप्यूटिंग](https://www.coursera.org/learn/data-structs/lecture/nYrc8/optimization-precomputation) + - [ऑप्टिमाइज़ेशन: क्रियान्वयन और विश्लेषण](https://www.coursera.org/learn/data-structs/lecture/h4ZLc/optimization-implementation-and-analysis) + - [टेबल डबलिंग, कार्प-राबिन](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [रोलिंग हैश, अमूर्त विश्लेषण](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - नुथ-मॉरिस-प्रैट (केएमपी): + - [टी द नुथ-मॉरिस-प्रैट (केएमपी) स्ट्रिंग मैचिंग एल्गोरिथम](https://www.youtube.com/watch?v=5i7oKodCRJo) + - बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम + - [बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [उन्नत स्ट्रिंग खोज बॉयर-मूर-हॉर्सपूल एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [पाठ्यक्रम: स्ट्रिंग्स पर एल्गोरिदम](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - बहुत अच्छी शुरुआत होती है, लेकिन जब तक यह केएमपी से आगे निकल जाता है तब तक यह जरूरत से ज्यादा जटिल हो जाता है + - कोशिशों की अच्छी व्याख्या + - छोड़ा जा सकता है +- **क्रमबद्ध करना** + + - स्टैनफोर्ड छँटाई पर व्याख्यान: + - [व्याख्यान 15 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [व्याख्यान 16 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - शाई सिमोंसन, [Aduni.org](http://www.aduni.org/): + - [एल्गोरिदम - छँटाई - व्याख्यान 2 (वीडियो)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [एल्गोरिदम - सॉर्टिंग II - लेक्चर 3 (वीडियो)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - स्टीवन स्कीएना छँटाई पर व्याख्यान: + - [CSE373 2020 - मर्जसॉर्ट/क्विकसॉर्ट (वीडियो)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - लीनियर सॉर्टिंग (वीडियो)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +## वीडियो श्रृंखला + +वापस बैठो और आनंद लो। + +- [व्यक्तिगत गतिशील प्रोग्रामिंग समस्याओं की सूची (प्रत्येक संक्षिप्त है)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 आर्किटेक्चर, असेंबली, एप्लिकेशन (11 वीडियो)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 रैखिक बीजगणित, वसंत 2005 (35 वीडियो)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [उत्कृष्ट - एमआईटी कैलकुलस पर दोबारा गौर किया गया: सिंगल वेरिएबल कैलकुलस](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [एल्गोरिदम डिज़ाइन मैनुअल से स्कीएना व्याख्यान - CSE373 2020 - एल्गोरिदम का विश्लेषण (26 वीडियो)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) + +- [यूसी बर्कले 61बी (स्प्रिंग 2014): डेटा संरचनाएं (25 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [यूसी बर्कले 61बी (पतन 2006): डेटा संरचनाएं (39 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [यूसी बर्कले 61सी: मशीन संरचनाएं (26 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: UML और Java का उपयोग करने वाला सॉफ़्टवेयर डेवलपर (21 वीडियो)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [MIT 6.004: संगणना संरचनाएं (49 वीडियो)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [कार्नेगी मेलन - कंप्यूटर आर्किटेक्चर लेक्चर (39 वीडियो)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: एल्गोरिदम का परिचय (47 वीडियो)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: कंप्यूटर सिस्टम इंजीनियरिंग (22 वीडियो)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 आर्टिफिशियल इंटेलिजेंस, फॉल 2010 (30 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: कंप्यूटर साइंस के लिए गणित, फॉल 2010 (25 वीडियो)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: एल्गोरिदम का डिज़ाइन और विश्लेषण (34 वीडियो)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: उन्नत डेटा संरचनाएं (22 वीडियो)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: उन्नत एल्गोरिदम, स्प्रिंग 2016 (24 वीडियो)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [हार्वर्ड COMPSCI 224: उन्नत एल्गोरिदम (25 वीडियो)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 कंप्यूटर सिस्टम सुरक्षा, फॉल 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [स्टैनफोर्ड: प्रोग्रामिंग प्रतिमान (27 वीडियो)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [क्रिस्टोफ पार द्वारा क्रिप्टोग्राफी का परिचय](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [स्लाइड और समस्या सेट के साथ पाठ्यक्रम वेबसाइट] (http://www.crypto-textbook.com/) + +- [खनन बड़े पैमाने पर डेटासेट - स्टैनफोर्ड यूनिवर्सिटी (94 वीडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [शारदा हर्के द्वारा ग्राफ सिद्धांत (67 वीडियो)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## कंप्यूटर विज्ञान पाठ्यक्रम + +- [ऑनलाइन सीएस पाठ्यक्रम की निर्देशिका](https://github.com/open-source-society/computer-science) +- [सीएस पाठ्यक्रमों की निर्देशिका (कई ऑनलाइन व्याख्यान के साथ)](https://github.com/prakhar1989/awesome-courses) + +## एल्गोरिदम कार्यान्वयन + +- [प्रिंसटन विश्वविद्यालय द्वारा एकाधिक एल्गोरिदम कार्यान्वयन](https://algs4.cs.princeton.edu/code) + + +## कागजात + +- [क्लासिक पेपर पसंद हैं?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: अनुक्रमिक प्रक्रियाओं का संचार](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [गो में लागू](https://godoc.org/github.com/thomas11/csp) +- [2003: द गूगल फाइल सिस्टम](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 में कोलोसस द्वारा प्रतिस्थापित +- [2004: MapReduce: बड़े समूहों पर सरलीकृत डेटा प्रोसेसिंग]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - ज्यादातर क्लाउड डेटाफ्लो द्वारा प्रतिस्थापित किया गया? +- [2006: बिगटेबल: संरचित डेटा के लिए एक वितरित भंडारण प्रणाली](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: लूजली-कपल्ड डिस्ट्रिब्यूटेड सिस्टम्स के लिए चब्बी लॉक सर्विस](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: डायनमो: अमेज़ॅन का अत्यधिक उपलब्ध की-वैल्यू स्टोर] (http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - डायनमो पेपर ने नोएसक्यूएल क्रांति की शुरुआत की +- [2007: प्रत्येक प्रोग्रामर को मेमोरी के बारे में क्या पता होना चाहिए (बहुत लंबा, और लेखक कुछ वर्गों को छोड़ने के लिए प्रोत्साहित करता है)](https://www.akkadia.org/drepper/cpuemory.pdf) +- 2012: एड्रेस सैनिटाइज़र: एक तेज़ पता सैनिटी चेकर: + - [कागज](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [वीडियो] (https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: स्पैनर: Google का वैश्विक रूप से वितरित डेटाबेस: + - [कागज](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [वीडियो] (https://www.usenix.org/node/170855) +- [2015: Google पर सतत पाइपलाइन](http://static.googleusercontent.com/media/research.google.com/hi//pubs/archive/43790.pdf) +- [2015: बड़े पैमाने पर उच्च उपलब्धता: विज्ञापनों के लिए Google के डेटा इन्फ्रास्ट्रक्चर का निर्माण](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: डेवलपर्स कैसे कोड की खोज करते हैं: एक केस स्टडी](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- अधिक पेपर: [1,000 पेपर](https://github.com/0voice/computer_expert_paper) + +## लाइसेंस + +[CC-BY-SA-4.0](./LICENSE.txt) From 63160054098251d0840f550d9139eaea2e4d2e4e Mon Sep 17 00:00:00 2001 From: Kapil Chauhan Date: Wed, 31 Aug 2022 06:33:36 +0530 Subject: [PATCH 660/857] Updating Readme-hi.md It has many words which were written in english, so I removed them. --- translations/README-hi.md | 3327 ++++++++++++++++++++----------------- 1 file changed, 1777 insertions(+), 1550 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 0828ab1787..41aef6e591 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1,17 +1,69 @@ -# कोडिंग साक्षात्कार विश्वविद्यालय ->मैने मूल रूप से इसे एक सॉफ़्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी सी सूची के रूप में बनाया था, लेकिन यह आज एक बड़ी सूची में बढ़ी है। इस अध्ययन योजना के माध्यम से जाने के बाद, [मुझे अमेज़ॅन पर सॉफ़्टवेयर डेवलपमेंट इंजीनियर के रूप में काम पर रखा गया है !](https://startupnextdoor.com/ive-been-acquired-by->amazon/?src=ciu) आपको संभवतः जितना मैंने किया उतना नहीं पढ़ना होगा। वैसे भी, आपको जो भी चाहिए वह यहां है +# कोडिंग इंटरव्यू यूनिवर्सिटी + +> मैंने मूल रूप से इसे एक सॉफ्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी टू-डू सूची के रूप में बनाया था, +> लेकिन यह उस बड़ी सूची तक बढ़ गया है जिसे आप आज देखते हैं। इस अध्ययन योजना को पढ़ने के बाद, [मुझे काम पर रखा गया +> Amazon में एक सॉफ्टवेयर डेवलपमेंट इंजीनियर के रूप में](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> आपको शायद उतना अध्ययन नहीं करना पड़ेगा जितना मैंने किया था। वैसे भी, आपकी जरूरत की हर चीज यहां है। +> +> मैंने कई महीनों तक प्रतिदिन लगभग 8-12 घंटे अध्ययन किया। यह मेरी कहानी है: [मैंने एक Google साक्षात्कार के लिए 8 महीने तक पूर्णकालिक अध्ययन क्यों किया](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-साक्षात्कार-cc662ce9bb13) +> +> **कृपया ध्यान दें:** आपको मेरे जितना अध्ययन करने की आवश्यकता नहीं होगी। मैंने उन चीजों पर बहुत समय बर्बाद किया जो मुझे जानने की जरूरत नहीं थी। उसके बारे में अधिक जानकारी नीचे। मैं आपका कीमती समय बर्बाद किए बिना वहां पहुंचने में आपकी मदद करूंगा। > ->यहां सूचीबद्ध आइटम आपको किसी साफ्टवेयर कंपनी के बारे में साक्षात्कार में अच्छी तरह से तैयार करेंगे, जिनमें दिग्गज, अमेज़ॅन, फेसबुक, गूगल या माइक्रोसॉफ्ट शामिल हैं। +> यहां सूचीबद्ध आइटम आपको किसी भी सॉफ्टवेयर कंपनी में तकनीकी साक्षात्कार के लिए अच्छी तरह से तैयार करेंगे, +> दिग्गजों सहित: अमेज़ॅन, फेसबुक, गूगल और माइक्रोसॉफ्ट। > ->आपको शुभकामनाएं! +> *आपको शुभकामनाएं!* + +
+ +अनुवाद: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + +
+ +
+ +अनुवाद जारी है +: + +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) + +

- Dev environments built for the cloud + क्लाउड के लिए बनाया गया देव वातावरण

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


-## यह क्या है? -यह एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर को वेब डेवलपर (स्वयं सिखाया, कोई सीएस डिग्री नहीं) से जाने के लिए मेरी बहु-महीने की अध्ययन योजना है +## What is it? -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +![ +व्हाइटबोर्ड पर कोडिंग - एचबीओ की सिलिकॉन वैली से](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -यह नए सॉफ़्टवेयर इंजीनियरों या सॉफ़्टवेयर / वेब विकास से सॉफ़्टवेयर इंजीनियरिंग (जहां कंप्यूटर साइंस ज्ञान आवश्यक है) से स्विच करने के लिए है। यदि आपके पास कई वर्षों का अनुभव है और कई वर्षों के सॉफ्टवेयर इंजीनियरिंग अनुभव का दावा कर रहे हैं, तो एक कठिन साक्षात्कार की अपेक्षा करें। -यदि आपके पास सॉफ्टवेयर / वेब विकास के कई सालों का अनुभव है, तो ध्यान दें कि गूगल, अमेज़ॅन, फेसबुक और माइक्रोसॉफ्ट जैसी बड़ी सॉफ्टवेयर कंपनियों की दृष्टि में सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर/वेब डेवलपमेंट से भिन्न है , और उन्हें कंप्यूटर साइंस ज्ञान की आवश्यकता होती है। +एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है। -यदि आप एक विश्वसनीय इंजीनियर या सिस्टम इंजीनियर बनना चाहते हैं, तो वैकल्पिक सूची (नेटवर्किंग, सुरक्षा) से अधिक जानें। +**Required:** + +* कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि) +* धैर्य +* समय +ध्यान दें कि यह **सॉफ्टवेयर इंजीनियरिंग** के लिए एक अध्ययन योजना है, न कि वेब विकास के लिए। Google, Amazon जैसी बड़ी सॉफ्टवेयर कंपनियां, +फेसबुक और माइक्रोसॉफ्ट सॉफ्टवेयर इंजीनियरिंग को वेब डेवलपमेंट से अलग मानते हैं। उदाहरण के लिए, अमेज़ॅन के पास है +फ्रंटएंड इंजीनियर्स (FEE) और सॉफ्टवेयर डेवलपमेंट इंजीनियर्स (SDE)। ये 2 अलग-अलग भूमिकाएँ और साक्षात्कार हैं +वे समान नहीं होंगे, क्योंकि प्रत्येक की अपनी योग्यताएं हैं। इन कंपनियों को कंप्यूटर विज्ञान के ज्ञान की आवश्यकता होती है +सॉफ्टवेयर विकास / इंजीनियरिंग भूमिकाएँ। --- -## अनुक्रमणिका -- [यह क्या है?](#यह-क्या-है ) -- [इसका उपयोग क्यों करे?](#इसका-उपयोग-क्यू-करे) -- [इसका कैसे उपयोग करे?](#इसका-कैसे-उपयोग-करे) -- [गूगल की मुद्रा में आ जाएँ](#गूगल-की-मुद्रा-में-आ-जाएँ) -- [क्या मुझे नौकरी मिली?](#क्या-मुझे-नौकरी-मिली) -- [मेरे साथ चले](#मेरे-साथ-चले) -- [अपने आप को कमजोर मत समझो ](#अपने-आप-को-कमजोर-मत-समझो ) -- [गूगल के बारे में](#गूगल-के-बारे-में) -- [विडियो संसाधनों के बारे में](#विडियो-संसाधनों-के-बारे-में) -- [इंटरव्यू प्रकिया और साधारण इंटरव्यू तयारी](#interview-process--general-interview-prep) -- [इंटरव्यू के लिए एक भाषा चुने](#pick-one-language-for-the-interview) -- [प्रारंभ करने से पहले](#before-you-get-started) -- [इसमे क्या समाविष्ट नहीं हे](#इसमे-क्या-समाविष्ट-नहीं-हे) -- [पूर्व प्रयोजनीय ज्ञान](#prerequisite-knowledge) -- [दैनिक योजना](#the-daily-plan) -- [अल्गोरिथम जटिलता / बिग-O / Asymptotic विश्लेषण](#algorithmic-complexity--big-o--asymptotic-analysis) -- [डेटा संरचनाएं](#data-structures) - - [ऐरे](#arrays) - - [लिंक्ड लिस्ट](#linked-lists) - - [स्टैक](#stack) - - [क़ु](#queue) - - [हैश टेबल](#hash-table) -- [अधिक जानकारी](#more-knowledge) - - [बाइनरी सर्च](#binary-search) - - [बिट-वाईस ऑपेरशन](#bitwise-operations) -- [ट्रीज](#trees) - - [ट्रीज पृष्टभूमि और टिप्पणियाँ](#trees---notes--background) - - [बाइनरी सर्च ट्री: BST](#binary-search-trees-bsts) - - [हीप / प्रायोरिटी क्यू / बाइनरी हीप](#heap--priority-queue--binary-heap) - - [ट्राइस](#tries) - - [बैलेंस्ड सर्च ट्री](#balanced-search-trees) - - [N-ary (K-ary, M-ary) ट्री](#n-ary-k-ary-m-ary-trees) -- [सॉर्टिंग](#sorting) -- [ग्राफ](#graphs) -- [और अधिक जानकारी](#even-more-knowledge) - - [रिकर्शन](#recursion) - - [डायनामिक प्रोग्रामिंग](#dynamic-programming) - - [साहचर्य (Combinatorics) (n choose k) & संभावना](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete और सन्निकटन एल्गोरिदम](#np-np-complete-and-approximation-algorithms) - - [गार्बेज कलेक्शन](#garbage-collection) - - [कैश(Caches)](#caches) - - [प्रोसेस और थ्रेड](#processes-and-threads) - - [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग](#system-design-scalability-data-handling) - - [पेपर्स](#papers) - - [यूनिकोड](#unicode) - - [Emacs और vim](#emacs-and-vim) - - [Unix कमांड लाइन उपकरण](#unix-command-line-tools) - - [परिक्षण](#testing) - - [डिजाइन पैटर्न्स](#design-patterns) - - [निर्धारण](#scheduling) - - [सिस्टम रूटीन लागू करें](#implement-system-routines) - - [स्ट्रिंग खोज और तिकड़म](#string-searching--manipulations) -- [आखिरी समीक्षा](#final-review) -- [पुस्तकें](#books) -- [कोडिंग अभ्यास/चुनौतियाँ](#coding-exerciseschallenges) -- [एक बार जब आप इंटरव्यू के करीब हो](#once-youre-closer-to-the-interview) -- [आपका रिज्यूमे](#आपका-रिज्यूमे) -- [इंटरव्यू की सोंच](#be-thinking-of-for-when-the-interview-comes) -- [इंटरव्यूअर के लिए प्रश्न रखे](#have-questions-for-the-interviewer) -- [अतिरिक्त पढाई (जरुरत नहीं)](#additional-learnings-not-required) - - [इनफार्मेशन थ्योरी](#information-theory) - - [पारिटी और हैमिंग कोड](#parity--hamming-code) - - [एन्थ्रोपी](#entropy) - - [क्रिप्टोग्राफी](#cryptography) - - [संक्षिप्तीकरण](#compression) - - [नेटवर्किंग](#networking) - - [संगणक सुरक्षा](#computer-security) - - [पैरेलल प्रोग्रामिंग](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [फास्ट फूरियर ट्रांसफॉर्म](#fast-fourier-transform) - - [ब्लूम फ़िल्टर](#bloom-filter) - - [एम्दे बोस पेड़](#van-emde-boas-trees) - - [संवर्धित डेटा संरचनाएं](#augmented-data-structures) - - [स्किप लिस्ट](#skip-lists) - - [नेटवर्क प्रवाह](#network-flows) - - [असंबद्ध सेट और संघ खोजें](#disjoint-sets--union-find) - - [फास्ट प्रोसेसिंग के लिए गणित](#math-for-fast-processing) - - [ट्रीप](#treap) - - [लीनियर प्रोग्रामिंग](#linear-programming) -    - [ज्यामिति, कॉन्वेक्स हल](#geometry-convex-hull) - - [डिस्क्रीट मैथ](#discrete-math) - - [मशीन लर्निंग](#machine-learning) - - [गो](#go) -- [कुछ विषयो की अधिक जानकारी](#additional-detail-on-some-subjects) -- [विडियो शृखला](#video-series) -- [जब आपको नौकरी मिल जाये](#computer-science-courses) +## विषयसूची + +### अध्ययन योजना +- [यह क्या है?](#क्या-क्या है-यह) +- [इसका उपयोग क्यों करें?](# Why-use-it) +- [इसका उपयोग कैसे करें] (# कैसे-कैसे उपयोग करें-इसे) +- [यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं](#न-महसूस-आप-नहीं-स्मार्ट-पर्याप्त) +- [वीडियो संसाधनों के बारे में एक नोट](#a-नोट-के बारे में-वीडियो-संसाधन) +- [एक प्रोग्रामिंग भाषा चुनें] (# प्रोग्रामिंग भाषा चुनें) +- [डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें](#books-for-data-structures-and-algorithms) +- [साक्षात्कार तैयारी पुस्तकें](#साक्षात्कार-तैयारी-किताबें) +- [मेरी गलतियाँ न करें] (# मेरी गलतियाँ न करें) +- [जो आप कवर नहीं देखेंगे] (# क्या-आप-नहीं-देख-कवर) +- [दैनिक योजना](#दैनिक योजना) +- [कोडिंग प्रश्न अभ्यास] (# कोडिंग-प्रश्न-अभ्यास) +- [कोडिंग समस्याएं] (# कोडिंग-समस्याएं) + +### अध्ययन के विषय + +- [एल्गोरिदमिक जटिलता / बिग-ओ / एसिम्प्टोटिक विश्लेषण] (# एल्गोरिदमिक-जटिलता--बिग-ओ--एसिम्प्टोटिक-विश्लेषण) +- [डेटा संरचनाएं] (# डेटा-संरचनाएं) + - [सरणी](#सरणी) + - [लिंक की गई सूचियाँ] (# लिंक्ड-सूचियाँ) + - [स्टैक] (#स्टैक) + - [कतार] (# कतार) + - [हैश टेबल] (# हैश-टेबल) +- [अधिक ज्ञान](# अधिक-ज्ञान) + - [द्विआधारी खोज](#द्विआधारी-खोज) + - [बिटवाइज ऑपरेशंस](#बिटवाइज-ऑपरेशंस) +- [पेड़](#पेड़) + - [पेड़ - नोट्स और पृष्ठभूमि](#trees---notes--background) + - [बाइनरी सर्च ट्री: BSTs](#binary-search-trees-bsts) + - [ढेर/प्राथमिकता कतार/बाइनरी हीप](# हीप--प्राथमिकता-कतार--द्विआधारी-ढेर) + - संतुलित खोज पेड़ (सामान्य अवधारणा, विवरण नहीं) + - ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर, बीएफएस, डीएफएस +- [छँटाई] (# छँटाई) + - चयन + - प्रविष्टि + - ढेर बनाएं और छांटें + - जल्दी से सुलझाएं + - मर्ज़ सॉर्ट +- [ग्राफ](#ग्राफ) + - निर्देशित + - अप्रत्यक्ष + - सहखंडज मैट्रिक्स + - निकटता सूची + - ट्रैवर्सल: बीएफएस, डीएफएस +- [और भी अधिक ज्ञान] (# और भी अधिक-ज्ञान) + - [पुनरावृत्ति] (# रिकर्सन) + - [डायनामिक प्रोग्रामिंग] (# डायनामिक-प्रोग्रामिंग) + - [डिज़ाइन पैटर्न] (# डिज़ाइन-पैटर्न) + - [कॉम्बिनेटोरिक्स (n चुनें k) और प्रायिकता](#combinatorics-n-choose-k--probability) + - [एनपी, एनपी-पूर्ण और अनुमान एल्गोरिदम] (# एनपी-एनपी-पूर्ण-और-सन्निकटन-एल्गोरिदम) + - [कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं](#how-कंप्यूटर-प्रोसेस-ए-प्रोग्राम) + - [कैश] (# कैश) + - [प्रक्रियाएं और धागे] (# प्रक्रियाएं-और-धागे) + - [परीक्षण] (# परीक्षण) + - [स्ट्रिंग खोज और जोड़तोड़] (# स्ट्रिंग-खोज--हेरफेर) + - [कोशिश करता है] (# प्रयास करता है) + - [फ़्लोटिंग पॉइंट नंबर] (# फ़्लोटिंग-पॉइंट-नंबर) + - [यूनिकोड] (# यूनिकोड) + - [एंडियननेस](#endianness) + - [नेटवर्किंग] (# नेटवर्किंग) +- [अंतिम समीक्षा](#अंतिम समीक्षा) +### नौकरी पाना + +- [अपना रिज्यूमे अपडेट करें](#अपडेट-अपना रिज्यूमे) +- [नौकरी खोजें](# एक नौकरी खोजें) +- [साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी](#साक्षात्कार-प्रक्रिया-सामान्य-साक्षात्कार-तैयारी) +- [साक्षात्कार आने के समय के बारे में सोचें] +- [साक्षात्कारकर्ता के लिए प्रश्न हैं](#हैव-प्रश्न-के लिए-साक्षात्कारकर्ता) +- [वन्स यू हैव गॉट द जॉब] (# वन्स-यूव-गोट-द-जॉब) + +***** इस बिंदु के नीचे सब कुछ वैकल्पिक है ----------------** + +### वैकल्पिक अतिरिक्त विषय और संसाधन + +- [अतिरिक्त पुस्तकें](#अतिरिक्त पुस्तकें) +- [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग] (# सिस्टम-डिज़ाइन-स्केलेबिलिटी-डेटा-हैंडलिंग) (यदि आपके पास 4+ वर्ष का अनुभव है) +- [अतिरिक्त शिक्षण](#अतिरिक्त-शिक्षण) + - [संकलक](#संकलक) + - [Emacs और vi(m)](#emacs-and-vim) + - [यूनिक्स कमांड लाइन टूल्स] (# यूनिक्स-कमांड-लाइन-टूल्स) + - [सूचना सिद्धांत](#सूचना-सिद्धांत-वीडियो) + - [समता और हैमिंग कोड] (# समता--हैमिंग-कोड-वीडियो) + - [एंट्रॉपी] (#एंट्रॉपी) + - [क्रिप्टोग्राफी](#क्रिप्टोग्राफी) + - [संपीड़न](#संपीड़न) + - [कंप्यूटर सुरक्षा](#कंप्यूटर-सुरक्षा) + - [कचरा संग्रह] (# कचरा संग्रह) + - [समानांतर प्रोग्रामिंग] (# समानांतर प्रोग्रामिंग) + - [मैसेजिंग, सीरियलाइज़ेशन, और क्यूइंग सिस्टम](#messaging-serialization-and-queueing-systems) + - [ए*](#ए) + - [फास्ट फूरियर ट्रांसफॉर्म](#फास्ट-फूरियर-ट्रांसफॉर्म) + - [ब्लूम फ़िल्टर](#ब्लूम-फ़िल्टर) + - [हाइपरलॉगलॉग](#हाइपरलॉगलॉग) + - [इलाके-संवेदनशील हैशिंग](#इलाके-संवेदी-हैशिंग) + - [वैन एम्दे बोस ट्री](#van-emde-boas-trees) + - [संवर्धित डेटा संरचनाएं] (# संवर्धित-डेटा-संरचनाएं) + - [संतुलित खोज वृक्ष](#संतुलित-खोज-वृक्ष) + - एवीएल पेड़ + - स्प्ले पेड़ + - लाल/काले पेड़ + - 2-3 सर्च ट्री + - 2-3-4 पेड़ (उर्फ 2-4 पेड़) + - एन-आर्य (के-आर्य, एम-आर्य) पेड़ + - बी-पेड़ + - [के-डी पेड़](#के-डी-पेड़) + - [छोड़ें सूचियां](#छोड़ें-सूचियां) + - [नेटवर्क प्रवाह](# नेटवर्क-प्रवाह) + - [असंबद्ध सेट और संघ खोजें] (# असंबद्ध-सेट--संघ-खोज) + - [तेजी से प्रसंस्करण के लिए गणित](# गणित के लिए तेजी से प्रसंस्करण) + - [ट्रीप] (#treap) + - [रैखिक प्रोग्रामिंग](#रैखिक-प्रोग्रामिंग-वीडियो) + - [ज्यामिति, उत्तल पतवार] (# ज्यामिति-उत्तल-पतवार-वीडियो) + - [असतत गणित] (# असतत-गणित) +- [कुछ विषयों पर अतिरिक्त विवरण](#अतिरिक्त-विवरण-पर-कुछ-विषयों) +- [वीडियो श्रृंखला](#वीडियो-श्रृंखला) +- [कंप्यूटर विज्ञान पाठ्यक्रम](#कंप्यूटर-विज्ञान-पाठ्यक्रम) +- [कागजात](#कागजात) --- -## इसका उपयोग क्यों करे? +## इसका उपयोग क्यों करें? -मैंने जब ये परियोजना शुरू की, तब मैं स्टैक और हीप में फर्क नहीं जानता था, मुझे नहीं पता था की Big-O क्या हे, ट्रीज क्या हे, या ग्राफ को पार कैसे करते हैं. अगर मुझे छाटने का अल्गोरिथम लिखना पड़ता तो मैं आपको ये बता सकता हु कि वो इतना ख़ास नहीं होगा. जो भी डाटा स्ट्रक्चर का मैंने उपयोग किया वो भाषा में समाविष्ट था, और वो कैसे काम करता हे उसकी कोई जानकारी मुझे नहीं थी. मैं कभी मेमोरी का संचालन नहीं करता, जब तक मेरी चलाई कोई प्रोसेस "out of -memory" का एरर न दे, और तब मुझे कोई वैकल्पिक हल ढूँढनाा पड़ता था. मैंने मेरी जिन्दगी में बहुत कम मल्टी-डायमेंशनल ऐरे और बहोत सारे associative ऐरे का उपयोग किया हे, पर मैंने कोई भी डाटा स्ट्रक्चर शुरू से नहीं लिखा था. -पर इस अध्ययन योजना का उपयोग करने बाद मेरा नौकरी लगने का आत्मविश्वास बहुत बढ़ा हें. यह एक लम्बी योजना हें. यह मेरे लिए बहुत महीनो तक चली. अगर आपको इनमें से कुछ पता हैं तो आपको कम वक्त लगेगा. +अगर आप किसी बड़ी कंपनी में सॉफ्टवेयर इंजीनियर के तौर पर काम करना चाहते हैं तो ये बातें आपको जाननी चाहिए। +यदि आप कंप्यूटर विज्ञान में डिग्री प्राप्त करने से चूक गए, जैसे मैंने किया, तो यह आपको पकड़ लेगा और आपके जीवन के चार साल बचाएगा। -## इसका कैसे उपयोग करे? +जब मैंने इस परियोजना को शुरू किया, तो मुझे ढेर से ढेर का पता नहीं था, बिग-ओ को कुछ भी नहीं पता था, या पेड़ों के बारे में कुछ भी नहीं पता था, या कैसे करना है +एक ग्राफ पार करें। अगर मुझे एक सॉर्टिंग एल्गोरिदम कोड करना पड़ा, तो मैं आपको बता सकता हूं कि यह भयानक होता। +मेरे द्वारा उपयोग की जाने वाली प्रत्येक डेटा संरचना भाषा में बनाई गई थी, और मुझे नहीं पता था कि उन्होंने कैसे काम किया +हुड के नीचे बिल्कुल। मुझे कभी भी स्मृति का प्रबंधन नहीं करना पड़ा जब तक कि मैं जो प्रक्रिया चला रहा था वह "आउट ऑफ" +मेमोरी" त्रुटि, और फिर मुझे एक समाधान खोजना होगा। मैंने अपने जीवन में कुछ बहुआयामी सरणियों का उपयोग किया और +हजारों सहयोगी सरणियाँ, लेकिन मैंने कभी भी खरोंच से डेटा संरचनाएँ नहीं बनाईं। -नीचे सब कुछ एक रूपरेखा है, और आप ऊपर से नीचे के क्रम में पढ़े. +यह एक लंबी योजना है। आपको महीनों लग सकते हैं। यदि आप पहले से ही इसके बारे में बहुत कुछ जानते हैं तो इसमें आपको बहुत कम समय लगेगा। -मैं गिटहब के विशेष मार्कडाउन का उपयोग कर रहा हूँ, प्रगति की जाँच करने के लिए कार्य सूचियों का प्रयोग करे. +## इसका उपयोग कैसे करना है -- [x] एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जांच कर सकते हैं, बस कोष्ठक में एक एक्स डाले: [x] +नीचे सब कुछ एक रूपरेखा है, और आपको ऊपर से नीचे तक वस्तुओं से निपटना चाहिए। -[Github-flavored markdown की अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +मैं गिटहब के विशेष मार्कडाउन स्वाद का उपयोग कर रहा हूं, जिसमें प्रगति को ट्रैक करने के लिए कार्य सूचियां शामिल हैं। + - [GitHub-फ्लेवर्ड मार्कडाउन के बारे में अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## कभी भी आप चालाक नहीं हो ऐसा ना सोचो +### यदि आप git . का उपयोग नहीं करना चाहते हैं -- सफल सॉफ्टवेयर इंजीनियर चालाक होते हें, पर बहुत लोगो को असुरक्षा होती है किी वो चालाक नहीं हैं ! -- [प्रतिभाशाली प्रोग्रामर की कल्पित कथा](https://www.youtube.com/watch?v=0SARbwvhupQ) +इस पृष्ठ पर, शीर्ष के पास कोड बटन पर क्लिक करें, फिर "ज़िप डाउनलोड करें" पर क्लिक करें। फ़ाइल को अनज़िप करें और आप टेक्स्ट फ़ाइलों के साथ काम कर सकते हैं। -## विडियो संसाधनों के बारे में +यदि आप एक ऐसे कोड संपादक में खुले हैं जो मार्कडाउन को समझता है, तो आप देखेंगे कि सब कुछ अच्छी तरह से स्वरूपित है। -कुछ विडियो सिर्फ Coursera, EdX, or Lynda.com के वर्ग में दाखिला लेने का बाद ही उपलब्ध हैं. उन्हें MOOC कहा जाता हैं. -कभी-कभी कक्षाएं सत्र में नहीं होती हैं इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है। Lynda.com पाठ्यक्रम मुफ्त नहीं हैं +![रेपो को ज़िप फ़ाइल के रूप में कैसे डाउनलोड करें](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - I'd appreciate your help converting the MOOC video links to public sources to replace the online course विडियो over time. I like using university lectures. +### यदि आप गिट के साथ सहज हैं +एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जाँच कर सकें, बस कोष्ठक में एक x डालें: [x] +1. *** फोर्क द गिटहब रेपो:*** `https://github.com/jwasham/coding-interview-university` फोर्क बटन पर क्लिक करके। -## इंटरव्यू प्रकिया और साधारण इंटरव्यू तैयारी + ![फोर्क द गिटहब रेपो](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -[ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -[ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -[ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) -[ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (विडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (विडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] बड़े ४ मैं नौकरी कैसे ले: - - [ ] ['बड़े ४ मैं नौकरी कैसे ले - Amazon, Facebook, Google और Microsoft' (विडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +1. अपने स्थानीय रेपो को क्लोन करें: -## इंटरव्यू के लिए एक संगणक भाषा चुने + ``` + git क्लोन git@github.com:/coding-interview-university.git + सीडी कोडिंग-साक्षात्कार-विश्वविद्यालय + गिट चेकआउट-बी प्रगति + git रिमोट jwasham जोड़ें https://github.com/jwasham/coding-interview-university + गिट फ़ेच --all + ``` -इंटरव्यू में आप कोई भी एक भाषा जिसमे आप आरामदायक हो वो चुन सकते हैं, पर गूगल के लिए निम्नलिखित भाषाएँ अच्छी रहेगी: +1. अपने परिवर्तन पूर्ण करने के बाद सभी बक्सों को X से चिह्नित करें: -- C++ -- Java -- Python + ``` + गिट जोड़ें। + गिट प्रतिबद्ध-एम "चिह्नित एक्स" + git rebase jwasham/main + गिट पुश --सेट-अपस्ट्रीम मूल प्रगति + गिट पुश --फोर्स + ``` -आप निम्नलिखित भाषाएँ भी चुन सकते हैं, पर उन्हें सावधानी से चुने +## यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं -- JavaScript -- Ruby +- सफल सॉफ्टवेयर इंजीनियर होशियार होते हैं, लेकिन बहुतों में असुरक्षा की भावना होती है कि वे पर्याप्त स्मार्ट नहीं हैं। +- निम्नलिखित वीडियो आपको इस असुरक्षा को दूर करने में मदद कर सकते हैं: + - [द मिथ ऑफ़ द जीनियस प्रोग्रामर](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [इट्स डेंजरस टू गो अलोन: बैटलिंग द इनविजिबल मॉन्स्टर्स इन टेक](https://www.youtube.com/watch?v=1i8ylq4j_EY) -आपको भाषा में बहुत सहज होना चाहिए और जानकारी होनी चाहिए। +## वीडियो संसाधनों के बारे में एक नोट -विकल्पों के बारे में अधिक पढ़ें: +कुछ वीडियो केवल कौरसेरा या एडएक्स कक्षा में नामांकन करके उपलब्ध होते हैं। इन्हें एमओओसी कहा जाता है। +कभी-कभी कक्षाएं सत्र में नहीं होती हैं, इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है। -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ +ऑनलाइन पाठ्यक्रम संसाधनों को मुफ्त और हमेशा उपलब्ध सार्वजनिक स्रोतों से बदलना बहुत अच्छा होगा, +जैसे YouTube वीडियो (अधिमानतः विश्वविद्यालय व्याख्यान), ताकि आप लोग इनका कभी भी अध्ययन कर सकें, +केवल तब नहीं जब कोई विशिष्ट ऑनलाइन पाठ्यक्रम सत्र में हो। -[भाषा संसाधनोंको यहाँ देखें](programming-language-resources.md) +## प्रोग्रामिंग भाषा चुनें -क्योकि में मैं पढ़ रहा हूँ, आपको कुछ C, C++, और Python शामिल दिखेगा. वहाँ कुछ शामिल किताबें, नीचे आखिर में देख ले. +आपके द्वारा किए जाने वाले कोडिंग साक्षात्कार के लिए आपको एक प्रोग्रामिंग भाषा चुननी होगी, +लेकिन आपको एक ऐसी भाषा भी ढूंढनी होगी जिसका उपयोग आप कंप्यूटर विज्ञान अवधारणाओं का अध्ययन करने के लिए कर सकें। -## पुस्तक सूची -यह मैंने जो इस्तेमाल किया था उससे छोटी सूची है यह आपको समय बचाने के लिए संक्षिप्त है +अधिमानतः भाषा वही होगी, इसलिए आपको केवल एक में कुशल होने की आवश्यकता है। -### इंटरव्यू प्रेप -- [ ] प्रोग्रामिंग साक्षात्कार का खुलासा: आपकी अगली नौकरी, दूसरी संस्करण को लैंडिंग करने के लिए रहस्य - - C++ और java में जवाब - - यह कोडिंग साक्षात्कार के लिए क्रैकिंग के लिए एक अच्छा वार्म-अप है - - बहुत मुश्किल नहीं है, सबसे अधिक समस्याएं आपको साक्षात्कार में जो दिखाई दे रही हैं उससे अधिक आसान हो सकती हैं (मैंने जो पढ़ा है) -- [ ] कोडिंग साक्षात्कार, 6 वें संस्करण - - जावा में जवाब +### इस अध्ययन योजना के लिए -यदि आपके पास बहुत अधिक समय है: +जब मैंने अध्ययन की योजना बनाई, तो मैंने इसमें से अधिकांश के लिए 2 भाषाओं का उपयोग किया: C और Python -- [ ] [प्रोग्रामिंग साक्षात्कार के तत्व (सी ++ संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण) - - [किताब](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [कम्पेनियन प्रोजेक्ट - पुस्तक में हर समस्या के लिए विधि स्टब और टेस्ट](https://github.com/gardncl/elements-of-programming-interviews) +* सी: बहुत निम्न स्तर। आपको पॉइंटर्स और मेमोरी आवंटन/डीलोकेशन से निपटने की अनुमति देता है, ताकि आप डेटा संरचनाओं को महसूस कर सकें + और आपकी हड्डियों में एल्गोरिदम। पायथन या जावा जैसी उच्च स्तरीय भाषाओं में, ये आपसे छिपी हुई हैं। दिन-प्रतिदिन के काम में, यह बहुत बढ़िया है, + लेकिन जब आप सीख रहे हैं कि ये निम्न-स्तरीय डेटा संरचनाएं कैसे बनाई जाती हैं, तो धातु के करीब महसूस करना बहुत अच्छा होता है। + - सी हर जगह है। जब आप अध्ययन कर रहे हों तो आपको पुस्तकों, व्याख्यानों, वीडियो, *हर जगह* में उदाहरण दिखाई देंगे। + - [द सी प्रोग्रामिंग लैंग्वेज, वॉल्यूम 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - यह एक छोटी किताब है, लेकिन यह आपको सी भाषा पर एक अच्छी पकड़ देगी और यदि आप इसका थोड़ा अभ्यास करते हैं + आप जल्दी से कुशल हो जाएंगे। C को समझने से आपको यह समझने में मदद मिलती है कि प्रोग्राम और मेमोरी कैसे काम करते हैं। + - आपको किताब में बहुत गहराई तक जाने की जरूरत नहीं है (या इसे खत्म भी करें)। बस वहां पहुंचें जहां आप सी में पढ़ने और लिखने में सहज हों। + - [पुस्तक में प्रश्नों के उत्तर](https://github.com/lekkas/c-algorithms) +* पायथन: आधुनिक और बहुत अभिव्यंजक, मैंने इसे सीखा क्योंकि यह बहुत उपयोगी है और मुझे एक साक्षात्कार में कम कोड लिखने की भी अनुमति देता है। -### कंप्यूटर आर्किटेक्चर +यह मेरी पसंद है। आप वही करते हैं जो आपको पसंद है, बिल्कुल। -यदि कम समय पर: +आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन नई भाषा सीखने के लिए यहां कुछ साइटें दी गई हैं: +- [व्यायाम](https://exercism.org/tracks) +- [कोडवार्स] (http://www.codewars.com) +- [कोडिलिटी](https://codility.com/programmers/) +- [हैकरअर्थ](https://www.hackerearth.com/) +- [क्षेत्र ऑनलाइन न्यायाधीश (spoj)] (http://www.spoj.com/) +- [कोडशेफ](https://www.codechef.com/) +- [कोडफोर्स] (https://codeforces.com/) +- [स्केलर विषय](https://www.scaler.com/topics/) -- [ ] [ग्रेट कोड लिखें: वॉल्यूम 1: मशीन को समझना](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - यह पुस्तक 2004 में प्रकाशित हुई थी, और कुछ समय पुरानी है, लेकिन संक्षिप्त में एक कम्प्यूटर को समझने के लिए यह एक बढ़िया संसाधन है। - - लेखक ने एचएलए का आविष्कार किया, इसलिए नमक के एक अनाज के साथ एचएलए में उल्लेख और उदाहरण ले लीजिए। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन सभ्य उदाहरण कौन सी की तरह लग रहा है। - - ये अध्याय आपको एक अच्छी नींव देने के लिए पढ़ने योग्य हैं: - - अध्याय 2 - संख्यात्मक प्रतिनिधित्व - - अध्याय 3 - बाइनरी अंकगणित और बिट ऑपरेशंस - - अध्याय 4 - फ़्लोटिंग-प्वाइंट प्रस्तुति - - अध्याय 5 - चरित्र प्रतिनिधित्व - - अध्याय 6 - मेमोरी संगठन और एक्सेस - - अध्याय 7 - संमिश्र डेटा प्रकार और स्मृति वस्तुएं - - अध्याय 9 - सीपीयू वास्तुकला - - अध्याय 10 - निर्देश सेट आर्किटेक्चर - - अध्याय 11 - स्मृति वास्तुकला और संगठन - -यदि आपके पास अधिक समय है (मुझे यह किताब चाहिए): +### आपके कोडिंग इंटरव्यू के लिए -- [ ] [कंप्यूटर वास्तुकला, पांचवें संस्करण: एक मात्रात्मक दृष्टिकोण](https://www.amazon.com/dp/012383872X/) - - एक अमीर, अधिक अप-टू-डेट (2011) के लिए, लेकिन लंबे समय तक उपचार +आप उस भाषा का उपयोग कर सकते हैं जिसमें आप साक्षात्कार के कोडिंग भाग को करने के लिए सहज हैं, लेकिन बड़ी कंपनियों के लिए, ये ठोस विकल्प हैं: -### भाषा विशिष्ट +- सी++ +- जावा +- पायथन -**साक्षात्कार के लिए आपको भाषा चुननी होगी (ऊपर देखें)।** यहां मेरी सिफारिशें भाषा के अनुसार हैं मेरे पास सभी भाषाओं के लिए संसाधन नहीं हैं मैं अतिरिक्त स्वागत करता हूँ +आप इनका उपयोग भी कर सकते हैं, लेकिन पहले पढ़ लें। चेतावनी हो सकती है: -यदि आप इनमें से किसी एक को पढ़ते हैं, तो आपको सभी डेटा संरचनाएं और एल्गोरिदम ज्ञान होना चाहिए, आपको कोडिंग समस्याएं शुरू करने की आवश्यकता होगी। **आप इस प्रोजेक्ट में सभी वीडियो व्याख्यान छोड़ सकते हैं** , अगर आप समीक्षा पसंद नहीं करते। +- जावास्क्रिप्ट +- माणिक +साक्षात्कार के लिए भाषा चुनने के बारे में मैंने यहां एक लेख लिखा है: +[कोडिंग इंटरव्यू के लिए एक भाषा चुनें](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)। +यह मूल लेख है जिस पर मेरी पोस्ट आधारित थी: [साक्षात्कार के लिए प्रोग्रामिंग भाषा चुनना](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- नौकरियां/) -[यहां अतिरिक्त भाषा-विशिष्ट संसाधन हैं]((programming-language-resources.md) +आपको भाषा में बहुत सहज होने और जानकार होने की आवश्यकता है। +विकल्पों के बारे में और पढ़ें: +- [अपने कोडिंग साक्षात्कार के लिए सही भाषा चुनें](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -### सी ++ +[यहां भाषा-विशिष्ट संसाधन देखें] (प्रोग्रामिंग-भाषा-संसाधन.एमडी) -मैंने इन दोनों को नहीं पढ़ा है, लेकिन वे बेहद रेटेड हैं और सेंडविक द्वारा लिखित हैं वह बहुत अच्छा है। +## डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें -- [ ] [सी ++ में अल्गोरिदम, भाग 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/0201361183/) +यह पुस्तक कंप्यूटर विज्ञान के लिए आपकी नींव बनाएगी। -यदि आपके पास सी ++ के लिए बेहतर सिफारिश है, तो कृपया मुझे बताएं एक व्यापक संसाधन की तलाश में +बस एक को चुनें, ऐसी भाषा में जिसमें आप सहज हों। आप बहुत सारी रीडिंग और कोडिंग कर रहे होंगे। -### जावा +### सी -- [ ] [एल्गोरिदम (सेडगेविक और वेन)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - पुस्तक सामग्री के साथ वीडियो (और सेडगेविक!): - - [एल्गोरिदम I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [एल्गोरिदम II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) -या: +- [सी में एल्गोरिदम, भाग 1-5 (बंडल), तीसरा संस्करण](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - बुनियादी बातों, डेटा संरचनाएं, छँटाई, खोज, और ग्राफ़ एल्गोरिथम -- [ ] [जावा में डाटा स्ट्रक्चर और एल्गोरिदम](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - गुडरिक, तामासिया, गोल्डवासेर द्वारा - - यूसी बर्कले में सीएस परिचय पाठ्यक्रम के लिए वैकल्पिक पाठ के रूप में प्रयोग किया जाता है - - नीचे दिए गए अजगर संस्करण पर मेरी पुस्तक रिपोर्ट देखें। यह पुस्तक उसी विषयों को शामिल करती है +### पायथन -### Python +- [पायथन में डेटा संरचनाएं और एल्गोरिदम](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - गुडरिक, तमासिया, गोल्डवासेर द्वारा + - मुझे यह किताब पसंद आई। इसने सब कुछ और बहुत कुछ कवर किया। + - पाइथोनिक कोड + - माय ग्लोइंग बुक रिपोर्ट: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -- [ ] [पायथन में डेटा स्ट्रक्चर और एल्गोरिदम](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - गुडरिक, तामासिया, गोल्डवासेर द्वारा - - मुझे यह पुस्तक पसंद है यह सब कुछ और अधिक कवर किया - - पायथनिक कोड - - मेरी चमकती पुस्तक रिपोर्ट: https://startupnextdoor.com/book-report-data-structures-and-lgorithms-in-python/sss - -### वैकल्पिक पुस्तकें +### जावा -**कुछ लोग ये सुझाते हैं, लेकिन मुझे लगता है कि यह ज़्यादा पानी में जा रहा है, जब तक कि आपके पास कई सालों तक सॉफ्टवेयर इंजीनियरिंग अनुभव न हो और बहुत कठिन साक्षात्कार की अपेक्षा करें:** +आपकी पंसद: -- [ ] [एल्गोरिदम डिजाइन मैनुअल (स्कीएना)](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) - - एक समीक्षा और समस्या पहचान के रूप में - - एल्गोरिथ्म सूची हिस्सेदारी आप एक साक्षात्कार में मिल जाएगा कठिनाई के दायरे से परे है। - - इस पुस्तक में 2 भाग हैं: - - डेटा संरचनाओं और एल्गोरिदम पर कक्षा पाठ्यपुस्तक - - पेशेवरों: - - एक अच्छी समीक्षा है क्योंकि किसी भी एल्गोरिदम पाठ्यपुस्तक होंगे - - उद्योग और शिक्षा के क्षेत्र में समस्याओं को सुलझाने के अपने अनुभवों से अच्छी कहानियां - - सी में कोड उदाहरण - - विपक्ष: - - CLRS के रूप में घने या अभेद्य हो सकता है, और कुछ मामलों में, CLRS कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है - - अध्याय 7, 8, 9 का पालन करने की कोशिश करने के लिए दर्दनाक हो सकता है, क्योंकि कुछ वस्तुएं अच्छी तरह समझाई नहीं जाती हैं या मुझे जितना अधिक मस्तिष्क की ज़रूरत नहीं है - - मुझे गलत मत बताना: मुझे स्कीएना, उनकी शिक्षण शैली और व्यवहार, लेकिन मैं स्टोनी ब्रूक सामग्री नहीं हो सकता - - एल्गोरिथ्म सूची: - - यह वास्तविक कारण है कि आप इस पुस्तक को खरीदते हैं। - - इस भाग के बारे में जानने के लिए एक बार मैं इसके माध्यम से अपना रास्ता बना लिया है यहाँ अद्यतन होगा। - - Kindle पर इसे किराए पर कर सकते हैं - - अच्छे दामों पर पाठ्य पुस्तकें के लिए Half.com एक महान संसाधन है - - उत्तर: - - [समाधान की](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [समाधान की](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [शुद्धिपत्र](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [एल्गोरिदम का परिचय]((https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)) - - **महत्वपूर्ण:** इस पुस्तक को पढ़ना केवल सीमित मूल्य होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक अच्छी समीक्षा है, लेकिन आपको यह नहीं सिखाती कि अच्छे कोड कैसे लिखें। आपको एक सभ्य समाधान को कुशलतापूर्वक कोडित करने में सक्षम होना होगा। - - अच्छे दामों पर पाठ्य पुस्तकें के लिए Half.com एक महान संसाधन है - - उर्फ सीएलआर, कभी कभी सीएलआरएस, क्योंकि स्टीन को खेल में देर हो गई थी - - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - पहले अध्यायों में प्रोग्रामिंग समस्याओं (कुछ बहुत पुराने डेटा टेप का उपयोग करते हुए) के लिए चतुर समाधान प्रस्तुत करते हैं, लेकिन यह सिर्फ एक परिचय है। यह प्रोग्राम डिजाइन और आर्किटेक्चर पर एक गाइडबुक है, जो कोड कोड जैसा है, लेकिन बहुत छोटा है। +- गुडरिक, तमासिया, गोल्डवासेर + - [जावा में डेटा संरचनाएं और एल्गोरिदम] (https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- सेडगेविक और वेन: + - [एल्गोरिदम] (https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - नि: शुल्क कौरसेरा पाठ्यक्रम जो पुस्तक को कवर करता है (लेखकों द्वारा पढ़ाया जाता है!): + - [एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) + - [एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) -- ~~शेन द्वारा "एल्गोरिदम और प्रोग्रामिंग: प्रॉब्लम एंड सॉल्यूशंस"~~ - - एक अच्छी किताब, लेकिन कई पन्नों पर समस्याओं के माध्यम से काम करने के बाद मैं पास्कल से निराश हो गया, जबकि लूप, 1-अनुक्रमित सरणियां, और अस्पष्ट पद की स्थिति की संतुष्टि परिणाम - - बल्कि किसी अन्य पुस्तक या ऑनलाइन कोडिंग समस्याओं से कोडिंग समस्याओं पर समय बिताना होगा। +### सी++ -## प्रारंभ करने से पहले +आपकी पंसद: -इस सूची में कई महीनों से वृद्धि हुई है, और हाँ, यह एक तरह से हाथ से बाहर हो गयी हैं +- गुडरिक, तमासिया और माउंट + - [C++ में डेटा संरचनाएं और एल्गोरिदम, दूसरा संस्करण](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- सेडगेविक और वेन + - [सी ++ में एल्गोरिदम, भाग 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/) -नीचे कुछ गलतिया हैं जो मैंने की हैं तो आपका अनुभव बेहतर होगा +## साक्षात्कार तैयारी पुस्तकें +आपको इनमें से एक गुच्छा खरीदने की ज़रूरत नहीं है। ईमानदारी से "कोडिंग साक्षात्कार को क्रैक करना" शायद पर्याप्त है, +लेकिन मैंने खुद को और अधिक अभ्यास देने के लिए और अधिक खरीदा। लेकिन मैं हमेशा बहुत ज्यादा करता हूं। -### १. आपसे यह सब याद नहीं होगा +मैंने ये दोनों खरीदे। उन्होंने मुझे काफी अभ्यास दिया। -मैंने घंटो वीडियो के विडियो देखे और टिप्पणिया लिखी, और महीनो बाद मुझे कुछ याद नहीं रहा. सबकी समीक्षा करने के लिए मैंने 3 दिन मेरी टिप्पणीयो और flashcards बनाने में बितायें -कृपया पढ़ें तो आप मेरी गलतियां नहीं करेंगे: +- [प्रोग्रामिंग इंटरव्यू एक्सपोज़्ड: कोडिंग योर वे थ्रू इंटरव्यू, चौथा संस्करण](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - सी ++ और जावा में उत्तर + - कोडिंग इंटरव्यू को क्रैक करने के लिए यह एक अच्छा अभ्यास है + - ज्यादा मुश्किल नहीं है। एक साक्षात्कार में आप जो देखेंगे उससे अधिकतर समस्याएं आसान हो सकती हैं (जो मैंने पढ़ा है) +- [कोडिंग साक्षात्कार को क्रैक करना, छठा संस्करण] (http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - जावा में उत्तर -[कंप्यूटर विज्ञान ज्ञान को बनाए रखना](https://startupnextdoor.com/retaining-computer-science-knowledge/) +### यदि आपके पास अतिरिक्त समय है: -### २. फ़्लैशकार्ड्स का उपयोग कीजिये +एक का चयन: -इस समस्या को हल करने के लिए, मैंने एक छोटे से फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड प्रत्येक कार्ड के पास भिन्न स्वरूपण है। +- [प्रोग्रामिंग साक्षात्कार के तत्व (C++ संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [पायथन में प्रोग्रामिंग साक्षात्कार के तत्व](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [सहयोगी परियोजना - पुस्तक में हर समस्या के लिए विधि आधार और परीक्षण मामले](https://github.com/gardncl/elements-of-programming-interviews) -मैंने एक मोबाइल-पहले वेबसाइट बनाई है, इसलिए मैं अपने फोन और टैबलेट पर समीक्षा कर सकता हूं, जहां कहीं भी हूं। +## मेरी गलती मत करो -अपना खुद का मुफ्त बनाएं: - - [फ़्लैशकार्ड साइट रेपो] (https://github.com/jwasham/computer-science-flash-cards) - - [मेरे फ़्लैश कार्ड डेटाबेस (पुराने - 1200 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db) - - [मेरा फ़्लैश कार्ड डेटाबेस (नया - 1800 कार्ड) :](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db) +यह सूची कई महीनों में बढ़ी, और हाँ, यह हाथ से निकल गई। -ध्यान रखें मैं जहाज़ के ऊपर गया और विधानसभा भाषा और पायथन तुल्यता से लेकर मशीन सीखने और आंकड़ों तक सब कुछ कवर करने वाले कार्ड हैं। इसकी आवश्यकता के लिए यह बहुत अधिक है +यहां कुछ गलतियां हैं जो मैंने की हैं ताकि आपके पास बेहतर अनुभव हो। और आप महीनों का समय बचाएंगे। -**फ्लैशकार्ड्स पर ध्यान दें:** पहली बार जब आप पहचानते हैं कि आपको जवाब पता है, तो इसे ज्ञात के रूप में चिह्नित नहीं करें आपको उसी कार्ड को देखना होगा और उसे सच में पता होना चाहिए इससे पहले कि आप इसे सच में जानते हैं। पुनरावृत्ति आपके दिमाग में गहरा ज्ञान डाल देगा। +### 1. आपको यह सब याद नहीं रहेगा -मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प अनकी है , जिसे कई बार मेरी सिफारिश की गई है यह आपको याद रखने में मदद करने के लिए पुनरावृत्ति प्रणाली का उपयोग करता है यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफ़ॉर्म पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है यह आईओएस पर $ 25 का खर्च है, लेकिन अन्य प्लेटफार्मों पर मुफ्त है +मैंने घंटों वीडियो देखे और प्रचुर मात्रा में नोट्स लिए, और महीनों बाद बहुत कुछ ऐसा था जो मुझे याद नहीं था। मैंने जाने में 3 दिन बिताए +अपने नोट्स और फ्लैशकार्ड बनाकर, ताकि मैं समीक्षा कर सकूं। मुझे उस सब ज्ञान की आवश्यकता नहीं थी। -अनू प्रारूप में मेरा फ्लैशकार्ड डाटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद @ एक्सआईवेनिया ) +कृपया, पढ़ें ताकि आप मेरी गलतियाँ न करें: +[रिटेनिंग कंप्यूटर साइंस नॉलेज](https://startupnextdoor.com/retaining-computer-science-knowledge/)। +### 2. फ्लैशकार्ड का प्रयोग करें -### 3. समीक्षा करें, समीक्षा करें, समीक्षा करें +समस्या को हल करने के लिए, मैंने एक छोटी फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड। +प्रत्येक कार्ड में अलग-अलग स्वरूपण होते हैं। मैंने एक मोबाइल-फर्स्ट वेबसाइट बनाई है, इसलिए मैं अपने फोन या टैबलेट पर समीक्षा कर सकता हूं, चाहे मैं कहीं भी रहूं। -मैं ASCII ओएसआई स्टैक, बिग-ओ नोटेशन और अधिक पर धोखा पत्रों का एक सेट रखता हूं। मेरे पास कुछ खाली समय है जब मैं उन्हें पढ़ता हूं। +मुफ्त में अपना बनाएं: -एक आधे घंटे के लिए प्रोग्रामिंग समस्याओं से एक ब्रेक ले लो और अपने flashcards के माध्यम से जाना +- [फ्लैशकार्ड साइट रेपो](https://github.com/jwasham/computer-science-flash-cards) -### 4. फोकस +**मैं अपने फ्लैशकार्ड का उपयोग करने की अनुशंसा नहीं करता।** बहुत अधिक हैं और उनमें से अधिकांश सामान्य ज्ञान हैं जिनकी आपको आवश्यकता नहीं है। -ऐसे कई विकर्षण हैं जो कि मूल्यवान समय ले सकते हैं फोकस और एकाग्रता कठिन हैं +लेकिन अगर आप मेरी बात नहीं सुनना चाहते हैं, तो आप यहां जाएं: +- [माई फ्लैश कार्ड डेटाबेस (1200 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [माई फ्लैश कार्ड डेटाबेस (एक्सट्रीम - 1800 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -## इसमे क्या समाविष्ट नहीं हे -यह बड़ी सूचि गूगल इंटरव्यू टिप्पणियों से व्यक्तिगत कार्य सूचि से बनायीं गयी थी. निचे कुछ प्रचलित टेक्नोलॉजी हैं पर उन्हें टिप्पणियो में समाविस्ट नहीं किया गया हैं. +ध्यान रखें कि मैं पानी में डूब गया था और मेरे पास असेंबली भाषा और पायथन ट्रिविया से लेकर मशीन लर्निंग और सांख्यिकी तक सब कुछ कवर करने वाले कार्ड हैं। +जो आवश्यक है उसके लिए यह बहुत अधिक है। -- SQL -- Javascript -- HTML, CSS, and other front-end technologies +**फ्लैशकार्ड पर ध्यान दें:** पहली बार जब आप पहचानते हैं कि आपको उत्तर पता है, तो इसे ज्ञात के रूप में चिह्नित न करें। आपको देखना है +एक ही कार्ड और वास्तव में इसे जानने से पहले कई बार सही उत्तर दें। दोहराव उस ज्ञान को और गहरा कर देगा +आपका दिमाग। -## दैनिक योजना +मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प [अंकी] (http://ankisrs.net/) है, जिसकी मुझे कई बार सिफारिश की गई है। +यह आपको याद रखने में मदद करने के लिए एक दोहराव प्रणाली का उपयोग करता है। यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफार्मों पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है। +आईओएस पर इसकी कीमत 25 डॉलर है लेकिन यह अन्य प्लेटफॉर्म पर मुफ्त है। -कुछ विषय एक दिन ले सकते हैं और कुछ ज्यादा. कुछो की सिर्फ पढाई हो सकती हैं पर अमल नहीं हो सकता. - -हर दिन मैं निचली सूची से एक विषय लेता हूँ, उसका विडियो देखता हूँ, और उसका अमल नीचे दिए तरह करता हूँ: -- C - struct और function का उपयोग करके जो  struct * या args का  उपयोग करते हैं. -- C++ - built-in types का उपयोग न करके -- C++ - built-in types का उपयोग करके, जैसे STL की std::list, linked list के लिए -- Python - built-in types का उपयोग करके (Python का अभ्यास रखने के लिए) -- और यह सुनिश्चित करने के लिए परीक्षण लिखते हैं कि मैं इसे सही कर रहा हूं, कभी-कभी बस सरल () कथन का उपयोग कर -- आप जावा या कुछ और कर सकते हैं, यह सिर्फ मेरी बात है -आपको इन सभी की ज़रूरत नहीं है साक्षात्कार के लिए आपको केवल एक ही भाषा की आवश्यकता है - -इन सब में कोड क्यों? -- अभ्यास, अभ्यास, अभ्यास, जब तक मैं इससे बीमार न हो, और यह कोई समस्या नहीं कर सकता (कुछ बहुत बढ़िया मामलों और याद रखने के लिए बही-खाता विवरण) -- कच्ची बाधाओं के भीतर काम करना (कचरा संग्रहण की सहायता के बिना स्मृति को आवंटित करना / मुक्त करना (पायथन को छोड़कर)) -- अंतर्निहित प्रकारों का उपयोग करें, इसलिए मुझे वास्तविक दुनिया के उपयोग के लिए निर्मित उपकरणों का उपयोग करने का अनुभव है (उत्पादन में अपनी स्वयं की लिंक्ड सूची कार्यान्वयन नहीं लिखना) - -मेरे पास हर विषय के लिए ये सब करने का समय नहीं है, लेकिन मैं कोशिश करूँगा - -आप यहां अपना कोड देख सकते हैं: - - [C](https://github.com/jwasham/practice-c) - - [C++](https://github.com/jwasham/practice-cpp) - - [Python](https://github.com/jwasham/practice-python) - -आपको हर एल्गोरिथम याद करने की आवश्यकता नहीं है। - -एक व्हाइटबोर्ड या कागज़ पर कोड लिखें, कंप्यूटर नहीं। कुछ नमूना इनपुट के साथ टेस्ट करें फिर इसे कंप्यूटर पर जांचें - - ## पूर्वाभ्यास ज्ञान - - - [ ] **C जानें** - - सी हर जगह है आप पुस्तकों, व्याख्यान, वीडियो, हर जगह जब आप पढ़ रहे हैं, में उदाहरण देखेंगे। - - [ ] [सी प्रोग्रामिंग भाषा, खंड 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - यह एक छोटी पुस्तक है, लेकिन यह आपको सी भाषा पर एक महान संभाल देगा और यदि आप इसे थोड़ा अभ्यास करते हैं तो आपको जल्दी से कुशल मिलेगा। सी आपको यह समझने में मदद करता है कि प्रोग्राम और मेमोरी कैसे काम करते हैं - - [सवालों के जवाब](https://github.com/lekkas/c-algorithms) - -- [ ] **कंप्यूटर एक प्रोग्राम की प्रक्रिया कैसे करते हैं:** - - [ ] [कैसे सीपीयू प्रोग्राम निष्पादित करता है (वीडियो)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [मशीन कोड निर्देश (वीडियो)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) - -## एल्गोरिथम जटिलता / बिग-ओ / असिम्प्टोोटिक विश्लेषण -- लागू करने के लिए कुछ भी नहीं -- [ ] [ हार्वर्ड सीएस 50 - असिमप्टोटीक नोटेशन (वीडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [ बिग ओ नोट्स (सामान्य त्वरित ट्यूटोरियल) (वीडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] [ बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [विडियो](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [स्लाइड](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [एल्गोरिथ्म जटिलता विश्लेषण के लिए एक कोमल परिचय](http://discrete.gr/complexity/) -- [ ] [विकास के आदेश (वीडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC बर्कले Big O (विडियो)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC बर्कले Big Omega (विडियो)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (विडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (विडियो)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय भी शामिल है): - - [कम्प्यूटेशनल जटिलता: धारा 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [प्रवंचक पत्रक](http://bigocheatsheet.com/) - - - -## डेटा संरचनाएं - -- ### Arrays - - एक स्वचालित रीसाइज़िंग वेक्टर को लागू करें - - [ ] विवरण: - - [एरे (विडियो)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [Dynamic Arrays (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [ ] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी): - - [ ] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें। - - [ ]आवंटित स्मृति के साथ नया कच्चा डेटा सरणी - हुड के तहत int सरणी आवंटित कर सकता है, बस इसकी सुविधाओं का उपयोग न करें - 16 से शुरू करें, या यदि प्रारंभिक संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128 - - [ ] size() - वस्तुओं की संख्या - - [ ] capacity() - इसमें रखी जा सकने वाली वस्तुओं की संख्या - - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds - - [ ] push(item) - - [ ] insert(index, item) - इंडेक्स में आइटम डालें, उस इंडेक्स के मान और अनुगामी तत्वों को दाईं ओर शिफ्ट करें - - [ ] prepend(item) - इंडेक्स 0 पर ऊपर इंसर्ट का उपयोग कर सकते हैं - - [ ] pop() - अंत से हटा दें, वापसी मूल्य - - [ ] delete(index) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करना - - [ ] remove(item) - मूल्य की तलाश करता है और इसे धारण करने वाले सूचकांक को हटा देता है (भले ही कई स्थानों पर हो) - - [ ] find(item) - मूल्य की तलाश करता है और उस मूल्य के साथ पहला सूचकांक देता है, -1 यदि नहीं मिला - - [ ] // निजी फ़ंक्शन - - जब आप क्षमता तक पहुंचते हैं, तो आकार को दोगुना करने के लिए आकार बदलें - - पॉपिंग करते समय एक आइटम, यदि आकार क्षमता का 1/4 है, आधा करने के लिए आकार बदलें - - [ ] Time - - O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन - - O(n) कहीं और डालने/निकालने के लिए - - [ ] Space - - स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है - - स्थान की आवश्यकता = (array क्षमता, जो> = n) * size of item, लेकिन भले ही 2n, फिर भी O(n) - -- ### Linked Lists - - [ ] विवरण: - - [ ] [Singly Linked Lists (विडियो)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (विडियो)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - - [ ] [C Code (विडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश। - - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (विडियो)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: आपको पॉइंटर टू पॉइंटर नॉलेज की आवश्यकता है: (जब आप किसी फ़ंक्शन को पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) यह पृष्ठ केवल पीटीआर से पीटीआर पर एक समझ प्राप्त करने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है। - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (मैंने टेल पॉइंटर के साथ और बिना किया): - - [ ] size() - सूची में डेटा तत्वों की संख्या देता है - - [ ] empty() - खाली होने पर boolean सही होता है - - [ ] value_at(index) - nth आइटम का मान देता है (पहले के लिए 0 से शुरू) - - [ ] push_front (value) - जोड़ता है सूची के सामने एक आइटम - - [ ] pop_front () - सामने की वस्तु को हटा दें और उसका मूल्य वापस करें - - [ ] push_back (value) - अंत में एक आइटम जोड़ता है - - [ ] pop_back () - अंतिम आइटम को हटा देता है और उसका मूल्य लौटाता है - - [ ] front() - सामने की वस्तु का मूल्य प्राप्त करें - - [ ] back() - अंतिम वस्तु का मूल्य प्राप्त करें - - [ ] insert(index, value) - सूचकांक पर मूल्य डालें, इसलिए उस सूचकांक पर वर्तमान आइटम नए द्वारा इंगित किया गया है इंडेक्स पर आइटम - - [ ] erase(index) - दिए गए इंडेक्स पर नोड को हटाता है| - - [ ] value_n_from_end(n) - सूची के अंत से nth स्थिति पर नोड का मान देता है - - [ ] reverse() - सूची को उलट देता है - - [ ] remove_value(value) - इस मान के साथ सूची में पहला आइटम हटा देता है - - [ ] Doubly-linked List - - [Description (विडियो)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement +Anki प्रारूप में मेरा फ्लैशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद [@xiewenya](https://github.com/xiewenya))। -- ### Stack - - [ ] [Stacks (विडियो)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] अमल नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है। - -- ### Queue - - [ ] [Queue (विडियो)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके कार्यान्वित करें: - - enqueue(value) - पूंछ पर स्थिति पर मूल्य जोड़ता है - dequeue () - मूल्य लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है - - empty () - - [ ] निश्चित आकार का उपयोग करके कार्यान्वित करें सरणी: - - enqueue(value) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है - - dequeue () - मूल्य लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है - - empty () - - full () - - [ ] Cost: - - लिंक्ड सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर एनक्यू और पूंछ पर डेक्यू O(n) होगा क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक डीक्यू में एक पूर्ण ट्रैवर्सल हो - - enqueue: O(1) (परिशोधन, लिंक्ड सूची और सरणी [probing]) - - dequeue : O(1) (लिंक की गई सूची और सरणी) - - empty: O(1) (लिंक की गई सूची और सरणी) - -- ### Hash table - - [ ] विडियो: - - [ ] [Hashing with Chaining (विडियो)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [Table Doubling, Karp-Rabin (विडियो)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Open Addressing, Cryptographic Hashing (विडियो)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (विडियो)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (विडियो)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (विडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Courses: - - [ ] [Core Hash Tables (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (विडियो)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (विडियो)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (विडियो)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (विडियो)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें - - hash(k, m) - हैश टेबल का आकार है - - add(key, value) -यदि key पहले से मौजूद है, तो मान अपडेट करें - - exists(key) - - get(key) - - remove(key) - -## More Knowledge - -- ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (विडियो)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (विडियो)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - कर्नेल डेवलपर के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें। - - पहला हाफ काफी है। +कुछ छात्रों ने सफेद स्थान के साथ स्वरूपण मुद्दों का उल्लेख किया है जिन्हें निम्नलिखित करके ठीक किया जा सकता है: डेक खोलें, कार्ड संपादित करें, कार्ड क्लिक करें, "स्टाइलिंग" रेडियो बटन चुनें, सदस्य "व्हाइट-स्पेस: प्री;" जोड़ें। कार्ड वर्ग के लिए। -- ### Binary search - - [ ] [Binary Search (विडियो)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [Binary Search (विडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] कार्यान्वित करें: - - बाइनरी खोज (पूर्णांकों की क्रमबद्ध सरणी पर) - - रिकर्सन का उपयोग करके बाइनरी खोज - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - आपको 2 की शक्तियों में से कई को जानना चाहिए (2^1 प्रति 2^16 तथा 2^32) - - [ ] बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] अच्छा परिचय: - [Bit Manipulation (विडियो)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (विडियो)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (विडियो)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits - - [4 ways to count bits in a byte (विडियो)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: - - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) - -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Trees (विडियो)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms - - BFS (breadth-first search) - - [MIT (विडियो)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (विडियो)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (विडियो)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (विडियो)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (विडियो)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (विडियो)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (विडियो)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (विडियो)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (विडियो)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (विडियो)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (विडियो)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (विडियो)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (विडियो)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (विडियो)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (विडियो)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // पेड़ में मूल्य डालें - - [ ] get_node_count // संग्रहीत मूल्यों की गिनती प्राप्त करें - - [ ] print_values ​​// पेड़ में मूल्यों को न्यूनतम से अधिकतम तक प्रिंट करता है - - [ ] delete_tree - - [ ] is_in_tree // यदि दिया गया मान मौजूद है तो सत्य लौटाता है ट्री - - [ ] get_height // नोड्स में ऊंचाई लौटाता है (एकल नोड की ऊंचाई 1 है) - - [ ] get_min // ट्री में संग्रहीत न्यूनतम मान लौटाता है - - [ ] get_max // ट्री में संग्रहीत अधिकतम मान लौटाता है - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // दिए गए मान के बाद ट्री में अगला-उच्चतम मान लौटाता है, -1 यदि कोई नहीं - -- ### Heap / Priority Queue / Binary Heap - - एक पेड़ के रूप में देखा जाता है, लेकिन आमतौर पर भंडारण में रैखिक होता है (सरणी, लिंक्ड सूची) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (विडियो)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (विडियो)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (विडियो)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (विडियो)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (विडियो)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (विडियो)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (विडियो)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (विडियो)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (विडियो)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (विडियो)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (विडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (विडियो)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] अधिकतम-ढेर लागू करें: - - [ ] insert - - [ ] sift_up - सम्मिलित करने के लिए आवश्यक - - [ ] get_max - अधिकतम आइटम लौटाता है, इसे हटाए बिना - [ ] get_size () - संग्रहीत तत्वों की वापसी संख्या - [ ] is_empty () - यदि ढेर में कोई तत्व नहीं है - - [ ] Extract_max - अधिकतम आइटम लौटाता है, इसे हटाता है - - [ ] sift_down - Extract_max के लिए आवश्यक - - [ ] remove (i) - इंडेक्स x पर आइटम हटा देता है - - [ ] heapify - एक से ढेर बनाएं तत्वों की सरणी, heap_sort के लिए आवश्यक - - [ ] heap_sort() - एक क्रमबद्ध सरणी लें और इसे अधिकतम ढेर का उपयोग करके एक क्रमबद्ध सरणी में बदल दें - - नोट: इसके बजाय एक न्यूनतम ढेर का उपयोग करने से संचालन की बचत होगी, लेकिन आवश्यक स्थान को दोगुना कर देगा ( जगह पर नहीं कर सकता)। - -- ### Tries - - ध्यान दें कि विभिन्न प्रकार के tries हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ पथ को ट्रैक करने के लिए बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं। - - मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा। - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course विडियो: - - [ ] [Introduction To Tries (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (विडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (विडियो)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### Balanced search trees - - Know least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - [ ] **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). - - [ ] [MIT AVL Trees / AVL Sort (विडियो)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (विडियो)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (विडियो)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - [ ] **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking, and file system code) etc. - - [ ] [CS 61B: Splay Trees (विडियो)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - [ ] **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [ ] [23-Tree Intuition and Definition (विडियो)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (विडियो)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - [ ] **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [ ] [CS 61B Lecture 26: Balanced Search Trees (विडियो)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (विडियो)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (विडियो)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - [ ] **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (विडियो)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (विडियो)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (विडियो)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (विडियो)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - - - [ ] **Red/black trees** - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. - - [ ] [Aduni - Algorithms - Lecture 4 - (link jumps to starting point) (विडियो)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (विडियो)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - -- ### N-ary (K-ary, M-ary) trees - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. - -- [ ] [Bubble Sort (विडियो)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (विडियो)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (विडियो)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (विडियो)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (विडियो)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (विडियो)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (विडियो)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Stanford lectures on sorting: - - [ ] [Lecture 15 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - -- [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (विडियो)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (विडियो)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - -- [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (विडियो)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (विडियो)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (विडियो)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (विडियो)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) - -- [ ] - Merge sort code: - - [ ] [Using output array](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [In-place](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] - Quick sort code: - - [ ] [Implementation](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. - -- [ ] For curiosity - not required: - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (विडियो)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (विडियो)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (विडियो)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (विडियो)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes from Yegge: - - There are three basic ways to represent a graph in memory: - - objects and pointers - - matrix - - adjacency list - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (विडियो)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (विडियो)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (विडियो)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (विडियो)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (विडियो)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (विडियो)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (विडियो)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (विडियो)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (विडियो)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (विडियो)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (विडियो)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (विडियो)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (विडियो)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (विडियो)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (विडियो)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (विडियो)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (विडियो)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (विडियो)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (विडियो)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- Yegge: If you get a chance, try to study up on fancier algorithms: - - [ ] Dijkstra's algorithm - see above - 6.006 - - [ ] A* - - [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A* Pathfinding Tutorial (विडियो)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A* Pathfinding (E01: algorithm explanation) (विडियो)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni विडियो above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books +### 3. जब आप सीख रहे हों तो साक्षात्कार के प्रश्नों की कोडिंग करें -## Even More Knowledge +यह बहुत महत्वपूर्ण है। -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (विडियो)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (विडियो)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - -- ### Dynamic Programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] विडियो: - - the Skiena विडियो can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (विडियो)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (विडियो)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (विडियो)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (विडियो)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (विडियो)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (विडियो)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (विडियो)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (विडियो)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] Coursera: - - [ ] [The RNA secondary structure problem (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (विडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (विडियो)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (विडियो)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (विडियो)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] खान अकादमी: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the विडियो - 41 (each are simple and each are short): - - [ ] [Probability Explained (विडियो)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (विडियो)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (विडियो)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (विडियो)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (विडियो)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (विडियो)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-CompletenessNP Completeness IV (विडियो)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (विडियो)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (विडियो)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (विडियो)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (विडियो)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (विडियो)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvik discusses near-optimal solutions to traveling salesman problem: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. - -- ### Garbage collection - - [ ] [Compilers (विडियो)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (विडियो)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (विडियो)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (विडियो)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (विडियो)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (विडियो)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (विडियो)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (विडियो)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 विडियो): - - for precesses and threads see विडियो 1-11 - - [Operating Systems and System Programming (विडियो)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in same process but each has its own pc, stack counter, registers and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 विडियो)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (विडियो): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - - - Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider - when designing a software/hardware system that can scale. Expect to spend quite a bit of time on this. - -- ### System Design, Scalability, Data Handling - - Considerations from Yegge: - - scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - system design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization - - [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (विडियो)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. - - [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - - [ ] [Transactions Across Datacenters (विडियो)](https://www.youtube.com/watch?v=srOgpXECblk) - - [ ] [A plain english introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) - - [ ] Paxos Consensus algorithm: - - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [paper](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) - - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - - [ ] [Optional: UML 2.0 Series (vido)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] OOSE: Software Dev Using UML and Java (21 विडियो): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (विडियो)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Design Patterns in C# (विडियो)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) - - [ ] [SOLID Principles (विडियो)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (विडियो)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - - [ ] Scalability: - - [ ] [Great overview (विडियो)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [पतझड़acies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/पतझड़acies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (विडियो)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (विडियो)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (विडियो)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (विडियो)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(विडियो)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (विडियो)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Does AMP Counter An Existential Threat To Google?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (विडियो)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the Video Series section. - - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions - - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a function to return the top k requests during past time interval]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - -- ### Papers - - These are Google papers and well-known papers. - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - -- ### Emacs and vi(m) - - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor - - vi(m): - - [video](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - set of 4 (vidoes): - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - emacs: - - [Basics Emacs Tutorial](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (विडियो): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (विडियो)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(maybe) Org Mode In Depth: Managing Structure (विडियो)](https://www.youtube.com/watch?v=nsGYet02bEk) - -- ### Unix command line tools - - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (विडियो)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (विडियो)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (विडियो)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (विडियो)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] V[ideo series (152 विडियो) - not all are needed (विडियो)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - -- ### Design patterns - - [ ] [Quick UML review (विडियो)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (विडियो)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (विडियो)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (विडियो)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of विडियो (27 विडियो)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System विडियो - -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - क्या आप उन्हें लागू कर सकते हैं? - -- ### String searching & manipulations - - [ ] [Search pattern in text (विडियो)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - [ ] Rabin-Karp (विडियो): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [ ] [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [ ] [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [ ] Knuth-Morris-Pratt (KMP): - - [Pratt Algorithm](https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm) - - [Tutorial: The Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=2ogqPWJSftE) - - [ ] Boyer–Moore string search algorithm - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (विडियो)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) +जब आप डेटा संरचना और एल्गोरिदम सीख रहे हों, तब साक्षात्कार के प्रश्नों की कोडिंग करना शुरू करें। ---- +आप जो सीख रहे हैं उसे समस्याओं को हल करने के लिए लागू करने की आवश्यकता है, या आप भूल जाएंगे। मैंने यह गलती की। -## Final Review +एक बार जब आप कोई विषय सीख लेते हैं, और उसके साथ कुछ सहज महसूस करते हैं, उदाहरण के लिए, **लिंक्ड सूचियां**: +1. [कोडिंग इंटरव्यू बुक्स] (#इंटरव्यू-प्रेप-बुक्स) (या कोडिंग प्रॉब्लम वेबसाइट्स, नीचे सूचीबद्ध) में से एक खोलें +1. लिंक्ड सूचियों के संबंध में 2 या 3 प्रश्न करें। +1. अगले सीखने के विषय पर आगे बढ़ें। +1. बाद में, वापस जाएं और अन्य 2 या 3 लिंक की गई सूची की समस्याएं करें। +1. अपने द्वारा सीखे गए प्रत्येक नए विषय के साथ ऐसा करें। - This section will have shorter विडियो that can you watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. - (More items will be added here) +**समस्याएँ तब करते रहें जब आप यह सब सीख रहे हों, उसके बाद नहीं।** -#### General: +आपको ज्ञान के लिए काम पर नहीं रखा जा रहा है, लेकिन आप ज्ञान को कैसे लागू करते हैं। -- [ ] Series of 2-3 minutes short subject विडियो (23 विडियो) - - [विडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject विडियो - Michael Sambol (18 विडियो): - - [विडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +इसके लिए कई संसाधन हैं, जो नीचे सूचीबद्ध हैं। बढ़ा चल। -#### Sorts: +### 4. फोकस -- [ ] Merge Sort: https://www.youtube.com/watch?v=GCae1WNvnZM - +बहुत सारे विकर्षण हैं जो मूल्यवान समय ले सकते हैं। फोकस और एकाग्रता कठिन है। कुछ संगीत चालू करें +गीत के बिना और आप बहुत अच्छी तरह से ध्यान केंद्रित करने में सक्षम होंगे। -## Books +## जिसे आप कवर नहीं देखेंगे -### Mentioned in Google Coaching +ये प्रचलित प्रौद्योगिकियां हैं लेकिन इस अध्ययन योजना का हिस्सा नहीं हैं: -**Read and do exercises:** +- एसक्यूएल +- जावास्क्रिप्ट +- HTML, CSS और अन्य फ्रंट-एंड प्रौद्योगिकियां -- [ ] The Algorithm Design Manual (Skiena) - - Book (can rent on kindle): - - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) - - Half.com is a great resource for textbooks at good prices. - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +## दैनिक योजना - Once you've understood everything in the daily plan, and read and done exercises from the the books above, - read and do exercises from the books below. Then move to coding challenges (further down below) +यह कोर्स बहुत सारे विषयों पर चलता है। प्रत्येक में शायद आपको कुछ दिन लगेंगे, या शायद एक सप्ताह या उससे भी अधिक समय लगेगा। यह आपके शेड्यूल पर निर्भर करता है। -**Read first:** -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) +प्रत्येक दिन, सूची में अगला विषय लें, उस विषय के बारे में कुछ वीडियो देखें, और फिर एक कार्यान्वयन लिखें +उस डेटा संरचना या एल्गोरिथम की भाषा में जिसे आपने इस पाठ्यक्रम के लिए चुना है। -**Read second (recommended by many, but not in Google coaching docs):** -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". +आप मेरा कोड यहाँ देख सकते हैं: + - [सी] (https://github.com/jwasham/practice-c) + - [सी++](https://github.com/jwasham/practice-cpp) + - [पायथन](https://github.com/jwasham/practice-python) -### Additional books +आपको प्रत्येक एल्गोरिदम को याद रखने की आवश्यकता नहीं है। आपको अपना खुद का कार्यान्वयन लिखने में सक्षम होने के लिए इसे पर्याप्त रूप से समझने में सक्षम होना चाहिए। + +## कोडिंग प्रश्न अभ्यास + + यह यहाँ क्यों है? मैं साक्षात्कार के लिए तैयार नहीं हूं। + +[फिर वापस जाएं और इसे पढ़ें।](#3-डू-कोडिंग-साक्षात्कार-प्रश्न-जबकि-आप-सीख रहे हैं) + +आपको प्रोग्रामिंग समस्याओं का अभ्यास करने की आवश्यकता क्यों है: +- समस्या की पहचान, और जहां सही डेटा संरचनाएं और एल्गोरिदम फिट होते हैं +- समस्या के लिए आवश्यकताओं को इकट्ठा करना +- समस्या के माध्यम से अपने तरीके से बात करना जैसे आप साक्षात्कार में करेंगे +- व्हाइटबोर्ड या पेपर पर कोडिंग, कंप्यूटर पर नहीं +- आपके समाधान के लिए समय और स्थान की जटिलता के साथ आ रहा है (नीचे बिग-ओ देखें) +- अपने समाधानों का परीक्षण + +एक साक्षात्कार में व्यवस्थित, संचार समस्या समाधान के लिए एक महान परिचय है। आप इसे प्रोग्रामिंग से प्राप्त करेंगे +साक्षात्कार पुस्तकें भी, लेकिन मुझे यह बकाया लगा: +[एल्गोरिदम डिज़ाइन कैनवास](http://www.hiredintech.com/algorithm-design/) + +व्हाइटबोर्ड या पेपर पर कोड लिखें, कंप्यूटर पर नहीं। कुछ नमूना इनपुट के साथ परीक्षण करें। फिर इसे टाइप करें और कंप्यूटर पर इसका परीक्षण करें। + +अगर आपके घर में व्हाइटबोर्ड नहीं है, तो किसी आर्ट स्टोर से एक बड़ा ड्राइंग पैड लें। आप सोफे पर बैठकर अभ्यास कर सकते हैं। +यह मेरा "सोफा व्हाइटबोर्ड" है। मैंने फोटो में पेन को सिर्फ स्केल के लिए जोड़ा है। यदि आप कलम का उपयोग करते हैं, तो आप चाहते हैं कि आप मिटा सकें। +जल्दी गन्दा हो जाता है। **मैं पेंसिल और इरेज़र का उपयोग करता हूं।** + +![मेरा सोफ़ा व्हाइटबोर्ड](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**कोडिंग प्रश्न अभ्यास प्रोग्रामिंग समस्याओं के उत्तर याद रखने के बारे में नहीं है।** + +## कोडिंग समस्याएं + +अपनी मुख्य कोडिंग साक्षात्कार पुस्तकें [यहां] (# साक्षात्कार-प्रीप-किताबें) न भूलें। + +समस्याओं को सुलझा रहा: +- [कैसे समाधान खोजें](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [टॉपकोडर प्रॉब्लम स्टेटमेंट को कैसे डिसाइड करें](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +कोडिंग साक्षात्कार प्रश्न वीडियो: +- [आईडीसर्व (88 वीडियो)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [तुषार रॉय (5 प्लेलिस्ट)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - समस्या समाधान के पूर्वाभ्यास के लिए सुपर +- [निक व्हाइट - LeetCode Solutions (187 वीडियो)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - समाधान और कोड की अच्छी व्याख्या + - आप कम समय में कई देख सकते हैं +- [फिशरकोडर - लीटकोड सॉल्यूशंस](https://youtube.com/FisherCoder) +- [नीटकोड - ब्लाइंड 75 लीटकोड सॉल्यूशंस](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) + - समाधान और अजगर कोड की अच्छी व्याख्या + - सभी प्रश्नों की सूची के लिए [एक्सेल शीट](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) भी चेकआउट करें + - [Github लिंक](https://github.com/neetcode-gh/leetcode) सभी समाधान कोड के लिए + - [नीटकोड 150](https://neetcode.io/) + +चुनौती साइटें: +- [लीटकोड] (https://leetcode.com/) + - मेरी पसंदीदा कोडिंग समस्या साइट। यह आपके द्वारा तैयार किए जा रहे 1-2 महीनों के लिए सदस्यता राशि के लायक है। + - कोड वॉक-थ्रू के लिए ऊपर निक व्हाइट और फिशरकोडर वीडियो देखें। +- [हैकररैंक](https://www.hackerrank.com/) +- [टॉपकोडर](https://www.topcoder.com/) +- [गीक्स फॉर गीक्स](https://practice.geeksforgeeks.org/explore/?page=1) +- [इंटरव्यूबिट] (https://www.interviewbit.com/) +- [प्रोजेक्ट यूलर](https://projecteuler.net/) +- [AlgoExpert](https://www.algoexpert.io/product) + - Google इंजीनियरों द्वारा बनाया गया, यह आपके कौशल को सुधारने के लिए भी एक उत्कृष्ट संसाधन है। + +## आएँ शुरू करें + +ठीक है, बहुत हुई बात, आइए जानें! + +लेकिन जब आप सीखते हैं तो ऊपर से कोडिंग की समस्याएं करना न भूलें! + +## एल्गोरिथम जटिलता / बिग-ओ / स्पर्शोन्मुख विश्लेषण + +- यहां लागू करने के लिए कुछ भी नहीं है, आप केवल वीडियो देख रहे हैं और नोट्स ले रहे हैं! वाह! +- यहां बहुत सारे वीडियो हैं। जब तक आप इसे समझ न लें, तब तक पर्याप्त देखें। आप हमेशा वापस आ सकते हैं और समीक्षा कर सकते हैं। +- अगर आप इसके पीछे का सारा गणित नहीं समझते हैं तो चिंता न करें। +- आपको बस यह समझने की जरूरत है कि बिग-ओ के संदर्भ में एल्गोरिथम की जटिलता को कैसे व्यक्त किया जाए। +- [ ] [हार्वर्ड CS50 - स्पर्शोन्मुख संकेतन (वीडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [बिग ओ नोटेशन (सामान्य त्वरित ट्यूटोरियल) (वीडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [स्कीना (वीडियो)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [यूसी बर्कले बिग ओ (वीडियो)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [परिशोधन विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय शामिल हैं): + - [कम्प्यूटेशनल जटिलता: सेक्शन 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [चीट शीट] (http://bigocheatsheet.com/) + +खैर, बस इतना ही काफी है। + +जब आप "Cracking the Coding Interview" के माध्यम से जाते हैं, तो इस पर एक अध्याय है, और अंत में देखने के लिए एक प्रश्नोत्तरी है +यदि आप विभिन्न एल्गोरिदम की रनटाइम जटिलता की पहचान कर सकते हैं। यह एक सुपर समीक्षा और परीक्षण है। + +## डेटा संरचनाएं + +- ### सरणी + - [ ] सरणियों के बारे में: + - [सरणी (वीडियो)](https://www.coursera.org/lecture/data-structs/arrays-OsBSF) + - [यूसी बर्कले CS61B - लीनियर और मल्टी-डिम एरेज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s से देखना शुरू करें) + - [डायनामिक एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [जैग्ड ऐरे (वीडियो)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी): + - [] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें। + - [] आवंटित स्मृति के साथ नया कच्चा डेटा सरणी + - हुड के नीचे इंट सरणी आवंटित कर सकते हैं, बस इसकी विशेषताओं का उपयोग न करें + - 16 से शुरू करें, या यदि शुरुआती संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128 + - [] आकार () - वस्तुओं की संख्या + - [] क्षमता () - इसमें रखी जा सकने वाली वस्तुओं की संख्या + - [ ] खाली है() + - [ ] at(index) - दिए गए इंडेक्स पर आइटम लौटाता है, अगर इंडेक्स सीमा से बाहर हो जाता है तो ब्लो अप हो जाता है + - [] पुश (आइटम) + - [] सम्मिलित करें (सूचकांक, आइटम) - सूचकांक में आइटम सम्मिलित करता है, उस सूचकांक के मूल्य और अनुगामी तत्वों को दाईं ओर स्थानांतरित करता है + - [] प्रीपेन्ड (आइटम) - इंडेक्स 0 . पर ऊपर इंसर्ट का उपयोग कर सकते हैं + - [] पॉप () - अंत से हटा दें, वापसी मूल्य + - [] हटाएं (सूचकांक) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करें + - [] हटाएं (आइटम) - मूल्य की तलाश करता है और इसे धारण करने वाले इंडेक्स को हटा देता है (भले ही कई जगहों पर) + - [] ढूंढें (आइटम) - मूल्य की तलाश करता है और उस मूल्य के साथ पहली अनुक्रमणिका देता है, -1 अगर नहीं मिला + - [] आकार बदलें (नई_क्षमता) // निजी फ़ंक्शन + - जब आप क्षमता तक पहुँच जाते हैं, तो आकार को दोगुना करने के लिए आकार बदलें + - किसी आइटम को पॉप करते समय, यदि आकार क्षमता का 1/4 है, तो आकार बदलकर आधा कर दें + - [ ] समय + - O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन + - ओ (एन) कहीं और डालने/निकालने के लिए + - [ ] अंतरिक्ष + - स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है + - स्थान की आवश्यकता = (सरणी क्षमता, जो> = n है) * वस्तु का आकार, लेकिन भले ही 2n, फिर भी O(n) +- ### लिंक्ड सूचियां + - [ ] विवरण: + - [ ] [सिंगली लिंक्ड लिस्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [सीएस 61बी - लिंक्ड सूचियां 1 (वीडियो)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [सीएस 61बी - लिंक्ड सूचियां 2 (वीडियो)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [सी कोड (वीडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश + - [] लिंक्ड लिस्ट बनाम एरेज़: + - [कोर लिंक्ड लिस्ट बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [इन द रियल वर्ल्ड लिंक्ड लिस्ट्स बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd ) + - [ ] [आपको लिंक की गई सूचियों (वीडियो) से क्यों बचना चाहिए](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [] गोचा: आपको पॉइंटर टू पॉइंटर नॉलेज चाहिए: + (जब आप किसी फ़ंक्शन के लिए एक पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) + यह पेज सिर्फ पीटीआर से पीटीआर तक को समझने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है। + - [पॉइंटर्स टू पॉइंटर्स](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [] लागू करें (मैंने टेल पॉइंटर के साथ और बिना किया): + - [] आकार () - सूची में डेटा तत्वों की संख्या लौटाता है + - [] खाली () - खाली होने पर बूल सही हो जाता है + - [] 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)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement +- ### ढेर + - [ ] [स्टैक (वीडियो)](https://www.coursera.org/lecture/data-structs/stacks-UdKzQ) + - [ ] लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है + +- ### कतार + - [ ] [कतार (वीडियो)](https://www.coursera.org/lecture/data-structs/queues-EShpq) + - [ ] [सर्कुलर बफर/फीफो](https://en.wikipedia.org/wiki/Circular_buffer) + - [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें: + - एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है + - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है + - खाली() + - [] निश्चित आकार के सरणी का उपयोग करके कार्यान्वित करें: + - एनक्यू (मान) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है + - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है + - खाली() + - भरा हुआ() + - [ ] लागत: + - लिंक की गई सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर कतार लगाते हैं और पूंछ पर dequeue ओ (एन) होगा + क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक dequeue एक पूर्ण ट्रैवर्सल हो जाएगा + - एनक्यू: ओ (1) (परिशोधन, लिंक्ड सूची और सरणी [जांच]) + - dequeue: O(1) (लिंक की गई सूची और सरणी) + - खाली: ओ (1) (लिंक की गई सूची और सरणी) + +- ### हैश टेबल + - [] वीडियो: + - [ ] [हैशिंग विद चेनिंग (वीडियो)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [टेबल डबलिंग, कार्प-राबिन (वीडियो)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ओपन एड्रेसिंग, क्रिप्टोग्राफिक हैशिंग (वीडियो)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [पायकॉन 2010: द माइटी डिक्शनरी (वीडियो)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [पायकॉन 2017: द डिक्शनरी इवन माइटियर (वीडियो)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(उन्नत) रैंडमाइजेशन: यूनिवर्सल एंड परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(उन्नत) परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - These were not suggested by Google but I added because I needed the background knowledge + +- [ ] ऑनलाइन पाठ्यक्रम: + - [ ] [कोर हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [डेटा संरचनाएं (वीडियो)](https://www.coursera.org/learn/data-structs/home/week/4) + - [ ] [फोन बुक प्रॉब्लम (वीडियो)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [] वितरित हैश टेबल: + - [ड्रॉपबॉक्स (वीडियो) में तत्काल अपलोड और संग्रहण अनुकूलन](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [डिस्ट्रिब्यूटेड हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें + - हैश (के, एम) - एम हैश टेबल का आकार है + - जोड़ें (कुंजी, मान) - यदि कुंजी पहले से मौजूद है, तो मान अपडेट करें + - मौजूद है (कुंजी) + - चाबी देना) + - हटाएं (कुंजी) + +## अधिक ज्ञान + +- ### द्विआधारी खोज + - [ ] [बाइनरी सर्च (वीडियो)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [बाइनरी सर्च (वीडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [विस्तार] (https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [खाका](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] अमल में लाना: + - द्विआधारी खोज (पूर्णांक के क्रमबद्ध सरणी पर) + - पुनरावर्तन का उपयोग कर द्विआधारी खोज +- ### बिटवाइज़ ऑपरेशन + - [ ] [बिट्स चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - आपको इनमें से कई के बारे में पता होना चाहिए 2 से 2 की शक्तियां (2^1 से 2^16 और 2^32) + - [] के साथ बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, << + - [ ] [शब्द](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [] अच्छा परिचय: + [बिट मैनिपुलेशन (वीडियो)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [सी प्रोग्रामिंग ट्यूटोरियल 2-10: बिटवाइज़ ऑपरेटर्स (वीडियो)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [बिट मैनिपुलेशन] (https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [बिटवाइज ऑपरेशन](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [बिथैक्स](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [द बिट ट्विडलर](https://bits.stephan-brumme.com/) + - [ ] [द बिट ट्विडलर इंटरएक्टिव](https://bits.stephan-brumme.com/interactive.html) + - [ ] [बिट हैक्स (वीडियो)](https://www.youtube.com/watch?v=ZusiKXcz_ac) +- [ ] [प्रैक्टिस ऑपरेशंस](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [] 2s और 1s पूरक + - [बाइनरी: प्लसस और माइनस (हम दो के पूरक का उपयोग क्यों करते हैं) (वीडियो)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s पूरक](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s पूरक](https://en.wikipedia.org/wiki/Two%27s_complement) + - [] काउंट सेट बिट्स + - [एक बाइट में बिट्स गिनने के 4 तरीके (वीडियो)](https://youtu.be/Hzuzo9NJrlc) + - [काउंट बिट्स](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [32 बिट पूर्णांक में सेट बिट्स की संख्या की गणना कैसे करें](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32 -बिट-पूर्णांक) + - [] स्वैप मान: + - [स्वैप] (https://bits.stephan-brumme.com/swap.html) + - [ ] निरपेक्ष मूल्य: + - [निरपेक्ष पूर्णांक](https://bits.stephan-brumme.com/absInteger.html) +## पेड़ + +- ### पेड़ - नोट्स और पृष्ठभूमि + - [ ] [श्रृंखला: पेड़ (वीडियो)] (https://www.coursera.org/lecture/data-structs/trees-95qda) + - मूल वृक्ष निर्माण + - ट्रैवर्सल + - हेरफेर एल्गोरिदम + - [ ] [बीएफएस (चौड़ाई-पहली खोज) और डीएफएस (गहराई-पहली खोज) (वीडियो)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - बीएफएस नोट: + - स्तर आदेश (बीएफएस, कतार का उपयोग करके) + - समय जटिलता: ओ (एन) + - अंतरिक्ष जटिलता: सर्वोत्तम: ओ (1), सबसे खराब: ओ (एन/2) = ओ (एन) + - डीएफएस नोट: + - समय जटिलता: ओ (एन) + - अंतरिक्ष जटिलता: + सबसे अच्छा: ओ (लॉग एन) - औसत। पेड़ की ऊंचाई + सबसे खराब: ओ (एन) + - क्रम में (डीएफएस: बाएं, स्वयं, दाएं) + - पोस्टऑर्डर (डीएफएस: बाएं, दाएं, स्वयं) + - प्रीऑर्डर (डीएफएस: स्वयं, बाएं, दाएं) + +- ### बाइनरी सर्च ट्री: बीएसटी + - [ ] [बाइनरी सर्च ट्री रिव्यू (वीडियो)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [परिचय (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/E7cXP/introduction) + - [ ] [एमआईटी (वीडियो)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - सी/सी++: + - [ ] [बाइनरी सर्च ट्री - सी/सी++ (वीडियो) में कार्यान्वयन](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [बीएसटी कार्यान्वयन - स्टैक और हीप में मेमोरी आवंटन (वीडियो)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [बाइनरी सर्च ट्री (वीडियो) में न्यूनतम और अधिकतम तत्व खोजें](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [एक बाइनरी ट्री की ऊंचाई ज्ञात करें (वीडियो)](https://www.youtube.com/watch?v=_pnqMz5nrRs&सूची=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [बाइनरी ट्री ट्रैवर्सल - चौड़ाई-पहली और गहराई-पहली रणनीतियां (वीडियो)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [बाइनरी ट्री: लेवल ऑर्डर ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बाइनरी ट्री ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर (वीडियो)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [जांचें कि बाइनरी ट्री बाइनरी सर्च ट्री है या नहीं (वीडियो)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बाइनरी सर्च ट्री (वीडियो) से एक नोड हटाएं](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [बाइनरी सर्च ट्री (वीडियो) में क्रमागत उत्तराधिकारी](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] अमल में लाना: + - [] डालें // ट्री में वैल्यू डालें + - [] 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)) + - [ ] [परिचय (वीडियो)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [बेवकूफ कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/z3l9N/naive-implementations) + - [ ] [बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [वृक्ष ऊंचाई टिप्पणी (वीडियो)](https://www.coursera.org/learn/data-structs/supplement/S5xxz/tree-height-remark) + - [ ] [बुनियादी संचालन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/0g1dl/basic-operations) + - [ ] [पूर्ण बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/gl5Ni/complete-binary-trees) + - [ ] [स्यूडोकोड (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [हीप सॉर्ट - जंप टू स्टार्ट (वीडियो)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [हीप सॉर्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [ढेर बनाना (वीडियो)](https://www.coursera.org/lecture/data-structures/build-a-heap-dwrOS) + - [ ] [एमआईटी: हीप्स एंड हीप सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [सीएस 61बी व्याख्यान 24: प्राथमिकता कतारें (वीडियो)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [रैखिक समय BuildHeap (अधिकतम-ढेर)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [] अधिकतम ढेर लागू करें: + - [ ] डालना + - [] 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 + - [] एल्गोरिदम को छांटने में स्थिरता ("क्या क्विकसॉर्ट स्थिर है?") + - [सॉर्टिंग एल्गोरिथम स्थिरता](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [एल्गोरिदम छँटाई में स्थिरता](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [एल्गोरिदम छँटाई में स्थिरता](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [एल्गोरिदम छँटाई - स्थिरता](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] लिंक्ड सूचियों पर कौन से एल्गोरिदम का उपयोग किया जा सकता है? सरणी पर कौन सा? दोनों पर कौन सा? + - मैं एक लिंक्ड सूची को सॉर्ट करने की अनुशंसा नहीं करता, लेकिन मर्ज सॉर्ट करने योग्य है। + - [लिंक्ड लिस्ट के लिए मर्ज सॉर्ट](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें। ढेर छँटाई महान है, लेकिन स्थिर नहीं है + +- [ ] [सेजविक - मर्जसॉर्ट (5 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. मर्जसॉर्ट](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. बॉटम अप मर्जसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. छँटाई जटिलता](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. तुलनित्र](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. स्थिरता](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [सेजविक - क्विकसॉर्ट (4 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. क्विकसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. चयन](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. डुप्लीकेट कुंजियाँ](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. सिस्टम सॉर्ट](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) +- [ ] यूसी बरकेले: + - [ ] [सीएस 61बी लेक्चर 29: सॉर्टिंग I (वीडियो)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [सीएस 61बी लेक्चर 30: सॉर्टिंग II (वीडियो)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [सीएस 61बी व्याख्यान 32: छँटाई III (वीडियो)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [सीएस 61बी व्याख्यान 33: छँटाई वी (वीडियो)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [बबल सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [बबल सॉर्ट का विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [सम्मिलन सॉर्ट, मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [सम्मिलन क्रमित करें (वीडियो)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [क्विकसोर्ट (वीडियो)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [चयन क्रम (वीडियो)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [] मर्ज सॉर्ट कोड: + - [ ] [आउटपुट ऐरे (सी) का उपयोग करना] (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++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [] त्वरित सॉर्ट कोड: + - [ ] [कार्यान्वयन (सी)] (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) + - [ ] [कार्यान्वयन (पायथन)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] अमल में लाना: + - [] मर्जसॉर्ट: ओ (एन लॉग एन) औसत और सबसे खराब स्थिति + - [] क्विकसॉर्ट ओ (एन लॉग एन) औसत मामला + - चयन प्रकार और सम्मिलन प्रकार दोनों ओ (एन ^ 2) औसत और सबसे खराब स्थिति हैं + - हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें + - [] आवश्यक नहीं है, लेकिन मैंने उनकी सिफारिश की: + - [ ] [सेजविक - रेडिक्स सॉर्ट्स (6 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. जावा में स्ट्रिंग्स](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. कुंजी अनुक्रमित गिनती](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. कम से कम महत्वपूर्ण अंक प्रथम स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. सबसे महत्वपूर्ण अंक पहली स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 वे रेडिक्स क्विकसॉर्ट](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. प्रत्यय सरणी](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [रेडिक्स सॉर्ट](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [रेडिक्स सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [रेडिक्स सॉर्ट, काउंटिंग सॉर्ट (रैखिक समय दिए गए प्रतिबंध) (वीडियो)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [यादृच्छिककरण: मैट्रिक्स गुणा, क्विकॉर्ट, फ्रीवाल्ड्स एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [रैखिक समय (वीडियो) में छंटनी](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +संक्षेप में, यहां [15 सॉर्टिंग एल्गोरिदम](https://www.youtube.com/watch?v=kPRA0W1kECg) का एक दृश्य प्रतिनिधित्व है। +यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "सॉर्टिंग" अनुभाग देखें। + +## रेखांकन + +कंप्यूटर विज्ञान में कई समस्याओं का प्रतिनिधित्व करने के लिए रेखांकन का उपयोग किया जा सकता है, इसलिए यह खंड लंबा है, जैसे पेड़ और छँटाई थी। + +- टिप्पणियाँ: + - मेमोरी में ग्राफ को दर्शाने के 4 बुनियादी तरीके हैं: + - ऑब्जेक्ट्स और पॉइंटर्स + - सहखंडज मैट्रिक्स + - निकटता सूची + - आसन्न नक्शा + - प्रत्येक प्रतिनिधित्व और उसके पेशेवरों और विपक्षों से खुद को परिचित करें + - बीएफएस और डीएफएस - उनकी कम्प्यूटेशनल जटिलता, उनके व्यापार बंद, और उन्हें वास्तविक कोड में कैसे लागू किया जाए, इसके बारे में जानें + - जब कोई प्रश्न पूछा जाए, तो पहले ग्राफ़-आधारित समाधान देखें, फिर यदि कोई नहीं है तो आगे बढ़ें + +- [] एमआईटी (वीडियो): + - [ ] [चौड़ाई-पहली खोज](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [गहराई-पहली खोज](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [] स्कीएना व्याख्यान - महान परिचय: + - [ ] [CSE373 2020 - लेक्चर 10 - ग्राफ़ डेटा स्ट्रक्चर (वीडियो)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - व्याख्यान 11 - ग्राफ़ ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - व्याख्यान 12 - गहराई पहली खोज (वीडियो)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - व्याख्यान 13 - न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - व्याख्यान 14 - न्यूनतम फैले हुए पेड़ (नहीं) (वीडियो)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - लेक्चर 15 - ग्राफ़ एल्गोरिथम (2 नहीं) (वीडियो)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [] रेखांकन (समीक्षा और अधिक): + + - [ ] [6.006 सिंगल-सोर्स शॉर्टेस्ट पाथ प्रॉब्लम (वीडियो)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 डिजस्ट्रा (वीडियो)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 बेलमैन-फोर्ड (वीडियो)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 स्पीड अप दिज्क्स्ट्रा (वीडियो)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम I - टोपोलॉजिकल सॉर्टिंग, न्यूनतम स्पैनिंग ट्री, प्राइम का एल्गोरिथम - लेक्चर 6 (वीडियो)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9WBSy2Em) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम II - डीएफएस, बीएफएस, क्रुस्कल का एल्गोरिदम, संघ डेटा संरचना खोजें - व्याख्यान 7 (वीडियो)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7B&index=7S5S ) + - [ ] [अदुनी: ग्राफ़ एल्गोरिथम III: सबसे छोटा रास्ता - व्याख्यान 8 (वीडियो)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [अदुनी: ग्राफ़ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9 (वीडियो)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [सीएस 61बी 2014: भारित ग्राफ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [लालची एल्गोरिदम: न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [मजबूत रूप से जुड़े घटक कोसाराजू का एल्गोरिथम ग्राफ़ एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- पूर्ण कौरसेरा कोर्स: + - [ ] [ग्राफ़ पर एल्गोरिदम (वीडियो)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- मैं लागू करूंगा: + - [] आसन्न सूची के साथ डीएफएस (पुनरावर्ती) + - [] आसन्न सूची के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) + - [] आसन्न मैट्रिक्स के साथ डीएफएस (पुनरावर्ती) + - [] आसन्न मैट्रिक्स के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) + - [ ] बीएफएस आसन्न सूची के साथ + - [] आसन्न मैट्रिक्स के साथ बीएफएस + - [] एकल-स्रोत सबसे छोटा पथ (दिज्क्स्ट्रा) + - [ ] न्यूनतम फैलाव वाला पेड़ + - डीएफएस-आधारित एल्गोरिदम (ऊपर Aduni वीडियो देखें): + - [] साइकिल की जांच करें (टोपोलॉजिकल सॉर्ट के लिए आवश्यक है, क्योंकि हम शुरू करने से पहले साइकिल की जांच करेंगे) + - [] टोपोलॉजिकल सॉर्ट + - [] एक ग्राफ में जुड़े घटकों की गणना करें + - [] दृढ़ता से जुड़े घटकों की सूची बनाएं + - [] द्विदलीय ग्राफ के लिए जाँच करें -- [ ] C Programming Language, Vol 2 - - [answers to questions](https://github.com/lekkas/c-algorithms) +## Even More Knowledge +- ### रिकर्सन + - [ ] स्टैनफोर्ड रिकर्सन और बैकट्रैकिंग पर व्याख्यान: + - [ ] [व्याख्यान 8 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [व्याख्यान 9 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [व्याख्यान 10 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [व्याख्यान 11 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - इसका उपयोग कब करना उचित है? + - टेल रिकर्सन कैसे बेहतर नहीं है? + - [ ] [टेल रिकर्सन क्या है यह इतना बुरा क्यों है?](https://www.quora.com/What-is-tail-recursion- Why-is-it-so-bad) + - [ ] [टेल रिकर्सन (वीडियो)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [किसी भी पुनरावर्ती समस्या को हल करने के लिए 5 सरल चरण (वीडियो)](https://youtu.be/ngCos392W4w) + +बैकट्रैकिंग ब्लूप्रिंट: [जावा](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-) पलिंड्रोम-विभाजन)) +[पायथन](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### गतिशील प्रोग्रामिंग + - आप शायद अपने साक्षात्कार में कोई गतिशील प्रोग्रामिंग समस्या नहीं देखेंगे, लेकिन यह पहचानने में सक्षम होने के लायक है + गतिशील प्रोग्रामिंग के लिए एक उम्मीदवार के रूप में समस्या। + - यह विषय काफी कठिन हो सकता है, क्योंकि प्रत्येक डीपी घुलनशील समस्या को एक पुनरावर्ती संबंध के रूप में परिभाषित किया जाना चाहिए, और इसके साथ आना मुश्किल हो सकता है। + - मेरा सुझाव है कि जब तक आपको इसमें शामिल पैटर्न की ठोस समझ न हो, तब तक डीपी समस्याओं के कई उदाहरण देखें। + - [] वीडियो: + - [ ] [स्किएना: CSE373 2020 - लेक्चर 19 - डायनेमिक प्रोग्रामिंग का परिचय (वीडियो)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [स्किएना: CSE373 2020 - लेक्चर 20 - एडिट डिस्टेंस (वीडियो)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [स्किएना: CSE373 2020 - व्याख्यान 20 - दूरी संपादित करें (जारी) (वीडियो)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [स्किएना: CSE373 2020 - लेक्चर 21 - डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [स्किएना: CSE373 2020 - व्याख्यान 21 - गतिशील प्रोग्रामिंग और समीक्षा (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग 0 (59:18 बजे शुरू होता है) (वीडियो)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग I - लेक्चर 11 (वीडियो)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग II - लेक्चर 12 (वीडियो)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [] व्यक्तिगत डीपी समस्याओं की सूची (प्रत्येक संक्षिप्त है): + [डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] येल व्याख्यान नोट्स: + - [ ] [डायनामिक प्रोग्रामिंग](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] कौरसेरा: + - [ ] [आरएनए सेकेंडरी स्ट्रक्चर प्रॉब्लम (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [एक गतिशील प्रोग्रामिंग एल्गोरिथम (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [डीपी एल्गोरिथम (वीडियो) का चित्रण](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + +- [ ] [डीपी एल्गोरिथम (वीडियो) का रनिंग टाइम] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [डीपी बनाम पुनरावर्ती कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [वैश्विक जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [स्थानीय जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### डिजाइन पैटर्न्स + - [ ] [त्वरित यूएमएल समीक्षा (वीडियो)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] ये पैटर्न सीखें: + - [ ] रणनीति + - [] सिंगलटन + - [] एडेप्टर + - [] प्रोटोटाइप + - [ ] डेकोरेटर + - [] आगंतुक + - [] कारखाना, अमूर्त कारखाना + - [] मुखौटा + - [ ] देखने वाला + - [] प्रॉक्सी + - [ ] प्रतिनिधि + - [ ] आज्ञा + - [ ] राज्य + - [ ] स्मृति चिन्ह + - [] पुनरावर्तक + - [] समग्र + - [] फ्लाईवेट + - [ ] [वीडियो की शृंखला (27 वीडियो)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [पुस्तक: हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/059607124) + - मुझे पता है कि विहित पुस्तक "डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर के तत्व" है, लेकिन हेड फर्स्ट ओओ के शुरुआती लोगों के लिए बहुत अच्छा है। + - [आसान संदर्भ: 101 डिज़ाइन पैटर्न और डेवलपर्स के लिए सुझाव](https://sourcemaking.com/design-patterns-and-tips) + + +- ### कॉम्बिनेटरिक्स (n चुनें k) और प्रायिकता + - [ ] [गणित कौशल: भाज्य, क्रमचय और संयोजन कैसे खोजें (चुनें) (वीडियो)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [मेक स्कूल: प्रोबेबिलिटी (वीडियो)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [मेक स्कूल: मोर प्रोबेबिलिटी एंड मार्कोव चेन्स (वीडियो)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] खान अकादमी: + - कोर्स लेआउट: + - [ ] [मूल सैद्धांतिक संभावना](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - बस वीडियो - 41 (प्रत्येक सरल हैं और प्रत्येक छोटा है): + - [ ] [संभाव्यता की व्याख्या (वीडियो)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### एनपी, एनपी-पूर्ण और सन्निकटन एल्गोरिदम + - एनपी-पूर्ण समस्याओं के सबसे प्रसिद्ध वर्गों के बारे में जानें, जैसे यात्रा विक्रेता और बस्ता समस्या, + और जब कोई साक्षात्कारकर्ता आपसे वेश में पूछे तो उन्हें पहचानने में सक्षम हो। + - जानिए एनपी-पूर्ण का क्या मतलब है। + - [ ] [कम्प्यूटेशनल जटिलता (वीडियो)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [] साइमनसन: + - [ ] [लालची Algs. II और एनपी पूर्णता का परिचय (वीडियो)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [एनपी पूर्णता II और कटौती (वीडियो)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी पूर्णता III (वीडियो)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी पूर्णता IV (वीडियो)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [] स्कीना: + - [ ] [CSE373 2020 - व्याख्यान 23 - एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - व्याख्यान 24 - संतुष्टि (वीडियो)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - व्याख्यान 25 - अधिक एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - व्याख्यान 26 - एनपी-पूर्णता चुनौती (वीडियो)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [जटिलता: पी, एनपी, एनपी-पूर्णता, कटौती (वीडियो)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [जटिलता: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [जटिलता: फिक्स्ड-पैरामीटर एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - पीटर नॉरविग ने ट्रैवलिंग सेल्समैन की समस्या के निकट-इष्टतम समाधानों पर चर्चा की: + - [जुपिटर नोटबुक](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - यदि आपके पास सीएलआरएस में पृष्ठ 1048 - 1140 है। + +- ### कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं + + - [ ] [सीपीयू किसी प्रोग्राम को कैसे निष्पादित करता है (वीडियो)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [कंप्यूटर कैसे कैलकुलेट करते हैं - ALU (वीडियो)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [रजिस्टर और रैम (वीडियो)](https://youtu.be/fpnE6UAfbtU) + - [ ] [सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) (वीडियो)](https://youtu.be/FZGugFqdr60) + - [ ] [निर्देश और कार्यक्रम (वीडियो)](https://youtu.be/zltgXvg6r3k) + +- ### कैश + - [] एलआरयू कैश: + - [ ] [LRU कैश का जादू (गूगल देव के 100 दिन) (वीडियो)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [एलआरयू (वीडियो) लागू करना](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU कैश (C++) (वीडियो)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [] सीपीयू कैश: + - [ ] [MIT 6.004 L15: मेमोरी पदानुक्रम (वीडियो)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: कैश की समस्या (वीडियो)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### प्रक्रियाएं और सूत्र + - [ ] कंप्यूटर साइंस 162 - ऑपरेटिंग सिस्टम (25 वीडियो): + - प्रक्रियाओं और थ्रेड्स के लिए वीडियो देखें 1-11 + - [ऑपरेटिंग सिस्टम और सिस्टम प्रोग्रामिंग (वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [एक प्रक्रिया और एक धागे में क्या अंतर है?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - कवर: + - प्रक्रियाएं, सूत्र, समवर्ती मुद्दे + - प्रक्रियाओं और धागे के बीच अंतर + - प्रक्रियाएं + - धागे + - ताले + - म्यूटेक्स + - सेमाफोरस + - मॉनिटर्स + - वे कैसे काम करते हैं? + - गतिरोध + - लाइवलॉक + - सीपीयू गतिविधि, इंटरप्ट, संदर्भ स्विचिंग + - मल्टीकोर प्रोसेसर के साथ आधुनिक समवर्ती निर्माण + - [पेजिंग, सेगमेंटेशन और वर्चुअल मेमोरी (वीडियो)](https://youtu.be/O4nwUqQodAg) + - [व्यवधान (वीडियो)](https://youtu.be/iKlAWIKEyuw) + - प्रक्रिया संसाधन की जरूरत (मेमोरी: कोड, स्टैटिक स्टोरेज, स्टैक, हीप, और फाइल डिस्क्रिप्टर, i/o) + - एक ही प्रक्रिया में अन्य थ्रेड्स के साथ थ्रेड रिसोर्स की जरूरत (ऊपर के शेयर (माइनस स्टैक) लेकिन प्रत्येक का अपना पीसी, स्टैक काउंटर, रजिस्टर और स्टैक होता है) + - फोर्किंग वास्तव में कॉपी ऑन राइट (रीड-ओनली) है जब तक कि नई प्रक्रिया मेमोरी को नहीं लिखती है, तब यह पूरी कॉपी करता है। + - प्रसंग स्विचिंग + - ऑपरेटिंग सिस्टम और अंतर्निहित हार्डवेयर द्वारा संदर्भ स्विचिंग कैसे शुरू की जाती है? + - [ ] [सी++ में थ्रेड (श्रृंखला - 10 वीडियो)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [सीएस 377 स्प्रिंग '14: मैसाचुसेट्स विश्वविद्यालय से ऑपरेटिंग सिस्टम](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [] पायथन में संगामिति (वीडियो): + - [ ] [थ्रेड्स पर शॉर्ट सीरीज़](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [पायथन थ्रेड्स](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [पायथन जीआईएल को समझना (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [संदर्भ] (http://www.dabeaz.com/GIL) + - [ ] [डेविड बेज़ले - पाइथॉन कंकरेंसी फ्रॉम द ग्राउंड अप: लाइव! - पाइकॉन 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [मुख्य वक्ता डेविड बेज़ले - रुचि के विषय (पायथन एसिंकियो)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [पायथन में म्यूटेक्स](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### परिक्षण + - आच्छादित करना: + - यूनिट परीक्षण कैसे काम करता है + - नकली वस्तुएं क्या हैं + - एकीकरण परीक्षण क्या है + - निर्भरता इंजेक्शन क्या है + - [ ] [जेम्स बाख के साथ एजाइल सॉफ्टवेयर टेस्टिंग (वीडियो)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [जेम्स बाख द्वारा सॉफ्टवेयर परीक्षण पर खुला व्याख्यान (वीडियो)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [स्टीव फ्रीमैन - टेस्ट-ड्रिवेन डेवलपमेंट (यही हमारा मतलब नहीं था) (वीडियो)](https://vimeo.com/83960706) + - [स्लाइड्स] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] निर्भरता इंजेक्शन: + - [ ] [वीडियो](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [परीक्षण के ताओ] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [परीक्षा कैसे लिखें](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +-### स्ट्रिंग खोज और जोड़तोड़ + - [ ] [सेडगेविक - प्रत्यय सरणी (वीडियो)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [सेजविक - सबस्ट्रिंग सर्च (वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. सबस्ट्रिंग सर्च का परिचय](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. ब्रूट-फोर्स सबस्ट्रिंग सर्च](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. नुथ-मॉरिस प्रैट](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. बॉयर-मूर](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. राबिन-कार्प](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [पाठ में खोज पैटर्न (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/tAfHI/search-pattern-in-text) + + यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "स्ट्रिंग मिलान" अनुभाग देखें। + +- ### कोशिश करता है + - ध्यान दें कि विभिन्न प्रकार के प्रयास हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं + पथ को ट्रैक करने के लिए + - मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा + - [ ] [सेजविक - ट्राइज़ (3 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. आर वे ट्राइस](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-trys) + - [ ] [2. टर्नरी खोज प्रयास](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-trys) + - [ ] [3. चरित्र आधारित संचालन](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [डेटा संरचनाओं और प्रोग्रामिंग तकनीकों पर नोट्स](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] लघु ​​पाठ्यक्रम वीडियो: + - [ ] [प्रयासों का परिचय (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-trys) + - [ ] [प्रयासों का प्रदर्शन (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-trys) + - [ ] [एक ट्री को लागू करना (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [द ट्री: ए नेग्लेक्टेड डेटा स्ट्रक्चर](https://www.toptal.com/java/the-trie-a-neglected-data-struct) + - [ ] [टॉपकोडर - ट्राईज़ का उपयोग करना](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [स्टैनफोर्ड लेक्चर (असली दुनिया में इस्तेमाल का मामला) (वीडियो)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [एमआईटी, उन्नत डेटा संरचनाएं, स्ट्रिंग्स (आधे रास्ते में बहुत अस्पष्ट हो सकती हैं) (वीडियो)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### दशमलव संख्याएं + - [ ] साधारण 8-बिट: [फ़्लोटिंग पॉइंट नंबरों का प्रतिनिधित्व - 1 (वीडियो - गणना में त्रुटि है - वीडियो विवरण देखें)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### यूनिकोड + - [ ] [पूर्ण न्यूनतम हर सॉफ्टवेयर डेवलपर बिल्कुल, सकारात्मक रूप से यूनिकोड और कैरेक्टर सेट के बारे में जानना चाहिए]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [पाठ के साथ काम करने के लिए हर प्रोग्रामर को क्या बिल्कुल, सकारात्मक रूप से एन्कोडिंग और कैरेक्टर सेट के बारे में जानने की जरूरत है](http://kunsttube.net/encoding/) +-### अंतहीनता + - [ ] [बिग एंड लिटिल एंडियन](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian. एचटीएमएल) + - [ ] [बिग एंडियन बनाम लिटिल एंडियन (वीडियो)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [बिग एंड लिटिल एंडियन इनसाइड/आउट (वीडियो)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - कर्नेल देवों के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें। + - पहला हाफ काफी है। -- [ ] C++ Primer Plus, 6th Edition +- ### नेटवर्किंग + - **यदि आपके पास नेटवर्किंग का अनुभव है या आप एक विश्वसनीयता इंजीनियर या संचालन इंजीनियर बनना चाहते हैं, तो प्रश्नों की अपेक्षा करें** + - अन्यथा, यह जानना अच्छा है + - [ ] [खान अकादमी](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [यूडीपी और टीसीपी: ट्रांसपोर्ट प्रोटोकॉल की तुलना (वीडियो)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [टीसीपी/आईपी और ओएसआई मॉडल की व्याख्या! (वीडियो)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [इंटरनेट पर पैकेट ट्रांसमिशन। नेटवर्किंग और टीसीपी/आईपी ट्यूटोरियल। (वीडियो)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (वीडियो)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [एसएसएल और एचटीटीपीएस (वीडियो)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [एसएसएल/टीएलएस (वीडियो)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (वीडियो)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [वीडियो सीरीज़ (21 वीडियो) (वीडियो)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [सबनेटिंग डिमिस्टिफाइड - भाग 5 सीआईडीआर नोटेशन (वीडियो)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [] सॉकेट: + - [ ] [जावा - सॉकेट - परिचय (वीडियो)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [सॉकेट प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## अंतिम समीक्षा + + इस अनुभाग में छोटे वीडियो होंगे जिन्हें आप अधिकांश महत्वपूर्ण अवधारणाओं की समीक्षा करने के लिए बहुत तेज़ी से देख सकते हैं। + यदि आप अक्सर एक पुनश्चर्या चाहते हैं तो यह अच्छा है। + +- [] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) + - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - माइकल साम्बोल (18 वीडियो): + - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) +--- -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) +## अपना रिज्यूमे अपडेट करें + +- किताबों में तैयारी की जानकारी फिर से शुरू करें देखें: "कोडिंग इंटरव्यू क्रैकिंग" और "प्रोग्रामिंग इंटरव्यू एक्सपोज्ड" +- मुझे नहीं पता कि यह कितना महत्वपूर्ण है (आप अपना खुद का शोध कर सकते हैं) लेकिन यहां आपके रेज़्यूमे को एटीएस के अनुरूप बनाने पर एक लेख है: + - [कैसे बनाएं या जांचें कि आपका रिज्यूमे एटीएस के अनुरूप है या नहीं](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for -मुक्त) +- [गेल मैकडॉवेल (क्रैकिंग द कोडिंग इंटरव्यू के लेखक) द्वारा ["दिस इज़ व्हाट ए गुड रिज्यूमे शुड लुक लाइक"](https://www.careercup.com/resume), + - लेखक द्वारा नोट: "यह यूएस-केंद्रित रिज्यूमे के लिए है। भारत और अन्य देशों के लिए सीवी की अलग-अलग अपेक्षाएं हैं, हालांकि कई बिंदु समान होंगे।" +- [टेक इंटरव्यू हैंडबुक द्वारा "स्टेप-बाय-स्टेप रेज़्यूमे गाइड"](https://www.techinterviewhandbook.org/resume/guide) + - शुरू से अपना रिज्यूमे कैसे सेट करें, इस बारे में विस्तृत गाइड, प्रभावी रिज्यूमे सामग्री लिखें, इसे ऑप्टिमाइज़ करें और अपने रिज्यूमे का परीक्षण करें + + +## एक नौकरी ढूंढो + +- [नौकरियां खोजने के लिए साइटें](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी + +- [ ] [2021 में इंजीनियरिंग इंटरव्यू कैसे पास करें](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [तकनीकी भर्ती का रहस्योद्घाटन](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] बिग 4 में नौकरी कैसे प्राप्त करें: + - [ ] [बिग 4 में नौकरी कैसे पाएं - Amazon, Facebook, Google और Microsoft (वीडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [बिग 4.1 में नौकरी कैसे पाएं (फॉलो-अप वीडियो)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] कोडिंग इंटरव्यू सेट 1 को क्रैक करना: + - [ ] [गेल एल मैकडॉवेल - क्रैकिंग द कोडिंग इंटरव्यू (वीडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [लेखक गेल लाकमैन मैकडॉवेल के साथ कोडिंग इंटरव्यू क्रैक करना (वीडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] फेसबुक कोडिंग इंटरव्यू को क्रैक करना: + - [ ] [दृष्टिकोण](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [समस्या पूर्वाभ्यास](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- तैयारी पाठ्यक्रम: + - [सॉफ्टवेयर इंजीनियर इंटरव्यू अनलीशेड (पेड कोर्स)](https://www.udemy.com/software-engineer-interview-unleashed): + - Google के किसी पूर्व साक्षात्कारकर्ता से सॉफ़्टवेयर इंजीनियर साक्षात्कार के लिए स्वयं को तैयार करने का तरीका जानें. + - [पायथन फॉर डेटा स्ट्रक्चर्स, एल्गोरिदम, और इंटरव्यू (पेड कोर्स)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - एक पायथन केंद्रित साक्षात्कार तैयारी पाठ्यक्रम जिसमें डेटा संरचनाएं, एल्गोरिदम, नकली साक्षात्कार और बहुत कुछ शामिल है। + - [पायथन का उपयोग करके डेटा संरचनाओं और एल्गोरिदम का परिचय (उडेसिटी फ्री कोर्स)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - एक मुफ्त पायथन केंद्रित डेटा संरचनाएं और एल्गोरिदम पाठ्यक्रम। + - [डेटा संरचनाएं और एल्गोरिदम नैनोडेग्री! (उडेसिटी पेड नैनोडेग्री)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - साक्षात्कार और नौकरी के परिदृश्य के लिए तैयार करने में मदद करने के लिए एक समर्पित सलाहकार से 100 से अधिक डेटा संरचनाओं और एल्गोरिदम अभ्यास और मार्गदर्शन के साथ व्यावहारिक अभ्यास प्राप्त करें। + - [बिहेवियरल इंटरव्यू ग्रोकिंग (शिक्षा मुक्त कोर्स)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - कई बार, यह आपकी तकनीकी योग्यता नहीं है जो आपको अपने सपनों की नौकरी में उतरने से रोकती है, यह है कि आप व्यवहारिक साक्षात्कार पर कैसा प्रदर्शन करते हैं। + +नकली साक्षात्कार: +- [Gainlo.co: बड़ी कंपनियों के नकली साक्षात्कारकर्ता] (http://www.gainlo.co/#!/) - मैंने इसका इस्तेमाल किया और इससे मुझे फोन स्क्रीन और साइट पर साक्षात्कार के लिए आराम करने में मदद मिली +- [प्रैम्प: पीयर-टू-पीयर मॉडल ऑफ़ प्रैक्टिस इंटरव्यूज़] (https://www.pramp.com/) +- [interviewing.io: वरिष्ठ इंजीनियरों के साथ मॉक इंटरव्यू का अभ्यास करें](https://interviewing.io) - अनाम एल्गोरिथम/सिस्टम डिज़ाइन साक्षात्कार FAANG के वरिष्ठ इंजीनियरों के साथ गुमनाम रूप से + +## इंटरव्यू कब आए, इसके बारे में सोचें + +नीचे दी गई मदों की पंक्तियों के साथ आपको मिलने वाले लगभग 20 साक्षात्कार प्रश्नों के बारे में सोचें। प्रत्येक के लिए कम से कम एक उत्तर दें। +आपके द्वारा हासिल की गई किसी चीज़ के बारे में, केवल डेटा ही नहीं, एक कहानी रखें। + +- आपको यह नौकरी क्यों चाहिए? +- आपने कौन सी कठिन समस्या हल की है? +- सबसे बड़ी चुनौतियों का सामना करना पड़ा? +- सबसे अच्छा / सबसे खराब डिजाइन देखा गया? +- मौजूदा उत्पाद में सुधार के लिए विचार +- आप एक व्यक्ति के रूप में और एक टीम के हिस्से के रूप में सबसे अच्छा कैसे काम करते हैं? +- आपका कौन सा कौशल या अनुभव भूमिका में संपत्ति होगा और क्यों? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे ज्यादा क्या पसंद आया? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे बड़ी चुनौती क्या थी? +- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे कठिन बग क्या था? +- आपने [जॉब x / प्रोजेक्ट y] में क्या सीखा? +- [जॉब x / प्रोजेक्ट y] में आपने क्या बेहतर किया होगा? + +- यदि आपको इस प्रकार के साक्षात्कार प्रश्नों के अच्छे उत्तर प्राप्त करने में कठिनाई होती है, तो यहां कुछ उपाय दिए गए हैं: + - [सामान्य साक्षात्कार प्रश्न और उनके उत्तर](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## साक्षात्कारकर्ता के लिए प्रश्न हैं + +मेरे कुछ (मैं पहले से ही उत्तर जानता हूं, लेकिन उनकी राय या टीम परिप्रेक्ष्य चाहता हूं): + +- आपकी टीम कितनी बड़ी है? +- आपका देव चक्र कैसा दिखता है? क्या आप वाटरफॉल/स्प्रिंट/फुर्तीली करते हैं? +- क्या समय सीमा के लिए दौड़ आम है? या कोई लचीलापन है? +- आपकी टीम में निर्णय कैसे लिए जाते हैं? +- आप प्रति सप्ताह कितनी बैठकें करते हैं? +- क्या आपको लगता है कि आपके काम का माहौल आपको ध्यान केंद्रित करने में मदद करता है? +- आप किस पर काम कर रहे हैं? +- आपको इसमें क्या पसंद है? +- काम का जीवन कैसा है? +- कार्य/जीवन संतुलन कैसा है? + +## एक बार आपको नौकरी मिल गई -- [ ] [Algorithms and Programming: Problems and Solutions](http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474) +बधाई हो! + +सीखते रहो। -### If you have time +आप वास्तव में कभी नहीं कर रहे हैं। + +--- -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - Half.com is a great resource for textbooks at good prices. + *********************************************** *********************************************** * + *********************************************** *********************************************** * + + इस बिंदु के नीचे सब कुछ वैकल्पिक है। प्रवेश स्तर के साक्षात्कार के लिए इसकी आवश्यकता नहीं है। + हालांकि, इनका अध्ययन करके, आप अधिक सीएस अवधारणाओं के बारे में अधिक जानकारी प्राप्त करेंगे, और इसके लिए बेहतर तरीके से तैयार होंगे + कोई भी सॉफ्टवेयर इंजीनियरिंग जॉब। आप बहुत अधिक कुशल सॉफ्टवेयर इंजीनियर होंगे। -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - all code is in C++, if you're looking to use C++ in your interview - - good book on problem solving in general. + *********************************************** *********************************************** * + *********************************************** *********************************************** * -## Coding exercises/challenges +--- -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. +## अतिरिक्त पुस्तकें + यहां हैं ताकि आप किसी ऐसे विषय पर जा सकें जो आपको रुचिकर लगे। + +- [यूनिक्स प्रोग्रामिंग पर्यावरण](https://www.amazon.com/dp/013937681X) + - एक बूढ़ी लेकिन एक गुडी +- [लिनक्स कमांड लाइन: एक पूर्ण परिचय](https://www.amazon.com/dp/1593273894/) + - एक आधुनिक विकल्प +- [टीसीपी/आईपी इलस्ट्रेटेड सीरीज](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/gp/product/0596007124/) + - डिजाइन पैटर्न के लिए एक सौम्य परिचय +- [डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंट डी सॉफ़्टवेयर के तत्व](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - उर्फ ​​"गैंग ऑफ़ फोर" पुस्तक, या GOF + - विहित डिजाइन पैटर्न पुस्तक +- [एल्गोरिदम डिजाइन मैनुअल] (http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (स्कीना) + - समीक्षा और समस्या की पहचान के रूप में + - एल्गोरिथम कैटलॉग भाग आपको साक्षात्कार में मिलने वाली कठिनाई के दायरे से बाहर है + - इस पुस्तक के 2 भाग हैं: + - डेटा संरचनाओं और एल्गोरिदम पर कक्षा की पाठ्यपुस्तक + - पेशेवरों: + - एक अच्छी समीक्षा है क्योंकि कोई भी एल्गोरिदम पाठ्यपुस्तक होगी + - उद्योग और शिक्षा जगत में समस्याओं को सुलझाने के उनके अनुभवों की अच्छी कहानियाँ + - सी . में कोड उदाहरण + - दोष: + - सीएलआरएस जितना घना या अभेद्य हो सकता है, और कुछ मामलों में, सीएलआरएस कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है + - अध्याय 7, 8, 9 का पालन करने की कोशिश करना दर्दनाक हो सकता है, क्योंकि कुछ वस्तुओं को अच्छी तरह से समझाया नहीं गया है या मेरे पास जितना दिमाग है उससे अधिक दिमाग की आवश्यकता है + - मुझे गलत मत समझो: मुझे स्कीना, उनकी शिक्षण शैली और तौर-तरीके पसंद हैं, लेकिन मैं स्टोनी ब्रुक सामग्री नहीं हो सकता + - एल्गोरिथम कैटलॉग: + - यही असली कारण है कि आप इस किताब को खरीदते हैं। + - यह पुस्तक एक एल्गोरिथम संदर्भ के रूप में बेहतर है, न कि कुछ ऐसा जिसे आप कवर टू कवर पढ़ते हैं। + - इसे किंडल पर किराए पर ले सकते हैं + - उत्तर: + - [समाधान](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [इरेटा](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [महान कोड लिखें: खंड 1: मशीन को समझना](https://www.amazon.com/Write-Great-Code-Understand-Machine/dp/1593270038) + - पुस्तक 2004 में प्रकाशित हुई थी, और कुछ पुरानी है, लेकिन कंप्यूटर को संक्षेप में समझने के लिए यह एक बढ़िया संसाधन है + - लेखक ने [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) का आविष्कार किया, इसलिए नमक के एक दाने के साथ HLA में उल्लेख और उदाहरण लें। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन असेंबली कैसा दिखता है इसके अच्छे उदाहरण हैं + - आपको एक अच्छी नींव देने के लिए ये अध्याय पढ़ने लायक हैं: + - अध्याय 2 - संख्यात्मक प्रतिनिधित्व + - अध्याय 3 - बाइनरी अंकगणित और बिट संचालन + - अध्याय 4 - फ़्लोटिंग-पॉइंट प्रतिनिधित्व + - अध्याय 5 - चरित्र प्रतिनिधित्व + - अध्याय 6 - स्मृति संगठन और पहुंच + - अध्याय 7 - समग्र डेटा प्रकार और मेमोरी ऑब्जेक्ट + - अध्याय 9 - सीपीयू वास्तुकला + - अध्याय 10 - निर्देश सेट वास्तुकला + - अध्याय 11 - स्मृति वास्तुकला और संगठन +- [एल्गोरिदम का परिचय](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **महत्वपूर्ण:** इस पुस्तक को पढ़ने का केवल सीमित महत्व होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक बेहतरीन समीक्षा है, लेकिन यह आपको अच्छा कोड लिखना नहीं सिखाएगी। आपको एक अच्छे समाधान को कुशलता से कोड करने में सक्षम होना चाहिए + - उर्फ ​​सीएलआर, कभी-कभी सीएलआरएस, क्योंकि स्टीन खेल के लिए देर हो चुकी थी +- [कंप्यूटर आर्किटेक्चर, छठा संस्करण: एक मात्रात्मक दृष्टिकोण] (https://www.amazon.com/dp/0128119055) + - एक अमीर, अधिक अप-टू-डेट (2017) के लिए, लेकिन लंबे समय तक इलाज + +## सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग + +**यदि आपके पास 4+ वर्ष का अनुभव है तो आप सिस्टम डिज़ाइन प्रश्नों की अपेक्षा कर सकते हैं।** + +- कई विषयों और संसाधनों के साथ स्केलेबिलिटी और सिस्टम डिज़ाइन बहुत बड़े विषय हैं, क्योंकि + सॉफ़्टवेयर/हार्डवेयर सिस्टम को डिज़ाइन करते समय विचार करने के लिए बहुत कुछ है जो स्केल कर सकता है। + इस पर काफी समय बिताने की अपेक्षा करें +- विचार: + - मापनीयता + - बड़े डेटा सेट को एकल मानों पर डिस्टिल करें + - एक डेटा सेट को दूसरे में बदलना + - अश्लील रूप से बड़ी मात्रा में डेटा को संभालना + - प्रणाली की रूपरेखा + - सुविधाएँ सेट + - इंटरफेस + - वर्ग पदानुक्रम + - कुछ बाधाओं के तहत एक प्रणाली को डिजाइन करना + - सादगी और मजबूती + - ट्रेडऑफ़ + - प्रदर्शन विश्लेषण और अनुकूलन +- [ ] **यहां शुरू करें**: [सिस्टम डिजाइन प्राइमर](https://github.com/donnemartin/system-design-primer) +- [ ] [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://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [सिस्टम डिज़ाइन इंटरव्यू](https://github.com/checkcheckzz/system-design-interview) - इसमें बहुत सारे संसाधन हैं। लेखों और उदाहरणों के माध्यम से देखें। मैंने उनमें से कुछ को नीचे रखा है +- [ ] [कैसे एक सिस्टम डिजाइन साक्षात्कार में सफलता प्राप्त करें](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/) +- [ ] [संदर्भ स्विच करने में कितना समय लगता है?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [डेटासेंटर में लेन-देन (वीडियो)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [कैप प्रमेय का एक सादा अंग्रेजी परिचय](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [] आम सहमति एल्गोरिदम: + - [ ] पैक्सोस - [पैक्सोस एग्रीमेंट - कंप्यूटरफाइल (वीडियो)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] बेड़ा - [बेड़ा वितरित आम सहमति एल्गोरिथ्म का एक परिचय (वीडियो)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [पढ़ने में आसान पेपर](https://raft.github.io/) + - [ ] [इन्फोग्राफिक] (http://thesecretlivesofdata.com/raft/) +- [ ] [लगातार हैशिंग] (http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [नोएसक्यूएल पैटर्न] (http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [] मापनीयता: + - आपको इन सब की जरूरत नहीं है। बस कुछ ऐसे चुनें जिनमें आपकी रुचि हो। + - [ ] [शानदार अवलोकन (वीडियो)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [] लघु ​​श्रृंखला: + - [क्लोन] (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) + - [ ] [डिस्ट्रिब्यूटेड कंप्यूटिंग की गलतियां समझाया](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [जेफ डीन - Google पर सॉफ्टवेयर सिस्टम बनाना और सीखे गए पाठ (वीडियो)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [स्केल के लिए आर्किटेक्चरिंग सिस्टम का परिचय](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [ऐप इंजन और क्लाउड डेटास्टोर (वीडियो) का उपयोग करके मोबाइल गेम को वैश्विक दर्शकों तक पहुंचाना](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Google प्लैनेट-स्केल इंफ़्रा के लिए प्लैनेट-स्केल इंजीनियरिंग कैसे करता है (वीडियो)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [एल्गोरिदम का महत्व](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [शार्डिंग] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [लंबे गेम के लिए इंजीनियरिंग - एस्ट्रिड एटकिंसन कीनोट (वीडियो)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [30 मिनट में 7 साल के YouTube मापनीयता पाठ](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) + - [वीडियो](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [कैसे पेपैल ने केवल 8VMs का उपयोग करके प्रतिदिन अरबों लेन-देन किया](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -जू.एचटीएमएल) + - [ ] [बड़े डेटासेट में डुप्लीकेट कैसे निकालें](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [जॉन कोवी के साथ एटीसी के पैमाने और इंजीनियरिंग संस्कृति के अंदर एक नज़र (वीडियो)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [व्हाट लेड अमेज़ॉन टू इट्स ओन माइक्रोसर्विसेज आर्किटेक्चर](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [कंप्रेस करना या न करना, यह उबर का सवाल था](https://eng.uber.com/trip-data-squeeze/) + - [ ] [अनुमानित क्वेरी संसाधन का उपयोग कब किया जाना चाहिए?] + - [ ] [एकल डेटासेंटर से 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/2/1/a-patreon-architecture-short.html) + - [ ] [टिंडर: सबसे बड़े अनुशंसा इंजनों में से एक कैसे तय करता है कि आप आगे किसे देखेंगे?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-सबसे बड़ा-सिफारिश-इंजन-de.html) + - [ ] [एक आधुनिक कैश का डिज़ाइन](http://highscalability.com/blog/2016/1/25/design-of-a-आधुनिक-cache.html) + - [ ] [फेसबुक स्केल पर लाइव वीडियो स्ट्रीमिंग](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.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/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) + - [ ] [विलंबता हर जगह है और यह आपको बिक्री पर खर्च करती है - इसे कैसे कुचलें] (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 बिलियन ट्रांजैक्शन ए डे](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) + - [ ] [ईएसपीएन का आर्किटेक्चर स्केल पर - 100,000 दुह नुह नुह्स प्रति सेकेंड पर परिचालन](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -नुह-नुह.एचटीएमएल) + - [ ] सेवाओं को आपस में जोड़ने वाली कुछ तकनीकों के बारे में जानकारी के लिए नीचे "मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम" देखें। + - [ ] ट्विटर: + - [ओ'रेली माईएसक्यूएल सीई 2011: जेरेमी कोल, "@Twitter पर बड़ा और छोटा डेटा" (वीडियो)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [पैमाने पर समयरेखा](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - और भी अधिक के लिए, [वीडियो श्रृंखला](#वीडियो-श्रृंखला) अनुभाग में "बड़े पैमाने पर डेटासेट खनन" वीडियो श्रृंखला देखें +- [ ] सिस्टम डिजाइन प्रक्रिया का अभ्यास करना: कागज पर काम करने की कोशिश करने के लिए यहां कुछ विचार दिए गए हैं, प्रत्येक में कुछ दस्तावेज हैं कि इसे वास्तविक दुनिया में कैसे संभाला गया था: + - समीक्षा करें: [सिस्टम डिज़ाइन प्राइमर](https://github.com/donnemartin/system-design-primer) + - [HiredInTech से सिस्टम डिज़ाइन] (http://www.hiredintech.com/system-design/) + - [चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - बहे: + 1. समस्या और दायरे को समझें: + - साक्षात्कारकर्ता की सहायता से उपयोग के मामलों को परिभाषित करें + - अतिरिक्त सुविधाओं का सुझाव दें + - उन वस्तुओं को हटा दें जिन्हें साक्षात्कारकर्ता दायरे से बाहर मानता है + - मान लें कि उच्च उपलब्धता की आवश्यकता है, उपयोग के मामले के रूप में जोड़ें + 2. बाधाओं के बारे में सोचें: + - पूछें कि प्रति माह कितने अनुरोध हैं + - पूछें कि प्रति सेकंड कितने अनुरोध हैं (वे इसे स्वयंसेवा कर सकते हैं या आपको गणित कर सकते हैं) + - अनुमान पढ़ता है बनाम प्रतिशत लिखता है + - अनुमान लगाते समय 80/20 नियम को ध्यान में रखें + - प्रति सेकंड कितना डेटा लिखा जाता है + - 5 वर्षों में कुल संग्रहण की आवश्यकता + - प्रति सेकंड कितना डेटा पढ़ता है + 3. सार डिजाइन: + - परतें (सेवा, डेटा, कैशिंग) + - इन्फ्रास्ट्रक्चर: लोड बैलेंसिंग, मैसेजिंग + - सेवा को चलाने वाले किसी भी प्रमुख एल्गोरिथम का मोटे तौर पर अवलोकन + - बाधाओं पर विचार करें और समाधान निर्धारित करें + - व्यायाम: + - [एक यादृच्छिक अद्वितीय आईडी जनरेशन सिस्टम डिज़ाइन करें](https://blog.twitter.com/2010/announcing-snowflake) + - [की-वैल्यू डेटाबेस डिज़ाइन करें] (http://www.slideshare.net/dvirsky/introduction-to-redis) + - [तस्वीर साझा करने वाला सिस्टम डिज़ाइन करें](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [एक सिफारिश प्रणाली डिजाइन करें](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [यूआरएल-शॉर्टनर सिस्टम डिज़ाइन करें: ऊपर से कॉपी किया गया] (http://www.hiredintech.com/system-design/the-system-design-process/) + - [एक कैश सिस्टम डिज़ाइन करें](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## अतिरिक्त शिक्षा +मैंने उन्हें एक संपूर्ण सॉफ़्टवेयर इंजीनियर बनने में आपकी सहायता करने के लिए, और कुछ के बारे में जागरूक होने के लिए जोड़ा है + प्रौद्योगिकियों और एल्गोरिदम, तो आपके पास एक बड़ा टूलबॉक्स होगा। + +- ### कंपाइलर्स + - [एक कंपाइलर ~1 मिनट में कैसे काम करता है (वीडियो)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [हार्वर्ड CS50 - कंपाइलर (वीडियो)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [सी++ (वीडियो)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [कंपाइलर ऑप्टिमाइज़ेशन को समझना (C++) (वीडियो)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs और vi(m) + - यूनिक्स-आधारित कोड संपादक से खुद को परिचित करें + - vi (एम): + - [विम 01 के साथ संपादन - इंस्टॉलेशन, सेटअप और मोड (वीडियो)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [वीआईएम एडवेंचर्स](http://vim-adventures.com/) + - 4 वीडियो का सेट: + - [vi/vim संपादक - पाठ 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [vi/vim संपादक - पाठ 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [vi/vim संपादक - पाठ 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [vi/vim संपादक - पाठ 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Emacs के बजाय Vi का उपयोग करना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - एमएसीएस: + - [बेसिक्स Emacs ट्यूटोरियल (वीडियो)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3 का सेट (वीडियो): + - [Emacs Tutorial (शुरुआती) -भाग 1- फ़ाइल कमांड, कट/कॉपी/पेस्ट, कर्सर कमांड](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs Tutorial (शुरुआती) -भाग 2- बफर प्रबंधन, खोज, M-x grep और rgrep मोड](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs Tutorial (शुरुआती) -भाग 3- एक्सप्रेशन, स्टेटमेंट, ~/.emacs फ़ाइल और पैकेज](https://www.youtube.com/watch?v=paSgzPso-yc) + - [ईविल मोड: या, हाउ आई लर्न टू स्टॉप वरीइंग एंड लव Emacs (वीडियो)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Emacs के साथ C प्रोग्राम लिखना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) +- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन द्वारा वीडियो)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) +- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन के नोट्स)](https://systemcrafters.net/emacs-entials/absolute-beginners-guide-to-emacs/) + +- ### यूनिक्स कमांड लाइन टूल्स + - मैंने नीचे दी गई सूची को अच्छे टूल से भरा। + - दे घुमा के + - बिल्ली + - ग्रेपी + - सेडो + - अजीब + - कर्ल या wget + - क्रम से लगाना + - त्रि + - uniq + - [स्ट्रेस] (https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### सूचना सिद्धांत (वीडियो) + - [खान अकादमी](https://www.khanacademy.org/computing/computer-science/informationtheory) + - मार्कोव प्रक्रियाओं के बारे में अधिक जानकारी: + - [कोर मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [कोर इम्प्लीमेंटिंग मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [प्रोजेक्ट = मार्कोव टेक्स्ट जेनरेशन वॉक थ्रू](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - नीचे MIT 6.050J सूचना और एन्ट्रापी श्रृंखला में और देखें + +- ### समता और हैमिंग कोड (वीडियो) + - [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [समता](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - हैमिंग कोड: + - [त्रुटि का पता लगाना](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [त्रुटि सुधार](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [त्रुटि जांच](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### एन्ट्रॉपी + - नीचे दिए गए वीडियो भी देखें + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - [सूचना सिद्धांत, क्लाउड शैनन, एन्ट्रॉपी, अतिरेक, डेटा संपीड़न और बिट्स (वीडियो)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### क्रिप्टोग्राफी + - नीचे दिए गए वीडियो भी देखें + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - [खान अकादमी सीरीज](https://www.khanacademy.org/computing/computer-science/cryptography) + - [क्रिप्टोग्राफी: हैश फंक्शन](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [क्रिप्टोग्राफी: एन्क्रिप्शन](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### संपीड़न + - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें + - कंप्यूटरफाइल (वीडियो): + - [संपीड़न](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [संपीड़न में एन्ट्रापी](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [उल्टा पेड़ (हफमैन ट्री)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [अतिरिक्त बिट्स/ट्रिट्स - हफ़मैन ट्री](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [टेक्स्ट में एलिगेंट कंप्रेशन (LZ 77 मेथड)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [पाठ संपीड़न संभावनाओं को पूरा करता है](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [कंप्रेसर हेड वीडियो](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(वैकल्पिक) Google डेवलपर लाइव: GZIP पर्याप्त नहीं है!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### कंप्यूटर सुरक्षा + - [एमआईटी (23 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [परिचय, थ्रेट मॉडल](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [अपहरण हमलों को नियंत्रित करें](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [बफ़र ओवरफ़्लो एक्सप्लॉइट्स एंड डिफेंस](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [विशेषाधिकार पृथक्करण](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [क्षमता](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [सैंडबॉक्सिंग नेटिव कोड](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [वेब सुरक्षा मॉडल](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [वेब एप्लिकेशन सुरक्षित करना](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [प्रतीकात्मक निष्पादन](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क सुरक्षा](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क प्रोटोकॉल](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [साइड-चैनल अटैक](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### कचरा संग्रहण + - [पायथन में जीसी (वीडियो)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [डीप डाइव जावा: कचरा संग्रह अच्छा है!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [डीप डाइव पायथन: सीपीथॉन में कचरा संग्रह (वीडियो)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### समानांतर प्रोग्रामिंग + - [कोर्सेरा (स्काला)](https://www.coursera.org/learn/parprog1/home/week/1) + - [उच्च प्रदर्शन समानांतर कंप्यूटिंग के लिए कुशल पायथन (वीडियो)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम + - [बचत](https://thrift.apache.org/) + - [ट्यूटोरियल](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [प्रोटोकॉल बफ़र्स](https://developers.google.com/protocol-buffers/) + - [ट्यूटोरियल](https://developers.google.com/protocol-buffers/docs/tutorials) + - [जीआरपीसी] (http://www.grpc.io/) + - [Java Developers के लिए gRPC 101 (वीडियो)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [रेडिस] (http://redis.io/) + - [ट्यूटोरियल] (http://try.redis.io/) + - [अमेज़ॅन एसक्यूएस (कतार)] (https://aws.amazon.com/sqs/) + - [अमेज़ॅन एसएनएस (पब-सब)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [आरंभ करें](https://www.rabbitmq.com/getstarted.html) + - [अजवाइन](http://www.celeryproject.org/) + - [अजवाइन के साथ पहला कदम](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [परिचय - मैनुअल पढ़ें](http://zeromq.org/intro:read-the-manual) + - [एक्टिवएमक्यू] (http://activemq.apache.org/) + - [काफ्का](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [एव्रो](https://avro.apache.org/) + +- ### ए* + - [एक खोज एल्गोरिथम](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [ए* पाथफाइंडिंग (E01: एल्गोरिथम स्पष्टीकरण) (वीडियो)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### फास्ट फूरियर ट्रांसफॉर्म + - [फूरियर ट्रांसफॉर्म के लिए एक इंटरएक्टिव गाइड](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [फूरियर रूपांतरण क्या है? इसका उपयोग किस लिए किया जाता है?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [फूरियर रूपांतरण क्या है? (वीडियो)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [फूट डालो और जीतो: एफएफटी (वीडियो)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [एफएफटी को समझना](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### ब्लूम फ़िल्टर + - एम बिट्स और के हैशिंग फ़ंक्शन के साथ ब्लूम फ़िल्टर को देखते हुए, सम्मिलन और सदस्यता परीक्षण दोनों ओ (के) हैं + - [ब्लूम फिल्टर (वीडियो)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [ब्लूम फिल्टर | विशाल डेटासेट का खनन | स्टैनफोर्ड यूनिवर्सिटी (वीडियो)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [ट्यूटोरियल](http://billmill.org/bloomfilter-tutorial/) + - [ब्लूम फ़िल्टर ऐप कैसे लिखें](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### हाइपरलॉग लॉग + - [केवल 1.5KB मेमोरी का उपयोग करके एक अरब विशिष्ट वस्तुओं की गणना कैसे करें](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -ऑब्जेक्ट्स-us.html) + +- ### इलाके-संवेदनशील हैशिंग + - दस्तावेजों की समानता निर्धारित करने के लिए प्रयुक्त + - MD5 या SHA के विपरीत जिनका उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या 2 दस्तावेज़/स्ट्रिंग बिल्कुल समान हैं + - [सिम्हाशिंग (उम्मीद है) मेड सिंपल](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### वैन एम्दे बोस पेड़ + - [फूट डालो और जीतो: वैन एम्दे बोस ट्री (वीडियो)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [एमआईटी व्याख्यान नोट्स](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) + +- ### संवर्धित डेटा संरचनाएं + - [सीएस 61बी लेक्चर 39: ऑगमेंटिंग डेटा स्ट्रक्चर](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### संतुलित खोज पेड़ + - कम से कम एक प्रकार के संतुलित बाइनरी ट्री को जानें (और जानें कि इसे कैसे लागू किया जाता है): + - "संतुलित खोज वृक्षों में, AVL और 2/3 वृक्ष अब अप्रचलित हैं, और लाल-काले वृक्ष अधिक लोकप्रिय प्रतीत होते हैं। + एक विशेष रूप से दिलचस्प स्व-व्यवस्थित डेटा संरचना स्प्ले ट्री है, जो रोटेशन का उपयोग करती है + किसी भी एक्सेस की गई कुंजी को रूट पर ले जाने के लिए।" - स्कीना + - इनमें से मैंने एक स्प्ले ट्री लगाने का फैसला किया। मैंने जो पढ़ा है, उससे आप लागू नहीं करेंगे a + आपके साक्षात्कार में संतुलित खोज वृक्ष। लेकिन मैं एक को कोडिंग करने के लिए एक्सपोजर चाहता था + और चलो इसका सामना करते हैं, स्प्ले ट्री मधुमक्खी के घुटने हैं। मैंने बहुत सारे लाल-काले पेड़ कोड पढ़े हैं + - स्प्ले ट्री: सम्मिलित करें, खोजें, कार्यों को हटाएं + यदि आप लाल/काले पेड़ को लागू करना समाप्त कर देते हैं तो इन्हें आजमाएं: + - खोज और सम्मिलन कार्य, हटाना छोड़ना + - मैं बी-ट्री के बारे में अधिक जानना चाहता हूं क्योंकि यह बहुत बड़े डेटा सेट के साथ इतने व्यापक रूप से उपयोग किया जाता है + - [सेल्फ बैलेंसिंग बाइनरी सर्च ट्री](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **एवीएल पेड़** + - प्रयोग में: + मैं जो कह सकता हूं, उससे व्यवहार में इनका अधिक उपयोग नहीं किया जाता है, लेकिन मैं देख सकता था कि वे कहाँ होंगे: + एवीएल पेड़ ओ (लॉग एन) खोज, सम्मिलन और हटाने का समर्थन करने वाली एक और संरचना है। यह अधिक कठोर है + लाल-काले पेड़ों की तुलना में संतुलित, धीमी प्रविष्टि और हटाने के लिए अग्रणी लेकिन तेजी से पुनर्प्राप्ति। यह बनाता है + डेटा संरचनाओं के लिए आकर्षक जिसे एक बार बनाया जा सकता है और पुनर्निर्माण के बिना लोड किया जा सकता है, जैसे भाषा + शब्दकोश (या प्रोग्राम डिक्शनरी, जैसे असेंबलर या दुभाषिया के ऑपकोड) + - [MIT AVL ट्री / AVL सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [एवीएल पेड़ (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/Qq5E0/avl-trees) + - [एवीएल ट्री इंप्लीमेंटेशन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/PKEBC/avl-tree-implementation) + - [स्प्लिट एंड मर्ज](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **स्प्ले ट्री** + - प्रयोग में: + स्प्ले ट्री आमतौर पर कैश, मेमोरी एलोकेटर, राउटर, कचरा संग्रहकर्ता के कार्यान्वयन में उपयोग किया जाता है, + डेटा संपीड़न, रस्सियों (लंबे पाठ स्ट्रिंग्स के लिए प्रयुक्त स्ट्रिंग का प्रतिस्थापन), Windows NT में (वर्चुअल मेमोरी में, + नेटवर्किंग और फाइल सिस्टम कोड) आदि + - [सीएस 61बी: स्प्ले ट्रीज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - एमआईटी व्याख्यान: स्प्ले पेड़: + - बहुत मैथली हो जाता है, लेकिन आखिरी 10 मिनट जरूर देखें। + - [वीडियो](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **लाल/काले पेड़** + - ये एक 2-3 पेड़ का अनुवाद हैं (नीचे देखें)। + - प्रयोग में: + लाल-काले पेड़ प्रविष्टि समय, विलोपन समय और खोज समय के लिए सबसे खराब स्थिति की गारंटी देते हैं। + यह न केवल उन्हें समय-संवेदी अनुप्रयोगों जैसे रीयल-टाइम अनुप्रयोगों में मूल्यवान बनाता है, + लेकिन यह उन्हें अन्य डेटा संरचनाओं में मूल्यवान बिल्डिंग ब्लॉक बनाता है जो सबसे खराब स्थिति की गारंटी प्रदान करते हैं; + उदाहरण के लिए, कम्प्यूटेशनल ज्यामिति में उपयोग की जाने वाली कई डेटा संरचनाएं लाल-काले पेड़ों पर आधारित हो सकती हैं, और + वर्तमान लिनक्स कर्नेल में प्रयुक्त पूर्णतः फेयर शेड्यूलर लाल-काले पेड़ों का उपयोग करता है। जावा के संस्करण 8 में, + संग्रह हैश मैप को इस तरह संशोधित किया गया है कि लिंक्डलिस्ट का उपयोग करने के बजाय समान तत्वों को खराब के साथ संग्रहीत करने के लिए + हैशकोड, एक लाल-काले पेड़ का उपयोग किया जाता है + - [अदुनी - एल्गोरिथम - लेक्चर 4 (लिंक जंप टू स्टार्टिंग पॉइंट) (वीडियो)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [अदुनी - एल्गोरिदम - व्याख्यान 5 (वीडियो)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [रेड-ब्लैक ट्री](https://en.wikipedia.org/wiki/Red%E2%80%93ब्लैक_ट्री) + - [एन इंट्रोडक्शन टू बाइनरी सर्च एंड रेड ब्लैक ट्री](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 पेड़ खोजें** + - प्रयोग में: + धीमी खोजों की कीमत पर 2-3 पेड़ों में तेजी से सम्मिलित होते हैं (चूंकि ऊंचाई एवीएल पेड़ों की तुलना में अधिक है)। + - आप 2-3 पेड़ का प्रयोग बहुत ही कम करेंगे क्योंकि इसके कार्यान्वयन में विभिन्न प्रकार के नोड्स शामिल हैं। इसकी जगह लोग लाल काले पेड़ों का इस्तेमाल करते हैं। + - [23-वृक्ष अंतर्ज्ञान और परिभाषा (वीडियो)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23-ट्री का बाइनरी व्यू](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 पेड़ (छात्र पाठ) (वीडियो)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 पेड़ (उर्फ 2-4 पेड़)** + - प्रयोग में: + प्रत्येक 2-4 पेड़ के लिए, समान क्रम में डेटा तत्वों के साथ संबंधित लाल-काले पेड़ होते हैं। सम्मिलन और विलोपन + 2-4 पेड़ों पर संचालन भी लाल-काले पेड़ों में रंग-फ्लिपिंग और घुमाव के बराबर है। इससे 2-4 पेड़ बन जाते हैं + लाल-काले पेड़ों के पीछे के तर्क को समझने के लिए महत्वपूर्ण उपकरण, और यही कारण है कि कई परिचयात्मक एल्गोरिथम ग्रंथ परिचय देते हैं + लाल-काले पेड़ों के ठीक पहले 2-4 पेड़, भले ही **2-4 पेड़ अक्सर व्यवहार में उपयोग नहीं किए जाते**। + - [सीएस 61बी व्याख्यान 26: संतुलित खोज पेड़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [नीचे ऊपर 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ऊपर से नीचे 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) पेड़** + - नोट: एन या के शाखा कारक है (अधिकतम शाखाएं) + - बाइनरी ट्री एक 2-एरी ट्री है, ब्रांचिंग फैक्टर के साथ = 2 + - 2-3 पेड़ हैं 3-आर्य + - [के-आरी ट्री](https://en.wikipedia.org/wiki/K-ary_tree) + + - **बी-पेड़** + - मजेदार तथ्य: यह एक रहस्य है, लेकिन बी बोइंग, बैलेंस्ड या बायर (सह-आविष्कारक) के लिए खड़ा हो सकता है। + - प्रयोग में: + बी-पेड़ व्यापक रूप से डेटाबेस में उपयोग किए जाते हैं। अधिकांश आधुनिक फाइल सिस्टम बी-पेड़ (या वेरिएंट) का उपयोग करते हैं। निम्न के अलावा + डेटाबेस में इसका उपयोग, बी-पेड़ का उपयोग फाइल सिस्टम में भी किया जाता है ताकि मनमाने ढंग से त्वरित यादृच्छिक पहुंच की अनुमति मिल सके + किसी विशेष फ़ाइल में ब्लॉक करें। मूल समस्या फ़ाइल ब्लॉक i एड्रेस को डिस्क ब्लॉक में बदल रही है + (या शायद एक सिलेंडर-हेड-सेक्टर के लिए) पता + - [बी-ट्री](https://en.wikipedia.org/wiki/B-tree) + - [बी-ट्री डेटास्ट्रक्चर](http://btechsmartclass.com/data_structures/b-trees.html) + - [बी-पेड़ों का परिचय (वीडियो)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [बी-ट्री डेफिनिशन एंड इंसर्शन (वीडियो)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [बी-ट्री डिलीशन (वीडियो)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - मेमोरी पदानुक्रम मॉडल (वीडियो)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - कैशे-अनभिज्ञ बी-पेड़ों को शामिल करता है, बहुत ही रोचक डेटा संरचनाएं + - पहले 37 मिनट बहुत तकनीकी हैं, छोड़े जा सकते हैं (बी ब्लॉक आकार, कैश लाइन आकार है) + + +- ### के-डी पेड़ + - एक आयत या उच्च आयाम वाली वस्तु में अंकों की संख्या खोजने के लिए बढ़िया + - k-निकटतम पड़ोसियों के लिए एक अच्छा फिट + - [केएनएन के-डी ट्री एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### सूचियां छोड़ें + - "ये कुछ हद तक एक पंथ डेटा संरचना के हैं" - स्कीना + - [रैंडमाइज़ेशन: स्किप लिस्ट (वीडियो)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [एनिमेशन और थोड़ा और विवरण के लिए](https://en.wikipedia.org/wiki/Skip_list) + +- ### नेटवर्क प्रवाह + - [फोर्ड-फुलकरसन 5 मिनट में — स्टेप बाय स्टेप उदाहरण (वीडियो)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [फोर्ड-फुलकर्सन एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [नेटवर्क फ़्लो (वीडियो)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### अलग सेट और संघ खोजें + - [यूसीबी 61बी - डिसजॉइंट सेट; छँटाई और चयन (वीडियो)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [सेजविक एल्गोरिथम - यूनियन-फाइंड (6 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### फास्ट प्रोसेसिंग के लिए गणित + - [पूर्णांक अंकगणित, करात्सुबा गुणन (वीडियो)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [चीनी अवशेष प्रमेय (क्रिप्टोग्राफी में प्रयुक्त) (वीडियो)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### ट्रीप + - बाइनरी सर्च ट्री और ढेर का संयोजन + - [ट्रीप](https://en.wikipedia.org/wiki/Treap) + - [डेटा संरचनाएं: समझाया गया जाल (वीडियो)](https://www.youtube.com/watch?v=6podLUYinH8) + - [सेट ऑपरेशंस में एप्लिकेशन](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### रैखिक प्रोग्रामिंग (वीडियो) + - [रैखिक प्रोग्रामिंग](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [न्यूनतम लागत ढूँढना](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [अधिकतम मूल्य ढूँढना](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [पायथन के साथ रैखिक समीकरण हल करें - सिम्पलेक्स एल्गोरिथम](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### ज्यामिति, उत्तल पतवार (वीडियो) + - [ग्राफ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ज्यामितीय एल्गोरिदम: ग्राहम और जार्विस - व्याख्यान 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [फूट डालो और जीतो: उत्तल हल, माध्यिका खोज](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### डिस्क्रीट मैथ + - [कंप्यूटर साइंस 70, 001 - स्प्रिंग 2015 - असतत गणित और संभाव्यता सिद्धांत](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [शाई सिमोंसन द्वारा असतत गणित (19 वीडियो)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [आईआईटी रोपड़ एनपीटीईएल द्वारा असतत गणित](https://nptel.ac.in/courses/106/106/106106183/) -- [ ] [Great intro (copied from System Design section): Algorithm design:](http://www.hiredintech.com/algorithm-design/) -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) -- [ ] [टॉपकोडर्स के लिए गणित](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [ ] [डायनामिक प्रोग्रामिंग – नौसिखिया से उन्नत](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) +--- -- [MIT इंटरव्यू सामग्री](https://courses.csail.mit.edu/iap/interview/materials.php) +## कुछ विषयों पर अतिरिक्त विवरण + + मैंने इन्हें ऊपर प्रस्तुत किए गए कुछ विचारों को सुदृढ़ करने के लिए जोड़ा, लेकिन उन्हें शामिल नहीं करना चाहता था + ऊपर क्योंकि यह बहुत अधिक है। किसी विषय पर इसे ज़्यादा करना आसान है। + आप इस सदी में काम पर रखना चाहते हैं, है ना? + +- **ठोस** + - [ ] [बॉब मार्टिन सॉलिड प्रिंसिपल्स ऑफ़ ऑब्जेक्ट ओरिएंटेड एंड एजाइल डिज़ाइन (वीडियो)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] एस - [एकल उत्तरदायित्व सिद्धांत](http://www.oodesign.com/single-responsibility-principle.html) | [प्रत्येक वस्तु के लिए एकल जिम्मेदारी](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [अधिक स्वाद](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] ओ - [खुला/बंद सिद्धांत](http://www.oodesign.com/open-close-principle.html) | [उत्पादन स्तर पर वस्तुएं विस्तार के लिए तैयार हैं लेकिन संशोधन के लिए नहीं](https://en.wikipedia.org/wiki/Open/closed_principle) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYhlUzODc) + - [ ] एल - [लिस्कोव प्रतिस्थापन सिद्धांत](http://www.oodesign.com/liskov-s-substitute-principle.html) | [आधार वर्ग और व्युत्पन्न वर्ग 'आईएस ए' सिद्धांत का पालन करते हैं](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitute-principle) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTMlh&hl&hl) + - [ ] मैं - [इंटरफ़ेस अलगाव सिद्धांत] (http://www.oodesign.com/interface-segregation-principle.html) | ग्राहकों को उन इंटरफेस को लागू करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते हैं + - [5 मिनट में इंटरफ़ेस अलग करने का सिद्धांत (वीडियो)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYm) + - [ ] डी - [निर्भरता उलटा सिद्धांत] (http://www.oodesign.com/dependency-inversion-principle.html) | वस्तुओं की संरचना में निर्भरता कम करें। + - [निर्भरता उलटा सिद्धांत क्यों है और यह महत्वपूर्ण क्यों है](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=hi + - **संघ-ढूंढें** + - [अवलोकन](https://www.coursera.org/learn/data-structs/lecture/JssSY/overview) + - [बेवकूफ कार्यान्वयन](https://www.coursera.org/learn/data-structs/lecture/EM5D0/naive-implementations) + - [पेड़](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [यूनियन बाय रैंक](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [पथ संपीड़न](https://www.coursera.org/learn/data-structs/lecture/Q9CVI/path-compression) + - [विश्लेषण विकल्प](https://www.coursera.org/learn/data-structs/lecture/GQQLN/analysis-Optional) - - [लीटकोड](https://leetcode.com/) - - [टॉप कोडर](https://www.topcoder.com/) - - [प्रोजेक्ट यूलर (math-focused)](https://projecteuler.net/index.php?section=problems) - - [कोडवॉर ](http://www.codewars.com) - - [हैकररैंक](https://www.hackerrank.com/) - - [कोदिलिटी](https://codility.com/programmers/) - - [इंटरव्यूकेक](https://www.interviewcake.com/) - - [इंटरव्यूबिट](https://www.interviewbit.com) +- **अधिक गतिशील प्रोग्रामिंग** (वीडियो) + - [6.006: डायनेमिक प्रोग्रामिंग I: फिबोनाची, सबसे छोटे रास्ते](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: डायनामिक प्रोग्रामिंग II: टेक्स्ट जस्टिफिकेशन, ब्लैकजैक](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: डीपी III: कोष्ठक, संपादित दूरी, नॅप्सैक](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: डीपी IV: गिटार फिंगरिंग, टेट्रिस, सुपर मारियो ब्रदर्स] (https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: डायनामिक प्रोग्रामिंग और उन्नत डीपी](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: डायनामिक प्रोग्रामिंग: ऑल-पेयर्स शॉर्टेस्ट पाथ्स](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: डायनामिक प्रोग्रामिंग (छात्र पाठ)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -## Once you're closer to the interview +- **उन्नत ग्राफ़ प्रोसेसिंग** (वीडियो) + - [तुल्यकालिक वितरित एल्गोरिदम: समरूपता-ब्रेकिंग। सबसे छोटे रास्ते फैले पेड़](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [एसिंक्रोनस डिस्ट्रिब्यूटेड एल्गोरिथम: सबसे छोटे पथ फैले पेड़](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) +- एमआईटी **संभाव्यता** (मैथी, और धीरे-धीरे जाएं, जो मैथी चीजों के लिए अच्छा है) (वीडियो): + - [MIT 6.042J - प्रायिकता परिचय](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - सशर्त संभावना](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [एमआईटी 6.042जे - इंडिपेंडेंस](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - रैंडम वैरिएबल](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - उम्मीद I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - उम्मीद II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - बड़े विचलन](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - रैंडम वॉक](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [ ] Cracking The Coding Interview Set 2 (विडियो): - - [कोड इंटरव्यू क्रैक करना](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) +- [साइमनसन: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) -## आपका रिज्यूमे +- **स्ट्रिंग मिलान** + - राबिन-कार्प (वीडियो): + - [राबिन कार्प्स एल्गोरिथम](https://www.coursera.org/lecture/data-structs/rabin-karps-algorithm-c0Qkw) + - [प्रीकंप्यूटिंग](https://www.coursera.org/learn/data-structs/lecture/nYrc8/optimization-precomputation) + - [ऑप्टिमाइज़ेशन: क्रियान्वयन और विश्लेषण](https://www.coursera.org/learn/data-structs/lecture/h4ZLc/optimization-implementation-and-analysis) + - [टेबल डबलिंग, कार्प-राबिन](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [रोलिंग हैश, अमूर्त विश्लेषण](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - नुथ-मॉरिस-प्रैट (केएमपी): + - [टी द नुथ-मॉरिस-प्रैट (केएमपी) स्ट्रिंग मैचिंग एल्गोरिथम](https://www.youtube.com/watch?v=5i7oKodCRJo) + - बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम + - [बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [उन्नत स्ट्रिंग खोज बॉयर-मूर-हॉर्सपूल एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [पाठ्यक्रम: स्ट्रिंग्स पर एल्गोरिदम](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - बहुत अच्छी शुरुआत होती है, लेकिन जब तक यह केएमपी से आगे निकल जाता है तब तक यह जरूरत से ज्यादा जटिल हो जाता है + - कोशिशों की अच्छी व्याख्या + - छोड़ा जा सकता है +- **क्रमबद्ध करना** -- [एक (थोड़ा) कम भयंकर रिज्यूमे करने के लिए दस सुझाव](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- कोडिंग इंटरव्यू को क्रैक करने के लिए उपयोगी सामान + - स्टैनफोर्ड छँटाई पर व्याख्यान: + - [व्याख्यान 15 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [व्याख्यान 16 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - शाई सिमोंसन, [Aduni.org](http://www.aduni.org/): + - [एल्गोरिदम - छँटाई - व्याख्यान 2 (वीडियो)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [एल्गोरिदम - सॉर्टिंग II - लेक्चर 3 (वीडियो)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - स्टीवन स्कीएना छँटाई पर व्याख्यान: + - [CSE373 2020 - मर्जसॉर्ट/क्विकसॉर्ट (वीडियो)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - लीनियर सॉर्टिंग (वीडियो)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) +## वीडियो श्रृंखला -## इंटरव्यू की सोंच +वापस बैठो और आनंद लो। - निचे दिए गए विषयो के साथ साथ, अपने २० इंटरव्यू प्रश्न तैयार रखे. हर एक प्रश्न के २-३ जवाब तैयार रखे. आपने जो हासिल किया हे उसकी कहानी रखे. - -- आपको ये नौकरी क्यूँ चाहिए? -- आपने कौनसी एक कठिन समस्या हल की हैं? -- आपकी सबसे बड़ी चुनौतियां कोनसी थी? -- आपने देखी हुई सर्वोतम और बुरी संरचनाये? -- किसी मौजूदा गूगल उत्पाद में सुधार के लिए विचार. -- आप अपना काम सर्वोत्तम कैसे कर सकते हो, टीम के साथ या एकेले? -- आपकी कोनसी कुशलता या अनुभव आपके भूमिका में मददगार होंगे? -- आपने [जॉब क्ष / प्रोजेक्ट य] में सबसे ज्यादा किससे आनद मिला? -- आपकी सबसे बड़ी [जॉब क्ष/ प्रोजेक्ट य] की चुनोती जिसे आपको सामना करना पड़ा? -- [जॉब क्ष / प्रोजेक्ट य] में से सबसे बड़ा बग? -- आपने [जॉब क्ष / प्रोजेक्ट य] में क्या सिखा? -- [जॉब क्ष / प्रोजेक्ट य] में आप क्या सुधार कर सकते थे/ करना चाहते थे? - -## इंटरव्यूअर के लिए प्रश्न रखे - - मेरे कुछ प्रश्न (मुझे पहले से ही कुछ जवाब पता है पर मैं टीम की राय जानना चाहता हूँ): - -- आपकी टीम कितनी बड़ी हैं? -- आपकी डेव साइकिल कैसी हैं? क्या आपको वॉटरफॉल/स्प्रिंट/एजाइल पता हैं? -- क्या काम के पीछे भागना पड़ता हैं? या लचीलापन हैं? -- आपकी टीम मैं निर्णय कैसे लिए जाते हैं? -- हर सप्ताह आपकी कितनी बैठके होती हैं? -- क्या आपका काम का माहौल काम करने मैं मदद करता हैं? -- आप किसपे काम करते हो? -- आपको उसमे क्या पसंद हैं? -- आपका काम जीवन कैसा हैं? +- [व्यक्तिगत गतिशील प्रोग्रामिंग समस्याओं की सूची (प्रत्येक संक्षिप्त है)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) ---- +- [x86 आर्किटेक्चर, असेंबली, एप्लिकेशन (11 वीडियो)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) ---- +- [MIT 18.06 रैखिक बीजगणित, वसंत 2005 (35 वीडियो)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -## Additional Learnings (not required) - - Everything below is my recommendation, not Google's, and you may not have enough time to - learn, watch or read them all. That's ok. I may not either. - -- ### Information theory (विडियो) - - [ ] [खान अकादमी](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] more about Markov processes: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. - -- ### Parity & Hamming Code (विडियो) - - [ ] [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### Entropy - - also see विडियो below - - make sure to watch information theory विडियो first - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (विडियो)](https://youtu.be/JnJq3Py0dyM?t=176) - -- ### Cryptography - - also see विडियो below - - make sure to watch information theory विडियो first - - [ ] [खान अकादमी Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- ### Compression - - make sure to watch information theory विडियो first - - [ ] कोम्पुतेरफिल(विडियो): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head विडियो](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### नेटवर्किंग (विडियो) - - [ ] [खान अकादमी](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP और TCP: परिवहन प्रोटोकॉल की तुलना](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP और OSI मॉडल के बारे में](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [इंटरनेट के पार पैकेट पारेषण. नेटवर्किंग और TCP/IP टुटोरिअल.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL और HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [विडियो शृखला(२१ विडियो)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - -- ### Computer Security - - [MIT (23 विडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### Parallel Programming - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (विडियो)](https://www.youtube.com/watch?v=uY85GkaYzBk) - -- ### Messaging, Serialization, and Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (विडियो)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [Get Startet](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) - -- ### Fast Fourier Transform - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (विडियो)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (विडियो)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - -- ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (विडियो)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) - -- ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - -- ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [ ] [Randomization: Skip Lists (विडियो)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - -- ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (विडियो)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (विडियो)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (विडियो)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - -- ### Disjoint Sets & Union Find - - [ ] [Disjoint Set](https://en.wikipedia.org/wiki/Disjoint-set_data_structure) - - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (विडियो)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) - - [ ] Coursera (not needed since the above video explains it great): - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (विडियो)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (विडियो)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - -- ### Treap - - Combination of a binary search tree and a heap - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (विडियो)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - -- ### Linear Programming (विडियो) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - -- ### ज्यामिति, कॉन्वेक्स हल (विडियो) -    - [ ] [लेखाचित्र अल्गोरिथम IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान ९](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) -    - [ ] [ज्यामितीय एल्गोरिदम: ग्रैहम और जारविस - व्याख्यान १०](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -    - [ ] [डिवाइड और कॉन्कर: कॉन्वेक्स हल, माध्य ढूँढना](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - -- ### Discrete math - - see विडियो below - -- ### Machine Learning - - [ ] Why ML? - - [ ] [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [Large-Scale Deep Learning for Intelligent Computer Systems (विडियो)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Google's Cloud Machine learning tools (विडियो)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (विडियो)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow (विडियो)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Practical Guide to implementing Neural Networks in Python](using Theano)])http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [ ] [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [विडियो only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see विडियो 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [ ] [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [ ] [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [ ] [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [ ] [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - Resources: - - Great book: Data Science from Scratch: First Principles with Python: https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X - - Data School: http://www.dataschool.io/ - -- ### गो -    - [ ] विडियो: - - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) -    - [ ] पुस्तके: -        - [ ] [गो प्रोग्रामिंग का परिचय (ऑनलाइन मुफ्त पढ़े)](https://www.golang-book.com/books/intro) -        - [ ] [गो प्रोग्रामिंग लैंग्वेज (दोनोवन & केर्निघन)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) -    - [ ] [बूटकैंप ](https://www.golang-book.com/guides/bootcamp) - --- - -## Additional Detail on Some Subjects - - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? - -- [ ] **और डायनामिक प्रोग्रामिंग** (विडियो) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **Advanced Graph Processing** (विडियो) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **Probability** (mathy, and go slowly, which is good for mathy things) (विडियो): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: Approximation Algorithms (विडियो)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -## Video Series - -Sit back and enjoy. "netflix and skill" :P - -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -- [ ] [x86 Architecture, Assembly, Applications (11 विडियो)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) - -- [ ] [MIT 18.06 Linear Algebra, वसंत2005 (35 विडियो)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - -- [ ] [कंप्यूटर विज्ञान ७०, ००१ – वसंत २०१५ - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) - -- [ ] [Discrete Mathematics (१९ विडियो)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - -- [ ] CSE373 - एल्गोरिदम का विश्लेषण (२५ विडियो) - - [एल्गोरिथ्म डिजाइन मैनुअल से Skiena व्याख्यान](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - -- [ ] [UC बर्कले 61B (वसंत2014): डेटा संरचनाएं (२५ विडियो)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - -- [ ] [UC बर्कले 61B (पतझड़ 2006): डेटा संरचनाएं (३९ विडियो)]( https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) - -- [ ] [UC बर्कले 61C: मशीन संरचनाएं (२६ विडियो)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) - -- [ ] [OOSE: युमल और जावा के साथ सॉफ्टवेर का विकास (२१ विडियो)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [उत्कृष्ट - एमआईटी कैलकुलस पर दोबारा गौर किया गया: सिंगल वेरिएबल कैलकुलस](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [UC बर्कले CS १५२: कंप्यूटर वास्तुकला और इंजीनियरिंग (२० विडियो )](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- [एल्गोरिदम डिज़ाइन मैनुअल से स्कीएना व्याख्यान - CSE373 2020 - एल्गोरिदम का विश्लेषण (26 वीडियो)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) -- [ ] [MIT ६.००४: संगणना संरचनाएं (४९ विडियो)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [यूसी बर्कले 61बी (स्प्रिंग 2014): डेटा संरचनाएं (25 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [MIT ६.००६: अल्गोरिथम की पहेचान (४७ विडियो)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [यूसी बर्कले 61बी (पतन 2006): डेटा संरचनाएं (39 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [MIT ६.०३३: कंप्यूटर सिस्टम इंजीनियरिंग (२२ विडियो)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [यूसी बर्कले 61सी: मशीन संरचनाएं (26 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [MIT ६.०३४ कृत्रिम होशियारी, पतझड़ २०१० (३० विडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [OOSE: UML और Java का उपयोग करने वाला सॉफ़्टवेयर डेवलपर (21 वीडियो)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] [MIT ६.०४२J: कंप्यूटर विज्ञान के लिए गणित, पतझड़ २०१० (२५ वीडियो)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.004: संगणना संरचनाएं (49 वीडियो)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [कार्नेगी मेलन - कंप्यूटर आर्किटेक्चर लेक्चर (39 वीडियो)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT ६.०४६: एल्गोरिदम का विश्लेषण और रचना(३४ विडियो)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.006: एल्गोरिदम का परिचय (47 वीडियो)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: कंप्यूटर सिस्टम इंजीनियरिंग (22 वीडियो)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT ६.०५०J: सूचना और एन्ट्रापी, वसंत २००८ (१९ विडियो)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.034 आर्टिफिशियल इंटेलिजेंस, फॉल 2010 (30 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT ६.८५१: उन्नत डेटा संरचनाएं (२२ विडियो)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.042J: कंप्यूटर साइंस के लिए गणित, फॉल 2010 (25 वीडियो)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT ६.८५४: उन्नत एल्गोरिदम, वसंत २०१६ (२४ विडियो)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.046: एल्गोरिदम का डिज़ाइन और विश्लेषण (34 वीडियो)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT ८६.८५८ कंप्यूटर सिस्टम्स सुरक्षा, पताज़द २०१४](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] स्टैनफोर्ड: प्रोग्रामिंग मानदंड (१७ विडियो) - - [C और C++ पर कोर्स](https://www.youtube.com/watch?v=jTSvthW34GU&list=PLC0B8B318B7394B6F&nohtml5=False) +- [MIT 6.851: उन्नत डेटा संरचनाएं (22 वीडियो)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [क्रिप्टोग्राफ़ी का परिचय](https://www.youtube.com/watch?v=2aHkqB2-46k&feature=youtu.be) - - [श्रृंखला में अधिक (क्रम में नहीं)](https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg) - -- [ ] [विशाल डेटासेट खनन – स्टैनफोर्ड विश्वविद्यालय(९४ विडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [MIT 6.854: उन्नत एल्गोरिदम, स्प्रिंग 2016 (24 वीडियो)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -## शायद +- [हार्वर्ड COMPSCI 224: उन्नत एल्गोरिदम (25 वीडियो)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -http://www.gainlo.co/#!/ - बड़ी कंपनी के मोक इंटरव्यू +- [MIT 6.858 कंप्यूटर सिस्टम सुरक्षा, फॉल 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [स्टैनफोर्ड: प्रोग्रामिंग प्रतिमान (27 वीडियो)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) ---- +- [क्रिस्टोफ पार द्वारा क्रिप्टोग्राफी का परिचय](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [स्लाइड और समस्या सेट के साथ पाठ्यक्रम वेबसाइट] (http://www.crypto-textbook.com/) -## जब आपको नौकरी मिल जाये +- [खनन बड़े पैमाने पर डेटासेट - स्टैनफोर्ड यूनिवर्सिटी (94 वीडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -बधाई हो! +- [शारदा हर्के द्वारा ग्राफ सिद्धांत (67 वीडियो)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## कंप्यूटर विज्ञान पाठ्यक्रम + +- [ऑनलाइन सीएस पाठ्यक्रम की निर्देशिका](https://github.com/open-source-society/computer-science) +- [सीएस पाठ्यक्रमों की निर्देशिका (कई ऑनलाइन व्याख्यान के साथ)](https://github.com/prakhar1989/awesome-courses) + +## एल्गोरिदम कार्यान्वयन + +- [प्रिंसटन विश्वविद्यालय द्वारा एकाधिक एल्गोरिदम कार्यान्वयन](https://algs4.cs.princeton.edu/code) + + +## कागजात -- [१० बाते काश मुझे गूगल के पहले दिन पता होती](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) +- [क्लासिक पेपर पसंद हैं?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: अनुक्रमिक प्रक्रियाओं का संचार](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [गो में लागू](https://godoc.org/github.com/thomas11/csp) +- [2003: द गूगल फाइल सिस्टम](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 में कोलोसस द्वारा प्रतिस्थापित +- [2004: MapReduce: बड़े समूहों पर सरलीकृत डेटा प्रोसेसिंग]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - ज्यादातर क्लाउड डेटाफ्लो द्वारा प्रतिस्थापित किया गया? +- [2006: बिगटेबल: संरचित डेटा के लिए एक वितरित भंडारण प्रणाली](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: लूजली-कपल्ड डिस्ट्रिब्यूटेड सिस्टम्स के लिए चब्बी लॉक सर्विस](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: डायनमो: अमेज़ॅन का अत्यधिक उपलब्ध की-वैल्यू स्टोर] (http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - डायनमो पेपर ने नोएसक्यूएल क्रांति की शुरुआत की +- [2007: प्रत्येक प्रोग्रामर को मेमोरी के बारे में क्या पता होना चाहिए (बहुत लंबा, और लेखक कुछ वर्गों को छोड़ने के लिए प्रोत्साहित करता है)](https://www.akkadia.org/drepper/cpuemory.pdf) +- 2012: एड्रेस सैनिटाइज़र: एक तेज़ पता सैनिटी चेकर: + - [कागज](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [वीडियो] (https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: स्पैनर: Google का वैश्विक रूप से वितरित डेटाबेस: + - [कागज](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [वीडियो] (https://www.usenix.org/node/170855) +- [2015: Google पर सतत पाइपलाइन](http://static.googleusercontent.com/media/research.google.com/hi//pubs/archive/43790.pdf) +- [2015: बड़े पैमाने पर उच्च उपलब्धता: विज्ञापनों के लिए Google के डेटा इन्फ्रास्ट्रक्चर का निर्माण](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: डेवलपर्स कैसे कोड की खोज करते हैं: एक केस स्टडी](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- अधिक पेपर: [1,000 पेपर](https://github.com/0voice/computer_expert_paper) -सिखाते रहो. +## लाइसेंस -वास्तव में आपकी पढाई कभी ख़त्म नहीं होती. +[CC-BY-SA-4.0](./LICENSE.txt) From df538548186d1d805baba16d7d2f0945742b8825 Mon Sep 17 00:00:00 2001 From: Kapil Chauhan Date: Wed, 31 Aug 2022 06:35:55 +0530 Subject: [PATCH 661/857] Delete README-hi.md --- README-hi.md | 1952 -------------------------------------------------- 1 file changed, 1952 deletions(-) delete mode 100644 README-hi.md diff --git a/README-hi.md b/README-hi.md deleted file mode 100644 index 41aef6e591..0000000000 --- a/README-hi.md +++ /dev/null @@ -1,1952 +0,0 @@ -# कोडिंग इंटरव्यू यूनिवर्सिटी - -> मैंने मूल रूप से इसे एक सॉफ्टवेयर इंजीनियर बनने के लिए अध्ययन विषयों की एक छोटी टू-डू सूची के रूप में बनाया था, -> लेकिन यह उस बड़ी सूची तक बढ़ गया है जिसे आप आज देखते हैं। इस अध्ययन योजना को पढ़ने के बाद, [मुझे काम पर रखा गया -> Amazon में एक सॉफ्टवेयर डेवलपमेंट इंजीनियर के रूप में](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> आपको शायद उतना अध्ययन नहीं करना पड़ेगा जितना मैंने किया था। वैसे भी, आपकी जरूरत की हर चीज यहां है। -> -> मैंने कई महीनों तक प्रतिदिन लगभग 8-12 घंटे अध्ययन किया। यह मेरी कहानी है: [मैंने एक Google साक्षात्कार के लिए 8 महीने तक पूर्णकालिक अध्ययन क्यों किया](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-साक्षात्कार-cc662ce9bb13) -> -> **कृपया ध्यान दें:** आपको मेरे जितना अध्ययन करने की आवश्यकता नहीं होगी। मैंने उन चीजों पर बहुत समय बर्बाद किया जो मुझे जानने की जरूरत नहीं थी। उसके बारे में अधिक जानकारी नीचे। मैं आपका कीमती समय बर्बाद किए बिना वहां पहुंचने में आपकी मदद करूंगा। -> -> यहां सूचीबद्ध आइटम आपको किसी भी सॉफ्टवेयर कंपनी में तकनीकी साक्षात्कार के लिए अच्छी तरह से तैयार करेंगे, -> दिग्गजों सहित: अमेज़ॅन, फेसबुक, गूगल और माइक्रोसॉफ्ट। -> -> *आपको शुभकामनाएं!* - -
- -अनुवाद: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) -- [Japanese (日本語)](translations/README-ja.md) -- [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) -- [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) -- [বাংলা - Bangla](translations/README-bn.md) - -
- -
- -अनुवाद जारी है -: - -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - -
- -
-
-

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

-

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

-

- -

-
-

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

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

-
-
- -## What is it? - -![ -व्हाइटबोर्ड पर कोडिंग - एचबीओ की सिलिकॉन वैली से](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - - -एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है। - -**Required:** - -* कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि) -* धैर्य -* समय -ध्यान दें कि यह **सॉफ्टवेयर इंजीनियरिंग** के लिए एक अध्ययन योजना है, न कि वेब विकास के लिए। Google, Amazon जैसी बड़ी सॉफ्टवेयर कंपनियां, -फेसबुक और माइक्रोसॉफ्ट सॉफ्टवेयर इंजीनियरिंग को वेब डेवलपमेंट से अलग मानते हैं। उदाहरण के लिए, अमेज़ॅन के पास है -फ्रंटएंड इंजीनियर्स (FEE) और सॉफ्टवेयर डेवलपमेंट इंजीनियर्स (SDE)। ये 2 अलग-अलग भूमिकाएँ और साक्षात्कार हैं -वे समान नहीं होंगे, क्योंकि प्रत्येक की अपनी योग्यताएं हैं। इन कंपनियों को कंप्यूटर विज्ञान के ज्ञान की आवश्यकता होती है -सॉफ्टवेयर विकास / इंजीनियरिंग भूमिकाएँ। - ---- - -## विषयसूची - -### अध्ययन योजना -- [यह क्या है?](#क्या-क्या है-यह) -- [इसका उपयोग क्यों करें?](# Why-use-it) -- [इसका उपयोग कैसे करें] (# कैसे-कैसे उपयोग करें-इसे) -- [यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं](#न-महसूस-आप-नहीं-स्मार्ट-पर्याप्त) -- [वीडियो संसाधनों के बारे में एक नोट](#a-नोट-के बारे में-वीडियो-संसाधन) -- [एक प्रोग्रामिंग भाषा चुनें] (# प्रोग्रामिंग भाषा चुनें) -- [डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें](#books-for-data-structures-and-algorithms) -- [साक्षात्कार तैयारी पुस्तकें](#साक्षात्कार-तैयारी-किताबें) -- [मेरी गलतियाँ न करें] (# मेरी गलतियाँ न करें) -- [जो आप कवर नहीं देखेंगे] (# क्या-आप-नहीं-देख-कवर) -- [दैनिक योजना](#दैनिक योजना) -- [कोडिंग प्रश्न अभ्यास] (# कोडिंग-प्रश्न-अभ्यास) -- [कोडिंग समस्याएं] (# कोडिंग-समस्याएं) - -### अध्ययन के विषय - -- [एल्गोरिदमिक जटिलता / बिग-ओ / एसिम्प्टोटिक विश्लेषण] (# एल्गोरिदमिक-जटिलता--बिग-ओ--एसिम्प्टोटिक-विश्लेषण) -- [डेटा संरचनाएं] (# डेटा-संरचनाएं) - - [सरणी](#सरणी) - - [लिंक की गई सूचियाँ] (# लिंक्ड-सूचियाँ) - - [स्टैक] (#स्टैक) - - [कतार] (# कतार) - - [हैश टेबल] (# हैश-टेबल) -- [अधिक ज्ञान](# अधिक-ज्ञान) - - [द्विआधारी खोज](#द्विआधारी-खोज) - - [बिटवाइज ऑपरेशंस](#बिटवाइज-ऑपरेशंस) -- [पेड़](#पेड़) - - [पेड़ - नोट्स और पृष्ठभूमि](#trees---notes--background) - - [बाइनरी सर्च ट्री: BSTs](#binary-search-trees-bsts) - - [ढेर/प्राथमिकता कतार/बाइनरी हीप](# हीप--प्राथमिकता-कतार--द्विआधारी-ढेर) - - संतुलित खोज पेड़ (सामान्य अवधारणा, विवरण नहीं) - - ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर, बीएफएस, डीएफएस -- [छँटाई] (# छँटाई) - - चयन - - प्रविष्टि - - ढेर बनाएं और छांटें - - जल्दी से सुलझाएं - - मर्ज़ सॉर्ट -- [ग्राफ](#ग्राफ) - - निर्देशित - - अप्रत्यक्ष - - सहखंडज मैट्रिक्स - - निकटता सूची - - ट्रैवर्सल: बीएफएस, डीएफएस -- [और भी अधिक ज्ञान] (# और भी अधिक-ज्ञान) - - [पुनरावृत्ति] (# रिकर्सन) - - [डायनामिक प्रोग्रामिंग] (# डायनामिक-प्रोग्रामिंग) - - [डिज़ाइन पैटर्न] (# डिज़ाइन-पैटर्न) - - [कॉम्बिनेटोरिक्स (n चुनें k) और प्रायिकता](#combinatorics-n-choose-k--probability) - - [एनपी, एनपी-पूर्ण और अनुमान एल्गोरिदम] (# एनपी-एनपी-पूर्ण-और-सन्निकटन-एल्गोरिदम) - - [कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं](#how-कंप्यूटर-प्रोसेस-ए-प्रोग्राम) - - [कैश] (# कैश) - - [प्रक्रियाएं और धागे] (# प्रक्रियाएं-और-धागे) - - [परीक्षण] (# परीक्षण) - - [स्ट्रिंग खोज और जोड़तोड़] (# स्ट्रिंग-खोज--हेरफेर) - - [कोशिश करता है] (# प्रयास करता है) - - [फ़्लोटिंग पॉइंट नंबर] (# फ़्लोटिंग-पॉइंट-नंबर) - - [यूनिकोड] (# यूनिकोड) - - [एंडियननेस](#endianness) - - [नेटवर्किंग] (# नेटवर्किंग) -- [अंतिम समीक्षा](#अंतिम समीक्षा) -### नौकरी पाना - -- [अपना रिज्यूमे अपडेट करें](#अपडेट-अपना रिज्यूमे) -- [नौकरी खोजें](# एक नौकरी खोजें) -- [साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी](#साक्षात्कार-प्रक्रिया-सामान्य-साक्षात्कार-तैयारी) -- [साक्षात्कार आने के समय के बारे में सोचें] -- [साक्षात्कारकर्ता के लिए प्रश्न हैं](#हैव-प्रश्न-के लिए-साक्षात्कारकर्ता) -- [वन्स यू हैव गॉट द जॉब] (# वन्स-यूव-गोट-द-जॉब) - -***** इस बिंदु के नीचे सब कुछ वैकल्पिक है ----------------** - -### वैकल्पिक अतिरिक्त विषय और संसाधन - -- [अतिरिक्त पुस्तकें](#अतिरिक्त पुस्तकें) -- [सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग] (# सिस्टम-डिज़ाइन-स्केलेबिलिटी-डेटा-हैंडलिंग) (यदि आपके पास 4+ वर्ष का अनुभव है) -- [अतिरिक्त शिक्षण](#अतिरिक्त-शिक्षण) - - [संकलक](#संकलक) - - [Emacs और vi(m)](#emacs-and-vim) - - [यूनिक्स कमांड लाइन टूल्स] (# यूनिक्स-कमांड-लाइन-टूल्स) - - [सूचना सिद्धांत](#सूचना-सिद्धांत-वीडियो) - - [समता और हैमिंग कोड] (# समता--हैमिंग-कोड-वीडियो) - - [एंट्रॉपी] (#एंट्रॉपी) - - [क्रिप्टोग्राफी](#क्रिप्टोग्राफी) - - [संपीड़न](#संपीड़न) - - [कंप्यूटर सुरक्षा](#कंप्यूटर-सुरक्षा) - - [कचरा संग्रह] (# कचरा संग्रह) - - [समानांतर प्रोग्रामिंग] (# समानांतर प्रोग्रामिंग) - - [मैसेजिंग, सीरियलाइज़ेशन, और क्यूइंग सिस्टम](#messaging-serialization-and-queueing-systems) - - [ए*](#ए) - - [फास्ट फूरियर ट्रांसफॉर्म](#फास्ट-फूरियर-ट्रांसफॉर्म) - - [ब्लूम फ़िल्टर](#ब्लूम-फ़िल्टर) - - [हाइपरलॉगलॉग](#हाइपरलॉगलॉग) - - [इलाके-संवेदनशील हैशिंग](#इलाके-संवेदी-हैशिंग) - - [वैन एम्दे बोस ट्री](#van-emde-boas-trees) - - [संवर्धित डेटा संरचनाएं] (# संवर्धित-डेटा-संरचनाएं) - - [संतुलित खोज वृक्ष](#संतुलित-खोज-वृक्ष) - - एवीएल पेड़ - - स्प्ले पेड़ - - लाल/काले पेड़ - - 2-3 सर्च ट्री - - 2-3-4 पेड़ (उर्फ 2-4 पेड़) - - एन-आर्य (के-आर्य, एम-आर्य) पेड़ - - बी-पेड़ - - [के-डी पेड़](#के-डी-पेड़) - - [छोड़ें सूचियां](#छोड़ें-सूचियां) - - [नेटवर्क प्रवाह](# नेटवर्क-प्रवाह) - - [असंबद्ध सेट और संघ खोजें] (# असंबद्ध-सेट--संघ-खोज) - - [तेजी से प्रसंस्करण के लिए गणित](# गणित के लिए तेजी से प्रसंस्करण) - - [ट्रीप] (#treap) - - [रैखिक प्रोग्रामिंग](#रैखिक-प्रोग्रामिंग-वीडियो) - - [ज्यामिति, उत्तल पतवार] (# ज्यामिति-उत्तल-पतवार-वीडियो) - - [असतत गणित] (# असतत-गणित) -- [कुछ विषयों पर अतिरिक्त विवरण](#अतिरिक्त-विवरण-पर-कुछ-विषयों) -- [वीडियो श्रृंखला](#वीडियो-श्रृंखला) -- [कंप्यूटर विज्ञान पाठ्यक्रम](#कंप्यूटर-विज्ञान-पाठ्यक्रम) -- [कागजात](#कागजात) - ---- - -## इसका उपयोग क्यों करें? - -अगर आप किसी बड़ी कंपनी में सॉफ्टवेयर इंजीनियर के तौर पर काम करना चाहते हैं तो ये बातें आपको जाननी चाहिए। - -यदि आप कंप्यूटर विज्ञान में डिग्री प्राप्त करने से चूक गए, जैसे मैंने किया, तो यह आपको पकड़ लेगा और आपके जीवन के चार साल बचाएगा। - -जब मैंने इस परियोजना को शुरू किया, तो मुझे ढेर से ढेर का पता नहीं था, बिग-ओ को कुछ भी नहीं पता था, या पेड़ों के बारे में कुछ भी नहीं पता था, या कैसे करना है -एक ग्राफ पार करें। अगर मुझे एक सॉर्टिंग एल्गोरिदम कोड करना पड़ा, तो मैं आपको बता सकता हूं कि यह भयानक होता। -मेरे द्वारा उपयोग की जाने वाली प्रत्येक डेटा संरचना भाषा में बनाई गई थी, और मुझे नहीं पता था कि उन्होंने कैसे काम किया -हुड के नीचे बिल्कुल। मुझे कभी भी स्मृति का प्रबंधन नहीं करना पड़ा जब तक कि मैं जो प्रक्रिया चला रहा था वह "आउट ऑफ" -मेमोरी" त्रुटि, और फिर मुझे एक समाधान खोजना होगा। मैंने अपने जीवन में कुछ बहुआयामी सरणियों का उपयोग किया और -हजारों सहयोगी सरणियाँ, लेकिन मैंने कभी भी खरोंच से डेटा संरचनाएँ नहीं बनाईं। - -यह एक लंबी योजना है। आपको महीनों लग सकते हैं। यदि आप पहले से ही इसके बारे में बहुत कुछ जानते हैं तो इसमें आपको बहुत कम समय लगेगा। - -## इसका उपयोग कैसे करना है - -नीचे सब कुछ एक रूपरेखा है, और आपको ऊपर से नीचे तक वस्तुओं से निपटना चाहिए। - -मैं गिटहब के विशेष मार्कडाउन स्वाद का उपयोग कर रहा हूं, जिसमें प्रगति को ट्रैक करने के लिए कार्य सूचियां शामिल हैं। - - [GitHub-फ्लेवर्ड मार्कडाउन के बारे में अधिक जानकारी](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -### यदि आप git . का उपयोग नहीं करना चाहते हैं - -इस पृष्ठ पर, शीर्ष के पास कोड बटन पर क्लिक करें, फिर "ज़िप डाउनलोड करें" पर क्लिक करें। फ़ाइल को अनज़िप करें और आप टेक्स्ट फ़ाइलों के साथ काम कर सकते हैं। - -यदि आप एक ऐसे कोड संपादक में खुले हैं जो मार्कडाउन को समझता है, तो आप देखेंगे कि सब कुछ अच्छी तरह से स्वरूपित है। - -![रेपो को ज़िप फ़ाइल के रूप में कैसे डाउनलोड करें](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - -### यदि आप गिट के साथ सहज हैं - -एक नई शाखा बनाएँ ताकि आप इस तरह की वस्तुओं की जाँच कर सकें, बस कोष्ठक में एक x डालें: [x] -1. *** फोर्क द गिटहब रेपो:*** `https://github.com/jwasham/coding-interview-university` फोर्क बटन पर क्लिक करके। - - ![फोर्क द गिटहब रेपो](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) - -1. अपने स्थानीय रेपो को क्लोन करें: - - ``` - git क्लोन git@github.com:/coding-interview-university.git - सीडी कोडिंग-साक्षात्कार-विश्वविद्यालय - गिट चेकआउट-बी प्रगति - git रिमोट jwasham जोड़ें https://github.com/jwasham/coding-interview-university - गिट फ़ेच --all - ``` - -1. अपने परिवर्तन पूर्ण करने के बाद सभी बक्सों को X से चिह्नित करें: - - ``` - गिट जोड़ें। - गिट प्रतिबद्ध-एम "चिह्नित एक्स" - git rebase jwasham/main - गिट पुश --सेट-अपस्ट्रीम मूल प्रगति - गिट पुश --फोर्स - ``` - -## यह महसूस न करें कि आप पर्याप्त स्मार्ट नहीं हैं - -- सफल सॉफ्टवेयर इंजीनियर होशियार होते हैं, लेकिन बहुतों में असुरक्षा की भावना होती है कि वे पर्याप्त स्मार्ट नहीं हैं। -- निम्नलिखित वीडियो आपको इस असुरक्षा को दूर करने में मदद कर सकते हैं: - - [द मिथ ऑफ़ द जीनियस प्रोग्रामर](https://www.youtube.com/watch?v=0SARbwvhupQ) - - [इट्स डेंजरस टू गो अलोन: बैटलिंग द इनविजिबल मॉन्स्टर्स इन टेक](https://www.youtube.com/watch?v=1i8ylq4j_EY) - -## वीडियो संसाधनों के बारे में एक नोट - -कुछ वीडियो केवल कौरसेरा या एडएक्स कक्षा में नामांकन करके उपलब्ध होते हैं। इन्हें एमओओसी कहा जाता है। -कभी-कभी कक्षाएं सत्र में नहीं होती हैं, इसलिए आपको कुछ महीने इंतजार करना पड़ता है, इसलिए आपके पास पहुंच नहीं है। - -ऑनलाइन पाठ्यक्रम संसाधनों को मुफ्त और हमेशा उपलब्ध सार्वजनिक स्रोतों से बदलना बहुत अच्छा होगा, -जैसे YouTube वीडियो (अधिमानतः विश्वविद्यालय व्याख्यान), ताकि आप लोग इनका कभी भी अध्ययन कर सकें, -केवल तब नहीं जब कोई विशिष्ट ऑनलाइन पाठ्यक्रम सत्र में हो। - -## प्रोग्रामिंग भाषा चुनें - -आपके द्वारा किए जाने वाले कोडिंग साक्षात्कार के लिए आपको एक प्रोग्रामिंग भाषा चुननी होगी, -लेकिन आपको एक ऐसी भाषा भी ढूंढनी होगी जिसका उपयोग आप कंप्यूटर विज्ञान अवधारणाओं का अध्ययन करने के लिए कर सकें। - -अधिमानतः भाषा वही होगी, इसलिए आपको केवल एक में कुशल होने की आवश्यकता है। - -### इस अध्ययन योजना के लिए - -जब मैंने अध्ययन की योजना बनाई, तो मैंने इसमें से अधिकांश के लिए 2 भाषाओं का उपयोग किया: C और Python - -* सी: बहुत निम्न स्तर। आपको पॉइंटर्स और मेमोरी आवंटन/डीलोकेशन से निपटने की अनुमति देता है, ताकि आप डेटा संरचनाओं को महसूस कर सकें - और आपकी हड्डियों में एल्गोरिदम। पायथन या जावा जैसी उच्च स्तरीय भाषाओं में, ये आपसे छिपी हुई हैं। दिन-प्रतिदिन के काम में, यह बहुत बढ़िया है, - लेकिन जब आप सीख रहे हैं कि ये निम्न-स्तरीय डेटा संरचनाएं कैसे बनाई जाती हैं, तो धातु के करीब महसूस करना बहुत अच्छा होता है। - - सी हर जगह है। जब आप अध्ययन कर रहे हों तो आपको पुस्तकों, व्याख्यानों, वीडियो, *हर जगह* में उदाहरण दिखाई देंगे। - - [द सी प्रोग्रामिंग लैंग्वेज, वॉल्यूम 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - यह एक छोटी किताब है, लेकिन यह आपको सी भाषा पर एक अच्छी पकड़ देगी और यदि आप इसका थोड़ा अभ्यास करते हैं - आप जल्दी से कुशल हो जाएंगे। C को समझने से आपको यह समझने में मदद मिलती है कि प्रोग्राम और मेमोरी कैसे काम करते हैं। - - आपको किताब में बहुत गहराई तक जाने की जरूरत नहीं है (या इसे खत्म भी करें)। बस वहां पहुंचें जहां आप सी में पढ़ने और लिखने में सहज हों। - - [पुस्तक में प्रश्नों के उत्तर](https://github.com/lekkas/c-algorithms) -* पायथन: आधुनिक और बहुत अभिव्यंजक, मैंने इसे सीखा क्योंकि यह बहुत उपयोगी है और मुझे एक साक्षात्कार में कम कोड लिखने की भी अनुमति देता है। - -यह मेरी पसंद है। आप वही करते हैं जो आपको पसंद है, बिल्कुल। - -आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन नई भाषा सीखने के लिए यहां कुछ साइटें दी गई हैं: -- [व्यायाम](https://exercism.org/tracks) -- [कोडवार्स] (http://www.codewars.com) -- [कोडिलिटी](https://codility.com/programmers/) -- [हैकरअर्थ](https://www.hackerearth.com/) -- [क्षेत्र ऑनलाइन न्यायाधीश (spoj)] (http://www.spoj.com/) -- [कोडशेफ](https://www.codechef.com/) -- [कोडफोर्स] (https://codeforces.com/) -- [स्केलर विषय](https://www.scaler.com/topics/) - -### आपके कोडिंग इंटरव्यू के लिए - -आप उस भाषा का उपयोग कर सकते हैं जिसमें आप साक्षात्कार के कोडिंग भाग को करने के लिए सहज हैं, लेकिन बड़ी कंपनियों के लिए, ये ठोस विकल्प हैं: - -- सी++ -- जावा -- पायथन - -आप इनका उपयोग भी कर सकते हैं, लेकिन पहले पढ़ लें। चेतावनी हो सकती है: - -- जावास्क्रिप्ट -- माणिक -साक्षात्कार के लिए भाषा चुनने के बारे में मैंने यहां एक लेख लिखा है: -[कोडिंग इंटरव्यू के लिए एक भाषा चुनें](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)। -यह मूल लेख है जिस पर मेरी पोस्ट आधारित थी: [साक्षात्कार के लिए प्रोग्रामिंग भाषा चुनना](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- नौकरियां/) - -आपको भाषा में बहुत सहज होने और जानकार होने की आवश्यकता है। - -विकल्पों के बारे में और पढ़ें: -- [अपने कोडिंग साक्षात्कार के लिए सही भाषा चुनें](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) - -[यहां भाषा-विशिष्ट संसाधन देखें] (प्रोग्रामिंग-भाषा-संसाधन.एमडी) - -## डेटा संरचनाओं और एल्गोरिदम के लिए पुस्तकें - -यह पुस्तक कंप्यूटर विज्ञान के लिए आपकी नींव बनाएगी। - -बस एक को चुनें, ऐसी भाषा में जिसमें आप सहज हों। आप बहुत सारी रीडिंग और कोडिंग कर रहे होंगे। - -### सी - -- [सी में एल्गोरिदम, भाग 1-5 (बंडल), तीसरा संस्करण](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - बुनियादी बातों, डेटा संरचनाएं, छँटाई, खोज, और ग्राफ़ एल्गोरिथम - -### पायथन - -- [पायथन में डेटा संरचनाएं और एल्गोरिदम](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - गुडरिक, तमासिया, गोल्डवासेर द्वारा - - मुझे यह किताब पसंद आई। इसने सब कुछ और बहुत कुछ कवर किया। - - पाइथोनिक कोड - - माय ग्लोइंग बुक रिपोर्ट: 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/) - - नि: शुल्क कौरसेरा पाठ्यक्रम जो पुस्तक को कवर करता है (लेखकों द्वारा पढ़ाया जाता है!): - - [एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) - - [एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) - -### सी++ - -आपकी पंसद: - -- गुडरिक, तमासिया और माउंट - - [C++ में डेटा संरचनाएं और एल्गोरिदम, दूसरा संस्करण](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- सेडगेविक और वेन - - [सी ++ में एल्गोरिदम, भाग 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/) - -## साक्षात्कार तैयारी पुस्तकें -आपको इनमें से एक गुच्छा खरीदने की ज़रूरत नहीं है। ईमानदारी से "कोडिंग साक्षात्कार को क्रैक करना" शायद पर्याप्त है, -लेकिन मैंने खुद को और अधिक अभ्यास देने के लिए और अधिक खरीदा। लेकिन मैं हमेशा बहुत ज्यादा करता हूं। - -मैंने ये दोनों खरीदे। उन्होंने मुझे काफी अभ्यास दिया। - -- [प्रोग्रामिंग इंटरव्यू एक्सपोज़्ड: कोडिंग योर वे थ्रू इंटरव्यू, चौथा संस्करण](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - सी ++ और जावा में उत्तर - - कोडिंग इंटरव्यू को क्रैक करने के लिए यह एक अच्छा अभ्यास है - - ज्यादा मुश्किल नहीं है। एक साक्षात्कार में आप जो देखेंगे उससे अधिकतर समस्याएं आसान हो सकती हैं (जो मैंने पढ़ा है) -- [कोडिंग साक्षात्कार को क्रैक करना, छठा संस्करण] (http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - जावा में उत्तर - -### यदि आपके पास अतिरिक्त समय है: - -एक का चयन: - -- [प्रोग्रामिंग साक्षात्कार के तत्व (C++ संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [पायथन में प्रोग्रामिंग साक्षात्कार के तत्व](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [प्रोग्रामिंग साक्षात्कार के तत्व (जावा संस्करण)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [सहयोगी परियोजना - पुस्तक में हर समस्या के लिए विधि आधार और परीक्षण मामले](https://github.com/gardncl/elements-of-programming-interviews) - -## मेरी गलती मत करो - -यह सूची कई महीनों में बढ़ी, और हाँ, यह हाथ से निकल गई। - -यहां कुछ गलतियां हैं जो मैंने की हैं ताकि आपके पास बेहतर अनुभव हो। और आप महीनों का समय बचाएंगे। - -### 1. आपको यह सब याद नहीं रहेगा - -मैंने घंटों वीडियो देखे और प्रचुर मात्रा में नोट्स लिए, और महीनों बाद बहुत कुछ ऐसा था जो मुझे याद नहीं था। मैंने जाने में 3 दिन बिताए -अपने नोट्स और फ्लैशकार्ड बनाकर, ताकि मैं समीक्षा कर सकूं। मुझे उस सब ज्ञान की आवश्यकता नहीं थी। - -कृपया, पढ़ें ताकि आप मेरी गलतियाँ न करें: - -[रिटेनिंग कंप्यूटर साइंस नॉलेज](https://startupnextdoor.com/retaining-computer-science-knowledge/)। - -### 2. फ्लैशकार्ड का प्रयोग करें - -समस्या को हल करने के लिए, मैंने एक छोटी फ्लैशकार्ड साइट बनाई जहां मैं 2 प्रकार के फ्लैशकार्ड जोड़ सकता था: सामान्य और कोड। -प्रत्येक कार्ड में अलग-अलग स्वरूपण होते हैं। मैंने एक मोबाइल-फर्स्ट वेबसाइट बनाई है, इसलिए मैं अपने फोन या टैबलेट पर समीक्षा कर सकता हूं, चाहे मैं कहीं भी रहूं। - -मुफ्त में अपना बनाएं: - -- [फ्लैशकार्ड साइट रेपो](https://github.com/jwasham/computer-science-flash-cards) - -**मैं अपने फ्लैशकार्ड का उपयोग करने की अनुशंसा नहीं करता।** बहुत अधिक हैं और उनमें से अधिकांश सामान्य ज्ञान हैं जिनकी आपको आवश्यकता नहीं है। - -लेकिन अगर आप मेरी बात नहीं सुनना चाहते हैं, तो आप यहां जाएं: -- [माई फ्लैश कार्ड डेटाबेस (1200 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [माई फ्लैश कार्ड डेटाबेस (एक्सट्रीम - 1800 कार्ड्स)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): - - -ध्यान रखें कि मैं पानी में डूब गया था और मेरे पास असेंबली भाषा और पायथन ट्रिविया से लेकर मशीन लर्निंग और सांख्यिकी तक सब कुछ कवर करने वाले कार्ड हैं। -जो आवश्यक है उसके लिए यह बहुत अधिक है। - -**फ्लैशकार्ड पर ध्यान दें:** पहली बार जब आप पहचानते हैं कि आपको उत्तर पता है, तो इसे ज्ञात के रूप में चिह्नित न करें। आपको देखना है -एक ही कार्ड और वास्तव में इसे जानने से पहले कई बार सही उत्तर दें। दोहराव उस ज्ञान को और गहरा कर देगा -आपका दिमाग। - -मेरी फ्लैशकार्ड साइट का उपयोग करने का एक विकल्प [अंकी] (http://ankisrs.net/) है, जिसकी मुझे कई बार सिफारिश की गई है। -यह आपको याद रखने में मदद करने के लिए एक दोहराव प्रणाली का उपयोग करता है। यह उपयोगकर्ता के अनुकूल है, सभी प्लेटफार्मों पर उपलब्ध है और इसमें क्लाउड सिंक सिस्टम है। -आईओएस पर इसकी कीमत 25 डॉलर है लेकिन यह अन्य प्लेटफॉर्म पर मुफ्त है। - -Anki प्रारूप में मेरा फ्लैशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (धन्यवाद [@xiewenya](https://github.com/xiewenya))। - -कुछ छात्रों ने सफेद स्थान के साथ स्वरूपण मुद्दों का उल्लेख किया है जिन्हें निम्नलिखित करके ठीक किया जा सकता है: डेक खोलें, कार्ड संपादित करें, कार्ड क्लिक करें, "स्टाइलिंग" रेडियो बटन चुनें, सदस्य "व्हाइट-स्पेस: प्री;" जोड़ें। कार्ड वर्ग के लिए। - -### 3. जब आप सीख रहे हों तो साक्षात्कार के प्रश्नों की कोडिंग करें - -यह बहुत महत्वपूर्ण है। - -जब आप डेटा संरचना और एल्गोरिदम सीख रहे हों, तब साक्षात्कार के प्रश्नों की कोडिंग करना शुरू करें। - -आप जो सीख रहे हैं उसे समस्याओं को हल करने के लिए लागू करने की आवश्यकता है, या आप भूल जाएंगे। मैंने यह गलती की। - -एक बार जब आप कोई विषय सीख लेते हैं, और उसके साथ कुछ सहज महसूस करते हैं, उदाहरण के लिए, **लिंक्ड सूचियां**: -1. [कोडिंग इंटरव्यू बुक्स] (#इंटरव्यू-प्रेप-बुक्स) (या कोडिंग प्रॉब्लम वेबसाइट्स, नीचे सूचीबद्ध) में से एक खोलें -1. लिंक्ड सूचियों के संबंध में 2 या 3 प्रश्न करें। -1. अगले सीखने के विषय पर आगे बढ़ें। -1. बाद में, वापस जाएं और अन्य 2 या 3 लिंक की गई सूची की समस्याएं करें। -1. अपने द्वारा सीखे गए प्रत्येक नए विषय के साथ ऐसा करें। - -**समस्याएँ तब करते रहें जब आप यह सब सीख रहे हों, उसके बाद नहीं।** - -आपको ज्ञान के लिए काम पर नहीं रखा जा रहा है, लेकिन आप ज्ञान को कैसे लागू करते हैं। - -इसके लिए कई संसाधन हैं, जो नीचे सूचीबद्ध हैं। बढ़ा चल। - -### 4. फोकस - -बहुत सारे विकर्षण हैं जो मूल्यवान समय ले सकते हैं। फोकस और एकाग्रता कठिन है। कुछ संगीत चालू करें -गीत के बिना और आप बहुत अच्छी तरह से ध्यान केंद्रित करने में सक्षम होंगे। - -## जिसे आप कवर नहीं देखेंगे - -ये प्रचलित प्रौद्योगिकियां हैं लेकिन इस अध्ययन योजना का हिस्सा नहीं हैं: - -- एसक्यूएल -- जावास्क्रिप्ट -- HTML, CSS और अन्य फ्रंट-एंड प्रौद्योगिकियां - -## दैनिक योजना - -यह कोर्स बहुत सारे विषयों पर चलता है। प्रत्येक में शायद आपको कुछ दिन लगेंगे, या शायद एक सप्ताह या उससे भी अधिक समय लगेगा। यह आपके शेड्यूल पर निर्भर करता है। - -प्रत्येक दिन, सूची में अगला विषय लें, उस विषय के बारे में कुछ वीडियो देखें, और फिर एक कार्यान्वयन लिखें -उस डेटा संरचना या एल्गोरिथम की भाषा में जिसे आपने इस पाठ्यक्रम के लिए चुना है। - -आप मेरा कोड यहाँ देख सकते हैं: - - [सी] (https://github.com/jwasham/practice-c) - - [सी++](https://github.com/jwasham/practice-cpp) - - [पायथन](https://github.com/jwasham/practice-python) - -आपको प्रत्येक एल्गोरिदम को याद रखने की आवश्यकता नहीं है। आपको अपना खुद का कार्यान्वयन लिखने में सक्षम होने के लिए इसे पर्याप्त रूप से समझने में सक्षम होना चाहिए। - -## कोडिंग प्रश्न अभ्यास - - यह यहाँ क्यों है? मैं साक्षात्कार के लिए तैयार नहीं हूं। - -[फिर वापस जाएं और इसे पढ़ें।](#3-डू-कोडिंग-साक्षात्कार-प्रश्न-जबकि-आप-सीख रहे हैं) - -आपको प्रोग्रामिंग समस्याओं का अभ्यास करने की आवश्यकता क्यों है: -- समस्या की पहचान, और जहां सही डेटा संरचनाएं और एल्गोरिदम फिट होते हैं -- समस्या के लिए आवश्यकताओं को इकट्ठा करना -- समस्या के माध्यम से अपने तरीके से बात करना जैसे आप साक्षात्कार में करेंगे -- व्हाइटबोर्ड या पेपर पर कोडिंग, कंप्यूटर पर नहीं -- आपके समाधान के लिए समय और स्थान की जटिलता के साथ आ रहा है (नीचे बिग-ओ देखें) -- अपने समाधानों का परीक्षण - -एक साक्षात्कार में व्यवस्थित, संचार समस्या समाधान के लिए एक महान परिचय है। आप इसे प्रोग्रामिंग से प्राप्त करेंगे -साक्षात्कार पुस्तकें भी, लेकिन मुझे यह बकाया लगा: -[एल्गोरिदम डिज़ाइन कैनवास](http://www.hiredintech.com/algorithm-design/) - -व्हाइटबोर्ड या पेपर पर कोड लिखें, कंप्यूटर पर नहीं। कुछ नमूना इनपुट के साथ परीक्षण करें। फिर इसे टाइप करें और कंप्यूटर पर इसका परीक्षण करें। - -अगर आपके घर में व्हाइटबोर्ड नहीं है, तो किसी आर्ट स्टोर से एक बड़ा ड्राइंग पैड लें। आप सोफे पर बैठकर अभ्यास कर सकते हैं। -यह मेरा "सोफा व्हाइटबोर्ड" है। मैंने फोटो में पेन को सिर्फ स्केल के लिए जोड़ा है। यदि आप कलम का उपयोग करते हैं, तो आप चाहते हैं कि आप मिटा सकें। -जल्दी गन्दा हो जाता है। **मैं पेंसिल और इरेज़र का उपयोग करता हूं।** - -![मेरा सोफ़ा व्हाइटबोर्ड](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) - -**कोडिंग प्रश्न अभ्यास प्रोग्रामिंग समस्याओं के उत्तर याद रखने के बारे में नहीं है।** - -## कोडिंग समस्याएं - -अपनी मुख्य कोडिंग साक्षात्कार पुस्तकें [यहां] (# साक्षात्कार-प्रीप-किताबें) न भूलें। - -समस्याओं को सुलझा रहा: -- [कैसे समाधान खोजें](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) -- [टॉपकोडर प्रॉब्लम स्टेटमेंट को कैसे डिसाइड करें](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) - -कोडिंग साक्षात्कार प्रश्न वीडियो: -- [आईडीसर्व (88 वीडियो)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [तुषार रॉय (5 प्लेलिस्ट)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - - समस्या समाधान के पूर्वाभ्यास के लिए सुपर -- [निक व्हाइट - LeetCode Solutions (187 वीडियो)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - - समाधान और कोड की अच्छी व्याख्या - - आप कम समय में कई देख सकते हैं -- [फिशरकोडर - लीटकोड सॉल्यूशंस](https://youtube.com/FisherCoder) -- [नीटकोड - ब्लाइंड 75 लीटकोड सॉल्यूशंस](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) - - समाधान और अजगर कोड की अच्छी व्याख्या - - सभी प्रश्नों की सूची के लिए [एक्सेल शीट](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) भी चेकआउट करें - - [Github लिंक](https://github.com/neetcode-gh/leetcode) सभी समाधान कोड के लिए - - [नीटकोड 150](https://neetcode.io/) - -चुनौती साइटें: -- [लीटकोड] (https://leetcode.com/) - - मेरी पसंदीदा कोडिंग समस्या साइट। यह आपके द्वारा तैयार किए जा रहे 1-2 महीनों के लिए सदस्यता राशि के लायक है। - - कोड वॉक-थ्रू के लिए ऊपर निक व्हाइट और फिशरकोडर वीडियो देखें। -- [हैकररैंक](https://www.hackerrank.com/) -- [टॉपकोडर](https://www.topcoder.com/) -- [गीक्स फॉर गीक्स](https://practice.geeksforgeeks.org/explore/?page=1) -- [इंटरव्यूबिट] (https://www.interviewbit.com/) -- [प्रोजेक्ट यूलर](https://projecteuler.net/) -- [AlgoExpert](https://www.algoexpert.io/product) - - Google इंजीनियरों द्वारा बनाया गया, यह आपके कौशल को सुधारने के लिए भी एक उत्कृष्ट संसाधन है। - -## आएँ शुरू करें - -ठीक है, बहुत हुई बात, आइए जानें! - -लेकिन जब आप सीखते हैं तो ऊपर से कोडिंग की समस्याएं करना न भूलें! - -## एल्गोरिथम जटिलता / बिग-ओ / स्पर्शोन्मुख विश्लेषण - -- यहां लागू करने के लिए कुछ भी नहीं है, आप केवल वीडियो देख रहे हैं और नोट्स ले रहे हैं! वाह! -- यहां बहुत सारे वीडियो हैं। जब तक आप इसे समझ न लें, तब तक पर्याप्त देखें। आप हमेशा वापस आ सकते हैं और समीक्षा कर सकते हैं। -- अगर आप इसके पीछे का सारा गणित नहीं समझते हैं तो चिंता न करें। -- आपको बस यह समझने की जरूरत है कि बिग-ओ के संदर्भ में एल्गोरिथम की जटिलता को कैसे व्यक्त किया जाए। -- [ ] [हार्वर्ड CS50 - स्पर्शोन्मुख संकेतन (वीडियो)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [बिग ओ नोटेशन (सामान्य त्वरित ट्यूटोरियल) (वीडियो)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] [बिग ओ नोटेशन (और ओमेगा और थीटा) - सर्वोत्तम गणितीय व्याख्या (वीडियो)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [स्कीना (वीडियो)](https://www.youtube.com/watch?v=z1mkCe3kVUA) -- [ ] [यूसी बर्कले बिग ओ (वीडियो)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [परिशोधन विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [] टॉपकोडर (पुनरावृत्ति संबंध और मास्टर प्रमेय शामिल हैं): - - [कम्प्यूटेशनल जटिलता: सेक्शन 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) -- [ ] [चीट शीट] (http://bigocheatsheet.com/) - -खैर, बस इतना ही काफी है। - -जब आप "Cracking the Coding Interview" के माध्यम से जाते हैं, तो इस पर एक अध्याय है, और अंत में देखने के लिए एक प्रश्नोत्तरी है -यदि आप विभिन्न एल्गोरिदम की रनटाइम जटिलता की पहचान कर सकते हैं। यह एक सुपर समीक्षा और परीक्षण है। - -## डेटा संरचनाएं - -- ### सरणी - - [ ] सरणियों के बारे में: - - [सरणी (वीडियो)](https://www.coursera.org/lecture/data-structs/arrays-OsBSF) - - [यूसी बर्कले CS61B - लीनियर और मल्टी-डिम एरेज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s से देखना शुरू करें) - - [डायनामिक एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - - [जैग्ड ऐरे (वीडियो)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [] एक वेक्टर लागू करें (स्वचालित आकार बदलने के साथ परिवर्तनीय सरणी): - - [] इंडेक्सिंग का उपयोग करने के बजाय इंडेक्स पर कूदने के लिए एरेज़ और पॉइंटर्स और पॉइंटर मैथ का उपयोग करके कोडिंग का अभ्यास करें। - - [] आवंटित स्मृति के साथ नया कच्चा डेटा सरणी - - हुड के नीचे इंट सरणी आवंटित कर सकते हैं, बस इसकी विशेषताओं का उपयोग न करें - - 16 से शुरू करें, या यदि शुरुआती संख्या अधिक है, तो 2 की शक्ति का उपयोग करें - 16, 32, 64, 128 - - [] आकार () - वस्तुओं की संख्या - - [] क्षमता () - इसमें रखी जा सकने वाली वस्तुओं की संख्या - - [ ] खाली है() - - [ ] at(index) - दिए गए इंडेक्स पर आइटम लौटाता है, अगर इंडेक्स सीमा से बाहर हो जाता है तो ब्लो अप हो जाता है - - [] पुश (आइटम) - - [] सम्मिलित करें (सूचकांक, आइटम) - सूचकांक में आइटम सम्मिलित करता है, उस सूचकांक के मूल्य और अनुगामी तत्वों को दाईं ओर स्थानांतरित करता है - - [] प्रीपेन्ड (आइटम) - इंडेक्स 0 . पर ऊपर इंसर्ट का उपयोग कर सकते हैं - - [] पॉप () - अंत से हटा दें, वापसी मूल्य - - [] हटाएं (सूचकांक) - सूचकांक पर आइटम हटाएं, सभी अनुगामी तत्वों को बाईं ओर स्थानांतरित करें - - [] हटाएं (आइटम) - मूल्य की तलाश करता है और इसे धारण करने वाले इंडेक्स को हटा देता है (भले ही कई जगहों पर) - - [] ढूंढें (आइटम) - मूल्य की तलाश करता है और उस मूल्य के साथ पहली अनुक्रमणिका देता है, -1 अगर नहीं मिला - - [] आकार बदलें (नई_क्षमता) // निजी फ़ंक्शन - - जब आप क्षमता तक पहुँच जाते हैं, तो आकार को दोगुना करने के लिए आकार बदलें - - किसी आइटम को पॉप करते समय, यदि आकार क्षमता का 1/4 है, तो आकार बदलकर आधा कर दें - - [ ] समय - - O(1) अंत में जोड़ने/निकालने के लिए (अधिक स्थान के लिए आवंटन के लिए परिशोधित), अनुक्रमणिका, या अद्यतन - - ओ (एन) कहीं और डालने/निकालने के लिए - - [ ] अंतरिक्ष - - स्मृति में सन्निहित, इसलिए निकटता प्रदर्शन में मदद करती है - - स्थान की आवश्यकता = (सरणी क्षमता, जो> = n है) * वस्तु का आकार, लेकिन भले ही 2n, फिर भी O(n) -- ### लिंक्ड सूचियां - - [ ] विवरण: - - [ ] [सिंगली लिंक्ड लिस्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - - [ ] [सीएस 61बी - लिंक्ड सूचियां 1 (वीडियो)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [सीएस 61बी - लिंक्ड सूचियां 2 (वीडियो)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [सी कोड (वीडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश - - [] लिंक्ड लिस्ट बनाम एरेज़: - - [कोर लिंक्ड लिस्ट बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [इन द रियल वर्ल्ड लिंक्ड लिस्ट्स बनाम एरेज़ (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd ) - - [ ] [आपको लिंक की गई सूचियों (वीडियो) से क्यों बचना चाहिए](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [] गोचा: आपको पॉइंटर टू पॉइंटर नॉलेज चाहिए: - (जब आप किसी फ़ंक्शन के लिए एक पॉइंटर पास करते हैं जो उस पते को बदल सकता है जहां वह पॉइंटर इंगित करता है) - यह पेज सिर्फ पीटीआर से पीटीआर तक को समझने के लिए है। मैं इस सूची ट्रैवर्सल शैली की अनुशंसा नहीं करता। चतुराई के कारण पठनीयता और रखरखाव को नुकसान होता है। - - [पॉइंटर्स टू पॉइंटर्स](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [] लागू करें (मैंने टेल पॉइंटर के साथ और बिना किया): - - [] आकार () - सूची में डेटा तत्वों की संख्या लौटाता है - - [] खाली () - खाली होने पर बूल सही हो जाता है - - [] 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)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - - No need to implement -- ### ढेर - - [ ] [स्टैक (वीडियो)](https://www.coursera.org/lecture/data-structs/stacks-UdKzQ) - - [ ] लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है - -- ### कतार - - [ ] [कतार (वीडियो)](https://www.coursera.org/lecture/data-structs/queues-EShpq) - - [ ] [सर्कुलर बफर/फीफो](https://en.wikipedia.org/wiki/Circular_buffer) - - [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें: - - एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है - - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है - - खाली() - - [] निश्चित आकार के सरणी का उपयोग करके कार्यान्वित करें: - - एनक्यू (मान) - उपलब्ध भंडारण के अंत में आइटम जोड़ता है - - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व को हटाता है - - खाली() - - भरा हुआ() - - [ ] लागत: - - लिंक की गई सूची का उपयोग करके एक खराब कार्यान्वयन जहां आप सिर पर कतार लगाते हैं और पूंछ पर dequeue ओ (एन) होगा - क्योंकि आपको अगले से अंतिम तत्व की आवश्यकता होगी, जिससे प्रत्येक dequeue एक पूर्ण ट्रैवर्सल हो जाएगा - - एनक्यू: ओ (1) (परिशोधन, लिंक्ड सूची और सरणी [जांच]) - - dequeue: O(1) (लिंक की गई सूची और सरणी) - - खाली: ओ (1) (लिंक की गई सूची और सरणी) - -- ### हैश टेबल - - [] वीडियो: - - [ ] [हैशिंग विद चेनिंग (वीडियो)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [टेबल डबलिंग, कार्प-राबिन (वीडियो)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [ओपन एड्रेसिंग, क्रिप्टोग्राफिक हैशिंग (वीडियो)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [पायकॉन 2010: द माइटी डिक्शनरी (वीडियो)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [पायकॉन 2017: द डिक्शनरी इवन माइटियर (वीडियो)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(उन्नत) रैंडमाइजेशन: यूनिवर्सल एंड परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(उन्नत) परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - -- [ ] ऑनलाइन पाठ्यक्रम: - - [ ] [कोर हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [डेटा संरचनाएं (वीडियो)](https://www.coursera.org/learn/data-structs/home/week/4) - - [ ] [फोन बुक प्रॉब्लम (वीडियो)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [] वितरित हैश टेबल: - - [ड्रॉपबॉक्स (वीडियो) में तत्काल अपलोड और संग्रहण अनुकूलन](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [डिस्ट्रिब्यूटेड हैश टेबल्स (वीडियो)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [] रैखिक जांच का उपयोग करके सरणी के साथ कार्यान्वित करें - - हैश (के, एम) - एम हैश टेबल का आकार है - - जोड़ें (कुंजी, मान) - यदि कुंजी पहले से मौजूद है, तो मान अपडेट करें - - मौजूद है (कुंजी) - - चाबी देना) - - हटाएं (कुंजी) - -## अधिक ज्ञान - -- ### द्विआधारी खोज - - [ ] [बाइनरी सर्च (वीडियो)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [बाइनरी सर्च (वीडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [ ] [विस्तार] (https://www.topcoder.com/thrive/articles/Binary%20Search) - - [ ] [खाका](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - - [ ] अमल में लाना: - - द्विआधारी खोज (पूर्णांक के क्रमबद्ध सरणी पर) - - पुनरावर्तन का उपयोग कर द्विआधारी खोज -- ### बिटवाइज़ ऑपरेशन - - [ ] [बिट्स चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - आपको इनमें से कई के बारे में पता होना चाहिए 2 से 2 की शक्तियां (2^1 से 2^16 और 2^32) - - [] के साथ बिट्स में हेरफेर करने की वास्तव में अच्छी समझ प्राप्त करें: &, |, ^, ~, >>, << - - [ ] [शब्द](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [] अच्छा परिचय: - [बिट मैनिपुलेशन (वीडियो)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [सी प्रोग्रामिंग ट्यूटोरियल 2-10: बिटवाइज़ ऑपरेटर्स (वीडियो)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [बिट मैनिपुलेशन] (https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [बिटवाइज ऑपरेशन](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [बिथैक्स](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [द बिट ट्विडलर](https://bits.stephan-brumme.com/) - - [ ] [द बिट ट्विडलर इंटरएक्टिव](https://bits.stephan-brumme.com/interactive.html) - - [ ] [बिट हैक्स (वीडियो)](https://www.youtube.com/watch?v=ZusiKXcz_ac) -- [ ] [प्रैक्टिस ऑपरेशंस](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - - [] 2s और 1s पूरक - - [बाइनरी: प्लसस और माइनस (हम दो के पूरक का उपयोग क्यों करते हैं) (वीडियो)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s पूरक](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s पूरक](https://en.wikipedia.org/wiki/Two%27s_complement) - - [] काउंट सेट बिट्स - - [एक बाइट में बिट्स गिनने के 4 तरीके (वीडियो)](https://youtu.be/Hzuzo9NJrlc) - - [काउंट बिट्स](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [32 बिट पूर्णांक में सेट बिट्स की संख्या की गणना कैसे करें](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32 -बिट-पूर्णांक) - - [] स्वैप मान: - - [स्वैप] (https://bits.stephan-brumme.com/swap.html) - - [ ] निरपेक्ष मूल्य: - - [निरपेक्ष पूर्णांक](https://bits.stephan-brumme.com/absInteger.html) -## पेड़ - -- ### पेड़ - नोट्स और पृष्ठभूमि - - [ ] [श्रृंखला: पेड़ (वीडियो)] (https://www.coursera.org/lecture/data-structs/trees-95qda) - - मूल वृक्ष निर्माण - - ट्रैवर्सल - - हेरफेर एल्गोरिदम - - [ ] [बीएफएस (चौड़ाई-पहली खोज) और डीएफएस (गहराई-पहली खोज) (वीडियो)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - बीएफएस नोट: - - स्तर आदेश (बीएफएस, कतार का उपयोग करके) - - समय जटिलता: ओ (एन) - - अंतरिक्ष जटिलता: सर्वोत्तम: ओ (1), सबसे खराब: ओ (एन/2) = ओ (एन) - - डीएफएस नोट: - - समय जटिलता: ओ (एन) - - अंतरिक्ष जटिलता: - सबसे अच्छा: ओ (लॉग एन) - औसत। पेड़ की ऊंचाई - सबसे खराब: ओ (एन) - - क्रम में (डीएफएस: बाएं, स्वयं, दाएं) - - पोस्टऑर्डर (डीएफएस: बाएं, दाएं, स्वयं) - - प्रीऑर्डर (डीएफएस: स्वयं, बाएं, दाएं) - -- ### बाइनरी सर्च ट्री: बीएसटी - - [ ] [बाइनरी सर्च ट्री रिव्यू (वीडियो)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [परिचय (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/E7cXP/introduction) - - [ ] [एमआईटी (वीडियो)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - - सी/सी++: - - [ ] [बाइनरी सर्च ट्री - सी/सी++ (वीडियो) में कार्यान्वयन](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [बीएसटी कार्यान्वयन - स्टैक और हीप में मेमोरी आवंटन (वीडियो)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [बाइनरी सर्च ट्री (वीडियो) में न्यूनतम और अधिकतम तत्व खोजें](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [एक बाइनरी ट्री की ऊंचाई ज्ञात करें (वीडियो)](https://www.youtube.com/watch?v=_pnqMz5nrRs&सूची=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [बाइनरी ट्री ट्रैवर्सल - चौड़ाई-पहली और गहराई-पहली रणनीतियां (वीडियो)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [बाइनरी ट्री: लेवल ऑर्डर ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [बाइनरी ट्री ट्रैवर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर (वीडियो)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [जांचें कि बाइनरी ट्री बाइनरी सर्च ट्री है या नहीं (वीडियो)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [बाइनरी सर्च ट्री (वीडियो) से एक नोड हटाएं](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [बाइनरी सर्च ट्री (वीडियो) में क्रमागत उत्तराधिकारी](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] अमल में लाना: - - [] डालें // ट्री में वैल्यू डालें - - [] 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)) - - [ ] [परिचय (वीडियो)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - - [ ] [बेवकूफ कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/z3l9N/naive-implementations) - - [ ] [बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [वृक्ष ऊंचाई टिप्पणी (वीडियो)](https://www.coursera.org/learn/data-structs/supplement/S5xxz/tree-height-remark) - - [ ] [बुनियादी संचालन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/0g1dl/basic-operations) - - [ ] [पूर्ण बाइनरी ट्री (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/gl5Ni/complete-binary-trees) - - [ ] [स्यूडोकोड (वीडियो)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [हीप सॉर्ट - जंप टू स्टार्ट (वीडियो)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [हीप सॉर्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - - [ ] [ढेर बनाना (वीडियो)](https://www.coursera.org/lecture/data-structures/build-a-heap-dwrOS) - - [ ] [एमआईटी: हीप्स एंड हीप सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [सीएस 61बी व्याख्यान 24: प्राथमिकता कतारें (वीडियो)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - - [ ] [रैखिक समय BuildHeap (अधिकतम-ढेर)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [] अधिकतम ढेर लागू करें: - - [ ] डालना - - [] 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 - - [] एल्गोरिदम को छांटने में स्थिरता ("क्या क्विकसॉर्ट स्थिर है?") - - [सॉर्टिंग एल्गोरिथम स्थिरता](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [एल्गोरिदम छँटाई में स्थिरता](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [एल्गोरिदम छँटाई में स्थिरता](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [एल्गोरिदम छँटाई - स्थिरता](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] लिंक्ड सूचियों पर कौन से एल्गोरिदम का उपयोग किया जा सकता है? सरणी पर कौन सा? दोनों पर कौन सा? - - मैं एक लिंक्ड सूची को सॉर्ट करने की अनुशंसा नहीं करता, लेकिन मर्ज सॉर्ट करने योग्य है। - - [लिंक्ड लिस्ट के लिए मर्ज सॉर्ट](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें। ढेर छँटाई महान है, लेकिन स्थिर नहीं है - -- [ ] [सेजविक - मर्जसॉर्ट (5 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. मर्जसॉर्ट](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. बॉटम अप मर्जसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. छँटाई जटिलता](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - - [ ] [4. तुलनित्र](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - - [ ] [5. स्थिरता](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - -- [ ] [सेजविक - क्विकसॉर्ट (4 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. क्विकसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. चयन](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - - [ ] [3. डुप्लीकेट कुंजियाँ](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. सिस्टम सॉर्ट](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) -- [ ] यूसी बरकेले: - - [ ] [सीएस 61बी लेक्चर 29: सॉर्टिंग I (वीडियो)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [सीएस 61बी लेक्चर 30: सॉर्टिंग II (वीडियो)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [सीएस 61बी व्याख्यान 32: छँटाई III (वीडियो)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [सीएस 61बी व्याख्यान 33: छँटाई वी (वीडियो)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - -- [ ] [बबल सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [बबल सॉर्ट का विश्लेषण (वीडियो)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [सम्मिलन सॉर्ट, मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [सम्मिलन क्रमित करें (वीडियो)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [मर्ज सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [क्विकसोर्ट (वीडियो)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [चयन क्रम (वीडियो)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [] मर्ज सॉर्ट कोड: - - [ ] [आउटपुट ऐरे (सी) का उपयोग करना] (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++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [] त्वरित सॉर्ट कोड: - - [ ] [कार्यान्वयन (सी)] (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) - - [ ] [कार्यान्वयन (पायथन)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] अमल में लाना: - - [] मर्जसॉर्ट: ओ (एन लॉग एन) औसत और सबसे खराब स्थिति - - [] क्विकसॉर्ट ओ (एन लॉग एन) औसत मामला - - चयन प्रकार और सम्मिलन प्रकार दोनों ओ (एन ^ 2) औसत और सबसे खराब स्थिति हैं - - हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें - - [] आवश्यक नहीं है, लेकिन मैंने उनकी सिफारिश की: - - [ ] [सेजविक - रेडिक्स सॉर्ट्स (6 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. जावा में स्ट्रिंग्स](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. कुंजी अनुक्रमित गिनती](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) - - [ ] [3. कम से कम महत्वपूर्ण अंक प्रथम स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - - [ ] [4. सबसे महत्वपूर्ण अंक पहली स्ट्रिंग रेडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 वे रेडिक्स क्विकसॉर्ट](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) - - [ ] [6. प्रत्यय सरणी](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [रेडिक्स सॉर्ट](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [रेडिक्स सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [रेडिक्स सॉर्ट, काउंटिंग सॉर्ट (रैखिक समय दिए गए प्रतिबंध) (वीडियो)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [यादृच्छिककरण: मैट्रिक्स गुणा, क्विकॉर्ट, फ्रीवाल्ड्स एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [रैखिक समय (वीडियो) में छंटनी](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -संक्षेप में, यहां [15 सॉर्टिंग एल्गोरिदम](https://www.youtube.com/watch?v=kPRA0W1kECg) का एक दृश्य प्रतिनिधित्व है। -यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "सॉर्टिंग" अनुभाग देखें। - -## रेखांकन - -कंप्यूटर विज्ञान में कई समस्याओं का प्रतिनिधित्व करने के लिए रेखांकन का उपयोग किया जा सकता है, इसलिए यह खंड लंबा है, जैसे पेड़ और छँटाई थी। - -- टिप्पणियाँ: - - मेमोरी में ग्राफ को दर्शाने के 4 बुनियादी तरीके हैं: - - ऑब्जेक्ट्स और पॉइंटर्स - - सहखंडज मैट्रिक्स - - निकटता सूची - - आसन्न नक्शा - - प्रत्येक प्रतिनिधित्व और उसके पेशेवरों और विपक्षों से खुद को परिचित करें - - बीएफएस और डीएफएस - उनकी कम्प्यूटेशनल जटिलता, उनके व्यापार बंद, और उन्हें वास्तविक कोड में कैसे लागू किया जाए, इसके बारे में जानें - - जब कोई प्रश्न पूछा जाए, तो पहले ग्राफ़-आधारित समाधान देखें, फिर यदि कोई नहीं है तो आगे बढ़ें - -- [] एमआईटी (वीडियो): - - [ ] [चौड़ाई-पहली खोज](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) - - [ ] [गहराई-पहली खोज](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - -- [] स्कीएना व्याख्यान - महान परिचय: - - [ ] [CSE373 2020 - लेक्चर 10 - ग्राफ़ डेटा स्ट्रक्चर (वीडियो)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) - - [ ] [CSE373 2020 - व्याख्यान 11 - ग्राफ़ ट्रैवर्सल (वीडियो)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) - - [ ] [CSE373 2020 - व्याख्यान 12 - गहराई पहली खोज (वीडियो)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) - - [ ] [CSE373 2020 - व्याख्यान 13 - न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) - - [ ] [CSE373 2020 - व्याख्यान 14 - न्यूनतम फैले हुए पेड़ (नहीं) (वीडियो)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) - - [ ] [CSE373 2020 - लेक्चर 15 - ग्राफ़ एल्गोरिथम (2 नहीं) (वीडियो)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - -- [] रेखांकन (समीक्षा और अधिक): - - - [ ] [6.006 सिंगल-सोर्स शॉर्टेस्ट पाथ प्रॉब्लम (वीडियो)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 डिजस्ट्रा (वीडियो)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) - - [ ] [6.006 बेलमैन-फोर्ड (वीडियो)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - - [ ] [6.006 स्पीड अप दिज्क्स्ट्रा (वीडियो)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [अदुनी: ग्राफ़ एल्गोरिथम I - टोपोलॉजिकल सॉर्टिंग, न्यूनतम स्पैनिंग ट्री, प्राइम का एल्गोरिथम - लेक्चर 6 (वीडियो)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9WBSy2Em) - - [ ] [अदुनी: ग्राफ़ एल्गोरिथम II - डीएफएस, बीएफएस, क्रुस्कल का एल्गोरिदम, संघ डेटा संरचना खोजें - व्याख्यान 7 (वीडियो)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7B&index=7S5S ) - - [ ] [अदुनी: ग्राफ़ एल्गोरिथम III: सबसे छोटा रास्ता - व्याख्यान 8 (वीडियो)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [अदुनी: ग्राफ़ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9 (वीडियो)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [सीएस 61बी 2014: भारित ग्राफ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [लालची एल्गोरिदम: न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [मजबूत रूप से जुड़े घटक कोसाराजू का एल्गोरिथम ग्राफ़ एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- पूर्ण कौरसेरा कोर्स: - - [ ] [ग्राफ़ पर एल्गोरिदम (वीडियो)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- मैं लागू करूंगा: - - [] आसन्न सूची के साथ डीएफएस (पुनरावर्ती) - - [] आसन्न सूची के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) - - [] आसन्न मैट्रिक्स के साथ डीएफएस (पुनरावर्ती) - - [] आसन्न मैट्रिक्स के साथ डीएफएस (स्टैक के साथ पुनरावृत्त) - - [ ] बीएफएस आसन्न सूची के साथ - - [] आसन्न मैट्रिक्स के साथ बीएफएस - - [] एकल-स्रोत सबसे छोटा पथ (दिज्क्स्ट्रा) - - [ ] न्यूनतम फैलाव वाला पेड़ - - डीएफएस-आधारित एल्गोरिदम (ऊपर Aduni वीडियो देखें): - - [] साइकिल की जांच करें (टोपोलॉजिकल सॉर्ट के लिए आवश्यक है, क्योंकि हम शुरू करने से पहले साइकिल की जांच करेंगे) - - [] टोपोलॉजिकल सॉर्ट - - [] एक ग्राफ में जुड़े घटकों की गणना करें - - [] दृढ़ता से जुड़े घटकों की सूची बनाएं - - [] द्विदलीय ग्राफ के लिए जाँच करें - -## Even More Knowledge -- ### रिकर्सन - - [ ] स्टैनफोर्ड रिकर्सन और बैकट्रैकिंग पर व्याख्यान: - - [ ] [व्याख्यान 8 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [व्याख्यान 9 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [व्याख्यान 10 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [व्याख्यान 11 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - इसका उपयोग कब करना उचित है? - - टेल रिकर्सन कैसे बेहतर नहीं है? - - [ ] [टेल रिकर्सन क्या है यह इतना बुरा क्यों है?](https://www.quora.com/What-is-tail-recursion- Why-is-it-so-bad) - - [ ] [टेल रिकर्सन (वीडियो)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - - [ ] [किसी भी पुनरावर्ती समस्या को हल करने के लिए 5 सरल चरण (वीडियो)](https://youtu.be/ngCos392W4w) - -बैकट्रैकिंग ब्लूप्रिंट: [जावा](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-) पलिंड्रोम-विभाजन)) -[पायथन](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) -- ### गतिशील प्रोग्रामिंग - - आप शायद अपने साक्षात्कार में कोई गतिशील प्रोग्रामिंग समस्या नहीं देखेंगे, लेकिन यह पहचानने में सक्षम होने के लायक है - गतिशील प्रोग्रामिंग के लिए एक उम्मीदवार के रूप में समस्या। - - यह विषय काफी कठिन हो सकता है, क्योंकि प्रत्येक डीपी घुलनशील समस्या को एक पुनरावर्ती संबंध के रूप में परिभाषित किया जाना चाहिए, और इसके साथ आना मुश्किल हो सकता है। - - मेरा सुझाव है कि जब तक आपको इसमें शामिल पैटर्न की ठोस समझ न हो, तब तक डीपी समस्याओं के कई उदाहरण देखें। - - [] वीडियो: - - [ ] [स्किएना: CSE373 2020 - लेक्चर 19 - डायनेमिक प्रोग्रामिंग का परिचय (वीडियो)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) - - [ ] [स्किएना: CSE373 2020 - लेक्चर 20 - एडिट डिस्टेंस (वीडियो)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - - [ ] [स्किएना: CSE373 2020 - व्याख्यान 20 - दूरी संपादित करें (जारी) (वीडियो)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - - [ ] [स्किएना: CSE373 2020 - लेक्चर 21 - डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [स्किएना: CSE373 2020 - व्याख्यान 21 - गतिशील प्रोग्रामिंग और समीक्षा (वीडियो)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग 0 (59:18 बजे शुरू होता है) (वीडियो)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग I - लेक्चर 11 (वीडियो)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [साइमनसन: डायनेमिक प्रोग्रामिंग II - लेक्चर 12 (वीडियो)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [] व्यक्तिगत डीपी समस्याओं की सूची (प्रत्येक संक्षिप्त है): - [डायनेमिक प्रोग्रामिंग (वीडियो)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] येल व्याख्यान नोट्स: - - [ ] [डायनामिक प्रोग्रामिंग](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] कौरसेरा: - - [ ] [आरएनए सेकेंडरी स्ट्रक्चर प्रॉब्लम (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [एक गतिशील प्रोग्रामिंग एल्गोरिथम (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) - - [ ] [डीपी एल्गोरिथम (वीडियो) का चित्रण](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - -- [ ] [डीपी एल्गोरिथम (वीडियो) का रनिंग टाइम] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [डीपी बनाम पुनरावर्ती कार्यान्वयन (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [वैश्विक जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - - [ ] [स्थानीय जोड़ीवार अनुक्रम संरेखण (वीडियो)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### डिजाइन पैटर्न्स - - [ ] [त्वरित यूएमएल समीक्षा (वीडियो)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] ये पैटर्न सीखें: - - [ ] रणनीति - - [] सिंगलटन - - [] एडेप्टर - - [] प्रोटोटाइप - - [ ] डेकोरेटर - - [] आगंतुक - - [] कारखाना, अमूर्त कारखाना - - [] मुखौटा - - [ ] देखने वाला - - [] प्रॉक्सी - - [ ] प्रतिनिधि - - [ ] आज्ञा - - [ ] राज्य - - [ ] स्मृति चिन्ह - - [] पुनरावर्तक - - [] समग्र - - [] फ्लाईवेट - - [ ] [वीडियो की शृंखला (27 वीडियो)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [पुस्तक: हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/059607124) - - मुझे पता है कि विहित पुस्तक "डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंटेड सॉफ़्टवेयर के तत्व" है, लेकिन हेड फर्स्ट ओओ के शुरुआती लोगों के लिए बहुत अच्छा है। - - [आसान संदर्भ: 101 डिज़ाइन पैटर्न और डेवलपर्स के लिए सुझाव](https://sourcemaking.com/design-patterns-and-tips) - - -- ### कॉम्बिनेटरिक्स (n चुनें k) और प्रायिकता - - [ ] [गणित कौशल: भाज्य, क्रमचय और संयोजन कैसे खोजें (चुनें) (वीडियो)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [मेक स्कूल: प्रोबेबिलिटी (वीडियो)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [मेक स्कूल: मोर प्रोबेबिलिटी एंड मार्कोव चेन्स (वीडियो)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] खान अकादमी: - - कोर्स लेआउट: - - [ ] [मूल सैद्धांतिक संभावना](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - बस वीडियो - 41 (प्रत्येक सरल हैं और प्रत्येक छोटा है): - - [ ] [संभाव्यता की व्याख्या (वीडियो)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### एनपी, एनपी-पूर्ण और सन्निकटन एल्गोरिदम - - एनपी-पूर्ण समस्याओं के सबसे प्रसिद्ध वर्गों के बारे में जानें, जैसे यात्रा विक्रेता और बस्ता समस्या, - और जब कोई साक्षात्कारकर्ता आपसे वेश में पूछे तो उन्हें पहचानने में सक्षम हो। - - जानिए एनपी-पूर्ण का क्या मतलब है। - - [ ] [कम्प्यूटेशनल जटिलता (वीडियो)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [] साइमनसन: - - [ ] [लालची Algs. II और एनपी पूर्णता का परिचय (वीडियो)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [एनपी पूर्णता II और कटौती (वीडियो)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [एनपी पूर्णता III (वीडियो)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [एनपी पूर्णता IV (वीडियो)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [] स्कीना: - - [ ] [CSE373 2020 - व्याख्यान 23 - एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) - - [ ] [CSE373 2020 - व्याख्यान 24 - संतुष्टि (वीडियो)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - - [ ] [CSE373 2020 - व्याख्यान 25 - अधिक एनपी-पूर्णता (वीडियो)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - - [ ] [CSE373 2020 - व्याख्यान 26 - एनपी-पूर्णता चुनौती (वीडियो)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - - [ ] [जटिलता: पी, एनपी, एनपी-पूर्णता, कटौती (वीडियो)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [जटिलता: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [जटिलता: फिक्स्ड-पैरामीटर एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - पीटर नॉरविग ने ट्रैवलिंग सेल्समैन की समस्या के निकट-इष्टतम समाधानों पर चर्चा की: - - [जुपिटर नोटबुक](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - यदि आपके पास सीएलआरएस में पृष्ठ 1048 - 1140 है। - -- ### कंप्यूटर प्रोग्राम को कैसे प्रोसेस करते हैं - - - [ ] [सीपीयू किसी प्रोग्राम को कैसे निष्पादित करता है (वीडियो)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [कंप्यूटर कैसे कैलकुलेट करते हैं - ALU (वीडियो)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [रजिस्टर और रैम (वीडियो)](https://youtu.be/fpnE6UAfbtU) - - [ ] [सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) (वीडियो)](https://youtu.be/FZGugFqdr60) - - [ ] [निर्देश और कार्यक्रम (वीडियो)](https://youtu.be/zltgXvg6r3k) - -- ### कैश - - [] एलआरयू कैश: - - [ ] [LRU कैश का जादू (गूगल देव के 100 दिन) (वीडियो)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [एलआरयू (वीडियो) लागू करना](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU कैश (C++) (वीडियो)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [] सीपीयू कैश: - - [ ] [MIT 6.004 L15: मेमोरी पदानुक्रम (वीडियो)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: कैश की समस्या (वीडियो)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### प्रक्रियाएं और सूत्र - - [ ] कंप्यूटर साइंस 162 - ऑपरेटिंग सिस्टम (25 वीडियो): - - प्रक्रियाओं और थ्रेड्स के लिए वीडियो देखें 1-11 - - [ऑपरेटिंग सिस्टम और सिस्टम प्रोग्रामिंग (वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [एक प्रक्रिया और एक धागे में क्या अंतर है?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - कवर: - - प्रक्रियाएं, सूत्र, समवर्ती मुद्दे - - प्रक्रियाओं और धागे के बीच अंतर - - प्रक्रियाएं - - धागे - - ताले - - म्यूटेक्स - - सेमाफोरस - - मॉनिटर्स - - वे कैसे काम करते हैं? - - गतिरोध - - लाइवलॉक - - सीपीयू गतिविधि, इंटरप्ट, संदर्भ स्विचिंग - - मल्टीकोर प्रोसेसर के साथ आधुनिक समवर्ती निर्माण - - [पेजिंग, सेगमेंटेशन और वर्चुअल मेमोरी (वीडियो)](https://youtu.be/O4nwUqQodAg) - - [व्यवधान (वीडियो)](https://youtu.be/iKlAWIKEyuw) - - प्रक्रिया संसाधन की जरूरत (मेमोरी: कोड, स्टैटिक स्टोरेज, स्टैक, हीप, और फाइल डिस्क्रिप्टर, i/o) - - एक ही प्रक्रिया में अन्य थ्रेड्स के साथ थ्रेड रिसोर्स की जरूरत (ऊपर के शेयर (माइनस स्टैक) लेकिन प्रत्येक का अपना पीसी, स्टैक काउंटर, रजिस्टर और स्टैक होता है) - - फोर्किंग वास्तव में कॉपी ऑन राइट (रीड-ओनली) है जब तक कि नई प्रक्रिया मेमोरी को नहीं लिखती है, तब यह पूरी कॉपी करता है। - - प्रसंग स्विचिंग - - ऑपरेटिंग सिस्टम और अंतर्निहित हार्डवेयर द्वारा संदर्भ स्विचिंग कैसे शुरू की जाती है? - - [ ] [सी++ में थ्रेड (श्रृंखला - 10 वीडियो)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] [सीएस 377 स्प्रिंग '14: मैसाचुसेट्स विश्वविद्यालय से ऑपरेटिंग सिस्टम](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - - [] पायथन में संगामिति (वीडियो): - - [ ] [थ्रेड्स पर शॉर्ट सीरीज़](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [पायथन थ्रेड्स](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [पायथन जीआईएल को समझना (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [संदर्भ] (http://www.dabeaz.com/GIL) - - [ ] [डेविड बेज़ले - पाइथॉन कंकरेंसी फ्रॉम द ग्राउंड अप: लाइव! - पाइकॉन 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [मुख्य वक्ता डेविड बेज़ले - रुचि के विषय (पायथन एसिंकियो)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [पायथन में म्यूटेक्स](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### परिक्षण - - आच्छादित करना: - - यूनिट परीक्षण कैसे काम करता है - - नकली वस्तुएं क्या हैं - - एकीकरण परीक्षण क्या है - - निर्भरता इंजेक्शन क्या है - - [ ] [जेम्स बाख के साथ एजाइल सॉफ्टवेयर टेस्टिंग (वीडियो)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [जेम्स बाख द्वारा सॉफ्टवेयर परीक्षण पर खुला व्याख्यान (वीडियो)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [स्टीव फ्रीमैन - टेस्ट-ड्रिवेन डेवलपमेंट (यही हमारा मतलब नहीं था) (वीडियो)](https://vimeo.com/83960706) - - [स्लाइड्स] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] निर्भरता इंजेक्शन: - - [ ] [वीडियो](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [परीक्षण के ताओ] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [परीक्षा कैसे लिखें](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - --### स्ट्रिंग खोज और जोड़तोड़ - - [ ] [सेडगेविक - प्रत्यय सरणी (वीडियो)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [सेजविक - सबस्ट्रिंग सर्च (वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. सबस्ट्रिंग सर्च का परिचय](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - - [ ] [2. ब्रूट-फोर्स सबस्ट्रिंग सर्च](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. नुथ-मॉरिस प्रैट](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. बॉयर-मूर](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. राबिन-कार्प](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - - [ ] [पाठ में खोज पैटर्न (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/tAfHI/search-pattern-in-text) - - यदि आपको इस विषय पर अधिक विवरण की आवश्यकता है, तो [कुछ विषयों पर अतिरिक्त विवरण] (# अतिरिक्त-विवरण-पर-कुछ-विषयों) में "स्ट्रिंग मिलान" अनुभाग देखें। - -- ### कोशिश करता है - - ध्यान दें कि विभिन्न प्रकार के प्रयास हैं। कुछ में उपसर्ग होते हैं, कुछ नहीं, और कुछ बिट्स के बजाय स्ट्रिंग का उपयोग करते हैं - पथ को ट्रैक करने के लिए - - मैं कोड के माध्यम से पढ़ता हूं, लेकिन लागू नहीं करूंगा - - [ ] [सेजविक - ट्राइज़ (3 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. आर वे ट्राइस](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-trys) - - [ ] [2. टर्नरी खोज प्रयास](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-trys) - - [ ] [3. चरित्र आधारित संचालन](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - - [ ] [डेटा संरचनाओं और प्रोग्रामिंग तकनीकों पर नोट्स](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] लघु ​​पाठ्यक्रम वीडियो: - - [ ] [प्रयासों का परिचय (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-trys) - - [ ] [प्रयासों का प्रदर्शन (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-trys) - - [ ] [एक ट्री को लागू करना (वीडियो)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [द ट्री: ए नेग्लेक्टेड डेटा स्ट्रक्चर](https://www.toptal.com/java/the-trie-a-neglected-data-struct) - - [ ] [टॉपकोडर - ट्राईज़ का उपयोग करना](https://www.topcoder.com/thrive/articles/Using%20Tries) - - [ ] [स्टैनफोर्ड लेक्चर (असली दुनिया में इस्तेमाल का मामला) (वीडियो)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [एमआईटी, उन्नत डेटा संरचनाएं, स्ट्रिंग्स (आधे रास्ते में बहुत अस्पष्ट हो सकती हैं) (वीडियो)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### दशमलव संख्याएं - - [ ] साधारण 8-बिट: [फ़्लोटिंग पॉइंट नंबरों का प्रतिनिधित्व - 1 (वीडियो - गणना में त्रुटि है - वीडियो विवरण देखें)](https://www.youtube.com/watch?v=ji3SfClm8TU) - -- ### यूनिकोड - - [ ] [पूर्ण न्यूनतम हर सॉफ्टवेयर डेवलपर बिल्कुल, सकारात्मक रूप से यूनिकोड और कैरेक्टर सेट के बारे में जानना चाहिए]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [पाठ के साथ काम करने के लिए हर प्रोग्रामर को क्या बिल्कुल, सकारात्मक रूप से एन्कोडिंग और कैरेक्टर सेट के बारे में जानने की जरूरत है](http://kunsttube.net/encoding/) --### अंतहीनता - - [ ] [बिग एंड लिटिल एंडियन](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian. एचटीएमएल) - - [ ] [बिग एंडियन बनाम लिटिल एंडियन (वीडियो)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [बिग एंड लिटिल एंडियन इनसाइड/आउट (वीडियो)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - कर्नेल देवों के लिए बहुत तकनीकी बात। यदि अधिकांश आपके सिर के ऊपर है तो चिंता न करें। - - पहला हाफ काफी है। - -- ### नेटवर्किंग - - **यदि आपके पास नेटवर्किंग का अनुभव है या आप एक विश्वसनीयता इंजीनियर या संचालन इंजीनियर बनना चाहते हैं, तो प्रश्नों की अपेक्षा करें** - - अन्यथा, यह जानना अच्छा है - - [ ] [खान अकादमी](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - - [ ] [यूडीपी और टीसीपी: ट्रांसपोर्ट प्रोटोकॉल की तुलना (वीडियो)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [टीसीपी/आईपी और ओएसआई मॉडल की व्याख्या! (वीडियो)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [इंटरनेट पर पैकेट ट्रांसमिशन। नेटवर्किंग और टीसीपी/आईपी ट्यूटोरियल। (वीडियो)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (वीडियो)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [एसएसएल और एचटीटीपीएस (वीडियो)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [एसएसएल/टीएलएस (वीडियो)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (वीडियो)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [वीडियो सीरीज़ (21 वीडियो) (वीडियो)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [सबनेटिंग डिमिस्टिफाइड - भाग 5 सीआईडीआर नोटेशन (वीडियो)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [] सॉकेट: - - [ ] [जावा - सॉकेट - परिचय (वीडियो)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [सॉकेट प्रोग्रामिंग (वीडियो)](https://www.youtube.com/watch?v=G75vN2mnJeQ) - -## अंतिम समीक्षा - - इस अनुभाग में छोटे वीडियो होंगे जिन्हें आप अधिकांश महत्वपूर्ण अवधारणाओं की समीक्षा करने के लिए बहुत तेज़ी से देख सकते हैं। - यदि आप अक्सर एक पुनश्चर्या चाहते हैं तो यह अच्छा है। - -- [] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) - - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - माइकल साम्बोल (18 वीडियो): - - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) - ---- - -## अपना रिज्यूमे अपडेट करें - -- किताबों में तैयारी की जानकारी फिर से शुरू करें देखें: "कोडिंग इंटरव्यू क्रैकिंग" और "प्रोग्रामिंग इंटरव्यू एक्सपोज्ड" -- मुझे नहीं पता कि यह कितना महत्वपूर्ण है (आप अपना खुद का शोध कर सकते हैं) लेकिन यहां आपके रेज़्यूमे को एटीएस के अनुरूप बनाने पर एक लेख है: - - [कैसे बनाएं या जांचें कि आपका रिज्यूमे एटीएस के अनुरूप है या नहीं](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for -मुक्त) -- [गेल मैकडॉवेल (क्रैकिंग द कोडिंग इंटरव्यू के लेखक) द्वारा ["दिस इज़ व्हाट ए गुड रिज्यूमे शुड लुक लाइक"](https://www.careercup.com/resume), - - लेखक द्वारा नोट: "यह यूएस-केंद्रित रिज्यूमे के लिए है। भारत और अन्य देशों के लिए सीवी की अलग-अलग अपेक्षाएं हैं, हालांकि कई बिंदु समान होंगे।" -- [टेक इंटरव्यू हैंडबुक द्वारा "स्टेप-बाय-स्टेप रेज़्यूमे गाइड"](https://www.techinterviewhandbook.org/resume/guide) - - शुरू से अपना रिज्यूमे कैसे सेट करें, इस बारे में विस्तृत गाइड, प्रभावी रिज्यूमे सामग्री लिखें, इसे ऑप्टिमाइज़ करें और अपने रिज्यूमे का परीक्षण करें - - -## एक नौकरी ढूंढो - -- [नौकरियां खोजने के लिए साइटें](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) - -## साक्षात्कार प्रक्रिया और सामान्य साक्षात्कार तैयारी - -- [ ] [2021 में इंजीनियरिंग इंटरव्यू कैसे पास करें](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [ ] [तकनीकी भर्ती का रहस्योद्घाटन](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] बिग 4 में नौकरी कैसे प्राप्त करें: - - [ ] [बिग 4 में नौकरी कैसे पाएं - Amazon, Facebook, Google और Microsoft (वीडियो)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [बिग 4.1 में नौकरी कैसे पाएं (फॉलो-अप वीडियो)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) -- [ ] कोडिंग इंटरव्यू सेट 1 को क्रैक करना: - - [ ] [गेल एल मैकडॉवेल - क्रैकिंग द कोडिंग इंटरव्यू (वीडियो)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [लेखक गेल लाकमैन मैकडॉवेल के साथ कोडिंग इंटरव्यू क्रैक करना (वीडियो)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] फेसबुक कोडिंग इंटरव्यू को क्रैक करना: - - [ ] [दृष्टिकोण](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [समस्या पूर्वाभ्यास](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- तैयारी पाठ्यक्रम: - - [सॉफ्टवेयर इंजीनियर इंटरव्यू अनलीशेड (पेड कोर्स)](https://www.udemy.com/software-engineer-interview-unleashed): - - Google के किसी पूर्व साक्षात्कारकर्ता से सॉफ़्टवेयर इंजीनियर साक्षात्कार के लिए स्वयं को तैयार करने का तरीका जानें. - - [पायथन फॉर डेटा स्ट्रक्चर्स, एल्गोरिदम, और इंटरव्यू (पेड कोर्स)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - एक पायथन केंद्रित साक्षात्कार तैयारी पाठ्यक्रम जिसमें डेटा संरचनाएं, एल्गोरिदम, नकली साक्षात्कार और बहुत कुछ शामिल है। - - [पायथन का उपयोग करके डेटा संरचनाओं और एल्गोरिदम का परिचय (उडेसिटी फ्री कोर्स)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - एक मुफ्त पायथन केंद्रित डेटा संरचनाएं और एल्गोरिदम पाठ्यक्रम। - - [डेटा संरचनाएं और एल्गोरिदम नैनोडेग्री! (उडेसिटी पेड नैनोडेग्री)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - साक्षात्कार और नौकरी के परिदृश्य के लिए तैयार करने में मदद करने के लिए एक समर्पित सलाहकार से 100 से अधिक डेटा संरचनाओं और एल्गोरिदम अभ्यास और मार्गदर्शन के साथ व्यावहारिक अभ्यास प्राप्त करें। - - [बिहेवियरल इंटरव्यू ग्रोकिंग (शिक्षा मुक्त कोर्स)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - कई बार, यह आपकी तकनीकी योग्यता नहीं है जो आपको अपने सपनों की नौकरी में उतरने से रोकती है, यह है कि आप व्यवहारिक साक्षात्कार पर कैसा प्रदर्शन करते हैं। - -नकली साक्षात्कार: -- [Gainlo.co: बड़ी कंपनियों के नकली साक्षात्कारकर्ता] (http://www.gainlo.co/#!/) - मैंने इसका इस्तेमाल किया और इससे मुझे फोन स्क्रीन और साइट पर साक्षात्कार के लिए आराम करने में मदद मिली -- [प्रैम्प: पीयर-टू-पीयर मॉडल ऑफ़ प्रैक्टिस इंटरव्यूज़] (https://www.pramp.com/) -- [interviewing.io: वरिष्ठ इंजीनियरों के साथ मॉक इंटरव्यू का अभ्यास करें](https://interviewing.io) - अनाम एल्गोरिथम/सिस्टम डिज़ाइन साक्षात्कार FAANG के वरिष्ठ इंजीनियरों के साथ गुमनाम रूप से - -## इंटरव्यू कब आए, इसके बारे में सोचें - -नीचे दी गई मदों की पंक्तियों के साथ आपको मिलने वाले लगभग 20 साक्षात्कार प्रश्नों के बारे में सोचें। प्रत्येक के लिए कम से कम एक उत्तर दें। -आपके द्वारा हासिल की गई किसी चीज़ के बारे में, केवल डेटा ही नहीं, एक कहानी रखें। - -- आपको यह नौकरी क्यों चाहिए? -- आपने कौन सी कठिन समस्या हल की है? -- सबसे बड़ी चुनौतियों का सामना करना पड़ा? -- सबसे अच्छा / सबसे खराब डिजाइन देखा गया? -- मौजूदा उत्पाद में सुधार के लिए विचार -- आप एक व्यक्ति के रूप में और एक टीम के हिस्से के रूप में सबसे अच्छा कैसे काम करते हैं? -- आपका कौन सा कौशल या अनुभव भूमिका में संपत्ति होगा और क्यों? -- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे ज्यादा क्या पसंद आया? -- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे बड़ी चुनौती क्या थी? -- [जॉब एक्स / प्रोजेक्ट वाई] में आपको सबसे कठिन बग क्या था? -- आपने [जॉब x / प्रोजेक्ट y] में क्या सीखा? -- [जॉब x / प्रोजेक्ट y] में आपने क्या बेहतर किया होगा? - -- यदि आपको इस प्रकार के साक्षात्कार प्रश्नों के अच्छे उत्तर प्राप्त करने में कठिनाई होती है, तो यहां कुछ उपाय दिए गए हैं: - - [सामान्य साक्षात्कार प्रश्न और उनके उत्तर](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) - -## साक्षात्कारकर्ता के लिए प्रश्न हैं - -मेरे कुछ (मैं पहले से ही उत्तर जानता हूं, लेकिन उनकी राय या टीम परिप्रेक्ष्य चाहता हूं): - -- आपकी टीम कितनी बड़ी है? -- आपका देव चक्र कैसा दिखता है? क्या आप वाटरफॉल/स्प्रिंट/फुर्तीली करते हैं? -- क्या समय सीमा के लिए दौड़ आम है? या कोई लचीलापन है? -- आपकी टीम में निर्णय कैसे लिए जाते हैं? -- आप प्रति सप्ताह कितनी बैठकें करते हैं? -- क्या आपको लगता है कि आपके काम का माहौल आपको ध्यान केंद्रित करने में मदद करता है? -- आप किस पर काम कर रहे हैं? -- आपको इसमें क्या पसंद है? -- काम का जीवन कैसा है? -- कार्य/जीवन संतुलन कैसा है? - -## एक बार आपको नौकरी मिल गई - -बधाई हो! - -सीखते रहो। - -आप वास्तव में कभी नहीं कर रहे हैं। - ---- - - *********************************************** *********************************************** * - *********************************************** *********************************************** * - - इस बिंदु के नीचे सब कुछ वैकल्पिक है। प्रवेश स्तर के साक्षात्कार के लिए इसकी आवश्यकता नहीं है। - हालांकि, इनका अध्ययन करके, आप अधिक सीएस अवधारणाओं के बारे में अधिक जानकारी प्राप्त करेंगे, और इसके लिए बेहतर तरीके से तैयार होंगे - कोई भी सॉफ्टवेयर इंजीनियरिंग जॉब। आप बहुत अधिक कुशल सॉफ्टवेयर इंजीनियर होंगे। - - *********************************************** *********************************************** * - *********************************************** *********************************************** * - ---- - -## अतिरिक्त पुस्तकें - यहां हैं ताकि आप किसी ऐसे विषय पर जा सकें जो आपको रुचिकर लगे। - -- [यूनिक्स प्रोग्रामिंग पर्यावरण](https://www.amazon.com/dp/013937681X) - - एक बूढ़ी लेकिन एक गुडी -- [लिनक्स कमांड लाइन: एक पूर्ण परिचय](https://www.amazon.com/dp/1593273894/) - - एक आधुनिक विकल्प -- [टीसीपी/आईपी इलस्ट्रेटेड सीरीज](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [हेड फर्स्ट डिज़ाइन पैटर्न](https://www.amazon.com/gp/product/0596007124/) - - डिजाइन पैटर्न के लिए एक सौम्य परिचय -- [डिज़ाइन पैटर्न: पुन: प्रयोज्य ऑब्जेक्ट-ओरिएंट डी सॉफ़्टवेयर के तत्व](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - उर्फ ​​"गैंग ऑफ़ फोर" पुस्तक, या GOF - - विहित डिजाइन पैटर्न पुस्तक -- [एल्गोरिदम डिजाइन मैनुअल] (http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (स्कीना) - - समीक्षा और समस्या की पहचान के रूप में - - एल्गोरिथम कैटलॉग भाग आपको साक्षात्कार में मिलने वाली कठिनाई के दायरे से बाहर है - - इस पुस्तक के 2 भाग हैं: - - डेटा संरचनाओं और एल्गोरिदम पर कक्षा की पाठ्यपुस्तक - - पेशेवरों: - - एक अच्छी समीक्षा है क्योंकि कोई भी एल्गोरिदम पाठ्यपुस्तक होगी - - उद्योग और शिक्षा जगत में समस्याओं को सुलझाने के उनके अनुभवों की अच्छी कहानियाँ - - सी . में कोड उदाहरण - - दोष: - - सीएलआरएस जितना घना या अभेद्य हो सकता है, और कुछ मामलों में, सीएलआरएस कुछ विषयों के लिए एक बेहतर विकल्प हो सकता है - - अध्याय 7, 8, 9 का पालन करने की कोशिश करना दर्दनाक हो सकता है, क्योंकि कुछ वस्तुओं को अच्छी तरह से समझाया नहीं गया है या मेरे पास जितना दिमाग है उससे अधिक दिमाग की आवश्यकता है - - मुझे गलत मत समझो: मुझे स्कीना, उनकी शिक्षण शैली और तौर-तरीके पसंद हैं, लेकिन मैं स्टोनी ब्रुक सामग्री नहीं हो सकता - - एल्गोरिथम कैटलॉग: - - यही असली कारण है कि आप इस किताब को खरीदते हैं। - - यह पुस्तक एक एल्गोरिथम संदर्भ के रूप में बेहतर है, न कि कुछ ऐसा जिसे आप कवर टू कवर पढ़ते हैं। - - इसे किंडल पर किराए पर ले सकते हैं - - उत्तर: - - [समाधान](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [इरेटा](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) -- [महान कोड लिखें: खंड 1: मशीन को समझना](https://www.amazon.com/Write-Great-Code-Understand-Machine/dp/1593270038) - - पुस्तक 2004 में प्रकाशित हुई थी, और कुछ पुरानी है, लेकिन कंप्यूटर को संक्षेप में समझने के लिए यह एक बढ़िया संसाधन है - - लेखक ने [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) का आविष्कार किया, इसलिए नमक के एक दाने के साथ HLA में उल्लेख और उदाहरण लें। व्यापक रूप से उपयोग नहीं किया जाता है, लेकिन असेंबली कैसा दिखता है इसके अच्छे उदाहरण हैं - - आपको एक अच्छी नींव देने के लिए ये अध्याय पढ़ने लायक हैं: - - अध्याय 2 - संख्यात्मक प्रतिनिधित्व - - अध्याय 3 - बाइनरी अंकगणित और बिट संचालन - - अध्याय 4 - फ़्लोटिंग-पॉइंट प्रतिनिधित्व - - अध्याय 5 - चरित्र प्रतिनिधित्व - - अध्याय 6 - स्मृति संगठन और पहुंच - - अध्याय 7 - समग्र डेटा प्रकार और मेमोरी ऑब्जेक्ट - - अध्याय 9 - सीपीयू वास्तुकला - - अध्याय 10 - निर्देश सेट वास्तुकला - - अध्याय 11 - स्मृति वास्तुकला और संगठन -- [एल्गोरिदम का परिचय](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) - - **महत्वपूर्ण:** इस पुस्तक को पढ़ने का केवल सीमित महत्व होगा। यह पुस्तक एल्गोरिदम और डेटा संरचनाओं की एक बेहतरीन समीक्षा है, लेकिन यह आपको अच्छा कोड लिखना नहीं सिखाएगी। आपको एक अच्छे समाधान को कुशलता से कोड करने में सक्षम होना चाहिए - - उर्फ ​​सीएलआर, कभी-कभी सीएलआरएस, क्योंकि स्टीन खेल के लिए देर हो चुकी थी -- [कंप्यूटर आर्किटेक्चर, छठा संस्करण: एक मात्रात्मक दृष्टिकोण] (https://www.amazon.com/dp/0128119055) - - एक अमीर, अधिक अप-टू-डेट (2017) के लिए, लेकिन लंबे समय तक इलाज - -## सिस्टम डिज़ाइन, स्केलेबिलिटी, डेटा हैंडलिंग - -**यदि आपके पास 4+ वर्ष का अनुभव है तो आप सिस्टम डिज़ाइन प्रश्नों की अपेक्षा कर सकते हैं।** - -- कई विषयों और संसाधनों के साथ स्केलेबिलिटी और सिस्टम डिज़ाइन बहुत बड़े विषय हैं, क्योंकि - सॉफ़्टवेयर/हार्डवेयर सिस्टम को डिज़ाइन करते समय विचार करने के लिए बहुत कुछ है जो स्केल कर सकता है। - इस पर काफी समय बिताने की अपेक्षा करें -- विचार: - - मापनीयता - - बड़े डेटा सेट को एकल मानों पर डिस्टिल करें - - एक डेटा सेट को दूसरे में बदलना - - अश्लील रूप से बड़ी मात्रा में डेटा को संभालना - - प्रणाली की रूपरेखा - - सुविधाएँ सेट - - इंटरफेस - - वर्ग पदानुक्रम - - कुछ बाधाओं के तहत एक प्रणाली को डिजाइन करना - - सादगी और मजबूती - - ट्रेडऑफ़ - - प्रदर्शन विश्लेषण और अनुकूलन -- [ ] **यहां शुरू करें**: [सिस्टम डिजाइन प्राइमर](https://github.com/donnemartin/system-design-primer) -- [ ] [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://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [सिस्टम डिज़ाइन इंटरव्यू](https://github.com/checkcheckzz/system-design-interview) - इसमें बहुत सारे संसाधन हैं। लेखों और उदाहरणों के माध्यम से देखें। मैंने उनमें से कुछ को नीचे रखा है -- [ ] [कैसे एक सिस्टम डिजाइन साक्षात्कार में सफलता प्राप्त करें](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/) -- [ ] [संदर्भ स्विच करने में कितना समय लगता है?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [डेटासेंटर में लेन-देन (वीडियो)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [कैप प्रमेय का एक सादा अंग्रेजी परिचय](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [] आम सहमति एल्गोरिदम: - - [ ] पैक्सोस - [पैक्सोस एग्रीमेंट - कंप्यूटरफाइल (वीडियो)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] बेड़ा - [बेड़ा वितरित आम सहमति एल्गोरिथ्म का एक परिचय (वीडियो)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [पढ़ने में आसान पेपर](https://raft.github.io/) - - [ ] [इन्फोग्राफिक] (http://thesecretlivesofdata.com/raft/) -- [ ] [लगातार हैशिंग] (http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [नोएसक्यूएल पैटर्न] (http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [] मापनीयता: - - आपको इन सब की जरूरत नहीं है। बस कुछ ऐसे चुनें जिनमें आपकी रुचि हो। - - [ ] [शानदार अवलोकन (वीडियो)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [] लघु ​​श्रृंखला: - - [क्लोन] (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) - - [ ] [डिस्ट्रिब्यूटेड कंप्यूटिंग की गलतियां समझाया](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [जेफ डीन - Google पर सॉफ्टवेयर सिस्टम बनाना और सीखे गए पाठ (वीडियो)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [स्केल के लिए आर्किटेक्चरिंग सिस्टम का परिचय](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [ऐप इंजन और क्लाउड डेटास्टोर (वीडियो) का उपयोग करके मोबाइल गेम को वैश्विक दर्शकों तक पहुंचाना](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [Google प्लैनेट-स्केल इंफ़्रा के लिए प्लैनेट-स्केल इंजीनियरिंग कैसे करता है (वीडियो)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [एल्गोरिदम का महत्व](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - - [ ] [शार्डिंग] (http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [लंबे गेम के लिए इंजीनियरिंग - एस्ट्रिड एटकिंसन कीनोट (वीडियो)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [30 मिनट में 7 साल के YouTube मापनीयता पाठ](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) - - [वीडियो](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [कैसे पेपैल ने केवल 8VMs का उपयोग करके प्रतिदिन अरबों लेन-देन किया](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -जू.एचटीएमएल) - - [ ] [बड़े डेटासेट में डुप्लीकेट कैसे निकालें](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [जॉन कोवी के साथ एटीसी के पैमाने और इंजीनियरिंग संस्कृति के अंदर एक नज़र (वीडियो)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [व्हाट लेड अमेज़ॉन टू इट्स ओन माइक्रोसर्विसेज आर्किटेक्चर](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [कंप्रेस करना या न करना, यह उबर का सवाल था](https://eng.uber.com/trip-data-squeeze/) - - [ ] [अनुमानित क्वेरी संसाधन का उपयोग कब किया जाना चाहिए?] - - [ ] [एकल डेटासेंटर से 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/2/1/a-patreon-architecture-short.html) - - [ ] [टिंडर: सबसे बड़े अनुशंसा इंजनों में से एक कैसे तय करता है कि आप आगे किसे देखेंगे?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- the-सबसे बड़ा-सिफारिश-इंजन-de.html) - - [ ] [एक आधुनिक कैश का डिज़ाइन](http://highscalability.com/blog/2016/1/25/design-of-a-आधुनिक-cache.html) - - [ ] [फेसबुक स्केल पर लाइव वीडियो स्ट्रीमिंग](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.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/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) - - [ ] [विलंबता हर जगह है और यह आपको बिक्री पर खर्च करती है - इसे कैसे कुचलें] (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 बिलियन ट्रांजैक्शन ए डे](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) - - [ ] [ईएसपीएन का आर्किटेक्चर स्केल पर - 100,000 दुह नुह नुह्स प्रति सेकेंड पर परिचालन](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -नुह-नुह.एचटीएमएल) - - [ ] सेवाओं को आपस में जोड़ने वाली कुछ तकनीकों के बारे में जानकारी के लिए नीचे "मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम" देखें। - - [ ] ट्विटर: - - [ओ'रेली माईएसक्यूएल सीई 2011: जेरेमी कोल, "@Twitter पर बड़ा और छोटा डेटा" (वीडियो)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [पैमाने पर समयरेखा](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - और भी अधिक के लिए, [वीडियो श्रृंखला](#वीडियो-श्रृंखला) अनुभाग में "बड़े पैमाने पर डेटासेट खनन" वीडियो श्रृंखला देखें -- [ ] सिस्टम डिजाइन प्रक्रिया का अभ्यास करना: कागज पर काम करने की कोशिश करने के लिए यहां कुछ विचार दिए गए हैं, प्रत्येक में कुछ दस्तावेज हैं कि इसे वास्तविक दुनिया में कैसे संभाला गया था: - - समीक्षा करें: [सिस्टम डिज़ाइन प्राइमर](https://github.com/donnemartin/system-design-primer) - - [HiredInTech से सिस्टम डिज़ाइन] (http://www.hiredintech.com/system-design/) - - [चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - बहे: - 1. समस्या और दायरे को समझें: - - साक्षात्कारकर्ता की सहायता से उपयोग के मामलों को परिभाषित करें - - अतिरिक्त सुविधाओं का सुझाव दें - - उन वस्तुओं को हटा दें जिन्हें साक्षात्कारकर्ता दायरे से बाहर मानता है - - मान लें कि उच्च उपलब्धता की आवश्यकता है, उपयोग के मामले के रूप में जोड़ें - 2. बाधाओं के बारे में सोचें: - - पूछें कि प्रति माह कितने अनुरोध हैं - - पूछें कि प्रति सेकंड कितने अनुरोध हैं (वे इसे स्वयंसेवा कर सकते हैं या आपको गणित कर सकते हैं) - - अनुमान पढ़ता है बनाम प्रतिशत लिखता है - - अनुमान लगाते समय 80/20 नियम को ध्यान में रखें - - प्रति सेकंड कितना डेटा लिखा जाता है - - 5 वर्षों में कुल संग्रहण की आवश्यकता - - प्रति सेकंड कितना डेटा पढ़ता है - 3. सार डिजाइन: - - परतें (सेवा, डेटा, कैशिंग) - - इन्फ्रास्ट्रक्चर: लोड बैलेंसिंग, मैसेजिंग - - सेवा को चलाने वाले किसी भी प्रमुख एल्गोरिथम का मोटे तौर पर अवलोकन - - बाधाओं पर विचार करें और समाधान निर्धारित करें - - व्यायाम: - - [एक यादृच्छिक अद्वितीय आईडी जनरेशन सिस्टम डिज़ाइन करें](https://blog.twitter.com/2010/announcing-snowflake) - - [की-वैल्यू डेटाबेस डिज़ाइन करें] (http://www.slideshare.net/dvirsky/introduction-to-redis) - - [तस्वीर साझा करने वाला सिस्टम डिज़ाइन करें](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [एक सिफारिश प्रणाली डिजाइन करें](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [यूआरएल-शॉर्टनर सिस्टम डिज़ाइन करें: ऊपर से कॉपी किया गया] (http://www.hiredintech.com/system-design/the-system-design-process/) - - [एक कैश सिस्टम डिज़ाइन करें](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) - -## अतिरिक्त शिक्षा -मैंने उन्हें एक संपूर्ण सॉफ़्टवेयर इंजीनियर बनने में आपकी सहायता करने के लिए, और कुछ के बारे में जागरूक होने के लिए जोड़ा है - प्रौद्योगिकियों और एल्गोरिदम, तो आपके पास एक बड़ा टूलबॉक्स होगा। - -- ### कंपाइलर्स - - [एक कंपाइलर ~1 मिनट में कैसे काम करता है (वीडियो)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [हार्वर्ड CS50 - कंपाइलर (वीडियो)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [सी++ (वीडियो)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [कंपाइलर ऑप्टिमाइज़ेशन को समझना (C++) (वीडियो)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- ### Emacs और vi(m) - - यूनिक्स-आधारित कोड संपादक से खुद को परिचित करें - - vi (एम): - - [विम 01 के साथ संपादन - इंस्टॉलेशन, सेटअप और मोड (वीडियो)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [वीआईएम एडवेंचर्स](http://vim-adventures.com/) - - 4 वीडियो का सेट: - - [vi/vim संपादक - पाठ 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [vi/vim संपादक - पाठ 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [vi/vim संपादक - पाठ 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [vi/vim संपादक - पाठ 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Emacs के बजाय Vi का उपयोग करना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - एमएसीएस: - - [बेसिक्स Emacs ट्यूटोरियल (वीडियो)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - 3 का सेट (वीडियो): - - [Emacs Tutorial (शुरुआती) -भाग 1- फ़ाइल कमांड, कट/कॉपी/पेस्ट, कर्सर कमांड](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (शुरुआती) -भाग 2- बफर प्रबंधन, खोज, M-x grep और rgrep मोड](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (शुरुआती) -भाग 3- एक्सप्रेशन, स्टेटमेंट, ~/.emacs फ़ाइल और पैकेज](https://www.youtube.com/watch?v=paSgzPso-yc) - - [ईविल मोड: या, हाउ आई लर्न टू स्टॉप वरीइंग एंड लव Emacs (वीडियो)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Emacs के साथ C प्रोग्राम लिखना](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) -- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन द्वारा वीडियो)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) -- [द एब्सोल्यूट बिगिनर्स गाइड टू Emacs (डेविड विल्सन के नोट्स)](https://systemcrafters.net/emacs-entials/absolute-beginners-guide-to-emacs/) - -- ### यूनिक्स कमांड लाइन टूल्स - - मैंने नीचे दी गई सूची को अच्छे टूल से भरा। - - दे घुमा के - - बिल्ली - - ग्रेपी - - सेडो - - अजीब - - कर्ल या wget - - क्रम से लगाना - - त्रि - - uniq - - [स्ट्रेस] (https://en.wikipedia.org/wiki/Strace) - - [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### सूचना सिद्धांत (वीडियो) - - [खान अकादमी](https://www.khanacademy.org/computing/computer-science/informationtheory) - - मार्कोव प्रक्रियाओं के बारे में अधिक जानकारी: - - [कोर मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [कोर इम्प्लीमेंटिंग मार्कोव टेक्स्ट जनरेशन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [प्रोजेक्ट = मार्कोव टेक्स्ट जेनरेशन वॉक थ्रू](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - नीचे MIT 6.050J सूचना और एन्ट्रापी श्रृंखला में और देखें - -- ### समता और हैमिंग कोड (वीडियो) - - [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [समता](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - हैमिंग कोड: - - [त्रुटि का पता लगाना](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [त्रुटि सुधार](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [त्रुटि जांच](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### एन्ट्रॉपी - - नीचे दिए गए वीडियो भी देखें - - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें - - [सूचना सिद्धांत, क्लाउड शैनन, एन्ट्रॉपी, अतिरेक, डेटा संपीड़न और बिट्स (वीडियो)](https://youtu.be/JnJq3Py0dyM?t=176) - -- ### क्रिप्टोग्राफी - - नीचे दिए गए वीडियो भी देखें - - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें - - [खान अकादमी सीरीज](https://www.khanacademy.org/computing/computer-science/cryptography) - - [क्रिप्टोग्राफी: हैश फंक्शन](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [क्रिप्टोग्राफी: एन्क्रिप्शन](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- ### संपीड़न - - पहले सूचना सिद्धांत वीडियो देखना सुनिश्चित करें - - कंप्यूटरफाइल (वीडियो): - - [संपीड़न](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [संपीड़न में एन्ट्रापी](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [उल्टा पेड़ (हफमैन ट्री)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [अतिरिक्त बिट्स/ट्रिट्स - हफ़मैन ट्री](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [टेक्स्ट में एलिगेंट कंप्रेशन (LZ 77 मेथड)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [पाठ संपीड़न संभावनाओं को पूरा करता है](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [कंप्रेसर हेड वीडियो](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(वैकल्पिक) Google डेवलपर लाइव: GZIP पर्याप्त नहीं है!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### कंप्यूटर सुरक्षा - - [एमआईटी (23 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [परिचय, थ्रेट मॉडल](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [अपहरण हमलों को नियंत्रित करें](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [बफ़र ओवरफ़्लो एक्सप्लॉइट्स एंड डिफेंस](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [विशेषाधिकार पृथक्करण](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [क्षमता](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [सैंडबॉक्सिंग नेटिव कोड](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [वेब सुरक्षा मॉडल](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [वेब एप्लिकेशन सुरक्षित करना](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [प्रतीकात्मक निष्पादन](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [नेटवर्क सुरक्षा](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [नेटवर्क प्रोटोकॉल](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [साइड-चैनल अटैक](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### कचरा संग्रहण - - [पायथन में जीसी (वीडियो)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [डीप डाइव जावा: कचरा संग्रह अच्छा है!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [डीप डाइव पायथन: सीपीथॉन में कचरा संग्रह (वीडियो)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### समानांतर प्रोग्रामिंग - - [कोर्सेरा (स्काला)](https://www.coursera.org/learn/parprog1/home/week/1) - - [उच्च प्रदर्शन समानांतर कंप्यूटिंग के लिए कुशल पायथन (वीडियो)](https://www.youtube.com/watch?v=uY85GkaYzBk) - -- ### मैसेजिंग, सीरियलाइज़ेशन और क्यूइंग सिस्टम - - [बचत](https://thrift.apache.org/) - - [ट्यूटोरियल](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [प्रोटोकॉल बफ़र्स](https://developers.google.com/protocol-buffers/) - - [ट्यूटोरियल](https://developers.google.com/protocol-buffers/docs/tutorials) - - [जीआरपीसी] (http://www.grpc.io/) - - [Java Developers के लिए gRPC 101 (वीडियो)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [रेडिस] (http://redis.io/) - - [ट्यूटोरियल] (http://try.redis.io/) - - [अमेज़ॅन एसक्यूएस (कतार)] (https://aws.amazon.com/sqs/) - - [अमेज़ॅन एसएनएस (पब-सब)](https://aws.amazon.com/sns/) - - [RabbitMQ](https://www.rabbitmq.com/) - - [आरंभ करें](https://www.rabbitmq.com/getstarted.html) - - [अजवाइन](http://www.celeryproject.org/) - - [अजवाइन के साथ पहला कदम](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ZeroMQ](http://zeromq.org/) - - [परिचय - मैनुअल पढ़ें](http://zeromq.org/intro:read-the-manual) - - [एक्टिवएमक्यू] (http://activemq.apache.org/) - - [काफ्का](http://kafka.apache.org/documentation.html#introduction) - - [MessagePack](http://msgpack.org/index.html) - - [एव्रो](https://avro.apache.org/) - -- ### ए* - - [एक खोज एल्गोरिथम](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ए* पाथफाइंडिंग (E01: एल्गोरिथम स्पष्टीकरण) (वीडियो)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### फास्ट फूरियर ट्रांसफॉर्म - - [फूरियर ट्रांसफॉर्म के लिए एक इंटरएक्टिव गाइड](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [फूरियर रूपांतरण क्या है? इसका उपयोग किस लिए किया जाता है?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [फूरियर रूपांतरण क्या है? (वीडियो)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [फूट डालो और जीतो: एफएफटी (वीडियो)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [एफएफटी को समझना](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### ब्लूम फ़िल्टर - - एम बिट्स और के हैशिंग फ़ंक्शन के साथ ब्लूम फ़िल्टर को देखते हुए, सम्मिलन और सदस्यता परीक्षण दोनों ओ (के) हैं - - [ब्लूम फिल्टर (वीडियो)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [ब्लूम फिल्टर | विशाल डेटासेट का खनन | स्टैनफोर्ड यूनिवर्सिटी (वीडियो)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [ट्यूटोरियल](http://billmill.org/bloomfilter-tutorial/) - - [ब्लूम फ़िल्टर ऐप कैसे लिखें](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - -- ### हाइपरलॉग लॉग - - [केवल 1.5KB मेमोरी का उपयोग करके एक अरब विशिष्ट वस्तुओं की गणना कैसे करें](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -ऑब्जेक्ट्स-us.html) - -- ### इलाके-संवेदनशील हैशिंग - - दस्तावेजों की समानता निर्धारित करने के लिए प्रयुक्त - - MD5 या SHA के विपरीत जिनका उपयोग यह निर्धारित करने के लिए किया जाता है कि क्या 2 दस्तावेज़/स्ट्रिंग बिल्कुल समान हैं - - [सिम्हाशिंग (उम्मीद है) मेड सिंपल](http://ferd.ca/simhashing-hopefully-made-simple.html) - -- ### वैन एम्दे बोस पेड़ - - [फूट डालो और जीतो: वैन एम्दे बोस ट्री (वीडियो)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [एमआईटी व्याख्यान नोट्स](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) - -- ### संवर्धित डेटा संरचनाएं - - [सीएस 61बी लेक्चर 39: ऑगमेंटिंग डेटा स्ट्रक्चर](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - -- ### संतुलित खोज पेड़ - - कम से कम एक प्रकार के संतुलित बाइनरी ट्री को जानें (और जानें कि इसे कैसे लागू किया जाता है): - - "संतुलित खोज वृक्षों में, AVL और 2/3 वृक्ष अब अप्रचलित हैं, और लाल-काले वृक्ष अधिक लोकप्रिय प्रतीत होते हैं। - एक विशेष रूप से दिलचस्प स्व-व्यवस्थित डेटा संरचना स्प्ले ट्री है, जो रोटेशन का उपयोग करती है - किसी भी एक्सेस की गई कुंजी को रूट पर ले जाने के लिए।" - स्कीना - - इनमें से मैंने एक स्प्ले ट्री लगाने का फैसला किया। मैंने जो पढ़ा है, उससे आप लागू नहीं करेंगे a - आपके साक्षात्कार में संतुलित खोज वृक्ष। लेकिन मैं एक को कोडिंग करने के लिए एक्सपोजर चाहता था - और चलो इसका सामना करते हैं, स्प्ले ट्री मधुमक्खी के घुटने हैं। मैंने बहुत सारे लाल-काले पेड़ कोड पढ़े हैं - - स्प्ले ट्री: सम्मिलित करें, खोजें, कार्यों को हटाएं - यदि आप लाल/काले पेड़ को लागू करना समाप्त कर देते हैं तो इन्हें आजमाएं: - - खोज और सम्मिलन कार्य, हटाना छोड़ना - - मैं बी-ट्री के बारे में अधिक जानना चाहता हूं क्योंकि यह बहुत बड़े डेटा सेट के साथ इतने व्यापक रूप से उपयोग किया जाता है - - [सेल्फ बैलेंसिंग बाइनरी सर्च ट्री](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - **एवीएल पेड़** - - प्रयोग में: - मैं जो कह सकता हूं, उससे व्यवहार में इनका अधिक उपयोग नहीं किया जाता है, लेकिन मैं देख सकता था कि वे कहाँ होंगे: - एवीएल पेड़ ओ (लॉग एन) खोज, सम्मिलन और हटाने का समर्थन करने वाली एक और संरचना है। यह अधिक कठोर है - लाल-काले पेड़ों की तुलना में संतुलित, धीमी प्रविष्टि और हटाने के लिए अग्रणी लेकिन तेजी से पुनर्प्राप्ति। यह बनाता है - डेटा संरचनाओं के लिए आकर्षक जिसे एक बार बनाया जा सकता है और पुनर्निर्माण के बिना लोड किया जा सकता है, जैसे भाषा - शब्दकोश (या प्रोग्राम डिक्शनरी, जैसे असेंबलर या दुभाषिया के ऑपकोड) - - [MIT AVL ट्री / AVL सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [एवीएल पेड़ (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/Qq5E0/avl-trees) - - [एवीएल ट्री इंप्लीमेंटेशन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/PKEBC/avl-tree-implementation) - - [स्प्लिट एंड मर्ज](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - **स्प्ले ट्री** - - प्रयोग में: - स्प्ले ट्री आमतौर पर कैश, मेमोरी एलोकेटर, राउटर, कचरा संग्रहकर्ता के कार्यान्वयन में उपयोग किया जाता है, - डेटा संपीड़न, रस्सियों (लंबे पाठ स्ट्रिंग्स के लिए प्रयुक्त स्ट्रिंग का प्रतिस्थापन), Windows NT में (वर्चुअल मेमोरी में, - नेटवर्किंग और फाइल सिस्टम कोड) आदि - - [सीएस 61बी: स्प्ले ट्रीज़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - एमआईटी व्याख्यान: स्प्ले पेड़: - - बहुत मैथली हो जाता है, लेकिन आखिरी 10 मिनट जरूर देखें। - - [वीडियो](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - **लाल/काले पेड़** - - ये एक 2-3 पेड़ का अनुवाद हैं (नीचे देखें)। - - प्रयोग में: - लाल-काले पेड़ प्रविष्टि समय, विलोपन समय और खोज समय के लिए सबसे खराब स्थिति की गारंटी देते हैं। - यह न केवल उन्हें समय-संवेदी अनुप्रयोगों जैसे रीयल-टाइम अनुप्रयोगों में मूल्यवान बनाता है, - लेकिन यह उन्हें अन्य डेटा संरचनाओं में मूल्यवान बिल्डिंग ब्लॉक बनाता है जो सबसे खराब स्थिति की गारंटी प्रदान करते हैं; - उदाहरण के लिए, कम्प्यूटेशनल ज्यामिति में उपयोग की जाने वाली कई डेटा संरचनाएं लाल-काले पेड़ों पर आधारित हो सकती हैं, और - वर्तमान लिनक्स कर्नेल में प्रयुक्त पूर्णतः फेयर शेड्यूलर लाल-काले पेड़ों का उपयोग करता है। जावा के संस्करण 8 में, - संग्रह हैश मैप को इस तरह संशोधित किया गया है कि लिंक्डलिस्ट का उपयोग करने के बजाय समान तत्वों को खराब के साथ संग्रहीत करने के लिए - हैशकोड, एक लाल-काले पेड़ का उपयोग किया जाता है - - [अदुनी - एल्गोरिथम - लेक्चर 4 (लिंक जंप टू स्टार्टिंग पॉइंट) (वीडियो)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [अदुनी - एल्गोरिदम - व्याख्यान 5 (वीडियो)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [रेड-ब्लैक ट्री](https://en.wikipedia.org/wiki/Red%E2%80%93ब्लैक_ट्री) - - [एन इंट्रोडक्शन टू बाइनरी सर्च एंड रेड ब्लैक ट्री](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - - - **2-3 पेड़ खोजें** - - प्रयोग में: - धीमी खोजों की कीमत पर 2-3 पेड़ों में तेजी से सम्मिलित होते हैं (चूंकि ऊंचाई एवीएल पेड़ों की तुलना में अधिक है)। - - आप 2-3 पेड़ का प्रयोग बहुत ही कम करेंगे क्योंकि इसके कार्यान्वयन में विभिन्न प्रकार के नोड्स शामिल हैं। इसकी जगह लोग लाल काले पेड़ों का इस्तेमाल करते हैं। - - [23-वृक्ष अंतर्ज्ञान और परिभाषा (वीडियो)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [23-ट्री का बाइनरी व्यू](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 पेड़ (छात्र पाठ) (वीडियो)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - **2-3-4 पेड़ (उर्फ 2-4 पेड़)** - - प्रयोग में: - प्रत्येक 2-4 पेड़ के लिए, समान क्रम में डेटा तत्वों के साथ संबंधित लाल-काले पेड़ होते हैं। सम्मिलन और विलोपन - 2-4 पेड़ों पर संचालन भी लाल-काले पेड़ों में रंग-फ्लिपिंग और घुमाव के बराबर है। इससे 2-4 पेड़ बन जाते हैं - लाल-काले पेड़ों के पीछे के तर्क को समझने के लिए महत्वपूर्ण उपकरण, और यही कारण है कि कई परिचयात्मक एल्गोरिथम ग्रंथ परिचय देते हैं - लाल-काले पेड़ों के ठीक पहले 2-4 पेड़, भले ही **2-4 पेड़ अक्सर व्यवहार में उपयोग नहीं किए जाते**। - - [सीएस 61बी व्याख्यान 26: संतुलित खोज पेड़ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [नीचे ऊपर 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ऊपर से नीचे 234-पेड़ (वीडियो)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - **N-ary (K-ary, M-ary) पेड़** - - नोट: एन या के शाखा कारक है (अधिकतम शाखाएं) - - बाइनरी ट्री एक 2-एरी ट्री है, ब्रांचिंग फैक्टर के साथ = 2 - - 2-3 पेड़ हैं 3-आर्य - - [के-आरी ट्री](https://en.wikipedia.org/wiki/K-ary_tree) - - - **बी-पेड़** - - मजेदार तथ्य: यह एक रहस्य है, लेकिन बी बोइंग, बैलेंस्ड या बायर (सह-आविष्कारक) के लिए खड़ा हो सकता है। - - प्रयोग में: - बी-पेड़ व्यापक रूप से डेटाबेस में उपयोग किए जाते हैं। अधिकांश आधुनिक फाइल सिस्टम बी-पेड़ (या वेरिएंट) का उपयोग करते हैं। निम्न के अलावा - डेटाबेस में इसका उपयोग, बी-पेड़ का उपयोग फाइल सिस्टम में भी किया जाता है ताकि मनमाने ढंग से त्वरित यादृच्छिक पहुंच की अनुमति मिल सके - किसी विशेष फ़ाइल में ब्लॉक करें। मूल समस्या फ़ाइल ब्लॉक i एड्रेस को डिस्क ब्लॉक में बदल रही है - (या शायद एक सिलेंडर-हेड-सेक्टर के लिए) पता - - [बी-ट्री](https://en.wikipedia.org/wiki/B-tree) - - [बी-ट्री डेटास्ट्रक्चर](http://btechsmartclass.com/data_structures/b-trees.html) - - [बी-पेड़ों का परिचय (वीडियो)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [बी-ट्री डेफिनिशन एंड इंसर्शन (वीडियो)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [बी-ट्री डिलीशन (वीडियो)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - मेमोरी पदानुक्रम मॉडल (वीडियो)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - कैशे-अनभिज्ञ बी-पेड़ों को शामिल करता है, बहुत ही रोचक डेटा संरचनाएं - - पहले 37 मिनट बहुत तकनीकी हैं, छोड़े जा सकते हैं (बी ब्लॉक आकार, कैश लाइन आकार है) - - -- ### के-डी पेड़ - - एक आयत या उच्च आयाम वाली वस्तु में अंकों की संख्या खोजने के लिए बढ़िया - - k-निकटतम पड़ोसियों के लिए एक अच्छा फिट - - [केएनएन के-डी ट्री एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - -- ### सूचियां छोड़ें - - "ये कुछ हद तक एक पंथ डेटा संरचना के हैं" - स्कीना - - [रैंडमाइज़ेशन: स्किप लिस्ट (वीडियो)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [एनिमेशन और थोड़ा और विवरण के लिए](https://en.wikipedia.org/wiki/Skip_list) - -- ### नेटवर्क प्रवाह - - [फोर्ड-फुलकरसन 5 मिनट में — स्टेप बाय स्टेप उदाहरण (वीडियो)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [फोर्ड-फुलकर्सन एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [नेटवर्क फ़्लो (वीडियो)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - -- ### अलग सेट और संघ खोजें - - [यूसीबी 61बी - डिसजॉइंट सेट; छँटाई और चयन (वीडियो)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [सेजविक एल्गोरिथम - यूनियन-फाइंड (6 वीडियो)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - -- ### फास्ट प्रोसेसिंग के लिए गणित - - [पूर्णांक अंकगणित, करात्सुबा गुणन (वीडियो)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [चीनी अवशेष प्रमेय (क्रिप्टोग्राफी में प्रयुक्त) (वीडियो)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - -- ### ट्रीप - - बाइनरी सर्च ट्री और ढेर का संयोजन - - [ट्रीप](https://en.wikipedia.org/wiki/Treap) - - [डेटा संरचनाएं: समझाया गया जाल (वीडियो)](https://www.youtube.com/watch?v=6podLUYinH8) - - [सेट ऑपरेशंस में एप्लिकेशन](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - -- ### रैखिक प्रोग्रामिंग (वीडियो) - - [रैखिक प्रोग्रामिंग](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [न्यूनतम लागत ढूँढना](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [अधिकतम मूल्य ढूँढना](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [पायथन के साथ रैखिक समीकरण हल करें - सिम्पलेक्स एल्गोरिथम](https://www.youtube.com/watch?v=44pAWI7v5Zk) - -- ### ज्यामिति, उत्तल पतवार (वीडियो) - - [ग्राफ Alg. IV: ज्यामितीय एल्गोरिदम का परिचय - व्याख्यान 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ज्यामितीय एल्गोरिदम: ग्राहम और जार्विस - व्याख्यान 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [फूट डालो और जीतो: उत्तल हल, माध्यिका खोज](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - -- ### डिस्क्रीट मैथ - - [कंप्यूटर साइंस 70, 001 - स्प्रिंग 2015 - असतत गणित और संभाव्यता सिद्धांत](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - - [शाई सिमोंसन द्वारा असतत गणित (19 वीडियो)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - - [आईआईटी रोपड़ एनपीटीईएल द्वारा असतत गणित](https://nptel.ac.in/courses/106/106/106106183/) - ---- - -## कुछ विषयों पर अतिरिक्त विवरण - - मैंने इन्हें ऊपर प्रस्तुत किए गए कुछ विचारों को सुदृढ़ करने के लिए जोड़ा, लेकिन उन्हें शामिल नहीं करना चाहता था - ऊपर क्योंकि यह बहुत अधिक है। किसी विषय पर इसे ज़्यादा करना आसान है। - आप इस सदी में काम पर रखना चाहते हैं, है ना? - -- **ठोस** - - [ ] [बॉब मार्टिन सॉलिड प्रिंसिपल्स ऑफ़ ऑब्जेक्ट ओरिएंटेड एंड एजाइल डिज़ाइन (वीडियो)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] एस - [एकल उत्तरदायित्व सिद्धांत](http://www.oodesign.com/single-responsibility-principle.html) | [प्रत्येक वस्तु के लिए एकल जिम्मेदारी](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [अधिक स्वाद](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] ओ - [खुला/बंद सिद्धांत](http://www.oodesign.com/open-close-principle.html) | [उत्पादन स्तर पर वस्तुएं विस्तार के लिए तैयार हैं लेकिन संशोधन के लिए नहीं](https://en.wikipedia.org/wiki/Open/closed_principle) - - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYhlUzODc) - - [ ] एल - [लिस्कोव प्रतिस्थापन सिद्धांत](http://www.oodesign.com/liskov-s-substitute-principle.html) | [आधार वर्ग और व्युत्पन्न वर्ग 'आईएस ए' सिद्धांत का पालन करते हैं](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitute-principle) - - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTMlh&hl&hl) - - [ ] मैं - [इंटरफ़ेस अलगाव सिद्धांत] (http://www.oodesign.com/interface-segregation-principle.html) | ग्राहकों को उन इंटरफेस को लागू करने के लिए मजबूर नहीं किया जाना चाहिए जिनका वे उपयोग नहीं करते हैं - - [5 मिनट में इंटरफ़ेस अलग करने का सिद्धांत (वीडियो)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYm) - - [ ] डी - [निर्भरता उलटा सिद्धांत] (http://www.oodesign.com/dependency-inversion-principle.html) | वस्तुओं की संरचना में निर्भरता कम करें। - - [निर्भरता उलटा सिद्धांत क्यों है और यह महत्वपूर्ण क्यों है](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [अधिक स्वाद](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=hi - - **संघ-ढूंढें** - - [अवलोकन](https://www.coursera.org/learn/data-structs/lecture/JssSY/overview) - - [बेवकूफ कार्यान्वयन](https://www.coursera.org/learn/data-structs/lecture/EM5D0/naive-implementations) - - [पेड़](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [यूनियन बाय रैंक](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [पथ संपीड़न](https://www.coursera.org/learn/data-structs/lecture/Q9CVI/path-compression) - - [विश्लेषण विकल्प](https://www.coursera.org/learn/data-structs/lecture/GQQLN/analysis-Optional) - -- **अधिक गतिशील प्रोग्रामिंग** (वीडियो) - - [6.006: डायनेमिक प्रोग्रामिंग I: फिबोनाची, सबसे छोटे रास्ते](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) - - [6.006: डायनामिक प्रोग्रामिंग II: टेक्स्ट जस्टिफिकेशन, ब्लैकजैक](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) - - [6.006: डीपी III: कोष्ठक, संपादित दूरी, नॅप्सैक](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) - - [6.006: डीपी IV: गिटार फिंगरिंग, टेट्रिस, सुपर मारियो ब्रदर्स] (https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) - - [6.046: डायनामिक प्रोग्रामिंग और उन्नत डीपी](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [6.046: डायनामिक प्रोग्रामिंग: ऑल-पेयर्स शॉर्टेस्ट पाथ्स](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: डायनामिक प्रोग्रामिंग (छात्र पाठ)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- **उन्नत ग्राफ़ प्रोसेसिंग** (वीडियो) - - [तुल्यकालिक वितरित एल्गोरिदम: समरूपता-ब्रेकिंग। सबसे छोटे रास्ते फैले पेड़](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [एसिंक्रोनस डिस्ट्रिब्यूटेड एल्गोरिथम: सबसे छोटे पथ फैले पेड़](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- एमआईटी **संभाव्यता** (मैथी, और धीरे-धीरे जाएं, जो मैथी चीजों के लिए अच्छा है) (वीडियो): - - [MIT 6.042J - प्रायिकता परिचय](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [MIT 6.042J - सशर्त संभावना](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [एमआईटी 6.042जे - इंडिपेंडेंस](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [MIT 6.042J - रैंडम वैरिएबल](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [MIT 6.042J - उम्मीद I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [MIT 6.042J - उम्मीद II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [MIT 6.042J - बड़े विचलन](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [MIT 6.042J - रैंडम वॉक](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [साइमनसन: सन्निकटन एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -- **स्ट्रिंग मिलान** - - राबिन-कार्प (वीडियो): - - [राबिन कार्प्स एल्गोरिथम](https://www.coursera.org/lecture/data-structs/rabin-karps-algorithm-c0Qkw) - - [प्रीकंप्यूटिंग](https://www.coursera.org/learn/data-structs/lecture/nYrc8/optimization-precomputation) - - [ऑप्टिमाइज़ेशन: क्रियान्वयन और विश्लेषण](https://www.coursera.org/learn/data-structs/lecture/h4ZLc/optimization-implementation-and-analysis) - - [टेबल डबलिंग, कार्प-राबिन](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [रोलिंग हैश, अमूर्त विश्लेषण](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - नुथ-मॉरिस-प्रैट (केएमपी): - - [टी द नुथ-मॉरिस-प्रैट (केएमपी) स्ट्रिंग मैचिंग एल्गोरिथम](https://www.youtube.com/watch?v=5i7oKodCRJo) - - बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम - - [बॉयर-मूर स्ट्रिंग सर्च एल्गोरिथम](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [उन्नत स्ट्रिंग खोज बॉयर-मूर-हॉर्सपूल एल्गोरिदम (वीडियो)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [पाठ्यक्रम: स्ट्रिंग्स पर एल्गोरिदम](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - बहुत अच्छी शुरुआत होती है, लेकिन जब तक यह केएमपी से आगे निकल जाता है तब तक यह जरूरत से ज्यादा जटिल हो जाता है - - कोशिशों की अच्छी व्याख्या - - छोड़ा जा सकता है -- **क्रमबद्ध करना** - - - स्टैनफोर्ड छँटाई पर व्याख्यान: - - [व्याख्यान 15 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [व्याख्यान 16 | प्रोग्रामिंग एब्स्ट्रैक्शन (वीडियो)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - शाई सिमोंसन, [Aduni.org](http://www.aduni.org/): - - [एल्गोरिदम - छँटाई - व्याख्यान 2 (वीडियो)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [एल्गोरिदम - सॉर्टिंग II - लेक्चर 3 (वीडियो)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - स्टीवन स्कीएना छँटाई पर व्याख्यान: - - [CSE373 2020 - मर्जसॉर्ट/क्विकसॉर्ट (वीडियो)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) - - [CSE373 2020 - लीनियर सॉर्टिंग (वीडियो)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) - -## वीडियो श्रृंखला - -वापस बैठो और आनंद लो। - -- [व्यक्तिगत गतिशील प्रोग्रामिंग समस्याओं की सूची (प्रत्येक संक्षिप्त है)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -- [x86 आर्किटेक्चर, असेंबली, एप्लिकेशन (11 वीडियो)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) - -- [MIT 18.06 रैखिक बीजगणित, वसंत 2005 (35 वीडियो)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - -- [उत्कृष्ट - एमआईटी कैलकुलस पर दोबारा गौर किया गया: सिंगल वेरिएबल कैलकुलस](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) - -- [एल्गोरिदम डिज़ाइन मैनुअल से स्कीएना व्याख्यान - CSE373 2020 - एल्गोरिदम का विश्लेषण (26 वीडियो)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) - -- [यूसी बर्कले 61बी (स्प्रिंग 2014): डेटा संरचनाएं (25 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - -- [यूसी बर्कले 61बी (पतन 2006): डेटा संरचनाएं (39 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) - -- [यूसी बर्कले 61सी: मशीन संरचनाएं (26 वीडियो)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) - -- [OOSE: UML और Java का उपयोग करने वाला सॉफ़्टवेयर डेवलपर (21 वीडियो)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - -- [MIT 6.004: संगणना संरचनाएं (49 वीडियो)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) - -- [कार्नेगी मेलन - कंप्यूटर आर्किटेक्चर लेक्चर (39 वीडियो)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) - -- [MIT 6.006: एल्गोरिदम का परिचय (47 वीडियो)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) - -- [MIT 6.033: कंप्यूटर सिस्टम इंजीनियरिंग (22 वीडियो)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) - -- [MIT 6.034 आर्टिफिशियल इंटेलिजेंस, फॉल 2010 (30 वीडियो)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) - -- [MIT 6.042J: कंप्यूटर साइंस के लिए गणित, फॉल 2010 (25 वीडियो)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) - -- [MIT 6.046: एल्गोरिदम का डिज़ाइन और विश्लेषण (34 वीडियो)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- [MIT 6.824: डिस्ट्रिब्यूटेड सिस्टम्स, स्प्रिंग 2020 (20 वीडियो)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - -- [MIT 6.851: उन्नत डेटा संरचनाएं (22 वीडियो)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) - -- [MIT 6.854: उन्नत एल्गोरिदम, स्प्रिंग 2016 (24 वीडियो)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) - -- [हार्वर्ड COMPSCI 224: उन्नत एल्गोरिदम (25 वीडियो)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - -- [MIT 6.858 कंप्यूटर सिस्टम सुरक्षा, फॉल 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [स्टैनफोर्ड: प्रोग्रामिंग प्रतिमान (27 वीडियो)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - -- [क्रिस्टोफ पार द्वारा क्रिप्टोग्राफी का परिचय](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [स्लाइड और समस्या सेट के साथ पाठ्यक्रम वेबसाइट] (http://www.crypto-textbook.com/) - -- [खनन बड़े पैमाने पर डेटासेट - स्टैनफोर्ड यूनिवर्सिटी (94 वीडियो)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) - -- [शारदा हर्के द्वारा ग्राफ सिद्धांत (67 वीडियो)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) - -## कंप्यूटर विज्ञान पाठ्यक्रम - -- [ऑनलाइन सीएस पाठ्यक्रम की निर्देशिका](https://github.com/open-source-society/computer-science) -- [सीएस पाठ्यक्रमों की निर्देशिका (कई ऑनलाइन व्याख्यान के साथ)](https://github.com/prakhar1989/awesome-courses) - -## एल्गोरिदम कार्यान्वयन - -- [प्रिंसटन विश्वविद्यालय द्वारा एकाधिक एल्गोरिदम कार्यान्वयन](https://algs4.cs.princeton.edu/code) - - -## कागजात - -- [क्लासिक पेपर पसंद हैं?](https://www.cs.cmu.edu/~crary/819-f09/) -- [1978: अनुक्रमिक प्रक्रियाओं का संचार](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [गो में लागू](https://godoc.org/github.com/thomas11/csp) -- [2003: द गूगल फाइल सिस्टम](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - 2012 में कोलोसस द्वारा प्रतिस्थापित -- [2004: MapReduce: बड़े समूहों पर सरलीकृत डेटा प्रोसेसिंग]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - ज्यादातर क्लाउड डेटाफ्लो द्वारा प्रतिस्थापित किया गया? -- [2006: बिगटेबल: संरचित डेटा के लिए एक वितरित भंडारण प्रणाली](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -- [2006: लूजली-कपल्ड डिस्ट्रिब्यूटेड सिस्टम्स के लिए चब्बी लॉक सर्विस](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: डायनमो: अमेज़ॅन का अत्यधिक उपलब्ध की-वैल्यू स्टोर] (http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - डायनमो पेपर ने नोएसक्यूएल क्रांति की शुरुआत की -- [2007: प्रत्येक प्रोग्रामर को मेमोरी के बारे में क्या पता होना चाहिए (बहुत लंबा, और लेखक कुछ वर्गों को छोड़ने के लिए प्रोत्साहित करता है)](https://www.akkadia.org/drepper/cpuemory.pdf) -- 2012: एड्रेस सैनिटाइज़र: एक तेज़ पता सैनिटी चेकर: - - [कागज](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [वीडियो] (https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: स्पैनर: Google का वैश्विक रूप से वितरित डेटाबेस: - - [कागज](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [वीडियो] (https://www.usenix.org/node/170855) -- [2015: Google पर सतत पाइपलाइन](http://static.googleusercontent.com/media/research.google.com/hi//pubs/archive/43790.pdf) -- [2015: बड़े पैमाने पर उच्च उपलब्धता: विज्ञापनों के लिए Google के डेटा इन्फ्रास्ट्रक्चर का निर्माण](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: डेवलपर्स कैसे कोड की खोज करते हैं: एक केस स्टडी](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- अधिक पेपर: [1,000 पेपर](https://github.com/0voice/computer_expert_paper) - -## लाइसेंस - -[CC-BY-SA-4.0](./LICENSE.txt) From c8278548b87c0c82d88690a2efeead375772565e Mon Sep 17 00:00:00 2001 From: Kapil Chauhan Date: Wed, 31 Aug 2022 22:07:42 +0530 Subject: [PATCH 662/857] Update README-hi.md --- translations/README-hi.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 41aef6e591..8bd86779cc 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -37,10 +37,8 @@
-अनुवाद जारी है -: - -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +अनुवाद जारी है: + - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) From 8debc06d9c81ff2aa328ce8e9adad0d265d22855 Mon Sep 17 00:00:00 2001 From: Kapil Chauhan Date: Wed, 31 Aug 2022 22:11:14 +0530 Subject: [PATCH 663/857] Update README-hi.md --- translations/README-hi.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 8bd86779cc..939bda1f8e 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -38,7 +38,8 @@
अनुवाद जारी है: - +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) From 4d1934b4667503b19e44a5a9bfdf42bddd52edb6 Mon Sep 17 00:00:00 2001 From: Saad Date: Thu, 1 Sep 2022 13:03:13 +0530 Subject: [PATCH 664/857] Translated What is it? in Hindi. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translated "What is it?" to "यह क्या है?" --- translations/README-hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 939bda1f8e..99e2d5d217 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -82,7 +82,7 @@
-## What is it? +## यह क्या है? ![ व्हाइटबोर्ड पर कोडिंग - एचबीओ की सिलिकॉन वैली से](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) From f5276d88b09dba4950ebef4d43d18a5a4d99e1fa Mon Sep 17 00:00:00 2001 From: Saad Date: Thu, 1 Sep 2022 13:11:05 +0530 Subject: [PATCH 665/857] Translated "Required" to Hindi. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translated "Required" to "आवश्यक" --- translations/README-hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 939bda1f8e..bfce3e1566 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -90,7 +90,7 @@ एक बड़ी कंपनी के लिए सॉफ्टवेयर इंजीनियर बनने के लिए यह मेरी बहु-महीने की अध्ययन योजना है। -**Required:** +**आवश्यक:** * कोडिंग के साथ थोड़ा अनुभव (चर, लूप, तरीके/कार्य, आदि) * धैर्य From 9bf232ed54f97d39ae25471fbb5110f2174a3076 Mon Sep 17 00:00:00 2001 From: Shantanu <82453714+pshantanu771@users.noreply.github.com> Date: Tue, 6 Sep 2022 16:59:55 +0530 Subject: [PATCH 666/857] Added resources for DSA in Java --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 084293fd12..4a480993a5 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -58,6 +58,7 @@ - [Effective Java 3rd Edition](https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH) - [Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer](https://www.youtube.com/watch?v=RBSGKlAvoiM&t=1744s) - [Top Java Interview Questions and Answers](https://www.interviewbit.com/java-interview-questions) + - [Data Structures in Java](https://www.youtube.com/playlist?list=PL9gnSGHSqcnr_DxHsP7AW9ftq0AtAyYqJ) - Go - [The Go programming Language](https://golang.org/) - [The Go programming Language (book)](http://www.gopl.io/) From 9f133d324f13ebec81635e61ff9b22397084f6cb Mon Sep 17 00:00:00 2001 From: name Date: Tue, 6 Sep 2022 22:31:13 -0700 Subject: [PATCH 667/857] deploy --- translations/README-bu.md | 106 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 translations/README-bu.md diff --git a/translations/README-bu.md b/translations/README-bu.md new file mode 100644 index 0000000000..63f499b8af --- /dev/null +++ b/translations/README-bu.md @@ -0,0 +1,106 @@ +# Кодиране Интервю университет + +> Първоначално създадох това като кратък списък с учебни теми за ставане на софтуерен инженер, +> но той се разрасна до големия списък, който виждате днес. След като преминах през този учебен план, [ме наеха на работа +> като инженер по разработка на софтуер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Вероятно няма да ви се наложи да учите толкова много, колкото на мен. Така или иначе, всичко, от което се нуждаете, е тук. +> +> Учех по около 8-12 часа на ден в продължение на няколко месеца. Това е моята история: [Защо учих 8 месеца на пълен работен ден за интервю в Google](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Забележете:** Няма да ви се наложи да учите толкова много, колкото на мен. Изгубих много време за неща, които не трябваше да знам. Повече информация за това ще намерите по-долу. Ще ви помогна да стигнете дотам, без да губите ценното си време. +> +> Изброените тук елементи ще ви подготвят добре за техническо интервю в почти всяка софтуерна компания, +> включително гигантите: Amazon, Facebook, Google и Microsoft. +> +> *Най-добър късмет за вас!* + +
+Преводи: + +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Виетнамски](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Полски](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Японски (日本語)](translations/README-ja.md) +- [Руски](translations/README-ru.md) +- [Немски](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Кхмер](translations/README-kh.md) +- [узбекски](translations/README-uz.md) +- [Български](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + +
+ +
+Преводите в процес на изпълнение: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [арабски](https://github.com/jwasham/coding-interview-university/issues/98) +- [турски](https://github.com/jwasham/coding-interview-university/issues/90) +- [Френски](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Корейски(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Телугу](https://github.com/jwasham/coding-interview-university/issues/117) +- [Урду](https://github.com/jwasham/coding-interview-university/issues/519) +- [Тайландски](https://github.com/jwasham/coding-interview-university/issues/156) +- [Гръцки](https://github.com/jwasham/coding-interview-university/issues/166) +- [Малаялам](https://github.com/jwasham/coding-interview-university/issues/239) +- [персийски - фарси](https://github.com/jwasham/coding-interview-university/issues/186) +- [африканс](https://github.com/jwasham/coding-interview-university/issues/1164) + +
+ + + +## What is it? + +![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +This is my multi-month study plan for becoming a software engineer for a large company. + +**Required:** +* A little experience with coding (variables, loops, methods/functions, etc) +* Patience +* Time + +Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, +Facebook and Microsoft view software engineering as different from web development. For example, Amazon has +Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for +them will not be the same, as each has its own competencies. These companies require computer science knowledge for +software development/engineering roles. + +--- + +## Table of Contents + +### The Study Plan + +- [Какво е това?] (#what-is \ No newline at end of file From a76bebddc4f8e8246c803811d452796ff3dcc949 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 9 Sep 2022 17:24:57 -0700 Subject: [PATCH 668/857] Adds links for tree intro. --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 182e35d41f..f586c27612 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ software development/engineering roles. - [Binary search](#binary-search) - [Bitwise operations](#bitwise-operations) - [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) + - [Trees - Intro](#trees-intro) - [Binary search trees: BSTs](#binary-search-trees-bsts) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - balanced search trees (general concept, not details) @@ -759,11 +759,9 @@ if you can identify the runtime complexity of different algorithms. It's a super ## Trees -- ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basic tree construction - - traversal - - manipulation algorithms +- ### Trees - Intro + - [ ] [Intro to Trees](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Tree Traversal](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - level order (BFS, using queue) From 28c27f5b3f97a6f6f9ce4054bed7d20ee9e19a49 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 9 Sep 2022 17:26:44 -0700 Subject: [PATCH 669/857] Fixes internal link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f586c27612..abfb16d8c8 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ software development/engineering roles. - [Binary search](#binary-search) - [Bitwise operations](#bitwise-operations) - [Trees](#trees) - - [Trees - Intro](#trees-intro) + - [Trees - Intro](#trees---intro) - [Binary search trees: BSTs](#binary-search-trees-bsts) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - balanced search trees (general concept, not details) From c34a2828a3bb1368e66b1c179a8d8186d7f2c37d Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 9 Sep 2022 17:28:12 -0700 Subject: [PATCH 670/857] Adds video description. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index abfb16d8c8..1d7c3ba3e0 100644 --- a/README.md +++ b/README.md @@ -760,8 +760,8 @@ if you can identify the runtime complexity of different algorithms. It's a super ## Trees - ### Trees - Intro - - [ ] [Intro to Trees](https://www.coursera.org/lecture/data-structures/trees-95qda) - - [ ] [Tree Traversal](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] [Intro to Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Tree Traversal (video)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - level order (BFS, using queue) From 369123dc13c68a6b6043f43b352a41532ca22c8f Mon Sep 17 00:00:00 2001 From: Achintya Sharma Date: Sun, 11 Sep 2022 20:26:57 +0530 Subject: [PATCH 671/857] Removed Heaps False Links --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 182e35d41f..cab97def66 100644 --- a/README.md +++ b/README.md @@ -810,7 +810,6 @@ if you can identify the runtime complexity of different algorithms. It's a super - visualized as a tree, but is usually linear in storage (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) From da7fe37103e8bd4fc45bf75612f29719b6a6f008 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 12 Sep 2022 19:38:02 -0700 Subject: [PATCH 672/857] Reorganized learning/challenge/practice sites. --- README.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 1d7c3ba3e0..96e71eda46 100644 --- a/README.md +++ b/README.md @@ -325,12 +325,8 @@ This is my preference. You do what you like, of course. You may not need it, but here are some sites for learning a new language: - [Exercism](https://exercism.org/tracks) - [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) -- [Codeforces](https://codeforces.com/) -- [Scaler Topics](https://www.scaler.com/topics/) +- [HackerEarth](https://www.hackerearth.com/for-developers/) +- [Scaler Topics (Java, C++)](https://www.scaler.com/topics/) ### For your Coding Interview @@ -557,23 +553,21 @@ Coding Interview Question Videos: - Good explanations of solution and the code - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) -- [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) - - Good explanations of solution and the python code - - Also checkout [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) for all question list - - [Github links](https://github.com/neetcode-gh/leetcode) for all solutions code - - [Neetcode 150](https://neetcode.io/) -Challenge sites: +Challenge/Practice sites: - [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. - See Nick White and FisherCoder Videos above for code walk-throughs. - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [InterviewBit](https://www.interviewbit.com/) -- [Project Euler](https://projecteuler.net/) - [AlgoExpert](https://www.algoexpert.io/product) - Created by Google engineers, this is also an excellent resource to hone your skills. +- [Project Euler](https://projecteuler.net/) + - very math focused, and not really suited for coding interviews ## Let's Get Started From f0761e7286b8d60aba3d1d4f65c5559faeb46e09 Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Fri, 9 Sep 2022 18:06:52 -0700 Subject: [PATCH 673/857] Add links to short review videos --- README.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d376fde84..182336b9c9 100644 --- a/README.md +++ b/README.md @@ -591,6 +591,7 @@ But don't forget to do coding problems from above while you learn! - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Well, that's about enough of that. @@ -636,6 +637,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: @@ -667,11 +669,13 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -697,6 +701,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -720,6 +725,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [[Review] Binary search in 3 minutes (video)](https://youtu.be/B25Gu5r0xUg) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -769,6 +775,9 @@ if you can identify the runtime complexity of different algorithms. It's a super - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -813,6 +822,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -877,6 +887,14 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting playlist by Michael Sambol](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [[Review] Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [[Review] Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [[Review] Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [[Review] Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [[Review] Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [[Review] Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -939,6 +957,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1198,7 +1218,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (36+ videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1689,6 +1709,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1729,6 +1750,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees From e31dd072608b57bd5eb9d4efacd0c238b8ce25a9 Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Wed, 14 Sep 2022 10:04:41 -0700 Subject: [PATCH 674/857] Add feedback from John --- README.md | 28 ++++++++++++++-------------- translations/README-af.md | 2 +- translations/README-ar.md | 2 +- translations/README-bg.md | 2 +- translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fa.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-id.md | 2 +- translations/README-it.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 25 files changed, 38 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 182336b9c9..6090b86a20 100644 --- a/README.md +++ b/README.md @@ -777,7 +777,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - preorder (DFS: self, left, right) - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - - [ ] [[Review] Tree Traversal playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -822,7 +822,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] [[Review] Heap playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -887,13 +887,13 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) -- [ ] [[Review] Sorting playlist by Michael Sambol](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) - - [ ] [[Review] Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) - - [ ] [[Review] Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) - - [ ] [[Review] Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) - - [ ] [[Review] Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) - - [ ] [[Review] Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) - - [ ] [[Review] Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case @@ -957,8 +957,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - - [ ] [[Review] Shortest Path Algorithms playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - - [ ] [[Review] Minimum Spanning Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1218,7 +1218,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (36+ videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1709,7 +1709,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - - [[Review] Red-Black Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1750,7 +1750,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - - [[Review] B-Trees playlist by Michael Sambol (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-af.md b/translations/README-af.md index 7cef840fd9..457265f1a1 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1199,7 +1199,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (18 videos): +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ar.md b/translations/README-ar.md index f51480a3b9..c798a6614a 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1275,7 +1275,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-bg.md b/translations/README-bg.md index eceb217772..1d6cdaa85c 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1152,7 +1152,7 @@ - [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (18 клипа): +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (38 клипа): - [Клипове](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Алгоритми II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-cn.md b/translations/README-cn.md index 9295453194..a4148bc71e 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1190,7 +1190,7 @@ - [ ] 2-3分钟的简短主题视频系列(23个视频) - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分钟的简短主题视频系列──Michael Sambol(18个视频): +- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (38个视频): - [视频](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-de.md b/translations/README-de.md index ffb5e4adf4..dac2cc7e28 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1366,7 +1366,7 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Reihe mit kurzen 2-3 Minuten Videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (18 videos): +- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-es.md b/translations/README-es.md index 32d2567fe2..55ee864929 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1301,7 +1301,7 @@ Es bueno si quieres repasar frecuentemente. - [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (18 videos): +- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-fa.md b/translations/README-fa.md index 1cd9600606..1d861ed771 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1179,7 +1179,7 @@ Choose one: - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-fr.md b/translations/README-fr.md index c29a1247c0..a3e5df4662 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1275,7 +1275,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-he.md b/translations/README-he.md index 973855b4db..2f718f5ca0 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1285,7 +1285,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [סרטונים](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-id.md b/translations/README-id.md index 29bc7ec94b..f37e6b609b 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1198,7 +1198,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (18 video): +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (38 video): - [Video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Video Sedgewick - Algoritma II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-it.md b/translations/README-it.md index 5634913654..8191434317 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1217,7 +1217,7 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] Series of 2-3 minutes short subject video (23 video) - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject video - Michael Sambol (18 video): +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (38 video): - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ja.md b/translations/README-ja.md index b9e9595a8b..a34835f92e 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1228,7 +1228,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(18ビデオ) +- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(38ビデオ) - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-kh.md b/translations/README-kh.md index 2f399e920c..7bfd8618b0 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1265,7 +1265,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 វីដេអូ): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 វីដេអូ): - [វីដេអូ](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [វីដេអូ Sedgewick - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ko.md b/translations/README-ko.md index 5a4a61a2eb..30782e5198 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1283,7 +1283,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (18 videos): +- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-pl.md b/translations/README-pl.md index 7c5a4e0988..56649ad81b 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1238,7 +1238,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (18 wideo): +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (38 wideo): - [Wideo](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorytmy II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 888eaf395f..2eabe6b710 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1307,7 +1307,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Séries de vídeos curtos (2 - 3 minutos) sobre o assunto (23 vídeos) - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (18 vídeos): +- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (38 vídeos): - [Vídeos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-ru.md b/translations/README-ru.md index 91012d6b17..3452bda5a5 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1292,7 +1292,7 @@ Google не возьмёт тебя на работу. - [ ] Серия 2-3 минутных короткие видео по темам (23 видео) - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (18 видео): +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (38 видео): - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-th.md b/translations/README-th.md index 907c4441fc..c627c0c5dc 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1281,7 +1281,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-tr.md b/translations/README-tr.md index 0f793fa34e..7bdea755cf 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1251,7 +1251,7 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-tw.md b/translations/README-tw.md index 496d5b1534..4f9b45446c 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1224,7 +1224,7 @@ - [ ] 2-3分鐘快速複習影片系列(23個影片) - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (18個影片) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (38個影片) - [影片](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-uk.md b/translations/README-uk.md index 0bf56163fc..ba7a75b407 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1331,7 +1331,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-ur.md b/translations/README-ur.md index b6a842d5fb..fd1a108fc2 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1248,7 +1248,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-uz.md b/translations/README-uz.md index 229d210288..18bbb1225b 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1233,7 +1233,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (18 video): +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (38 video): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-vi.md b/translations/README-vi.md index 7a0c73c5ba..a1b4f6b2da 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1319,7 +1319,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-3 phút (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Các video ngắn 2-5 phút - Michael Sambol (18 video) +- [ ] Các video ngắn 2-5 phút - Michael Sambol (38 video) - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- From eda39dd1ed40a1525af58706ea6719555102a91c Mon Sep 17 00:00:00 2001 From: Achintya Sharma Date: Wed, 14 Sep 2022 23:52:27 +0530 Subject: [PATCH 675/857] Outdated QuickSort link in QuickSort of Sorting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cab97def66..14147def5c 100644 --- a/README.md +++ b/README.md @@ -857,7 +857,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [1. Quicksort](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) From e8755fd16844e08aaee30f3b9917f02b0a45ee0a Mon Sep 17 00:00:00 2001 From: Achintya Sharma Date: Fri, 16 Sep 2022 11:18:36 +0530 Subject: [PATCH 676/857] Added a new Radix Sort (video) of ucberkely under Sorting from internet archive --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 14147def5c..f4cc9805d7 100644 --- a/README.md +++ b/README.md @@ -867,6 +867,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21: Radix Sort(video)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) From dbb42b268a8e5dea3882772f3b67efa39da5c176 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 28 Sep 2022 09:23:44 +0900 Subject: [PATCH 677/857] Added sponsor. --- README.md | 11 +++++++---- translations/README-af.md | 11 +++++++---- translations/README-ar.md | 11 +++++++---- translations/README-bg.md | 11 +++++++---- translations/README-bn.md | 11 +++++++---- translations/README-cn.md | 8 ++++---- translations/README-de.md | 11 +++++++---- translations/README-es.md | 11 +++++++---- translations/README-fa.md | 11 +++++++---- translations/README-fr.md | 11 +++++++---- translations/README-he.md | 11 +++++++---- translations/README-hi.md | 11 +++++++---- translations/README-id.md | 11 +++++++---- translations/README-it.md | 22 +++++++--------------- translations/README-ja.md | 11 +++++++---- translations/README-kh.md | 11 +++++++---- translations/README-ko.md | 11 +++++++---- translations/README-pl.md | 11 +++++++---- translations/README-ptbr.md | 11 +++++++---- translations/README-ru.md | 16 +++++++--------- translations/README-th.md | 11 +++++++---- translations/README-tr.md | 11 +++++++---- translations/README-tw.md | 8 ++++---- translations/README-uk.md | 11 +++++++---- translations/README-ur.md | 11 +++++++---- translations/README-uz.md | 11 +++++++---- translations/README-vi.md | 11 +++++++---- 27 files changed, 183 insertions(+), 124 deletions(-) diff --git a/README.md b/README.md index 9fca0aa7ce..6f3777491c 100644 --- a/README.md +++ b/README.md @@ -63,17 +63,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-af.md b/translations/README-af.md index 457265f1a1..9158e92483 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -63,17 +63,20 @@ Spesiale dank aan:

- +

- Dev omgewings gebou vir die wolk + Master the technical interview without endless grinding.

- Inheems geïntegreer met GitLab, GitHub, en Bitbucket, bou Gitpod outomaties en aanhoudend dev omgewings vir al jou takke. As gevolg kan span lede onmiddellik begin kodeer met vars dev omgewings vir elke nuwe taak - maak nie saak of jy 'n nuwe kenmerk bou, 'n fout wil reg maak, of werk aan 'n kode resensie nie. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ar.md b/translations/README-ar.md index c798a6614a..9c2c0fc766 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -62,17 +62,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-bg.md b/translations/README-bg.md index 1d6cdaa85c..977f7f7e4a 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -56,17 +56,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-bn.md b/translations/README-bn.md index 4e3588195b..c13fd574cf 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -59,17 +59,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-cn.md b/translations/README-cn.md index a4148bc71e..29a76ce03e 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -17,17 +17,17 @@ 特别感谢:

- +

- 为云构建的开发环境 + 算法秘籍,模版刷题效率翻倍,上岸大厂必备

- Gitpod、GitLab、GitHub 和 Bitbucket 原生集合,自动且持续地为你的所有分支预构建开发环境。因此,团队成员可以立即开始为每项新任务使用全新的开发环境进行编码 - 无论您是在构建新功能、想要修复错误还是进行代码审查。 + 谷歌工程师们浓缩多年刷题经验,呕心沥血总结出的最强算法题型详解,提炼精华模版,由浅入深,简单易懂,举一反三。助你一扫刷题烦恼,一览众山小,高处不胜寒。早日上岸,圆梦大厂。

diff --git a/translations/README-de.md b/translations/README-de.md index dac2cc7e28..62296a6764 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -53,17 +53,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-es.md b/translations/README-es.md index 55ee864929..5731519944 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -55,17 +55,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-fa.md b/translations/README-fa.md index 1d861ed771..4fd8faf9db 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -59,17 +59,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-fr.md b/translations/README-fr.md index a3e5df4662..5c85c95f29 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -14,17 +14,20 @@ Traductions: Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-he.md b/translations/README-he.md index 2f718f5ca0..5083bf5db5 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -26,17 +26,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-hi.md b/translations/README-hi.md index eca0f0b201..a40a797029 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -65,17 +65,20 @@ विशेष धन्यवाद:

- +

- क्लाउड के लिए बनाया गया देव वातावरण + Master the technical interview without endless grinding.

- GitLab, GitHub, और Bitbucket के साथ मूल रूप से एकीकृत, Gitpod स्वचालित रूप से और आपकी सभी शाखाओं के लिए लगातार देव वातावरण का निर्माण करता है। परिणामस्वरूप टीम के सदस्य प्रत्येक नए कार्य के लिए तुरंत नए देव वातावरण के साथ कोडिंग शुरू कर सकते हैं - चाहे आप कोई नई सुविधा बना रहे हों, बग को ठीक करना चाहते हों, या कोड समीक्षा पर काम करना चाहते हों। + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-id.md b/translations/README-id.md index f37e6b609b..c00fa76ca6 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -11,17 +11,20 @@ Versi asli: [Bahasa Inggris](../README.md) Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-it.md b/translations/README-it.md index 8191434317..6d5b4785b8 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -68,28 +68,20 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh) Un ringraziamento speciale a:

- +

-
- Fondata nel 2018, OSS Capital è la prima e l'unica piattaforma di investimenti incentrata
esclusivamente nel supportare i fondatori delle startup COSS (commercial open source).
-
-
-

-
-

- -

- Ambiente di Sviluppo costruito per il cloud + Master the technical interview without endless grinding.

- Inizialmente integrato con GitLab, GitHub e Bitbucket, Gitpod prebuilds automaticamente e continuamente ambienti di sviluppo per tutte le tue branches. Grazie a ciò, i membri del proprio team possono sviluppare in nuovissimi ambienti di sviluppo per qualsiasi task - che sia l'aggiunta di una nuova feature, il fixaggio di un bug o la revisione del codice. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ja.md b/translations/README-ja.md index a34835f92e..3dc33539ba 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -42,17 +42,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-kh.md b/translations/README-kh.md index 7bfd8618b0..197222c7a8 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -55,17 +55,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ko.md b/translations/README-ko.md index 30782e5198..14e6c64129 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -60,17 +60,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-pl.md b/translations/README-pl.md index 56649ad81b..8230cb481f 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -52,17 +52,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 2eabe6b710..6bec214af8 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -48,17 +48,20 @@ Traduções em progresso: Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ru.md b/translations/README-ru.md index 3452bda5a5..79ed130a31 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -11,22 +11,20 @@ Особые благодарности:

- +

- Среды разработки, созданные для облачных сервисов + Master the technical interview without endless grinding.

- - Изначально интегрированный с GitLab, GitHub и Bitbucket, Gitpod автоматически, продолжительно и предварительно собирает - среды разработки всех ветвей (branches). В результате члены команды могут мгновенно приступить к написанию кода с новыми - средами разработки для каждой новой задачи - независимо от того, создаете ли вы новую функцию (feature), хотите исправить ошибку - или работаете над проверкой кода (code review). - + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-th.md b/translations/README-th.md index c627c0c5dc..e3cf096b40 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -35,17 +35,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-tr.md b/translations/README-tr.md index 7bdea755cf..d9be047b4b 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -58,17 +58,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-tw.md b/translations/README-tw.md index 4f9b45446c..75b5d13cec 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -53,17 +53,17 @@ Special thanks to:

- +

- Dev environments built for the cloud + 算法秘籍,模版刷題效率翻倍,上岸大廠必備

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + 谷歌工程師們濃縮多年刷題經驗,嘔心瀝血總結出的最強算法題型詳解,提煉精華模版,由淺入深,簡單易懂。助你一掃刷題煩惱,早日上岸,圓夢大廠。

diff --git a/translations/README-uk.md b/translations/README-uk.md index ba7a75b407..be968d101e 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -61,17 +61,20 @@ Microsoft. Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-ur.md b/translations/README-ur.md index fd1a108fc2..ff1b10c967 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -53,17 +53,20 @@ Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-uz.md b/translations/README-uz.md index 18bbb1225b..e35c332d9b 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -21,17 +21,20 @@ Asl versiyasi: [Inglizcha](../README.md) Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

diff --git a/translations/README-vi.md b/translations/README-vi.md index a1b4f6b2da..e72e0e7bf2 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -38,17 +38,20 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt Special thanks to:

- +

- Dev environments built for the cloud + Master the technical interview without endless grinding.

- Natively integrated with GitLab, GitHub, and Bitbucket, Gitpod automatically and continuously prebuilds dev environments for all your branches. As a result team members can instantly start coding with fresh dev environments for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review. + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview!

From fe99254e2031d4257f35927c12f3c2bdf288c6a7 Mon Sep 17 00:00:00 2001 From: name Date: Fri, 30 Sep 2022 16:17:45 -0700 Subject: [PATCH 678/857] kazakh-translation --- README_KAZAKH.md | 1171 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1171 insertions(+) create mode 100644 README_KAZAKH.md diff --git a/README_KAZAKH.md b/README_KAZAKH.md new file mode 100644 index 0000000000..b857da2ae5 --- /dev/null +++ b/README_KAZAKH.md @@ -0,0 +1,1171 @@ +# Кодтау сұхбат университеті + +> Мен мұны бастапқыда бағдарламалық жасақтама инженері болу үшін оқу тақырыптарының қысқаша тізімі ретінде жасадым, +> бірақ ол бүгін көріп отырған үлкен тізімге дейін өсті. Осы оқу жоспарын орындағаннан кейін [мен жұмысқа қабылдандым +> Amazon-да бағдарламалық жасақтаманы әзірлеу инженері ретінде](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Мен сияқты көп оқудың қажеті жоқ шығар. Қалай болғанда да, сізге қажет нәрсенің бәрі осында. +> +> Мен бірнеше ай бойы күніне 8-12 сағат оқыдым. Бұл менің оқиғам: [Google сұхбаты үшін неліктен мен 8 ай бойы толық уақытты оқыдым](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> +> **Назар аударыңыз:** Сізге мен сияқты көп оқудың қажеті жоқ. Мен көп уақытымды қажет емес нәрселерге жұмсадым. Бұл туралы қосымша ақпарат төменде. Мен сізге қымбат уақытыңызды жоғалтпай жетуге көмектесемін. +> +> Мұнда келтірілген элементтер сізді кез келген бағдарламалық жасақтама компаниясында техникалық сұхбатқа жақсы дайындайды, +> алыптарды қоса алғанда: Amazon, Facebook, Google және Microsoft. +# Kodtaw suxbat wnïversïteti + +> Men munı bastapqıda bağdarlamalıq jasaqtama ïnjeneri bolw üşin oqw taqırıptarınıñ qısqaşa tizimi retinde jasadım, +> biraq ol bügin körip otırğan ülken tizimge deyin östi. Osı oqw josparın orındağannan keyin [men jumısqa qabıldandım +> Amazon-da bağdarlamalıq jasaqtamanı äzirlew ïnjeneri retinde](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Men sïyaqtı köp oqwdıñ qajeti joq şığar. Qalay bolğanda da, sizge qajet närseniñ bäri osında. +> +> Men birneşe ay boyı künine 8-12 sağat oqıdım. Bul meniñ oqïğam: [Google suxbatı üşin nelikten men 8 ay boyı tolıq waqıttı oqıdım](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> +> **Nazar awdarıñız:** Sizge men sïyaqtı köp oqwdıñ qajeti joq. Men köp waqıtımdı qajet emes närselerge jumsadım. Bul twralı qosımşa aqparat tömende. Men sizge qımbat waqıtıñızdı joğaltpay jetwge kömektesemin. +> +> Munda keltirilgen élementter sizdi kez kelgen bağdarlamalıq jasaqtama kompanïyasında texnïkalıq suxbatqa jaqsı dayındaydı, +> alıptardı qosa alğanda: Amazon, Facebook, Google jäne Microsoft. + + +> +> *Сәттілік сізге!* + +<толығырақ> +Аудармалар: + +- [中文版本](аудармалар/README-cn.md) +- [Tiếng Việt - вьетнамша](аудармалар/README-vi.md) +- [Español](аудармалар/README-es.md) +- [Português Brasileiro](аудармалар/README-ptbr.md) +- [Польша](аудармалар/README-pl.md) +- [繁體中文](аудармалар/README-tw.md) +- [Жапондық (日本語)](аудармалар/README-ja.md) +- [Орыс](аудармалар/README-ru.md) +- [Неміс](аудармалар/README-de.md) +- [Бахаса Индонезия](аудармалар/README-id.md) +- [ខ្មែរ - кхмер](аудармалар/README-kh.md) +- [Өзбек](аудармалар/README-uz.md) +- [Болгар](аудармалар/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md) + + +> +> *Sättilik sizge!* + + +Awdarmalar: + +- [zhōng wén bǎn běn](awdarmalar/README-cn.md) +- [Tiếng Việt - vetnamşa](awdarmalar/README-vi.md) +- [Español](awdarmalar/README-es.md) +- [Português Brasileiro](awdarmalar/README-ptbr.md) +- [Polşa](awdarmalar/README-pl.md) +- [fán tǐ zhōng wén](awdarmalar/README-tw.md) +- [Japondıq (rì běn yǔ)](awdarmalar/README-ja.md) +- [Orıs](awdarmalar/README-ru.md) +- [Nemis](awdarmalar/README-de.md) +- [Baxasa Ïndonezïya](awdarmalar/README-id.md) +- [ខ្មែរ - kxmer](awdarmalar/README-kh.md) +- [Özbek](awdarmalar/README-uz.md) +- [Bolgar](awdarmalar/README-bg.md) +- [bānlā - Bangla](translations/README-bn.md) + + + +
+Translations in progress: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) + +
+ + + +## Бұл не? + +![Тақтадағы кодтау - HBO арнасының Силикон алқабынан](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Бұл менің ірі компанияда бағдарламалық жасақтама инженері болу үшін көп айлық оқу жоспарым. + +**Міндетті:** +* Кодтау бойынша аз тәжірибе (айнымалылар, циклдар, әдістер/функциялар және т.б.) +* Сабыр +* Уақыт + +Бұл веб-әзірлеуге емес, **бағдарламалық қамтамасыз ету инженериясына** арналған оқу жоспары екенін ескеріңіз. Google, Amazon сияқты ірі бағдарламалық қамтамасыз ету компаниялары, +Facebook және Microsoft бағдарламалық жасақтаманы веб-әзірлеуден өзгеше деп санайды. Мысалы, Amazon бар +Frontend инженерлері (FEE) және бағдарламалық жасақтаманы әзірлеу инженерлері (SDE). Бұл 2 бөлек рөл және сұхбат +олар бірдей болмайды, өйткені әрқайсысының өз құзыреті бар. Бұл компаниялар үшін информатика білімі қажет +бағдарламалық қамтамасыз етуді әзірлеу/инженерлік рөлдер. + +--- + +## Мазмұны + +### Оқу жоспары + +- [Бұл не?](#не-ол) +- [Неге оны пайдалану керек?](#why-use-it) +- [Қалай пайдалану керек](#қалай-пайдалану керек) +- [Өзіңізді жеткілікті ақылды емес деп санамаңыз](#сізді жеткілікті түрде ақылды-сезінбеңіз) +- [Бейне ресурстары туралы ескертпе](#a-note-about-video-resources) +- [Бағдарламалау тілін таңдау](#choose-a-programming-language) +- [Дерек құрылымдары мен алгоритмдеріне арналған кітаптар](#деректер құрылымдары мен алгоритмдеріне арналған кітаптар) +- [Интервьюге дайындық кітаптары](#interview-prep-books) +- [Менің қателіктерімді жасамаңыз](#қателіктерімді-жасамаңыз) +- [Жабықпен сіз көрмейсіз](#сіз-көрмейтін-қамтылған) +- [Күнделікті жоспар](#күнделікті-жоспар) +- [Сұрақтарды кодтау тәжірибесі](#coding-question-practice) +- [Кодтау мәселелері](#coding-problems) +## Bul ne? + +![Taqtadağı kodtaw - HBO arnasınıñ Sïlïkon alqabınan](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Bul meniñ iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolw üşin köp aylıq oqw josparım. + +**Mindetti:** +* Kodtaw boyınşa az täjirïbe (aynımalılar, cïkldar, ädister/fwnkcïyalar jäne t.b.) +* Sabır +* Waqıt + +Bul veb-äzirlewge emes, **bağdarlamalıq qamtamasız etw ïnjenerïyasına** arnalğan oqw josparı ekenin eskeriñiz. Google, Amazon sïyaqtı iri bağdarlamalıq qamtamasız etw kompanïyaları, +Facebook jäne Microsoft bağdarlamalıq jasaqtamanı veb-äzirlewden özgeşe dep sanaydı. Mısalı, Amazon bar +Frontend ïnjenerleri (FEE) jäne bağdarlamalıq jasaqtamanı äzirlew ïnjenerleri (SDE). Bul 2 bölek röl jäne suxbat +olar birdey bolmaydı, öytkeni ärqaysısınıñ öz quzıreti bar. Bul kompanïyalar üşin ïnformatïka bilimi qajet +bağdarlamalıq qamtamasız etwdi äzirlew/ïnjenerlik rölder. + +--- + +## Mazmunı + +### Oqw josparı + +- [Bul ne?](#ne-ol) +- [Nege onı paydalanw kerek?](#why-use-it) +- [Qalay paydalanw kerek](#qalay-paydalanw kerek) +- [Öziñizdi jetkilikti aqıldı emes dep sanamañız](#sizdi jetkilikti türde aqıldı-sezinbeñiz) +- [Beyne reswrstarı twralı eskertpe](#a-note-about-video-resources) +- [Bağdarlamalaw tilin tañdaw](#choose-a-programming-language) +- [Derek qurılımdarı men algorïtmderine arnalğan kitaptar](#derekter qurılımdarı men algorïtmderine arnalğan kitaptar) +- [Ïntervyuge dayındıq kitaptarı](#interview-prep-books) +- [Meniñ qatelikterimdi jasamañız](#qatelikterimdi-jasamañız) +- [Jabıqpen siz körmeysiz](#siz-körmeytin-qamtılğan) +- [Kündelikti jospar](#kündelikti-jospar) +- [Suraqtardı kodtaw täjirïbesi](#coding-question-practice) +- [Kodtaw mäseleleri](#coding-problems) + +### Оқу тақырыптары + +- [Алгоритмдік күрделілік / Үлкен-О / Асимптотикалық талдау](#алгоритмдік-күрделілік--үлкен-о--ассимптотикалық-анализ) +- [Дерек құрылымдары](#деректер құрылымдары) + - [Массивтер](#массив) + - [Байланыстырылған тізімдер](#linked-lists) + - [Стек](#стек) + - [Кезек](#кезек) + - [Хэш кестесі](#хэш-кесте) +- [Қосымша білім](#көп-білім) + - [Екілік іздеу](#екілік іздеу) + - [биттік операциялар](#биттік операциялар) +- [Ағаштар](#ағаштар) + - [Ағаштар - Жазбалар және фон](#ағаштар---жазбалар--фон) + - [Екілік іздеу ағаштары: BSTs](#binary-search-trees-bsts) + - [Үйме / Басымдық кезек / Екілік үйме](#үйме--басымдылық-кезегі--екілік-үйме) + - теңдестірілген іздеу ағаштары (детальдар емес, жалпы түсінік) + - өтулер: алдын ала тапсырыс, тапсырыс, кейінгі тапсырыс, BFS, DFS +- [Сұрыптау](#сұрыптау) + - таңдау + - кірістіру + - үйінді сұрыптау + - жылдам сұрыптау + - біріктіру сұрыптауы +- [Графиктер](#график) + - бағыттады + - бағытталмаған + - көршілестік матрицасы + - іргелес тізім + - өтулер: BFS, DFS +- [Одан да көп білім](#ven-more-bilgi) + - [Рекурсия](#рекурсия) + - [Динамикалық бағдарламалау](#динамикалық-бағдарламалау) + - [Дизайн үлгілері](#design-patterns) + - [Комбинаторика (n таңдау k) & Ықтималдық](#комбинаторика-n-таңдау-k--ықтималдық) + - [NP, NP-Толық және жуықтау алгоритмдері](#np-np-толық-және жуықтау-алгоритмдері) + - [Компьютерлер бағдарламаны қалай өңдейді](#қалай-компьютерлер-бағдарламаны өңдейді) + - [Кэштер](#кэштер) + - [Процестер мен ағындар](#processes-and-threads) + - [Тестілеу](#тестілеу) + - [Жолды іздеу және манипуляциялар](#string-searching--манипуляциялар) + - [Әрекет](# тырысады) + - [Жылжымалы нүкте сандары](#жылжымалы нүкте сандары) + - [Юникод](#уникод) + - [Endianness](#endianness) + - [Networking](#networking) +- [Қорытынды шолу](#соңғы шолу) + +### Жұмысқа орналасу + +- [Түйіндемеңізді жаңарту](#жаңарту-өз түйіндемеңіз) +- [Жұмыс табу](#жұмыс табу) +- [Интервью процесі және жалпы сұхбатқа дайындық](#interview-process--жалпы-интервью-дайындық) +- [Сұхбат қашан келетінін ойлаңыз](#сұхбат келгенде-ойланыңыз) +- [Сұхбат алушыға сұрақтарыңыз бар](#сұхбат алушыға-сұрақтарыңыз бар) +- [Жұмысқа қол жеткізгеннен кейін](#бір рет-жұмысқа-алғаннан кейін) + +**---------------- Осы тармақтың астындағылардың барлығы міндетті емес ----------------** +### Oqw taqırıptarı + +- [Algorïtmdik kürdelilik / Ülken-O / Asïmptotïkalıq taldaw](#algorïtmdik-kürdelilik--ülken-o--assïmptotïkalıq-analïz) +- [Derek qurılımdarı](#derekter qurılımdarı) + - [Massïvter](#massïv) + - [Baylanıstırılğan tizimder](#linked-lists) + - [Stek](#stek) + - [Kezek](#kezek) + - [Xéş kestesi](#xéş-keste) +- [Qosımşa bilim](#köp-bilim) + - [Ekilik izdew](#ekilik izdew) + - [bïttik operacïyalar](#bïttik operacïyalar) +- [Ağaştar](#ağaştar) + - [Ağaştar - Jazbalar jäne fon](#ağaştar---jazbalar--fon) + - [Ekilik izdew ağaştarı: BSTs](#binary-search-trees-bsts) + - [Üyme / Basımdıq kezek / Ekilik üyme](#üyme--basımdılıq-kezegi--ekilik-üyme) + - teñdestirilgen izdew ağaştarı (detaldar emes, jalpı tüsinik) + - ötwler: aldın ala tapsırıs, tapsırıs, keyingi tapsırıs, BFS, DFS +- [Surıptaw](#surıptaw) + - tañdaw + - kiristirw + - üyindi surıptaw + - jıldam surıptaw + - biriktirw surıptawı +- [Grafïkter](#grafïk) + - bağıttadı + - bağıttalmağan + - körşilestik matrïcası + - irgeles tizim + - ötwler: BFS, DFS +- [Odan da köp bilim](#ven-more-bilgi) + - [Rekwrsïya](#rekwrsïya) + - [Dïnamïkalıq bağdarlamalaw](#dïnamïkalıq-bağdarlamalaw) + - [Dïzayn ülgileri](#design-patterns) + - [Kombïnatorïka (n tañdaw k) & Iqtïmaldıq](#kombïnatorïka-n-tañdaw-k--ıqtïmaldıq) + - [NP, NP-Tolıq jäne jwıqtaw algorïtmderi](#np-np-tolıq-jäne jwıqtaw-algorïtmderi) + - [Kompyuterler bağdarlamanı qalay öñdeydi](#qalay-kompyuterler-bağdarlamanı öñdeydi) + - [Kéşter](#kéşter) + - [Procester men ağındar](#processes-and-threads) + - [Testilew](#testilew) + - [Joldı izdew jäne manïpwlyacïyalar](#string-searching--manïpwlyacïyalar) + - [Äreket](# tırısadı) + - [Jıljımalı nükte sandarı](#jıljımalı nükte sandarı) + - [Yunïkod](#wnïkod) + - [Endianness](#endianness) + - [Networking](#networking) +- [Qorıtındı şolw](#soñğı şolw) + +### Jumısqa ornalasw + +- [Tüyindemeñizdi jañartw](#jañartw-öz tüyindemeñiz) +- [Jumıs tabw](#jumıs tabw) +- [Ïntervyu procesi jäne jalpı suxbatqa dayındıq](#interview-process--jalpı-ïntervyu-dayındıq) +- [Suxbat qaşan keletinin oylañız](#suxbat kelgende-oylanıñız) +- [Suxbat alwşığa suraqtarıñız bar](#suxbat alwşığa-suraqtarıñız bar) +- [Jumısqa qol jetkizgennen keyin](#bir ret-jumısqa-alğannan keyin) + +**---------------- Osı tarmaqtıñ astındağılardıñ barlığı mindetti emes ----------------** + +### Қосымша қосымша тақырыптар мен ресурстар + +- [Қосымша кітаптар](#қосымша кітаптар) +- [Жүйені жобалау, масштабтау, деректерді өңдеу](#жүйе дизайны-масштабтау-деректерді өңдеу) (4 жылдан астам тәжірибеңіз болса) +- [Қосымша оқыту](#қосымша-оқыту) + - [Құрастырушылар](#компиляторлар) + - [Emacs және vi(m)](#emacs-and-vim) + - [Unix пәрмен жолы құралдары](#unix-командалық жол құралдары) + - [Ақпарат теориясы](#ақпарат-теория-бейнелер) + - [Паритет және Хамминг коды](#parity--hamming-code-videos) + - [Энтропия](#энтропия) + - [Криптография](#криптография) + - [Сығу](#қысу) + - [Компьютер қауіпсіздігі](#компьютер қауіпсіздігі) + - [Қоқыс жинау](#қоқыс жинау) + - [Параллельді бағдарламалау](#параллельді бағдарламалау) + - [Хабар алмасу, сериялау және кезекке қою жүйелері](#хабарлама-серияландыру-және-кезектеу-жүйелері) + - [A*](#a) + - [Fast Furier Transform](#fast-fourier-transform) + - [Блум сүзгісі](#блум-сүзгісі) + - [HyperLogLog](#hyperloglog) + - [Жергілікті-сезімтал хэштеу](#жергілікті-сезімтал-хэшинг) + - [ван Эмде Боас ағаштары](#ван-емде-боас-ағаштар) + - [Толықтырылған деректер құрылымдары](#augmented-data-structures) + - [Балансталған іздеу ағаштары](#балансталған іздеу ағаштары) + - AVL ағаштары + - Ағаштар + - қызыл/қара ағаштар + - 2-3 іздеу ағаштары + - 2-3-4 ағаш (2-4 ағаш) + - N-ары (Қ-ары, М-ары) ағаштары + - В-ағаштар + - [k-D ағаштары](#k-d-ағаштар) + - [Тізімдерді өткізіп жіберу](#өткізу тізімдері) + - [Желі ағындары](#желі ағындары) + - [Ажыратылған жиындар және одақтарды табу](#disjoint-жинақтар--одақ-табу) + - [Жылдам өңдеуге арналған математика](#жылдам өңдеуге арналған математика) + - [Треап](#treap) + - [Сызықтық бағдарламалау](#linear-бағдарламалау-бейнелер) + - [Геометрия, дөңес корпус](#геометрия-дөңес-корпус-бейнелері) + - [Дискретті математика](#дискретті-математика) +- [Кейбір тақырыптар бойынша қосымша мәліметтер](кейбір тақырыптар бойынша #қосымша-деталь) +- [Бейне сериясы](#бейне сериясы) +- [Информатика курстары](#компьютер-ғылым-курстары) +- [Қағаздар](#қағаз) +### Qosımşa qosımşa taqırıptar men reswrstar + +- [Qosımşa kitaptar](#qosımşa kitaptar) +- [Jüyeni jobalaw, masştabtaw, derekterdi öñdew](#jüye dïzaynı-masştabtaw-derekterdi öñdew) (4 jıldan astam täjirïbeñiz bolsa) +- [Qosımşa oqıtw](#qosımşa-oqıtw) + - [Qurastırwşılar](#kompïlyatorlar) + - [Emacs jäne vi(m)](#emacs-and-vim) + - [Unix pärmen jolı quraldarı](#unix-komandalıq jol quraldarı) + - [Aqparat teorïyası](#aqparat-teorïya-beyneler) + - [Parïtet jäne Xammïng kodı](#parity--hamming-code-videos) + - [Éntropïya](#éntropïya) + - [Krïptografïya](#krïptografïya) + - [Sığw](#qısw) + - [Kompyuter qawipsizdigi](#kompyuter qawipsizdigi) + - [Qoqıs jïnaw](#qoqıs jïnaw) + - [Paralleldi bağdarlamalaw](#paralleldi bağdarlamalaw) + - [Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri](#xabarlama-serïyalandırw-jäne-kezektew-jüyeleri) + - [A*](#a) + - [Fast Furier Transform](#fast-fourier-transform) + - [Blwm süzgisi](#blwm-süzgisi) + - [HyperLogLog](#hyperloglog) + - [Jergilikti-sezimtal xéştew](#jergilikti-sezimtal-xéşïng) + - [van Émde Boas ağaştarı](#van-emde-boas-ağaştar) + - [Tolıqtırılğan derekter qurılımdarı](#augmented-data-structures) + - [Balanstalğan izdew ağaştarı](#balanstalğan izdew ağaştarı) + - AVL ağaştarı + - Ağaştar + - qızıl/qara ağaştar + - 2-3 izdew ağaştarı + - 2-3-4 ağaş (2-4 ağaş) + - N-arı (Q-arı, M-arı) ağaştarı + - V-ağaştar + - [k-D ağaştarı](#k-d-ağaştar) + - [Tizimderdi ötkizip jiberw](#ötkizw tizimderi) + - [Jeli ağındarı](#jeli ağındarı) + - [Ajıratılğan jïındar jäne odaqtardı tabw](#disjoint-jïnaqtar--odaq-tabw) + - [Jıldam öñdewge arnalğan matematïka](#jıldam öñdewge arnalğan matematïka) + - [Treap](#treap) + - [Sızıqtıq bağdarlamalaw](#linear-bağdarlamalaw-beyneler) + - [Geometrïya, döñes korpws](#geometrïya-döñes-korpws-beyneleri) + - [Dïskretti matematïka](#dïskretti-matematïka) +- [Keybir taqırıptar boyınşa qosımşa mälimetter](keybir taqırıptar boyınşa #qosımşa-detal) +- [Beyne serïyası](#beyne serïyası) +- [Ïnformatïka kwrstarı](#kompyuter-ğılım-kwrstarı) +- [Qağazdar](#qağaz) + +## Оны не үшін қолдану керек? + +Егер сіз ірі компанияда бағдарламалық жасақтама инженері болып жұмыс істегіңіз келсе, бұл сізге білу керек нәрселер. + +Егер сіз мен сияқты информатика бойынша ғылыми дәреже алуды жіберіп алсаңыз, бұл сізді қуып жетіп, өміріңіздің төрт жылын сақтайды. + +Мен бұл жобаны бастаған кезде, мен үйіндіден стекті білмедім, Big-O ештеңе білмедім, ағаштар туралы ештеңе білмедім немесе қалай істеу керектігін білмедім. +графикті айналып өту. Егер мен сұрыптау алгоритмін кодтауым керек болса, бұл қорқынышты болар еді деп айта аламын. +Мен пайдаланған әрбір деректер құрылымы тілге салынған және мен олардың қалай жұмыс істейтінін білмедім +мүлде капюшонның астында. Мен іске қосып жатқан процесс «шығын» бермейінше, жадты ешқашан басқаруға тура келмеді +жад» қатесі пайда болды, содан кейін уақытша шешім табуым керек еді. Мен өмірімде бірнеше көп өлшемді массивтерді қолдандым және +мыңдаған ассоциативті массивтер, бірақ мен ешқашан деректер құрылымдарын нөлден жасаған емеспін. + +Бұл ұзақ жоспар. Бұл сізге айлар алуы мүмкін. Егер сіз мұның көп бөлігімен таныс болсаңыз, бұл сізге әлдеқайда аз уақыт алады. + +## Оны қалай пайдалануға болады + +Төмендегілердің бәрі контур, сондықтан элементтерді жоғарыдан төменге қарай ретімен шешу керек. + +Мен GitHub-тың арнайы белгілеу дәмін, соның ішінде орындалу барысын бақылау үшін тапсырмалар тізімдерін пайдаланамын. + - [GitHub-flavored markdown туралы толығырақ](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### Егер сіз git қолданбасын пайдаланғыңыз келмесе + +Бұл бетте жоғарғы жағындағы Код түймесін басыңыз, содан кейін «ZIP жүктеп алу» түймесін басыңыз. Файлды ашыңыз және мәтіндік файлдармен жұмыс істей аласыз. + +Белгілеуді түсінетін код өңдегішінде ашық болсаңыз, барлығы жақсы пішімделгенін көресіз. + +![Репоны zip файлы ретінде қалай жүктеп алуға болады](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Егер сіз gitпен ыңғайлы болсаңыз + +Мынадай элементтерді тексеру үшін жаңа тармақ жасаңыз, жақшаға x белгісін қойыңыз: [x] + +1. ***GitHub репосын ашыңыз:*** `https://github.com/jwasham/coding-interview-university` Fork түймесін басу арқылы. +## Onı ne üşin qoldanw kerek? + +Eger siz iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolıp jumıs istegiñiz kelse, bul sizge bilw kerek närseler. + +Eger siz men sïyaqtı ïnformatïka boyınşa ğılımï däreje alwdı jiberip alsañız, bul sizdi qwıp jetip, ömiriñizdiñ tört jılın saqtaydı. + +Men bul jobanı bastağan kezde, men üyindiden stekti bilmedim, Big-O eşteñe bilmedim, ağaştar twralı eşteñe bilmedim nemese qalay istew kerektigin bilmedim. +grafïkti aynalıp ötw. Eger men surıptaw algorïtmin kodtawım kerek bolsa, bul qorqınıştı bolar edi dep ayta alamın. +Men paydalanğan ärbir derekter qurılımı tilge salınğan jäne men olardıñ qalay jumıs isteytinin bilmedim +mülde kapyuşonnıñ astında. Men iske qosıp jatqan process «şığın» bermeyinşe, jadtı eşqaşan basqarwğa twra kelmedi +jad» qatesi payda boldı, sodan keyin waqıtşa şeşim tabwım kerek edi. Men ömirimde birneşe köp ölşemdi massïvterdi qoldandım jäne +mıñdağan assocïatïvti massïvter, biraq men eşqaşan derekter qurılımdarın nölden jasağan emespin. + +Bul uzaq jospar. Bul sizge aylar alwı mümkin. Eger siz munıñ köp böligimen tanıs bolsañız, bul sizge äldeqayda az waqıt aladı. + +## Onı qalay paydalanwğa boladı + +Tömendegilerdiñ bäri kontwr, sondıqtan élementterdi joğarıdan tömenge qaray retimen şeşw kerek. + +Men GitHub-tıñ arnayı belgilew dämin, sonıñ işinde orındalw barısın baqılaw üşin tapsırmalar tizimderin paydalanamın. + - [GitHub-flavored markdown twralı tolığıraq](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### Eger siz git qoldanbasın paydalanğıñız kelmese + +Bul bette joğarğı jağındağı Kod tüymesin basıñız, sodan keyin «ZIP jüktep alw» tüymesin basıñız. Fayldı aşıñız jäne mätindik fayldarmen jumıs istey alasız. + +Belgilewdi tüsinetin kod öñdegişinde aşıq bolsañız, barlığı jaqsı pişimdelgenin köresiz. + +![Reponı zip faylı retinde qalay jüktep alwğa boladı](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Eger siz gitpen ıñğaylı bolsañız + +Mınaday élementterdi tekserw üşin jaña tarmaq jasañız, jaqşağa x belgisin qoyıñız: [x] + +1. ***GitHub reposın aşıñız:*** `https://github.com/jwasham/coding-interview-university` Fork tüymesin basw arqılı. + + +![GitHub репосын ашыңыз](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. Жергілікті репоға клондау: + + ``` + git clone git@github.com:/coding-interview-university.git + CD кодтау-сұхбат-университет + git checkout -b прогресс + git қашықтан jwasham қосу https://github.com/jwasham/coding-interview-university + git fetch --барлығы + ``` + +1. Өзгерістерді аяқтағаннан кейін барлық ұяшықтарды X белгісімен белгілеңіз: + + ``` + git қосу. + git commit -m «X белгіленген» + git rebase jwasham/main + git push --set-upstream бастапқы прогресті + git push --force + ``` + +## Өзіңді жеткілікті ақылды емес деп санама + +- Табысты бағдарламалық жасақтама инженерлері ақылды, бірақ олардың көпшілігі жеткілікті ақылды емес деген сенімсіздікке ие. +- Келесі бейнелер осы сенімсіздікті жеңуге көмектесуі мүмкін: + - [Данышпан программист туралы миф](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [Жалғыз жүру қауіпті: технологиядағы көрінбейтін құбыжықтармен күресу](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Бейне ресурстар туралы ескертпе + +Кейбір бейнелер Coursera немесе EdX сыныбына тіркелу арқылы ғана қолжетімді. Бұлар MOOC деп аталады. +Кейде сабақтар сессияда болмайды, сондықтан сізге бірнеше ай күтуге тура келеді, сондықтан сізде кіру мүмкіндігі болмайды. + +Онлайн курс ресурстарын тегін және әрқашан қолжетімді жалпыға қолжетімді көздермен алмастыру тамаша болар еді, +мысалы, YouTube бейнелері (жақсырақ университет лекциялары), сондықтан сіз кез келген уақытта оларды оқи аласыз, +белгілі бір онлайн курс сессияда болғанда ғана емес. + +## Бағдарламалау тілін таңдаңыз + +Сізге кодтау сұхбаттары үшін бағдарламалау тілін таңдау керек, +бірақ сізге информатика ұғымдарын зерттеу үшін қолдануға болатын тілді табу қажет болады. + +Тіл бірдей болғаны дұрыс, сондықтан сізге тек біреуін білу керек. + +### Осы оқу жоспары үшін + +Мен оқу жоспарын жасаған кезде оның көп бөлігінде 2 тілді қолдандым: C және Python + +* C: Өте төмен деңгей. Көрсеткіштермен және жадты бөлу/бөлумен жұмыс істеуге мүмкіндік береді, осылайша деректер құрылымдарын сезінесіз + және сүйектеріңіздегі алгоритмдер. Python немесе Java сияқты жоғары деңгейлі тілдерде олар сізден жасырылады. Күнделікті жұмыста бұл керемет, + бірақ сіз осы төмен деңгейлі деректер құрылымдарының қалай салынғанын үйреніп жатқанда, металға жақын сезіну өте жақсы. + - C барлық жерде бар. Сіз оқу кезінде мысалдарды кітаптардан, лекциялардан, бейнелерден, *барлық жерде* көресіз. + - [The C бағдарламалау тілі, 2-том](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) +![GitHub reposın aşıñız](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. Jergilikti repoğa klondaw: + + ``` + git clone git@github.com:/coding-interview-university.git + CD kodtaw-suxbat-wnïversïtet + git checkout -b progress + git qaşıqtan jwasham qosw https://github.com/jwasham/coding-interview-university + git fetch --barlığı + ``` + +1. Özgeristerdi ayaqtağannan keyin barlıq uyaşıqtardı X belgisimen belgileñiz: + + ``` + git qosw. + git commit -m «X belgilengen» + git rebase jwasham/main + git push --set-upstream bastapqı progresti + git push --force + ``` + +## Öziñdi jetkilikti aqıldı emes dep sanama + +- Tabıstı bağdarlamalıq jasaqtama ïnjenerleri aqıldı, biraq olardıñ köpşiligi jetkilikti aqıldı emes degen senimsizdikke ïe. +- Kelesi beyneler osı senimsizdikti jeñwge kömekteswi mümkin: + - [Danışpan programmïst twralı mïf](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [Jalğız jürw qawipti: texnologïyadağı körinbeytin qubıjıqtarmen küresw](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Beyne reswrstar twralı eskertpe + +Keybir beyneler Coursera nemese EdX sınıbına tirkelw arqılı ğana qoljetimdi. Bular MOOC dep ataladı. +Keyde sabaqtar sessïyada bolmaydı, sondıqtan sizge birneşe ay kütwge twra keledi, sondıqtan sizde kirw mümkindigi bolmaydı. + +Onlayn kwrs reswrstarın tegin jäne ärqaşan qoljetimdi jalpığa qoljetimdi közdermen almastırw tamaşa bolar edi, +mısalı, YouTube beyneleri (jaqsıraq wnïversïtet lekcïyaları), sondıqtan siz kez kelgen waqıtta olardı oqï alasız, +belgili bir onlayn kwrs sessïyada bolğanda ğana emes. + +## Bağdarlamalaw tilin tañdañız + +Sizge kodtaw suxbattarı üşin bağdarlamalaw tilin tañdaw kerek, +biraq sizge ïnformatïka uğımdarın zerttew üşin qoldanwğa bolatın tildi tabw qajet boladı. + +Til birdey bolğanı durıs, sondıqtan sizge tek birewin bilw kerek. + +### Osı oqw josparı üşin + +Men oqw josparın jasağan kezde onıñ köp böliginde 2 tildi qoldandım: C jäne Python + +* C: Öte tömen deñgey. Körsetkiştermen jäne jadtı bölw/bölwmen jumıs istewge mümkindik beredi, osılayşa derekter qurılımdarın sezinesiz + jäne süyekteriñizdegi algorïtmder. Python nemese Java sïyaqtı joğarı deñgeyli tilderde olar sizden jasırıladı. Kündelikti jumısta bul keremet, + biraq siz osı tömen deñgeyli derekter qurılımdarınıñ qalay salınğanın üyrenip jatqanda, metalğa jaqın sezinw öte jaqsı. + - C barlıq jerde bar. Siz oqw kezinde mısaldardı kitaptardan, lekcïyalardan, beynelerden, *barlıq jerde* köresiz. + - [The C bağdarlamalaw tili, 2-tom](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + + - Бұл қысқа кітап, бірақ ол сізге Си тілін жақсы меңгеруге мүмкіндік береді және егер сіз оны аздап үйренсеңіз + тез шеберлікке ие боласыз. Си түсіну бағдарламалар мен жадтың қалай жұмыс істейтінін түсінуге көмектеседі. + - Кітаптың тереңіне барудың (тіпті оны аяқтаудың) қажеті жоқ. Си тілінде оқуға және жазуға ыңғайлы жерге жетіңіз. + - [Кітаптағы сұрақтарға жауаптар](https://github.com/lekkas/c-algorithms) +* Python: Заманауи және өте мәнерлі, мен оны білдім, себебі бұл өте пайдалы және сұхбатта азырақ код жазуға мүмкіндік береді. + +Бұл менің басымдылығым. Сіз өзіңізге ұнайтын нәрсені жасайсыз, әрине. + +Бұл сізге қажет болмауы мүмкін, бірақ жаңа тілді үйренуге арналған бірнеше сайттар: +- [Жаттығу](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Код күштері](https://codeforces.com/) +- [Scaler тақырыптары](https://www.scaler.com/topics/) + +### Кодтау сұхбаты үшін + +Сұхбаттың кодтау бөлігін орындау үшін өзіңізге ыңғайлы тілді пайдалануға болады, бірақ ірі компаниялар үшін бұл дұрыс таңдау: + +- C++ +- Java +- Python + +Сіз оларды да пайдалана аласыз, бірақ алдымен оқып шығыңыз. Ескертулер болуы мүмкін: + +- JavaScript +- Рубин + +Сұхбат үшін тілді таңдау туралы жазған мақалам: +[Кодтау сұхбаты үшін бір тілді таңдаңыз](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Бұл менің постыма негізделген түпнұсқа мақала: [Сұхбаттар үшін бағдарламалау тілін таңдау](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- жұмыс/) + +Сіз тілде өте ыңғайлы және білімді болуыңыз керек. +- Bul qısqa kitap, biraq ol sizge Sï tilin jaqsı meñgerwge mümkindik beredi jäne eger siz onı azdap üyrenseñiz + tez şeberlikke ïe bolasız. Sï tüsinw bağdarlamalar men jadtıñ qalay jumıs isteytinin tüsinwge kömektesedi. + - Kitaptıñ tereñine barwdıñ (tipti onı ayaqtawdıñ) qajeti joq. Sï tilinde oqwğa jäne jazwğa ıñğaylı jerge jetiñiz. + - [Kitaptağı suraqtarğa jawaptar](https://github.com/lekkas/c-algorithms) +* Python: Zamanawï jäne öte mänerli, men onı bildim, sebebi bul öte paydalı jäne suxbatta azıraq kod jazwğa mümkindik beredi. + +Bul meniñ basımdılığım. Siz öziñizge unaytın närseni jasaysız, ärïne. + +Bul sizge qajet bolmawı mümkin, biraq jaña tildi üyrenwge arnalğan birneşe sayttar: +- [Jattığw](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Kod küşteri](https://codeforces.com/) +- [Scaler taqırıptarı](https://www.scaler.com/topics/) + +### Kodtaw suxbatı üşin + +Suxbattıñ kodtaw böligin orındaw üşin öziñizge ıñğaylı tildi paydalanwğa boladı, biraq iri kompanïyalar üşin bul durıs tañdaw: + +- C++ +- Java +- Python + +Siz olardı da paydalana alasız, biraq aldımen oqıp şığıñız. Eskertwler bolwı mümkin: + +- JavaScript +- Rwbïn + +Suxbat üşin tildi tañdaw twralı jazğan maqalam: +[Kodtaw suxbatı üşin bir tildi tañdañız](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Bul meniñ postıma negizdelgen tüpnusqa maqala: [Suxbattar üşin bağdarlamalaw tilin tañdaw](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- jumıs/) + +Siz tilde öte ıñğaylı jäne bilimdi bolwıñız kerek. + + +Таңдау туралы толығырақ оқыңыз: +- [Кодтау сұхбаты үшін дұрыс тілді таңдаңыз](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[Тілге қатысты ресурстарды осы жерден қараңыз](programming-language-resources.md) + +## Деректер құрылымдары мен алгоритмдерге арналған кітаптар + +Бұл кітап сіздің информатика ғылымының негізін қалады. + +Сізге ыңғайлы тілде біреуін ғана таңдаңыз. Сіз көп оқумен және кодтаумен айналысатын боласыз. + +### C + +- [C тіліндегі алгоритмдер, 1-5 бөліктері (бума), 3-ші басылым](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Негіздер, деректер құрылымдары, сұрыптау, іздеу және графикалық алгоритмдер + +### Python + +- [Python тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Гудрих, Тамассия, Голдвассер + - Маған бұл кітап ұнады. Ол барлығын және т.б. қамтыды. + - Питоникалық код + - менің жарқыраған кітабым туралы есеп: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Сенің таңдауың: + +- Гудрих, Тамассия, Голдвассер + - [Java тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Седжвик пен Уэйн: + - [Алгоритмдер](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Кітапты қамтитын тегін Coursera курсы (авторлар үйретеді!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Алгоритмдер II](https://www.coursera.org/learn/algorithms-part2) + +### C++ +Tañdaw twralı tolığıraq oqıñız: +- [Kodtaw suxbatı üşin durıs tildi tañdañız](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[Tilge qatıstı reswrstardı osı jerden qarañız](programming-language-resources.md) + +## Derekter qurılımdarı men algorïtmderge arnalğan kitaptar + +Bul kitap sizdiñ ïnformatïka ğılımınıñ negizin qaladı. + +Sizge ıñğaylı tilde birewin ğana tañdañız. Siz köp oqwmen jäne kodtawmen aynalısatın bolasız. + +### C + +- [C tilindegi algorïtmder, 1-5 bölikteri (bwma), 3-şi basılım](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Negizder, derekter qurılımdarı, surıptaw, izdew jäne grafïkalıq algorïtmder + +### Python + +- [Python tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Gwdrïx, Tamassïya, Goldvasser + - Mağan bul kitap unadı. Ol barlığın jäne t.b. qamtıdı. + - Pïtonïkalıq kod + - meniñ jarqırağan kitabım twralı esep: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +Seniñ tañdawıñ: + +- Gwdrïx, Tamassïya, Goldvasser + - [Java tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedjvïk pen Wéyn: + - [Algorïtmder](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Kitaptı qamtïtın tegin Coursera kwrsı (avtorlar üyretedi!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorïtmder II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +Сенің таңдауың: + +- Гудрих, Тамассия және тау + - [C++ тіліндегі деректер құрылымдары мен алгоритмдері, 2-ші басылым](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Седжвик пен Уэйн + - [C++ тіліндегі алгоритмдер, 1-4 бөлімдер: негіздері, деректер құрылымы, сұрыптау, іздеу](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [C++ тіліндегі алгоритмдер 5-бөлім: Графикалық алгоритмдер](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Сұхбатқа дайындық кітаптары + +Сізге бұлардың жиынтығын сатып алудың қажеті жоқ. Шынымды айтсам, «кодтау сұхбатын бұзу» жеткілікті шығар, +бірақ мен өзіме көбірек тәжірибе беру үшін көбірек сатып алдым. Бірақ мен әрқашан тым көп істеймін. + +Мен бұл екеуін де сатып алдым. Олар маған көп тәжірибе берді. + +- [Ашық болған сұхбаттарды бағдарламалау: сұхбат арқылы жолыңызды кодтау, 4-ші басылым](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ және Java тілінде жауаптар + - Бұл кодтау сұхбатын бұзу үшін жақсы қыздыру + - Өте қиын емес. Көптеген мәселелер сұхбатта көретіннен оңай болуы мүмкін (мен оқығанымнан) +- [Кодтау сұхбатын бұзу, 6-шы басылым](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java тілінде жауаптар + +### Егер сізде қосымша уақыт болса: + +Біреуін таңдаңыз: + +- [Бағдарламалау сұхбаттарының элементтері (C++ нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Python тіліндегі сұхбаттарды бағдарламалау элементтері](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Бағдарламалау сұхбаттарының элементтері (Java нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) +Seniñ tañdawıñ: + +- Gwdrïx, Tamassïya jäne taw + - [C++ tilindegi derekter qurılımdarı men algorïtmderi, 2-şi basılım](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedjvïk pen Wéyn + - [C++ tilindegi algorïtmder, 1-4 bölimder: negizderi, derekter qurılımı, surıptaw, izdew](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [C++ tilindegi algorïtmder 5-bölim: Grafïkalıq algorïtmder](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## Suxbatqa dayındıq kitaptarı + +Sizge bulardıñ jïıntığın satıp alwdıñ qajeti joq. Şınımdı aytsam, «kodtaw suxbatın buzw» jetkilikti şığar, +biraq men özime köbirek täjirïbe berw üşin köbirek satıp aldım. Biraq men ärqaşan tım köp isteymin. + +Men bul ekewin de satıp aldım. Olar mağan köp täjirïbe berdi. + +- [Aşıq bolğan suxbattardı bağdarlamalaw: suxbat arqılı jolıñızdı kodtaw, 4-şi basılım](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ jäne Java tilinde jawaptar + - Bul kodtaw suxbatın buzw üşin jaqsı qızdırw + - Öte qïın emes. Köptegen mäseleler suxbatta köretinnen oñay bolwı mümkin (men oqığanımnan) +- [Kodtaw suxbatın buzw, 6-şı basılım](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java tilinde jawaptar + +### Eger sizde qosımşa waqıt bolsa: + +Birewin tañdañız: + +- [Bağdarlamalaw suxbattarınıñ élementteri (C++ nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Python tilindegi suxbattardı bağdarlamalaw élementteri](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Bağdarlamalaw suxbattarınıñ élementteri (Java nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + +- [Компаньон жобасы - Кітаптағы әрбір мәселеге арналған әдістемелер мен сынақ жағдайлары](https://github.com/gardncl/elements-of-programming-interviews) + +## Менің қателіктерімді жасама + +Бұл тізім бірнеше ай бойы өсті және иә, ол бақылаудан шықты. + +Сізге жақсырақ тәжірибе алу үшін мен бірнеше қателіктер жібердім. Ал сіз айлар уақытыңызды үнемдейсіз. + +### 1. Сіз мұның бәрін есте сақтамайсыз + +Мен бірнеше сағат бейнелерді көрдім және көптеген жазбалар алдым, ал бірнеше ай өткен соң есімде жоқ көп нәрсе болды. Мен 3 күн жүрдім +Жазбаларым арқылы және флешкарталар жасау арқылы, мен қарап шығу үшін. Маған бұл білімнің бәрі қажет емес еді. + +Менің қателіктерімді жібермеу үшін оқыңыз: + +[Информатика білімін сақтау](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Flashcards пайдаланыңыз + +Мәселені шешу үшін мен шағын флэшкарталар сайтын жасадым, онда мен 2 түрдегі флэшкарталарды қоса аламын: жалпы және код. +Әр картаның пішімі әртүрлі. Мен қай жерде болсам да, телефонда немесе планшетте қарап шығу үшін мобильді веб-сайт жасадым. + +Өзіңізді тегін жасаңыз: + +- [Flashcards сайтының репосы](https://github.com/jwasham/computer-science-flash-cards) + +**Флешкарталарымды пайдалануды ұсынбаймын.** Олардың саны тым көп және олардың көпшілігі сізге қажет емес ұсақ-түйектер. + +Бірақ мені тыңдағың келмесе, мынаны айтасың: +- [Менің флэш карталарымның дерекқорым (1200 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Менің флэш карталарымның дерекқорым (экстремалды - 1800 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [Kompanon jobası - Kitaptağı ärbir mäselege arnalğan ädistemeler men sınaq jağdayları](https://github.com/gardncl/elements-of-programming-interviews) + +## Meniñ qatelikterimdi jasama + +Bul tizim birneşe ay boyı östi jäne ïä, ol baqılawdan şıqtı. + +Sizge jaqsıraq täjirïbe alw üşin men birneşe qatelikter jiberdim. Al siz aylar waqıtıñızdı ünemdeysiz. + +### 1. Siz munıñ bärin este saqtamaysız + +Men birneşe sağat beynelerdi kördim jäne köptegen jazbalar aldım, al birneşe ay ötken soñ esimde joq köp närse boldı. Men 3 kün jürdim +Jazbalarım arqılı jäne fleşkartalar jasaw arqılı, men qarap şığw üşin. Mağan bul bilimniñ bäri qajet emes edi. + +Meniñ qatelikterimdi jibermew üşin oqıñız: + +[Ïnformatïka bilimin saqtaw](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Flashcards paydalanıñız + +Mäseleni şeşw üşin men şağın fléşkartalar saytın jasadım, onda men 2 türdegi fléşkartalardı qosa alamın: jalpı jäne kod. +Är kartanıñ pişimi ärtürli. Men qay jerde bolsam da, telefonda nemese planşette qarap şığw üşin mobïldi veb-sayt jasadım. + +Öziñizdi tegin jasañız: + +- [Flashcards saytınıñ reposı](https://github.com/jwasham/computer-science-flash-cards) + +**Fleşkartalarımdı paydalanwdı usınbaymın.** Olardıñ sanı tım köp jäne olardıñ köpşiligi sizge qajet emes usaq-tüyekter. + +Biraq meni tıñdağıñ kelmese, mınanı aytasıñ: +- [Meniñ fléş kartalarımnıñ derekqorım (1200 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Meniñ fléş kartalarımnıñ derekqorım (ékstremaldı - 1800 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Есіңізде болсын, мен шектен шығып кеттім және ассемблер тілі мен Python тривиасынан бастап машиналық оқыту мен статистикаға дейін барлығын қамтитын карталарым бар. +Бұл талап етілетін нәрсе үшін тым көп. + +**Флешкарталар туралы ескертпе:** Жауапты білетіндігіңізді бірінші рет танысаңыз, оны белгілі деп белгілемеңіз. Сіз көруіңіз керек +сол картаны және оны шынымен білмей тұрып, оған бірнеше рет дұрыс жауап беріңіз. Қайталау бұл білімді тереңдетеді +сіздің миыңыз. + +Менің флэшкарта сайтымды пайдаланудың баламасы [Anki](http://ankisrs.net/), ол маған бірнеше рет ұсынылды. +Ол есте сақтауға көмектесу үшін қайталау жүйесін пайдаланады. Бұл пайдаланушыға ыңғайлы, барлық платформаларда қол жетімді және бұлтты синхрондау жүйесі бар. +Оның құны iOS жүйесінде $25, бірақ басқа платформаларда тегін. + +Anki пішіміндегі флэшкарта дерекқорым: https://ankiweb.net/shared/info/25173560 (рахмет [@xiewenya](https://github.com/xiewenya)). + +Кейбір студенттер бос орынмен пішімдеу мәселелерін атап өтті, оларды келесі әрекеттерді орындау арқылы шешуге болады: палубаны ашу, картаны өңдеу, карталарды басу, «стильдеу» радио түймешігін таңдау, «ақ кеңістік: pre;» мүшесін қосу. карта класына. + +### 3. Оқу барысында сұхбат сұрақтарын кодтаңыз + +БҰЛ ӨТЕ МАҢЫЗДЫ. + +Деректер құрылымдары мен алгоритмдерін үйрену кезінде сұхбат сұрақтарын кодтауды бастаңыз. + +Сіз үйреніп жатқан нәрсені мәселелерді шешуге қолдануыңыз керек, әйтпесе ұмытып кетесіз. Мен бұл қателік жасадым. + +Тақырыпты біліп болғаннан кейін және онымен өзіңізді біршама ыңғайлы сезінесіз, мысалы, **байланысты тізімдер**: +1. [кодтау сұхбат кітаптарының] (#interview-prep-books) бірін ашыңыз (немесе төменде берілген кодтау мәселесіне арналған веб-сайттар) +1. Байланыстырылған тізімдерге қатысты 2 немесе 3 сұрақ қойыңыз. +1. Келесі оқу тақырыбына көшу. +1. Кейінірек кері оралып, басқа 2 немесе 3 байланыстырылған тізім мәселесін орындаңыз. +1. Мұны әрбір жаңа тақырыпты үйренген сайын орындаңыз. + +**Мәселелерді кейін емес, осының бәрін үйреніп жатқанда жасай беріңіз.** + +Сіз білім үшін емес, білімді қалай қолданасыз. + +Бұл үшін төменде келтірілген көптеген ресурстар бар. Жалғастыру. + +### 4. Фокус + +Қымбат уақытты алатын көптеген алаңдаушылықтар бар. Фокус пен шоғырлану қиын. Музыканы қосыңыз +мәтінсіз және сіз өте жақсы назар аудара аласыз. + +## Нені көрмейсіз + +Бұл кең таралған технологиялар, бірақ осы зерттеу жоспарының бөлігі емес: + +- SQL +- Javascript +- HTML, CSS және басқа интерфейстік технологиялар + +## Күнделікті жоспар + +Бұл курс көптеген тақырыптарды қамтиды. Олардың әрқайсысы сізге бірнеше күн немесе тіпті бір апта немесе одан да көп уақытты алады. Бұл сіздің кестеңізге байланысты. + +Күн сайын тізімдегі келесі тақырыпты алыңыз, сол тақырып бойынша бірнеше бейнелерді қараңыз, содан кейін іске асыруды жазыңыз +осы курс үшін таңдаған тілдегі деректер құрылымы немесе алгоритм. +Esiñizde bolsın, men şekten şığıp kettim jäne assembler tili men Python trïvïasınan bastap maşïnalıq oqıtw men statïstïkağa deyin barlığın qamtïtın kartalarım bar. +Bul talap etiletin närse üşin tım köp. + +**Fleşkartalar twralı eskertpe:** Jawaptı biletindigiñizdi birinşi ret tanısañız, onı belgili dep belgilemeñiz. Siz körwiñiz kerek +sol kartanı jäne onı şınımen bilmey turıp, oğan birneşe ret durıs jawap beriñiz. Qaytalaw bul bilimdi tereñdetedi +sizdiñ mïıñız. + +Meniñ fléşkarta saytımdı paydalanwdıñ balaması [Anki](http://ankisrs.net/), ol mağan birneşe ret usınıldı. +Ol este saqtawğa kömektesw üşin qaytalaw jüyesin paydalanadı. Bul paydalanwşığa ıñğaylı, barlıq platformalarda qol jetimdi jäne bulttı sïnxrondaw jüyesi bar. +Onıñ qunı iOS jüyesinde $25, biraq basqa platformalarda tegin. + +Anki pişimindegi fléşkarta derekqorım: https://ankiweb.net/shared/info/25173560 (raxmet [@xiewenya](https://github.com/xiewenya)). + +Keybir stwdentter bos orınmen pişimdew mäselelerin atap ötti, olardı kelesi äreketterdi orındaw arqılı şeşwge boladı: palwbanı aşw, kartanı öñdew, kartalardı basw, «stïldew» radïo tüymeşigin tañdaw, «aq keñistik: pre;» müşesin qosw. karta klasına. + +### 3. Oqw barısında suxbat suraqtarın kodtañız + +BUL ÖTE MAÑIZDI. + +Derekter qurılımdarı men algorïtmderin üyrenw kezinde suxbat suraqtarın kodtawdı bastañız. + +Siz üyrenip jatqan närseni mäselelerdi şeşwge qoldanwıñız kerek, äytpese umıtıp ketesiz. Men bul qatelik jasadım. + +Taqırıptı bilip bolğannan keyin jäne onımen öziñizdi birşama ıñğaylı sezinesiz, mısalı, **baylanıstı tizimder**: +1. [kodtaw suxbat kitaptarınıñ] (#interview-prep-books) birin aşıñız (nemese tömende berilgen kodtaw mäselesine arnalğan veb-sayttar) +1. Baylanıstırılğan tizimderge qatıstı 2 nemese 3 suraq qoyıñız. +1. Kelesi oqw taqırıbına köşw. +1. Keyinirek keri oralıp, basqa 2 nemese 3 baylanıstırılğan tizim mäselesin orındañız. +1. Munı ärbir jaña taqırıptı üyrengen sayın orındañız. + +**Mäselelerdi keyin emes, osınıñ bärin üyrenip jatqanda jasay beriñiz.** + +Siz bilim üşin emes, bilimdi qalay qoldanasız. + +Bul üşin tömende keltirilgen köptegen reswrstar bar. Jalğastırw. + +### 4. Fokws + +Qımbat waqıttı alatın köptegen alañdawşılıqtar bar. Fokws pen şoğırlanw qïın. Mwzıkanı qosıñız +mätinsiz jäne siz öte jaqsı nazar awdara alasız. + +## Neni körmeysiz + +Bul keñ taralğan texnologïyalar, biraq osı zerttew josparınıñ böligi emes: + +- SQL +- Javascript +- HTML, CSS jäne basqa ïnterfeystik texnologïyalar + +## Kündelikti jospar + +Bul kwrs köptegen taqırıptardı qamtïdı. Olardıñ ärqaysısı sizge birneşe kün nemese tipti bir apta nemese odan da köp waqıttı aladı. Bul sizdiñ kesteñizge baylanıstı. + +Kün sayın tizimdegi kelesi taqırıptı alıñız, sol taqırıp boyınşa birneşe beynelerdi qarañız, sodan keyin iske asırwdı jazıñız +osı kwrs üşin tañdağan tildegi derekter qurılımı nemese algorïtm. + +- ### Хэш кестесі + - [ ] Бейнелер: + - [ ] [Тізбекпен хэштеу (бейне)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Кестені еселеу, Карп-Рабин (бейне)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Ашық адрестеу, криптографиялық хэштеу (бейне)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: Құдіретті сөздік (бейне)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (бейне)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Жетілдірілген) рандомизация: әмбебап және тамаша хэштеу (бейне)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Жетілдірілген) Керемет хэштеу (бейне)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Онлайн курстар: + - [ ] [Негізгі хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Дерек құрылымдары (бейне)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Телефон кітапшасының мәселесі (бейне)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] таратылған хэш кестелері: + - [Dropbox жүйесінде жылдам жүктеп салулар және жадты оңтайландыру (бейне)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Таратылған хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Сызықтық зондтау арқылы массивпен орындаңыз + - хэш(k, m) - m хэш кестесінің өлшемі + - қосу(кілт, мән) - кілт бұрыннан бар болса, мәнді жаңартыңыз + - бар (кілт) + - алу (кілт) + - жою (кілт) +- ### Xéş kestesi + - [ ] Beyneler: + - [ ] [Tizbekpen xéştew (beyne)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Kesteni eselew, Karp-Rabïn (beyne)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Aşıq adrestew, krïptografïyalıq xéştew (beyne)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: Qudiretti sözdik (beyne)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (beyne)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Jetildirilgen) randomïzacïya: ämbebap jäne tamaşa xéştew (beyne)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Jetildirilgen) Keremet xéştew (beyne)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Onlayn kwrstar: + - [ ] [Negizgi xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Derek qurılımdarı (beyne)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Telefon kitapşasınıñ mäselesi (beyne)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] taratılğan xéş kesteleri: + - [Dropbox jüyesinde jıldam jüktep salwlar jäne jadtı oñtaylandırw (beyne)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Taratılğan xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Sızıqtıq zondtaw arqılı massïvpen orındañız + - xéş(k, m) - m xéş kestesiniñ ölşemi + - qosw(kilt, män) - kilt burınnan bar bolsa, mändi jañartıñız + - bar (kilt) + - alw (kilt) + - joyu (kilt) + +- ### Хабар алмасу, сериялау және кезекке қою жүйелері + - [Үнемдеу](https://thrift.apache.org/) + - [Оқулық](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Протокол буферлері](https://developers.google.com/protocol-buffers/) + - [Оқулықтар](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [Java әзірлеушілеріне арналған gRPC 101 (бейне)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Оқулық](http://try.redis.io/) + - [Amazon SQS (кезек)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Бастау](https://www.rabbitmq.com/getstarted.html) + - [Сельдерей](http://www.celeryproject.org/) + - [Сельдереймен алғашқы қадамдар](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) + - [ZeroMQ](http://zeromq.org/) + - [Кіріспе - Нұсқаулықты оқу](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Кафка](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [Іздеу алгоритмі](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Жолды табу (E01: алгоритмді түсіндіру) (бейне)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Жылдам Фурье түрлендіруі + - [Фурье түрлендіруіне арналған интерактивті нұсқаулық](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Фурье түрлендіруі дегеніміз не? Ол не үшін қолданылады?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Фурье түрлендіруі дегеніміз не? (бейне)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Бөліңіз және жеңіңіз: FFT (бейне)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ФФТ-ны түсіну](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Блум сүзгісі + - m бит және k хэштеу функциялары бар Блум сүзгісін ескере отырып, кірістіру және мүшелік сынағы O(k) болып табылады. + - [Блум сүзгілері (бейне)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Блум сүзгілері | Жаппай деректер жиынын өндіру | Стэнфорд университеті (бейне)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Оқулық](http://billmill.org/bloomfilter-tutorial/) + - [Блум сүзгісі қолданбасын қалай жазуға болады](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) +- ### Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri + - [Ünemdew](https://thrift.apache.org/) + - [Oqwlıq](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protokol bwferleri](https://developers.google.com/protocol-buffers/) + - [Oqwlıqtar](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [Java äzirlewşilerine arnalğan gRPC 101 (beyne)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Oqwlıq](http://try.redis.io/) + - [Amazon SQS (kezek)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Bastaw](https://www.rabbitmq.com/getstarted.html) + - [Selderey](http://www.celeryproject.org/) + - [Seldereymen alğaşqı qadamdar](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) + - [ZeroMQ](http://zeromq.org/) + - [Kirispe - Nusqawlıqtı oqw](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [Izdew algorïtmi](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Joldı tabw (E01: algorïtmdi tüsindirw) (beyne)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Jıldam Fwre türlendirwi + - [Fwre türlendirwine arnalğan ïnteraktïvti nusqawlıq](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Fwre türlendirwi degenimiz ne? Ol ne üşin qoldanıladı?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Fwre türlendirwi degenimiz ne? (beyne)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Böliñiz jäne jeñiñiz: FFT (beyne)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [FFT-nı tüsinw](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Blwm süzgisi + - m bït jäne k xéştew fwnkcïyaları bar Blwm süzgisin eskere otırıp, kiristirw jäne müşelik sınağı O(k) bolıp tabıladı. + - [Blwm süzgileri (beyne)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Blwm süzgileri | Jappay derekter jïının öndirw | Sténford wnïversïteti (beyne)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Oqwlıq](http://billmill.org/bloomfilter-tutorial/) + - [Blwm süzgisi qoldanbasın qalay jazwğa boladı](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- [Сарада Херкенің графикалық теориясы (67 бейне)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Информатика курстары + +- [Онлайн CS курстары каталогы](https://github.com/open-source-society/computer-science) +- [CS курстарының каталогы (көптеген онлайн дәрістер бар)](https://github.com/prakhar1989/awesome-courses) + +## Алгоритмдерді енгізу + +- [Принстон университетінің бірнеше алгоритмдерді енгізуі](https://algs4.cs.princeton.edu/code) + + +## Қағаздар + +- [Классикалық қағаздарды ұнатасыз ба?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Тізбекті процестермен байланысу](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go жүйесінде жүзеге асырылды](https://godoc.org/github.com/thomas11/csp) +- [2003: Google файлдық жүйесі](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 жылы Колосспен ауыстырылды +- [2004: MapReduce: Үлкен кластерлерде оңайлатылған деректерді өңдеу]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - негізінен Cloud Dataflow ауыстырылды ма? +- [2006: Bigtable: құрылымдық деректерге арналған таратылған сақтау жүйесі](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: Біріктірілген таратылған жүйелерге арналған Chubby Lock қызметі](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Динамо: Amazon-ның жоғары қолжетімді кілттер дүкені](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Динамо қағазы NoSQL революциясын бастады +- [2007: Әрбір бағдарламашы жад туралы не білуі керек (өте ұзақ және автор кейбір бөлімдерді өткізіп жіберуді ұсынады)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: жылдам мекенжай санитарлық тексерушісі: + - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [бейне](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google-дың ғаламдық таралған дерекқоры: + - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [бейне](https://www.usenix.org/node/170855) +- [2015: Google-дағы үздіксіз құбырлар](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Жаппай ауқымда жоғары қолжетімділік: Google-дың жарнамалар үшін деректер инфрақұрылымын құру](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Әзірлеушілер кодты қалай іздейді: жағдайды зерттеу](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- Қосымша қағаздар: [1000 қағаз](https://github.com/0voice/computer_expert_paper) + +## ЛИЦЕНЗИЯ + +[CC-BY-SA-4.0](./LICENSE.txt) +- [Sarada Xerkeniñ grafïkalıq teorïyası (67 beyne)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Ïnformatïka kwrstarı + +- [Onlayn CS kwrstarı katalogı](https://github.com/open-source-society/computer-science) +- [CS kwrstarınıñ katalogı (köptegen onlayn därister bar)](https://github.com/prakhar1989/awesome-courses) + +## Algorïtmderdi engizw + +- [Prïnston wnïversïtetiniñ birneşe algorïtmderdi engizwi](https://algs4.cs.princeton.edu/code) + + +## Qağazdar + +- [Klassïkalıq qağazdardı unatasız ba?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Tizbekti procestermen baylanısw](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go jüyesinde jüzege asırıldı](https://godoc.org/github.com/thomas11/csp) +- [2003: Google fayldıq jüyesi](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 jılı Kolosspen awıstırıldı +- [2004: MapReduce: Ülken klasterlerde oñaylatılğan derekterdi öñdew]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - negizinen Cloud Dataflow awıstırıldı ma? +- [2006: Bigtable: qurılımdıq derekterge arnalğan taratılğan saqtaw jüyesi](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: Biriktirilgen taratılğan jüyelerge arnalğan Chubby Lock qızmeti](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dïnamo: Amazon-nıñ joğarı qoljetimdi kiltter dükeni](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Dïnamo qağazı NoSQL revolyucïyasın bastadı +- [2007: Ärbir bağdarlamaşı jad twralı ne bilwi kerek (öte uzaq jäne avtor keybir bölimderdi ötkizip jiberwdi usınadı)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: jıldam mekenjay sanïtarlıq tekserwşisi: + - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [beyne](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google-dıñ ğalamdıq taralğan derekqorı: + - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [beyne](https://www.usenix.org/node/170855) +- [2015: Google-dağı üzdiksiz qubırlar](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Jappay awqımda joğarı qoljetimdilik: Google-dıñ jarnamalar üşin derekter ïnfraqurılımın qurw](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Äzirlewşiler kodtı qalay izdeydi: jağdaydı zerttew](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- Qosımşa qağazdar: [1000 qağaz](https://github.com/0voice/computer_expert_paper) + +## LÏCENZÏYa + +[CC-BY-SA-4.0](./LICENSE.txt) From a6a6cc33be8f9e1d920051bae52ba660355d0e43 Mon Sep 17 00:00:00 2001 From: yaggit Date: Sat, 1 Oct 2022 18:27:59 +0530 Subject: [PATCH 679/857] git cheat sheet added --- .../cheat sheets/git-cheat-sheet-education.pdf | Bin 0 -> 100194 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 extras/cheat sheets/git-cheat-sheet-education.pdf diff --git a/extras/cheat sheets/git-cheat-sheet-education.pdf b/extras/cheat sheets/git-cheat-sheet-education.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36464c78a6fe5b1d5096e90c0034c20217012ef2 GIT binary patch literal 100194 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 Date: Thu, 6 Oct 2022 06:48:03 +0800 Subject: [PATCH 680/857] update link for `Translations` --- translations/README-tw.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index 75b5d13cec..a7108295dd 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -14,11 +14,20 @@
翻譯: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [繁體中文](translations/README-tw.md) +- [中文版本](README-cn.md) +- [Tiếng Việt - Vietnamese](README-vi.md) +- [Español](README-es.md) +- [Português Brasileiro](README-ptbr.md) +- [Polish](README-pl.md) +- [繁體中文](README-tw.md) +- [Japanese (日本語)](README-ja.md) +- [Russian](README-ru.md) +- [German](README-de.md) +- [Bahasa Indonesia](README-id.md) +- [ខ្មែរ - Khmer](README-kh.md) +- [Uzbek](README-uz.md) +- [Bulgarian](README-bg.md) +- [বাংলা - Bangla](README-bn.md)
@@ -27,20 +36,18 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) @@ -1912,4 +1919,4 @@ Coding面試題目影片: ## LICENSE -[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file +[CC-BY-SA-4.0](./LICENSE.txt) From d2fa7fad5f275384910b9a8f00ab60fc20123d91 Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Wed, 5 Oct 2022 19:00:26 -0700 Subject: [PATCH 681/857] Update link to binary search review --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f3777491c..e2527e99e5 100644 --- a/README.md +++ b/README.md @@ -728,7 +728,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - - [ ] [[Review] Binary search in 3 minutes (video)](https://youtu.be/B25Gu5r0xUg) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion From 21ed43b2d6345250c087ce0938164ebb85bf15d6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:20:57 +0900 Subject: [PATCH 682/857] Tesing link. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2527e99e5..6d8ee724f2 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@

Special thanks to:

-

+

-

+
From 9cbb450210bd068fd8d93c1fc91cf158d6077f0a Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:22:27 +0900 Subject: [PATCH 683/857] Tesing link. --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 6d8ee724f2..431c04f0a9 100644 --- a/README.md +++ b/README.md @@ -62,23 +62,23 @@

Special thanks to:

- - -
- AlgoMonster -
-
-

- Master the technical interview without endless grinding. -

-
-
- Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time - and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve - any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident - as you walk into that interview! -
-
+ + +
+ AlgoMonster +
+
+

+ Master the technical interview without endless grinding. +

+
+
+ Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + as you walk into that interview! +
+

From 167c71499ed9723cbfe710b48eb5e78e24da21f8 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:23:43 +0900 Subject: [PATCH 684/857] Tesing link. --- README.md | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 431c04f0a9..49499c6b51 100644 --- a/README.md +++ b/README.md @@ -62,24 +62,25 @@

Special thanks to:

- - -
- AlgoMonster -
-
-

- Master the technical interview without endless grinding. -

-
-
- Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time - and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve - any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident - as you walk into that interview! -
-
- + +
From 857cb461c63a4aecbeb1ae224bfae11a8b9c5c89 Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:25:24 +0900 Subject: [PATCH 685/857] Tesing link. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 49499c6b51..3e33562625 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,6 @@
-
From 61022adbf12f2a07fdd56d950f92d28a2e233d1f Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:25:52 +0900 Subject: [PATCH 686/857] Tesing link. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3e33562625..e2527e99e5 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@

Special thanks to:

- +


From e0a0151a8dd14b2396f6a4000b0312c6dd97ed8d Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:26:26 +0900 Subject: [PATCH 687/857] Fixing link. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2527e99e5..3e33562625 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@

Special thanks to:

-

+


From ae3c9e6eaac65a0fdc6d79bfd2f7aa7caf87659e Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 14 Oct 2022 08:32:01 +0900 Subject: [PATCH 688/857] Fixing link. --- translations/README-af.md | 4 ++-- translations/README-ar.md | 4 ++-- translations/README-bg.md | 4 ++-- translations/README-bn.md | 4 ++-- translations/README-cn.md | 4 ++-- translations/README-de.md | 4 ++-- translations/README-es.md | 4 ++-- translations/README-fa.md | 4 ++-- translations/README-fr.md | 4 ++-- translations/README-he.md | 4 ++-- translations/README-hi.md | 4 ++-- translations/README-id.md | 4 ++-- translations/README-it.md | 4 ++-- translations/README-ja.md | 4 ++-- translations/README-kh.md | 4 ++-- translations/README-ko.md | 4 ++-- translations/README-pl.md | 4 ++-- translations/README-ptbr.md | 4 ++-- translations/README-ru.md | 4 ++-- translations/README-th.md | 4 ++-- translations/README-tr.md | 4 ++-- translations/README-tw.md | 4 ++-- translations/README-uk.md | 4 ++-- translations/README-ur.md | 4 ++-- translations/README-uz.md | 4 ++-- translations/README-vi.md | 4 ++-- 26 files changed, 52 insertions(+), 52 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index 9158e92483..5ec0cecb63 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -62,7 +62,7 @@

Spesiale dank aan:

-

+


diff --git a/translations/README-ar.md b/translations/README-ar.md index 9c2c0fc766..c3b9d9da5b 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -61,7 +61,7 @@

Special thanks to:

-

+


diff --git a/translations/README-bg.md b/translations/README-bg.md index 977f7f7e4a..f2144cfc4f 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -55,7 +55,7 @@

Special thanks to:

-

+


diff --git a/translations/README-bn.md b/translations/README-bn.md index c13fd574cf..218dbb3ecc 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -58,7 +58,7 @@

Special thanks to:

-

+


diff --git a/translations/README-cn.md b/translations/README-cn.md index 29a76ce03e..004dae02c2 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -16,7 +16,7 @@

特别感谢:

-

+


diff --git a/translations/README-de.md b/translations/README-de.md index 62296a6764..fda0457316 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -52,7 +52,7 @@

Special thanks to:

-

+


diff --git a/translations/README-es.md b/translations/README-es.md index 5731519944..5e7fc0685f 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -54,7 +54,7 @@

Special thanks to:

-

+


diff --git a/translations/README-fa.md b/translations/README-fa.md index 4fd8faf9db..2a30ff5b47 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -58,7 +58,7 @@

Special thanks to:

-

+


diff --git a/translations/README-fr.md b/translations/README-fr.md index 5c85c95f29..079906171c 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -13,7 +13,7 @@ Traductions:

Special thanks to:

-

+


diff --git a/translations/README-he.md b/translations/README-he.md index 5083bf5db5..385a2f88b4 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -25,7 +25,7 @@

Special thanks to:

-

+


diff --git a/translations/README-hi.md b/translations/README-hi.md index a40a797029..d16afe6965 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -64,7 +64,7 @@

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

-

+


diff --git a/translations/README-id.md b/translations/README-id.md index c00fa76ca6..7ea2d71913 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -10,7 +10,7 @@ Versi asli: [Bahasa Inggris](../README.md)

Special thanks to:

-

+


diff --git a/translations/README-it.md b/translations/README-it.md index 6d5b4785b8..9f4bab8ab0 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -67,7 +67,7 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh)

Un ringraziamento speciale a:

-

+


diff --git a/translations/README-ja.md b/translations/README-ja.md index 3dc33539ba..b3b7c8a69c 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -41,7 +41,7 @@

Special thanks to:

-

+


diff --git a/translations/README-kh.md b/translations/README-kh.md index 197222c7a8..bb6c333558 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -54,7 +54,7 @@

Special thanks to:

-

+


diff --git a/translations/README-ko.md b/translations/README-ko.md index 14e6c64129..4007987a68 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -59,7 +59,7 @@

Special thanks to:

-

+


diff --git a/translations/README-pl.md b/translations/README-pl.md index 8230cb481f..5209f0ecc8 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -51,7 +51,7 @@

Special thanks to:

-

+


## Co to jest? diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 6bec214af8..f9ba2c7ddb 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -47,7 +47,7 @@ Traduções em progresso:

Special thanks to:

-

+


diff --git a/translations/README-ru.md b/translations/README-ru.md index 79ed130a31..b9ebc0bb32 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -10,7 +10,7 @@

Особые благодарности:

-

+


diff --git a/translations/README-th.md b/translations/README-th.md index e3cf096b40..b5f823f282 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -34,7 +34,7 @@

Special thanks to:

-

+


diff --git a/translations/README-tr.md b/translations/README-tr.md index d9be047b4b..f691396981 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -57,7 +57,7 @@

Special thanks to:

-

+


diff --git a/translations/README-tw.md b/translations/README-tw.md index a7108295dd..1f5be7e847 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -59,7 +59,7 @@

Special thanks to:

-

+


diff --git a/translations/README-uk.md b/translations/README-uk.md index be968d101e..9fa7c83600 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -60,7 +60,7 @@ Microsoft.

Special thanks to:

-

+


diff --git a/translations/README-ur.md b/translations/README-ur.md index ff1b10c967..ebc22792af 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -52,7 +52,7 @@

Special thanks to:

-

+


diff --git a/translations/README-uz.md b/translations/README-uz.md index e35c332d9b..44f456eb0c 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -20,7 +20,7 @@ Asl versiyasi: [Inglizcha](../README.md)

Special thanks to:

-

+


diff --git a/translations/README-vi.md b/translations/README-vi.md index e72e0e7bf2..e993f03566 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -37,7 +37,7 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Special thanks to:

-

+


From ee13e8577ee3ac0fb29044cba8064863aa47c625 Mon Sep 17 00:00:00 2001 From: Vishal Kumar <112061222+Vish1161@users.noreply.github.com> Date: Fri, 14 Oct 2022 16:08:38 +0530 Subject: [PATCH 689/857] Added a helpful resource Hey, I have added a helpful reference link for C language in the C section that I think will best add to your content and give your readers a more diverse understanding of the topic. I hope you will like this. Thank you. --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index 4a480993a5..a128ac3378 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -11,6 +11,7 @@ - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8) - [Let us C](https://books.google.co.in/books/about/Let_Us_C.html?id=7HrjAAAACAAJ) - [Complete C programming for beginners](https://youtu.be/KJgsSFOSQv0) + - [Learn C in Detail](https://www.scaler.com/topics/c/) - C++ - [C++ Cheat Sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Cpp_reference.pdf) From 730d5b7eaecd825b1069cadc1646154e37bd033c Mon Sep 17 00:00:00 2001 From: Sattwikee Ghosh Date: Sun, 16 Oct 2022 12:59:11 +0530 Subject: [PATCH 690/857] Update README-bn.md --- translations/README-bn.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 218dbb3ecc..9a4f2e9eca 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1,16 +1,15 @@ -#কোডিং সাক্ষাত্কার বিশ্ববিদ্যালয় - -> আমি এটি প্রথমে একটি সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য অধ্যয়নের বিষয়গুলির একটি স্বল্প-করণীয় তালিকা হিসাবে তৈরি করেছি, -> তবে এটি আজ আপনি যে বৃহত তালিকায় দেখতে পেলেন grew এই অধ্যয়নের পরিকল্পনাটি পেরিয়ে যাওয়ার পরে, [আমি নিয়োগ পেয়েছি -> [অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। -> -> আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্য আমি কেন ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +# কোডিং সাক্ষাত্কার বিশ্ববিদ্যালয় + +> আমি এটি, প্রথমে,একটি সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য অধ্যয়নের বিষয়গুলির একটি স্বল্প-করণীয় তালিকা হিসাবে তৈরি করেছিলাম, +> তবে এটি আজ এক বৃহত তালিকার রুপ ধারণ করেছে যা আপনি দেখতে পাচ্ছেন । এই অধ্যয়নের পরিকল্পনাটি শেষ করার পরে, [আমি অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে নিয়োগ পেয়েছি।](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> +> আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই পাবেন। > -> এখানে তালিকাভুক্ত আইটেমগুলি কোনও সফ্টওয়্যার সংস্থার সম্পর্কে আপনাকে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে, -> জায়ান্ট সহ: অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট। +> আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্যি কেন আমি ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> * আপনার জন্য শুভকামনা! * +> এখানে তালিকাভুক্ত আইটেমগুলি আপনাকে, অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট - এর মতো টেক জায়ান্টস সহ যে কোনও সফ্টওয়্যার সংস্থার সম্পর্কে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে । +> +> *আপনার জন্য শুভকামনা!*
অনুবাদ: From 1c6b6d9eda56b45d192091119ae3491e10410395 Mon Sep 17 00:00:00 2001 From: name Date: Tue, 18 Oct 2022 09:04:11 -0700 Subject: [PATCH 691/857] dutch-translation --- README_DUTCH.md | 1907 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1907 insertions(+) create mode 100644 README_DUTCH.md diff --git a/README_DUTCH.md b/README_DUTCH.md new file mode 100644 index 0000000000..5b07b61f7e --- /dev/null +++ b/README_DUTCH.md @@ -0,0 +1,1907 @@ +# Codering Interview Universiteit + +> Ik heb dit oorspronkelijk gemaakt als een korte takenlijst met studieonderwerpen om een ​​software-ingenieur te worden, +> maar het groeide uit tot de grote lijst die je vandaag ziet. Nadat ik dit studieplan had doorlopen, [werd ik aangenomen +> als Software Development Engineer bij Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Je hoeft waarschijnlijk niet zo veel te studeren als ik. Hoe dan ook, alles wat je nodig hebt is hier. +> +> Ik studeerde ongeveer 8-12 uur per dag, gedurende enkele maanden. Dit is mijn verhaal: [Waarom ik 8 maanden fulltime heb gestudeerd voor een Google-interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> +> **Let op:** Je hoeft niet zoveel te studeren als ik. Ik verspilde veel tijd aan dingen die ik niet hoefde te weten. Hieronder meer info daarover. Ik help je daar te komen zonder je kostbare tijd te verspillen. +> +> De items die hier worden vermeld, zullen je goed voorbereiden op een technisch interview bij zowat elk softwarebedrijf, +> inclusief de reuzen: Amazon, Facebook, Google en Microsoft. +> +> *Veel succes voor jou!* + +
+Vertalingen: + +- [中文版本](vertalingen/README-cn.md) +- [Tiếng Việt - Vietnamees](translations/README-vi.md) +- [Español](vertalingen/README-es.md) +- [Português Brasileiro](vertalingen/README-ptbr.md) +- [Pools](vertalingen/README-pl.md) +- [繁體中文](vertalingen/README-tw.md) +- [Japans (日本語)](vertalingen/README-ja.md) +- [Russisch](vertalingen/README-ru.md) +- [Duits](vertalingen/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](vertalingen/README-kh.md) +- [Oezbeeks](vertalingen/README-uz.md) +- [Bulgaars](vertalingen/README-bg.md) +- [বাংলা - Bangla](vertalingen/README-bn.md) + +
+ +
+Bezig met vertalingen: + +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabisch](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turks](https://github.com/jwasham/coding-interview-university/issues/90) +- [Frans](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Koreaans(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thais](https://github.com/jwasham/coding-interview-university/issues/156) +- [Grieks](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Perzisch - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) + +
+ + + +## Wat is het? + +![Coderen op het whiteboard - van HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Dit is mijn meermaandelijkse studieplan om software-engineer te worden voor een groot bedrijf. + +**Verplicht:** +* Een beetje ervaring met coderen (variabelen, loops, methoden/functies, enz.) +* Geduld +* Tijd + +Let op: dit is een studieplan voor **software-engineering**, niet voor webontwikkeling. Grote softwarebedrijven zoals Google, Amazon, +Facebook en Microsoft zien software-engineering als iets anders dan webontwikkeling. Amazon heeft bijvoorbeeld: +Frontend Engineers (FEE) en Software Development Engineers (SDE). Dit zijn 2 aparte rollen en de interviews voor +ze zullen niet hetzelfde zijn, omdat ze elk hun eigen competenties hebben. Deze bedrijven hebben informaticakennis nodig voor: +softwareontwikkeling / engineering rollen. + +--- + +## Inhoudsopgave + +### Het studieplan + +- [Wat is het?](#wat-is + +-het) +- [Waarom het gebruiken?](#why-use-it) +- [Hoe het te gebruiken](#hoe-te-gebruiken) +- [Heb niet het gevoel dat je niet slim genoeg bent](#dont-feel-you-aret-snot-slim-genoeg) +- [Een opmerking over videobronnen](#a-note-about-video-resources) +- [Kies een programmeertaal](#kies-een-programmeertaal) +- [Boeken voor gegevensstructuren en algoritmen](#boeken-voor-gegevensstructuren-en-algoritmen) +- [Interview Prep Books](#interview-prep-books) +- [Maak mijn fouten niet](#maak mijn fouten niet) +- [Wat u niet zult zien gedekt](#wat-u-niet-gedekt) +- [Het dagelijkse plan](#het-dagplan) +- [Codering Question Practice] (#coding-question-practice) +- [Codeerproblemen](#coderingsproblemen) + +### Onderwerpen van studie + +- [Algoritmische complexiteit / Big-O / Asymptotische analyse](#algoritmische complexiteit--big-o--asymptotische-analyse) +- [Datastructuren](#datastructuren) + - [Arrays](#arrays) + - [Gelinkte lijsten](#linked-lijsten) + - [Stapel](#stapel) + - [Wachtrij](#wachtrij) + - [Hash-tabel](#hash-tabel) +- [Meer kennis](#meer-kennis) + - [Binair zoeken](#binair zoeken) + - [Bitwise-bewerkingen](#bitsgewijze-bewerkingen) +- [Bomen](#bomen) + - [Bomen - Notities & Achtergrond](#bomen---notes--achtergrond) + - [Binaire zoekbomen: BST's](#binaire-zoekbomen-bsts) + - [Heap / Priority Queue / Binary Heap] (#heap--priority-queue--binary-heap) + - evenwichtige zoekbomen (algemeen concept, geen details) + - traversals: preorder, inorder, postorder, BFS, DFS +- [Sorteren](#sorteren) + - selectie + - invoeging + - hoopje + - Snel sorteren + - sorteer samenvoegen +- [Grafieken](#grafieken) + - geregisseerd + - ongericht + - aangrenzende matrix + - aangrenzende lijst + - traversals: BFS, DFS +- [Nog meer kennis](#even-meer-kennis) + - [Recursie](#recursie) + - [Dynamisch programmeren](#dynamisch programmeren) + - [Ontwerppatronen](#ontwerppatronen) + - [Combinatoriek (n kies k) & Waarschijnlijkheid](#combinatoriek-n-kies-k--kans) + - [NP, NP-compleet en benaderingsalgoritmen](#np-np-complete-en-benadering-algoritmen) + - [Hoe computers een programma verwerken](#hoe-computers-een-programma verwerken) + - [Caches](#caches) + - [Processen en threads](#processes-and-threads) + - [Testen](#testen) + - [String zoeken & manipulaties](#string-zoeken--manipulaties) + - [Probeert](#pogingen) + - [Drijvende-kommagetallen](#zwevende-kommagetallen) + - [Unicode](#unicode) + - [Endianness](#endianness) + - [Netwerken](#netwerken) +- [Eindbeoordeling](#laatste beoordeling) + +### De baan krijgen + +- [Update uw cv](#update-uw-cv) +- [Vind een baan](#zoek een baan) +- [Interviewproces en algemene interviewvoorbereiding](#interview-proces--general-interview-prep) +- [Denk aan voor wanneer het interview komt](#be-denk-aan-voor-wanneer-het-interview-komt) +- [Heeft vragen voor de interviewer](#have-questions-for-the-interviewer) +- [Zodra je de baan hebt](#once-you-ve-got-the-job) + +**---------------- Alles onder dit punt is optioneel ----------------** + +### Optionele extra onderwerpen en bronnen + +- [Extra boeken](#additional-books) +- [Systeemontwerp, schaalbaarheid, gegevensverwerking](#system-design-scalability-data-handling) (als je meer dan 4 jaar ervaring hebt) +- [Aanvullend leren](#aanvullend leren) + - [Compilers](#compilers) + - [Emacs en vi(m)](#emacs-en-vim) + - [Unix-opdrachtregeltools](#unix-command-line-tools) + - [Informatietheorie](#informatietheorie-video's) + - [Pariteits- en Hamming-code] (#pariteit--hamming-code-video's) + - [Entropie](#entropie) + - [Cryptografie](#cryptografie) + - [Compressie](#compressie) + - [Computerbeveiliging](#computerbeveiliging) + - [Vuilnisophaling](#vuilnisophaling) + - [Parallel programmeren](#parallel programmeren) + - [Messaging-, serialisatie- en wachtrijsystemen](#messaging-serialisatie-en-wachtrij-systemen) + - [A*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Lokaliteitsgevoelige hashing](#lokaliteitsgevoelige-hashing) + - [van Emde Boas-bomen](#van-emde-boas-bomen) + - [Augmented Data Structures](#augmented-data-structures) + - [Gebalanceerde zoekbomen](#balanced-zoekbomen) + - AVL-bomen + - Spreid bomen + - Rood/zwarte bomen + - 2-3 zoekbomen + - 2-3-4 bomen (ook bekend als 2-4 bomen) + - N-ary (K-ary, M-ary) bomen + -B-bomen + - [k-D Bomen](#k-d-bomen) + - [Skip-lijsten](#skip-lijsten) + - [Netwerkstromen](#netwerkstromen) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Wiskunde voor snelle verwerking](#math-voor-snelle verwerking) + - [Treap](#treap) + - [Lineaire programmering](#lineaire-programmeervideo's) + - [Geometrie, bolle romp](#geometry-convex-hull-video's) + - [Discrete wiskunde](#discrete-wiskunde) +- [Extra details over sommige onderwerpen](#additional-detail-on-sommige-onderwerpen) +- [Video-serie](#video-serie) +- [Informatica-cursussen](#informatica-cursussen) +- [Papieren](#papieren) + +--- + +## Waarom gebruiken? + +Als je als software engineer voor een groot bedrijf wilt werken, is de + +dit zijn de dingen die je moet weten. + +Als je een graad in computerwetenschappen hebt gemist, zoals ik, zal dit je inhalen en vier jaar van je leven redden. + +Toen ik aan dit project begon, kende ik geen stapel van een hoop, ik wist niets van Big-O of iets over bomen, of hoe ik +een grafiek doorkruisen. Als ik een sorteeralgoritme moest coderen, kan ik je vertellen dat het verschrikkelijk zou zijn geweest. +Elke gegevensstructuur die ik ooit had gebruikt, was in de taal ingebouwd en ik wist niet hoe ze werkten +helemaal onder de motorkap. Ik hoefde nooit het geheugen te beheren, tenzij een proces dat ik aan het uitvoeren was een "out of" zou geven +memory"-fout, en dan zou ik een tijdelijke oplossing moeten vinden. Ik gebruikte een paar multidimensionale arrays in mijn leven en +duizenden associatieve arrays, maar ik heb nooit helemaal opnieuw gegevensstructuren gemaakt. + +Het is een lang plan. Het kan maanden duren. Als je hier al veel van kent, kost het je veel minder tijd. + +## Hoe te gebruiken + +Alles hieronder is een overzicht en je moet de items van boven naar beneden in volgorde aanpakken. + +Ik gebruik de speciale markdown-smaak van GitHub, inclusief takenlijsten om de voortgang bij te houden. + - [Meer over GitHub-gearomatiseerde markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### Als je git . niet wilt gebruiken + +Klik op deze pagina op de codeknop bovenaan en klik vervolgens op "Download ZIP". Pak het bestand uit en u kunt met de tekstbestanden werken. + +Als je open bent in een code-editor die markdown begrijpt, zie je alles netjes opgemaakt. + +![Hoe download je de repo als zip-bestand](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Als je vertrouwd bent met git + +Maak een nieuwe branch zodat je dit soort items kunt aanvinken, zet gewoon een x tussen de haakjes: [x] + +1. ***Fork de GitHub-repo:*** `https://github.com/jwasham/coding-interview-university` door op de Fork-knop te klikken. + + ![Fork de GitHub-repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. Kloon naar uw lokale repo: + + ``` + git clone git@github.com:/coding-interview-university.git + cd codering-interview-universiteit + git checkout -b voortgang + git remote jwasham toevoegen https://github.com/jwasham/coding-interview-university + git fetch --all + ``` + +1. Markeer alle vakjes met X nadat u uw wijzigingen hebt voltooid: + + ``` + git toevoegen. + git commit -m "Gemarkeerd met x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + ``` + +## Heb niet het gevoel dat je niet slim genoeg bent + +- Succesvolle software-engineers zijn slim, maar velen hebben de onzekerheid dat ze niet slim genoeg zijn. +- De volgende video's kunnen u helpen deze onzekerheid te overwinnen: + - [De mythe van de Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [Het is gevaarlijk om alleen te gaan: vechten tegen de onzichtbare monsters in technologie](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Een opmerking over videobronnen + +Sommige video's zijn alleen beschikbaar door je in te schrijven voor een Coursera- of EdX-les. Dit worden MOOC's genoemd. +Soms zijn de lessen niet in sessie, dus je moet een paar maanden wachten, dus je hebt geen toegang. + +Het zou geweldig zijn om de online cursusbronnen te vervangen door gratis en altijd beschikbare openbare bronnen, +zoals YouTube-video's (bij voorkeur universitaire colleges), zodat jullie deze op elk moment kunnen bestuderen, +niet alleen wanneer een specifieke online cursus in sessie is. + +## Kies een programmeertaal + +Je moet een programmeertaal kiezen voor de coderingsinterviews die je doet, +maar je zult ook een taal moeten vinden die je kunt gebruiken om computerwetenschappelijke concepten te bestuderen. + +Bij voorkeur is de taal hetzelfde, zodat je er maar één machtig hoeft te zijn. + +### Voor dit studieplan + +Toen ik het studieplan maakte, gebruikte ik voor het grootste deel 2 talen: C en Python + +* C: Zeer laag niveau. Hiermee kunt u omgaan met pointers en geheugentoewijzing/deallocatie, zodat u de gegevensstructuren voelt + en algoritmen in je botten. In hogere talen zoals Python of Java zijn deze voor u verborgen. In het dagelijkse werk is dat geweldig, + maar als je leert hoe deze low-level datastructuren worden gebouwd, is het geweldig om je dicht bij het metaal te voelen. + - C is overal. Je ziet voorbeelden in boeken, lezingen, video's, *overal* terwijl je studeert. + - [De programmeertaal C, deel 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Dit is een kort boek, maar het geeft je een goede greep op de C-taal en als je het een beetje oefent + je bent snel onder de knie. Inzicht in C helpt u te begrijpen hoe programma's en geheugen werken. + - Je hoeft niet super diep in het boek te gaan (of het zelfs maar af te maken). Ga gewoon naar waar u zich prettig voelt bij het lezen en schrijven in C. + - [Antwoorden op vragen in het boek](https://github.com/lekkas/c-algorithms) +* Python: modern en zeer expressief, ik heb het geleerd omdat het gewoon super handig is en me ook in staat stelt minder code te schrijven in een interview. + +Dit heeft mijn voorkeur. Je doet wat je leuk vindt, of co + +Ik herinnerde het me niet. Ik heb 3 dagen doorgebracht +door mijn aantekeningen en het maken van flashcards, zodat ik kon beoordelen. Ik had al die kennis niet nodig. + +Lees alsjeblieft zodat je mijn fouten niet maakt: + +[Informaticakennis behouden](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. Gebruik Flashcards + +Om het probleem op te lossen, heb ik een kleine flashcards-site gemaakt waar ik flashcards van 2 soorten kon toevoegen: algemeen en code. +Elke kaart heeft een andere opmaak. Ik heb een mobile-first website gemaakt, zodat ik op mijn telefoon of tablet kan reviewen, waar ik ook ben. + +Maak je eigen gratis: + +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) + +**IK RAAD NIET AAN om mijn flashcards te gebruiken.** Er zijn er teveel en de meeste zijn trivia die je niet nodig hebt. + +Maar als je niet naar me wilt luisteren, hier ga je: +- [Mijn flash-kaartendatabase (1200 kaarten)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Mijn flash-kaartendatabase (extreme - 1800 kaarten)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +Houd in gedachten dat ik overboord ging en kaarten heb die alles omvatten, van assembler en Python-trivia tot machine learning en statistieken. +Het is veel te veel voor wat nodig is. + +**Opmerking over flashcards:** De eerste keer dat u herkent dat u het antwoord weet, markeer het dan niet als bekend. Je moet de zien +dezelfde kaart en beantwoord deze meerdere keren goed voordat je het echt weet. Herhaling zal die kennis dieper in +je brein. + +Een alternatief voor het gebruik van mijn flashcard-site is [Anki](http://ankisrs.net/), dat mij al meerdere keren is aanbevolen. +Het gebruikt een herhalingssysteem om u te helpen herinneren. Het is gebruiksvriendelijk, beschikbaar op alle platforms en heeft een cloudsynchronisatiesysteem. +Het kost $ 25 op iOS, maar is gratis op andere platforms. + +Mijn flashcard-database in Anki-formaat: https://ankiweb.net/shared/info/25173560 (bedankt [@xiewenya](https://github.com/xiewenya)). + +Sommige studenten hebben opmaakproblemen met witruimte genoemd die kunnen worden opgelost door het volgende te doen: open dek, bewerk kaart, klik op kaarten, selecteer het keuzerondje "styling", voeg het lid "witruimte: pre;" toe naar de kaartklas. + +### 3. Stel sollicitatievragen in terwijl je aan het leren bent + +DIT IS ERG BELANGRIJK. + +Begin met het coderen van interviewvragen terwijl je datastructuren en algoritmen leert. + +Je moet wat je leert toepassen om problemen op te lossen, anders vergeet je het. Ik heb deze fout gemaakt. + +Als je eenmaal een onderwerp hebt geleerd en je er enigszins op je gemak bij voelt, bijvoorbeeld **gekoppelde lijsten**: +1. Open een van de [interviewboeken voor coderen](#interview-prep-books) (of websites met codeerproblemen, hieronder vermeld) +1. Stel 2 of 3 vragen over gekoppelde lijsten. +1. Ga verder met het volgende leeronderwerp. +1. Ga later terug en doe nog eens 2 of 3 problemen met gekoppelde lijsten. +1. Doe dit bij elk nieuw onderwerp dat je leert. + +**Blijf problemen doen terwijl je al deze dingen leert, niet daarna.** + +Je wordt niet aangenomen voor kennis, maar hoe je de kennis toepast. + +Hier zijn veel bronnen voor, hieronder opgesomd. Ga zo door. + +### 4. Focus + +Er zijn veel afleidingen die kostbare tijd in beslag kunnen nemen. Focus en concentratie zijn moeilijk. Zet wat muziek aan +zonder tekst en je kunt je goed concentreren. + +## Wat je niet gedekt ziet + +Dit zijn veelvoorkomende technologieën, maar maken geen deel uit van dit studieplan: + +-SQL +- Javascript +- HTML, CSS en andere front-end-technologieën + +## Het dagelijkse plan + +Deze cursus gaat over veel onderwerpen. Elk zal je waarschijnlijk een paar dagen kosten, of misschien zelfs een week of langer. Het hangt af van je schema. + +Neem elke dag het volgende onderwerp in de lijst, bekijk enkele video's over dat onderwerp en schrijf vervolgens een implementatie +van die datastructuur of dat algoritme in de taal die je voor deze cursus hebt gekozen. + +Je kunt mijn code hier zien: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +U hoeft niet elk algoritme te onthouden. Je moet het alleen voldoende kunnen begrijpen om je eigen implementatie te kunnen schrijven. + +## Oefenen met codeervragen + + Waarom is dit hier? Ik ben niet klaar om te interviewen. + +[Ga dan terug en lees dit.](#3-do-coding-interview-questions-while-youre-learning) + +Waarom je moet oefenen met programmeerproblemen: +- Probleemherkenning, en waar de juiste datastructuren en algoritmen in passen +- Het verzamelen van vereisten voor het probleem +- Praat je een weg door het probleem zoals je zult doen in het interview +- Coderen op een whiteboard of papier, niet op een computer +- Tijd- en ruimtecomplexiteit bedenken voor uw oplossingen (zie Big-O hieronder) +- Uw oplossingen testen + +Er is een geweldige introductie voor methodische, communicatieve probleemoplossing in een interview. Dit haal je uit de programmering +interviewboeken ook, maar ik vond dit opmerkelijk: +[Algoritme ontwerp canvas](http://www.hiredintech.com/algorithm-design/) + +Schrijf code op een whiteboard of papier, niet op een computer. Test met een steekproef + +e ingangen. Typ het vervolgens en test het op een computer. + +Als je thuis geen whiteboard hebt, pak dan een groot tekenblok bij een kunstwinkel. Je kunt op de bank zitten en oefenen. +Dit is mijn "bank whiteboard". Ik heb de pen op de foto toegevoegd alleen voor schaal. Als je een pen gebruikt, zou je willen dat je kon wissen. +Wordt snel rommelig. **Ik gebruik een potlood en gum.** + +![mijn bank whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**Het oefenen van codeervragen gaat niet over het onthouden van antwoorden op programmeerproblemen.** + +## Codeerproblemen + +Vergeet uw belangrijkste coderingsinterviewboeken niet [hier] (#interview-prep-books). + +Problemen oplossen: +- [Een oplossing vinden](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [Hoe een Topcoder-probleemverklaring te ontleden](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +Video's met sollicitatievragen over coderen: +- [IDeserve (88 video's)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 afspeellijsten)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Super voor walkthroughs van probleemoplossingen +- [Nick White - LeetCode Solutions (187 video's)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Goede uitleg van de oplossing en de code + - Je kunt er in korte tijd meerdere bekijken +- [FisherCoder - LeetCode-oplossingen](https://youtube.com/FisherCoder) +- [Neetcode - BLIND 75 LeetCode-oplossingen](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf) + - Goede uitleg van de oplossing en de python-code + - Bekijk ook [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) voor alle vragenlijst + - [Github-links](https://github.com/neetcode-gh/leetcode) voor alle oplossingencode + - [Neetcode 150](https://neetcode.io/) + +Uitdagingssites: +- [LeetCode](https://leetcode.com/) + - Mijn favoriete codeerprobleemsite. Het is het abonnementsgeld waard voor de 1-2 maanden die je waarschijnlijk gaat voorbereiden. + - Zie Nick White en FisherCoder-video's hierboven voor uitleg over de code. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks voor Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) +- [AlgoExpert](https://www.algoexpert.io/product) + - Gemaakt door Google-ingenieurs, dit is ook een uitstekende bron om uw vaardigheden aan te scherpen. + +## Laten we beginnen + +Oké, genoeg gepraat, laten we leren! + +Maar vergeet niet om codeerproblemen van bovenaf op te lossen terwijl je leert! + +## Algoritmische complexiteit / Big-O / Asymptotische analyse + +- Hier hoef je niets te implementeren, je kijkt alleen maar video's en maakt aantekeningen! Hoera! +- Er zijn hier veel video's. Kijk net genoeg tot je het begrijpt. U kunt altijd terugkomen en beoordelen. +- Maak je geen zorgen als je niet alle wiskunde erachter begrijpt. +- Je hoeft alleen maar te begrijpen hoe je de complexiteit van een algoritme kunt uitdrukken in termen van Big-O. +- [ ] [Harvard CS50 - Asymptotische notatie (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (algemene korte handleiding) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (en Omega en Theta) - beste wiskundige uitleg (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Analyse afgeschreven (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (inclusief recursierelaties en hoofdstelling): + - [Computational Complexity: Sectie 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Sectie 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [Cheatsheet](http://bigocheatsheet.com/) + +Nou, dat is ongeveer genoeg van dat. + +Als je "Cracking the Coding Interview" doorloopt, is er een hoofdstuk hierover en aan het einde is er een quiz om te zien +als u de runtime-complexiteit van verschillende algoritmen kunt identificeren. Het is een super review en test. + +## Data structuren + +- ### Arrays + - [ ] Over arrays: + - [Arrays (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Lineaire en multi-dim arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Begin met kijken vanaf 15m 32s) + - [Dynamische arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implementeer een vector (veranderlijke array met automatisch formaat wijzigen): + - [ ] Oefen met coderen met ar + + stralen en aanwijzers, en aanwijzer wiskunde om naar een index te springen in plaats van indexering te gebruiken. + - [ ] Nieuwe array met onbewerkte gegevens met toegewezen geheugen + - kan int-array onder de motorkap toewijzen, alleen de functies ervan niet gebruiken + - begin met 16, of als het startnummer groter is, gebruik dan de macht 2 - 16, 32, 64, 128 + - [ ] maat() - aantal items + - [ ] capacity() - aantal items dat het kan bevatten + - [ ] is leeg() + - [ ] at(index) - retourneert item bij gegeven index, wordt opgeblazen als index buiten de grenzen valt + - [ ] duwen (item) + - [ ] insert (index, item) - voegt item toe aan index, verschuift de waarde van die index en volgende elementen naar rechts + - [ ] prepend(item) - kan invoegen hierboven gebruiken bij index 0 + - [ ] pop() - verwijder van einde, retourneer waarde + - [ ] delete(index) - verwijder item bij index, waarbij alle achterliggende elementen naar links worden verschoven + - [ ] remove(item) - zoekt naar waarde en verwijdert index die deze vasthoudt (zelfs als op meerdere plaatsen) + - [ ] find(item) - zoekt naar waarde en retourneert eerste index met die waarde, -1 indien niet gevonden + - [ ] formaat wijzigen (nieuwe_capaciteit) // privéfunctie + - wanneer u de capaciteit bereikt, verkleint u het formaat om de grootte te verdubbelen + - wanneer u een item laat vallen, als de grootte 1/4 van de capaciteit is, verklein dan de grootte naar de helft + - [ ] Tijd + - O(1) om aan het einde toe te voegen/te verwijderen (afgeschreven voor toewijzingen voor meer ruimte), indexeren of bijwerken + - O(n) om ergens anders in te voegen/te verwijderen + - [ ] Ruimte + - aaneengesloten in het geheugen, dus nabijheid helpt de prestaties + - benodigde ruimte = (matrixcapaciteit, dat is >= n) * grootte van item, maar zelfs als 2n, nog steeds O(n) + +- ### Gelinkte lijsten + - [ ] Beschrijving: + - [ ] [Singly Linked Lists (video)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [CS 61B - Gelinkte lijsten 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Gelinkte lijsten 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [C-code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - niet de hele video, alleen delen over Node struct en geheugentoewijzing + - [ ] Gelinkte lijst versus arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In de echte wereld gekoppelde lijsten versus arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd ) + - [ ] [Waarom je gelinkte lijsten (video) moet vermijden](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: je hebt pointer to pointer kennis nodig: + (voor wanneer u een aanwijzer doorgeeft aan een functie die het adres kan wijzigen waar die aanwijzer wijst) + Deze pagina is alleen bedoeld om een ​​idee te krijgen van ptr tot ptr. Ik raad deze lijst-traversal-stijl niet aan. De leesbaarheid en onderhoudbaarheid lijden onder slimheid. + - [Aanwijzingen naar aanwijzers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implementeren (ik deed met staartaanwijzer en zonder): + - [ ] size() - retourneert aantal gegevenselementen in lijst + - [ ] leeg() - bool geeft waar terug als het leeg is + - [ ] value_at(index) - retourneert de waarde van het n-de item (beginnend bij 0 voor de eerste) + - [ ] push_front(value) - voegt een item toe aan de voorkant van de lijst + - [ ] pop_front() - verwijder front item en retourneer de waarde + - [ ] push_back(value) - voegt een item toe aan het einde + - [ ] pop_back() - verwijdert het einditem en geeft zijn waarde terug + - [ ] front() - waarde van frontitem ophalen + - [ ] back() - waarde van het eindproduct ophalen + - [ ] insert (index, value) - voeg waarde in bij index, dus naar huidig ​​item in die index wordt verwezen door nieuw item in index + - [ ] erase(index) - verwijdert node bij gegeven index + - [ ] value_n_from_end(n) - retourneert de waarde van het knooppunt op de n-de positie vanaf het einde van de lijst + - [ ] reverse() - keert de lijst om + - [ ] remove_value(value) - verwijdert het eerste item in de lijst met deze waarde + - [ ] Dubbel gelinkte lijst + - [Beschrijving (video)](https://www.coursera.org/lecture/data-structures/double-linked-lists-jpGKD) + - Niet nodig om te implementeren + +- ### Stapel + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] Wordt niet geïmplementeerd. Implementeren met array is triviaal + +- ### Rij + - [ ] [Wachtrij (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circulaire buffer/FIFO](https://en.wikipedia.org/wiki/Circulaire_buffer) + - [ ] Implementeer met behulp van gekoppelde lijst, met staartaanwijzer: + - in de wachtrij plaatsen (waarde) - voegt waarde toe op positie aan de staart + - dequeue() - retourneert waarde en verwijdert het minst recent toegevoegde element (voorkant) + - leeg() + - [ ] Implementeer met array van vaste grootte: + - in de wachtrij plaatsen (waarde) - voegt item toe aan het einde van de beschikbare opslag + - dequeue() - geeft waarde terug en verwijdert het minst recent toegevoegde element + - leeg() + - vol + + () + - [ ] Kosten: + - een slechte implementatie met behulp van een gelinkte lijst waarbij u aan het hoofd in de wachtrij staat en aan de staart in de wachtrij staat, zou O (n) zijn + omdat je het voorlaatste element nodig hebt, waardoor elke dequeue een volledige doorgang veroorzaakt + - wachtrij: O(1) (afgeschreven, gekoppelde lijst en array [probing]) + - wachtrij: O(1) (gekoppelde lijst en array) + - leeg: O(1) (gekoppelde lijst en array) + +- ### Hash-tabel + - [ ] Videos: + - [ ] [Hashing met Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Tabelverdubbeling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open adressering, cryptografische hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: het woordenboek nog machtiger (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Geavanceerd) Randomisatie: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Geavanceerd) Perfect hashen (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Online cursussen: + - [ ] [Core Hash-tabellen (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Datastructuren (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Telefoonboekprobleem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] gedistribueerde hashtabellen: + - [Directe uploads en opslagoptimalisatie in Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Gedistribueerde hashtabellen (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Implementeren met array met lineair tasten + - hash(k, m) - m is de grootte van de hashtabel + - toevoegen (sleutel, waarde) - als de sleutel al bestaat, waarde bijwerken + - bestaat (sleutel) + - haal (sleutel) + - verwijderen (sleutel) + +## Meer kennis + +- ### Binaire zoekopdracht + - [ ] [Binair zoeken (video)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Binair zoeken (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [blauwdruk](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] Implementeren: + - binair zoeken (op gesorteerde reeks gehele getallen) + - binair zoeken met recursie + +- ### Bitsgewijze bewerkingen + - [ ] [Bits spiekbriefje](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - je zou veel van de machten van 2 van (2^1 tot 2^16 en 2^32) + - [ ] Krijg een goed begrip van het manipuleren van bits met: &, |, ^, ~, >>, << + - [ ] [woorden](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Goede inleiding: + [Bitmanipulatie (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programmeerhandleiding 2-10: Bitsgewijze operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bitmanipulatie](https://en.wikipedia.org/wiki/Bit_manipulatie) + - [ ] [Bitwise operatie](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit-hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) +- [ ] [Oefeningen](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s en 1s complement + - [Binair: plussen en minnen (waarom we het complement van twee gebruiken) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s aanvulling](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s-complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Aantal ingestelde bits + - [4 manieren om bits in een byte te tellen (video)](https://youtu.be/Hzuzo9NJrlc) + - [Bits tellen](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [Hoe het aantal ingestelde bits in een 32-bits geheel getal te tellen](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32 -bit-geheel getal) + - [ ] Waarden wisselen: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Absolute waarde: + - [Absoluut geheel getal](https://bits.stephan-brumme.com/absInteger. + + html) + +## Bomen + +- ### Bomen - Notities & Achtergrond + - [ ] [Serie: Bomen (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - basis boomconstructie + - doorkruising + - manipulatie-algoritmen + - [ ] [BFS(breedte-eerst zoeken) en DFS(diepte-eerst zoeken) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS-opmerkingen: + - niveauvolgorde (BFS, met wachtrij) + - tijdscomplexiteit: O(n) + - ruimtecomplexiteit: beste: O(1), slechtste: O(n/2)=O(n) + - DFS-opmerkingen: + - tijdscomplexiteit: O(n) + - complexiteit van de ruimte: + beste: O(log n) - gem. hoogte van de boom + slechtste: O(n) + - inorder (DFS: links, zelf, rechts) + - nabestelling (DFS: links, rechts, zelf) + - pre-order (DFS: zelf, links, rechts) + +- ### Binaire zoekbomen: BST's + - [ ] [Binaire zoekstructuurbeoordeling (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Inleiding (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - C/C++: + - [ ] [Binaire zoekboom - Implementatie in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST-implementatie - geheugentoewijzing in stapel en heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Vind min en max element in een binaire zoekboom (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Zoek hoogte van een binaire boom (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Binaire boomtraversal - breedte-eerst en diepte-eerst strategieën (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Binaire boom: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Binaire boomtraversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Controleer of een binaire boom een ​​binaire zoekboom is of niet (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Een knooppunt verwijderen uit de binaire zoekstructuur (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Opvolger in een binaire zoekboom (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Implementeren: + - [ ] voeg // waarde in boom in + - [ ] get_node_count // haal het aantal opgeslagen waarden op + - [ ] print_values ​​// print de waarden in de boom, van min tot max + - [ ] delete_tree + - [ ] is_in_tree // geeft true terug als de gegeven waarde in de boom voorkomt + - [ ] get_height // retourneert de hoogte in knooppunten (de hoogte van één knooppunt is 1) + - [ ] get_min // retourneert de minimale waarde die is opgeslagen in de boom + - [ ] get_max // retourneert de maximale waarde die is opgeslagen in de boom + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // retourneert de op één na hoogste waarde in de boom na de gegeven waarde, -1 als er geen is + +- ### Heap / Prioriteitswachtrij / Binaire Heap + - gevisualiseerd als een boom, maar is meestal lineair in opslag (array, gekoppelde lijst) + - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [Inleiding (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [Naïeve implementaties (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Binaire bomen (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Opmerking boomhoogte (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [Basisbewerkingen (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [Complete binaire bomen (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Heap Sort - springt om te starten (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Een hoop bouwen (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWY + + p6V_F-5jb5L2iHb) + - [ ] [CS 61B Lezing 24: Prioriteitswachtrijen (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [Lineaire tijd BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] Implementeer een max-heap: + - [ ] invoegen + - [ ] sift_up - nodig voor invoegen + - [ ] get_max - geeft het max item terug, zonder het te verwijderen + - [ ] get_size() - retourneer het aantal opgeslagen elementen + - [ ] is_empty() - geeft true terug als heap geen elementen bevat + - [ ] extract_max - geeft het max item terug en verwijdert het + - [ ] sift_down - nodig voor extract_max + - [ ] remove(x) - verwijdert item op index x + - [ ] heapify - maak een heap van een reeks elementen, nodig voor heap_sort + - [ ] heap_sort() - neem een ​​ongesorteerde array en verander het in een gesorteerde array op zijn plaats met behulp van een max heap of min heap + +## Sorteren + +- [ ] Opmerkingen: + - Implementeer sorteringen en ken de beste/slechtste, gemiddelde complexiteit van elk: + - geen bellensoort - het is verschrikkelijk - O(n^2), behalve wanneer n <= 16 + - [ ] Stabiliteit in sorteeralgoritmen ("Is Quicksort stabiel?") + - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [Stabiliteit in sorteeralgoritmen](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [Stabiliteit in sorteeralgoritmen](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [Sorteeralgoritmen - Stabiliteit](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Welke algoritmen kunnen worden gebruikt op gekoppelde lijsten? Welke op arrays? Welke op beide? + - Ik zou niet aanraden om een ​​gekoppelde lijst te sorteren, maar samenvoegen is mogelijk. + - [Samenvoegen sorteren voor gekoppelde lijst](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Voor heapsort, zie Heap-gegevensstructuur hierboven. Heap sort is geweldig, maar niet stabiel + +- [ ] [Sedgewick - Mergesort (5 video's)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorteercomplexiteit](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Vergelijkers](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stabiliteit](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 video's)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) + - [ ] [2. Selectie](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Dubbele sleutels](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. Systeemsorteringen](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lezing 29: Sorteren I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lezing 30: Sorteren II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lezing 32: Sorteren III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lezing 33: Sorteren V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + +- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [Bellen sorteren analyseren (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [Invoegen sorteren, samenvoegen sorteren (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [Invoegsortering (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [Samenvoegen Sorteren (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [Selectie sorteren (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Sorteercode samenvoegen: + - [ ] [Uitvoerarray (C) gebruiken](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [Uitvoerarray gebruiken (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Snelle sorteercode: + - [ ] [Implementatie (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [Implementatie (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [Implementatie (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] Implementeren: + +- [ ] Samenvoegen: O(n log n) gemiddelde en slechtste geval + - [ ] Quicksort O(n log n) gemiddeld geval + - Selectiesortering en invoegsortering zijn zowel O (n ^ 2) gemiddeld als in het slechtste geval + - Zie Heap-gegevensstructuur hierboven voor heapsort + +- [ ] Niet verplicht, maar ik heb ze aanbevolen: + - [ ] [Sedgewick - Radix Sorts (6 video's)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Minst significante cijfer eerste string Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Meest significante cijfer eerste string Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix-arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Radix Sorteren](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Radix sorteren (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (lineaire tijd gegeven beperkingen) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomisatie: Matrix Multiply, Quicksort, Freivalds' algoritme (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorteren in lineaire tijd (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Als samenvatting is hier een visuele weergave van [15 sorteeralgoritmen](https://www.youtube.com/watch?v=kPRA0W1kECg). +Als u meer details over dit onderwerp nodig hebt, raadpleegt u het gedeelte "Sorteren" in [Aanvullende details over sommige onderwerpen](#additional-detail-on-sommige-onderwerpen) + +## Grafieken + +Grafieken kunnen worden gebruikt om veel problemen in de informatica weer te geven, dus deze sectie is lang, net als bomen en sorteren. + +- Opmerkingen: + - Er zijn 4 basismanieren om een ​​grafiek in het geheugen weer te geven: + - objecten en wijzers + - aangrenzende matrix + - aangrenzende lijst + - aangrenzende kaart + - Maak uzelf vertrouwd met elke voorstelling en zijn voor- en nadelen + - BFS en DFS - ken hun computationele complexiteit, hun afwegingen en hoe ze in echte code kunnen worden geïmplementeerd + - Als je een vraag wordt gesteld, zoek dan eerst naar een op grafieken gebaseerde oplossing en ga dan verder als er geen is + +- [ ] MIT (video's): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Diepte-eerst zoeken](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Skiena Lezingen - geweldige intro: + - [ ] [CSE373 2020 - Lezing 10 - Grafiekgegevensstructuren (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lezing 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lezing 12 - Diepte eerste zoekopdracht (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lezing 13 - Minimale spanwijdte bomen (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lezing 14 - Minimale spanwijdte bomen (vervolg) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lezing 15 - Grafiekalgoritmen (vervolg 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Grafieken (review en meer): + + - [ ] [6.006 Single-Source Shortest Paths-probleem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Dijkstra versnellen (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: grafiekalgoritmen I - topologische sortering, minimale overspanningsbomen, algoritme van Prim - lezing 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7Sm) + - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t. ) + - [ ] [Aduni: Grafiekalgoritmen III: Kortste pad - Lezing 8 (video)](https://www.youtube.com/watch?v=Die + + dsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Grafiek Alg. IV: Inleiding tot geometrische algoritmen - Lezing 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: gewogen grafieken (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Greedy Algoritmes: Minimale Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sterk verbonden componenten Kosaraju's algoritme Grafiekalgoritme (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + +- Volledige Coursera-cursus: + - [ ] [Algoritmen op grafieken (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Ik zal implementeren: + - [ ] DFS met aangrenzende lijst (recursief) + - [ ] DFS met aangrenzende lijst (iteratief met stapel) + - [ ] DFS met aangrenzende matrix (recursief) + - [ ] DFS met aangrenzende matrix (iteratief met stapel) + - [ ] BFS met aangrenzende lijst + - [ ] BFS met aangrenzende matrix + - [ ] single-source kortste pad (Dijkstra) + - [ ] minimale opspannende boom + - Op DFS gebaseerde algoritmen (zie Aduni-video's hierboven): + - [ ] controleren op cyclus (nodig voor topologische sortering, aangezien we zullen controleren op cyclus voordat we beginnen) + - [ ] topologische sortering + - [ ] tel aangesloten componenten in een grafiek + - [ ] lijst sterk verbonden componenten + - [ ] controleer op bipartiete grafiek + +## Nog meer kennis + +- ### Herhaling + - [ ] Stanford-lezingen over recursie & backtracking: + - [ ] [Lezing 8 | Programmeringsabstracties (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lezing 9 | Programmeringsabstracties (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lezing 10 | Abstracties programmeren (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lezing 11 | Programmeringsabstracties (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Wanneer is het aangewezen om het te gebruiken? + - Hoe is staartrecursie beter dan niet? + - [ ] [Wat is staartrecursie, waarom is het zo erg?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Staartrecursie (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [5 eenvoudige stappen voor het oplossen van recursieve problemen (video)](https://youtu.be/ngCos392W4w) + +Backtracking-blauwdruk: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum- Palindroom-partitionering)) +[Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### Dynamisch programmeren + - U zult waarschijnlijk geen dynamische programmeerproblemen zien in uw interview, maar het is de moeite waard om een ​​te kunnen herkennen + probleem als kandidaat voor dynamisch programmeren. + - Dit onderwerp kan behoorlijk moeilijk zijn, aangezien elk DP-oplosbaar probleem moet worden gedefinieerd als een recursierelatie, en het bedenken ervan kan lastig zijn. + - Ik stel voor om naar veel voorbeelden van DP-problemen te kijken totdat je een goed begrip hebt van het betreffende patroon. + - [ ] Videos: + - [ ] [Skiena: CSE373 2020 - Lezing 19 - Inleiding tot dynamisch programmeren (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lezing 20 - Afstand bewerken (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lezing 20 - Afstand bewerken (vervolg) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lezing 21 - Dynamisch programmeren (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lezing 21 - Dynamisch programmeren en beoordelen (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Dynamic Programming 0 (start om 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lezing 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lezing 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Lijst van individuele DP-problemen (elk is kort): + [Dynamisch programmeren (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Aantekeningen bij de lezing: + - [ ] [Dynamische programma's + + ng](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] Coursera: + - [ ] [Het RNA secundaire structuurprobleem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [Een dynamisch programmeeralgoritme (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustratie van het DP-algoritme (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Duurtijd van het DP-algoritme (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursieve implementatie (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [Globale paarsgewijze sequentie-uitlijning (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Lokale paarsgewijze sequentie-uitlijning (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Ontwerp patronen + - [ ] [Snelle UML-beoordeling (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Leer deze patronen: + - [ ] strategie + - [ ] eenling + - [ ] adapter + - [ ] voorlopig ontwerp + - [ ] decorateur + - [ ] bezoeker + - [ ] fabriek, abstracte fabriek + - [ ] gevel + - [ ] waarnemer + - [ ] volmacht + - [ ] afgevaardigde + - [ ] commando + - [ ] staat + - [ ] aandenken + - [ ] iterator + - [ ] composiet + - [ ] vlieggewicht + - [ ] [Serie video's (27 video's)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Boek: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Ik weet dat het canonieke boek "Design Patterns: Elements of Reusable Object-Oriented Software" is, maar Head First is geweldig voor beginners tot OO. + - [Handige referentie: 101 ontwerppatronen en tips voor ontwikkelaars](https://sourcemaking.com/design-patterns-and-tips) + +- ### Combinatoriek (n kies k) & Waarschijnlijkheid + - [ ] [Math Skills: Factorial, Permutatie en Combination vinden (Kies) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Maak School: Waarschijnlijkheid (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Khan Academie: + - Cursusindeling: + - [ ] [Basis theoretische waarschijnlijkheid](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Alleen de video's - 41 (elk eenvoudig en elk kort): + - [ ] [Waarschijnlijkheid verklaard (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### NP, NP-compleet en benaderingsalgoritmen + - Ken de meest bekende klassen van NP-complete problemen, zoals handelsreiziger en het knapzakprobleem, + en in staat zijn om ze te herkennen wanneer een interviewer je ze in vermomming vraagt. + - Weet wat NP-compleet betekent. + - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Simonson: + - [ ] [Gulzige Algen. II & Inleiding tot NP-volledigheid (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Volledigheid II & Reducties (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Volledigheid III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Volledigheid IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Skiena: + - [ ] [CSE373 2020 - Lezing 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lezing 24 - Tevredenheid (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lezing 25 - Meer NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lezing 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complexiteit: P, NP, NP-volledigheid, Reducties (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexiteit: benaderingsalgoritmen (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNG + + P6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexiteit: algoritmen met vaste parameters (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig bespreekt bijna optimale oplossingen voor het probleem van handelsreizigers: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - Pagina's 1048 - 1140 in CLRS als je die hebt. + +- ### Hoe computers een programma verwerken + + - [ ] [Hoe CPU een programma uitvoert (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [Hoe computers berekenen - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registraties en RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [De centrale verwerkingseenheid (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructies en programma's (video)](https://youtu.be/zltgXvg6r3k) + +- ### Caches + - [ ] LRU-cache: + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRU (video) implementeren](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU-cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU-cache: + - [ ] [MIT 6.004 L15: de geheugenhiërarchie (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: cacheproblemen (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Processen en threads + - [ ] Computerwetenschappen 162 - Besturingssystemen (25 video's): + - voor processen en threads zie video's 1-11 + - [Besturingssystemen en systeemprogrammering (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [Wat is het verschil tussen een proces en een thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Hoezen: + - Processen, threads, gelijktijdigheidsproblemen + - Verschil tussen processen en threads + - Processen + - Draden + - Sloten + - Mutexen + - semaforen + - Monitoren + - Hoe ze werken? + - Impasse + - Livelock + - CPU-activiteit, interrupts, contextwisseling + - Moderne concurrency-constructies met multicore-processors + - [Paging, segmentatie en virtueel geheugen (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - Behoefte aan procesresources (geheugen: code, statische opslag, stapel, heap en ook bestandsdescriptors, i/o) + - Thread-resourcebehoeften (shares hierboven (minus stack) met andere threads in hetzelfde proces, maar elk heeft zijn eigen pc, stackteller, registers en stack) + - Forking is echt kopiëren bij schrijven (alleen-lezen) totdat het nieuwe proces naar het geheugen schrijft, waarna het een volledige kopie maakt. + - Contextomschakeling + - Hoe context-switching wordt geïnitieerd door het besturingssysteem en de onderliggende hardware? + - [ ] [threads in C++ (serie - 10 video's)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: besturingssystemen van de Universiteit van Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] gelijktijdigheid in Python (video's): + - [ ] [Korte serie over discussies](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python-threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [De Python GIL (2010) begrijpen](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [referentie](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python Gelijktijdigheid van de grond af: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [Keynote David Beazley - Interessante onderwerpen (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Testen + - Bedekken: + - hoe unit-testen werkt + - wat zijn nepobjecten? + - wat is integratietesten? + - wat is afhankelijkheidsinjectie? + - [ ] [Agile software testen met James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open lezing door James Bach over softwaretesten (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (dat is niet wat we bedoelden) (video)](https://vimeo.com/83960706) + - [dia's](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Afhankelijkheidsinjectie: + - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [Tao van testen](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [Hoe tests te schrijven](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### String zoeken en manipulaties + - + + [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring zoeken (video's)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Inleiding tot het zoeken naar substrings](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force substring zoeken](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Zoekpatroon in tekst (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + Als je meer details over dit onderwerp nodig hebt, raadpleeg dan de sectie "String Matching" in [Extra details over sommige onderwerpen](#additional-detail-on-some-subjects). + +- ### Probeert + - Merk op dat er verschillende soorten pogingen zijn. Sommige hebben voorvoegsels, andere niet, en sommige gebruiken string in plaats van bits + om het pad te volgen + - Ik lees code door, maar zal niet implementeren + - [ ] [Sedgewick - Probeert (3 video's)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way probeert](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Op tekens gebaseerde bewerkingen](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Opmerkingen over datastructuren en programmeertechnieken](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Korte cursusvideo's: + - [ ] [Inleiding tot pogingen (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [Een poging implementeren (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [The Trie: een verwaarloosde datastructuur](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [TopCoder - Tries gebruiken](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [Stanford Lecture (gebruiksvoorbeeld in de echte wereld) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (kan halverwege behoorlijk onduidelijk worden) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Drijvende Punt Nummers + - [ ] eenvoudig 8-bit: [Representatie van drijvende-kommagetallen - 1 (video - er is een fout in berekeningen - zie videobeschrijving)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### Unicode + - [ ] [Het absolute minimum dat elke softwareontwikkelaar absoluut, positief moet weten over Unicode en tekensets]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [Wat elke programmeur absoluut moet weten over coderingen en tekensets om met tekst te werken](http://kunststube.net/encoding/) + +- ### Endianheid + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian. html) + - [ ] [Big Endian versus Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Zeer technisch gepraat voor kernelontwikkelaars. Maak je geen zorgen als het meeste je te boven gaat. + - De eerste helft is genoeg. + +- ### Netwerken + - **Als u netwerkervaring hebt of een betrouwbaarheidsingenieur of operationeel ingenieur wilt worden, kunt u vragen verwachten** + - Anders is dit gewoon goed om te weten + - [ ] [Khan Academie](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP en TCP: vergelijking van transportprotocollen (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP en het OSI-model uitgelegd! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Pakketverzending via internet. Netwerken en TCP/IP-zelfstudie. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL en HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Videoserie (21 video's) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4i + + PnPYQui46QqT0j) + - [ ] [Subnetting gedemystificeerd - Deel 5 CIDR-notatie (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Aansluitingen: + - [ ] [Java - Sockets - Introductie (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket-programmering (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Eindevaluatie + + Dit gedeelte bevat kortere video's die je vrij snel kunt bekijken om de meeste belangrijke concepten te bekijken. + Het is fijn als je vaak een opfrisbeurt wilt. + +- [ ] Serie van 2-3 minuten korte onderwerpvideo's (23 video's) + - [Video's](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Serie van 2-5 minuten korte onderwerpvideo's - Michael Sambol (18 video's): + - [Video's](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick-video's - Algoritmen I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick-video's - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## Werk je CV bij + +- Zie voorbereidingsinformatie CV in de boeken: "Cracking The Coding Interview" en "Programming Interviews Exposed" +- Ik weet niet hoe belangrijk dit is (je kunt je eigen onderzoek doen) maar hier is een artikel over het ATS-compatibel maken van je cv: + - [Hoe maak je een CV aan of controleer je of je CV ATS-compatibel is](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for -Vrij) +- ["Dit is hoe een GOED CV eruit zou moeten zien" door Gayle McDowell (auteur van Cracking the Coding Interview)](https://www.careercup.com/resume), + - Opmerking van de auteur: "Dit is voor een op de VS gericht cv. CV's voor India en andere landen hebben andere verwachtingen, hoewel veel van de punten hetzelfde zullen zijn." +- ["Stap-voor-stap cv-gids" door Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Gedetailleerde gids over hoe u uw cv helemaal opnieuw kunt opzetten, effectieve cv-inhoud kunt schrijven, optimaliseren en uw cv kunt testen + + +## Vind een baan + +- [Sites voor het vinden van banen](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + +## Interviewproces en algemene sollicitatievoorbereiding + +- [ ] [Hoe slaagt u voor het technische interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystificerende technische werving](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Hoe krijg je een baan bij de Big 4: + - [ ] [Een baan krijgen bij de Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Hoe krijg je een baan bij de Big 4.1 (vervolgvideo)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] De coderingsinterviewset 1 kraken: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Het coderingsinterview kraken met auteur Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Het Facebook-coderingsinterview kraken: + - [ ] [De aanpak](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Probleemdoorloop](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Voorbereidende cursussen: + - [Software Engineer Interview Unleashed (betaalde cursus)](https://www.udemy.com/software-engineer-interview-unleashed): + - Leer hoe u zich kunt voorbereiden op interviews met software-engineers van een voormalige Google-interviewer. + - [Python voor datastructuren, algoritmen en interviews (betaalde cursus)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Een Python-gerichte voorbereidingscursus voor interviews die gegevensstructuren, algoritmen, schijninterviews en nog veel meer behandelt. + - [Inleiding tot datastructuren en algoritmen met Python (gratis Udacity-cursus)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Een gratis cursus over Python-centrische datastructuren en algoritmen. + - [Datastructuren en algoritmen Nanodegree! (Udacity betaalde Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Oefen hands-on met meer dan 100 datastructuren en algoritme-oefeningen en begeleiding van een toegewijde mentor om je voor te bereiden op interviews en on-the-job scenario's. + - [Grokking the Behavioral Interview (Educatieve gratis cursus)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Vaak is het niet je technische competentie die je ervan weerhoudt om je droombaan te vinden, het is hoe je presteert tijdens het gedragsinterview. + +Mock-interviews: +- [Gainlo.co: nep-interviewers van grote bedrijven](http://www.gainlo.co/#!/) - Ik gebruikte dit en het hielp me te ontspannen voor het telefoonscherm en het interview op locatie +- [Pramp: schijninterviews van/met leeftijdsgenoten](https://www.pramp.com/) - peer-to-peer model van oefeninterviews +- [interviewing.io: oefeninterview met senior engineers](https://interviewing.io) - anoniem algoritmisch/systeemontwerp inter + +anonieme meningen met senior engineers van FAANG + +## Denk aan voor als het interview komt + +Bedenk ongeveer 20 sollicitatievragen die u zult krijgen, samen met de regels van de onderstaande items. Zorg voor ten minste één antwoord voor elk. +Heb een verhaal, niet alleen gegevens, over iets dat je hebt bereikt. + +- Waarom wil je deze baan? +- Wat is een moeilijk probleem dat je hebt opgelost? +- Grootste uitdagingen voor? +- Beste/slechtste ontwerpen gezien? +- Ideeën voor het verbeteren van een bestaand product +- Hoe werk je het beste, als individu en als onderdeel van een team? +- Welke van uw vaardigheden of ervaringen zouden een troef zijn in de rol en waarom? +- Wat vond je het leukst bij [job x / project y]? +- Wat was de grootste uitdaging die je tegenkwam bij [job x / project y]? +- Wat was de moeilijkste bug die je tegenkwam bij [job x / project y]? +- Wat heb je geleerd bij [job x / project y]? +- Wat zou je beter hebben gedaan bij [baan x / project y]? + +- Als u het moeilijk vindt om goede antwoorden te vinden op dit soort interviewvragen, volgen hier enkele ideeën: + - [Algemene sollicitatievragen en hun antwoorden](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) + +## Heb vragen voor de interviewer + +Sommigen van mij (misschien weet ik de antwoorden al, maar wil hun mening of teamperspectief): + +- Hoe groot is uw team? +- Hoe ziet je ontwikkelcyclus eruit? Doe je aan waterval/sprints/agile? +- Zijn haasten naar deadlines gebruikelijk? Of is er flexibiliteit? +- Hoe worden beslissingen genomen in uw team? +- Hoeveel vergaderingen heeft u per week? +- Heb je het gevoel dat je werkomgeving je helpt om je te concentreren? +- Waar werk je aan? +- Wat vind je er leuk aan? +- Hoe is het werkleven? +- Hoe is de werk/privé balans? + +## Zodra je de baan hebt + +Gefeliciteerd! + +Blijf leren. + +Je bent nooit echt klaar. + +--- + + ************************************************** ************************************************** * + ************************************************** ************************************************** * + + Alles onder dit punt is optioneel. Het is NIET nodig voor een instapgesprek. + Door deze te bestuderen, krijgt u echter meer kennis van meer CS-concepten en bent u beter voorbereid op + elke software-engineering baan. Je zult een veel completere software-engineer zijn. + + ************************************************** ************************************************** * + ************************************************** ************************************************** * + +--- + +## Extra boeken + + Deze zijn hier zodat u zich kunt verdiepen in een onderwerp dat u interessant vindt. + +- [De Unix-programmeeromgeving](https://www.amazon.com/dp/013937681X) + - Een oudje maar een goodie +- [De Linux-opdrachtregel: een complete introductie](https://www.amazon.com/dp/1593273894/) + - Een moderne optie +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - Een zachte introductie tot ontwerppatronen +- [Ontwerppatronen: elementen van herbruikbare objectgeoriënteerde software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA het boek "Bende van vier", of GOF + - Het canonieke ontwerppatronenboek +- [Handleiding voor algoritmeontwerp](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - Als beoordeling en probleemherkenning + - Het gedeelte van de algoritmecatalogus valt ver buiten de moeilijkheidsgraad die je in een interview krijgt + - Dit boek heeft 2 delen: + - Klasboek over datastructuren en algoritmen + - Voordelen: + - Is een goede recensie zoals elk leerboek over algoritmen zou zijn? + - Leuke verhalen uit zijn ervaringen met het oplossen van problemen in de industrie en de academische wereld + - Codevoorbeelden in C + - Nadelen: + - Kan net zo dicht of ondoordringbaar zijn als CLRS, en in sommige gevallen kan CLRS een beter alternatief zijn voor sommige onderwerpen + - Hoofdstukken 7, 8, 9 kunnen pijnlijk zijn om te proberen te volgen, omdat sommige items niet goed worden uitgelegd of meer hersens nodig hebben dan ik heb + - Begrijp me niet verkeerd: ik hou van Skiena, zijn manier van lesgeven en maniertjes, maar ik ben misschien geen materiaal van Stony Brook + - Algoritme catalogus: + - Dit is de echte reden waarom je dit boek koopt. + - Dit boek is beter als algoritme-referentie, en niet als iets dat je van kaft tot kaft leest. + - Kan het huren op Kindle + - Antwoorden: + - [Oplossingen](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Het boek is gepubliceerd in 2004 en is enigszins verouderd, maar het is een geweldige bron om een ​​computer in het kort te begrijpen + - De auteur nodigt uit + + ented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), dus neem vermeldingen en voorbeelden in HLA met een korreltje zout. Niet veel gebruikt, maar goede voorbeelden van hoe montage eruit ziet + - Deze hoofdstukken zijn het lezen waard om je een mooie basis te geven: + - Hoofdstuk 2 - Numerieke weergave + - Hoofdstuk 3 - Binaire rekenkunde en bitbewerkingen + - Hoofdstuk 4 - Representatie met drijvende komma + - Hoofdstuk 5 - Karakterweergave + - Hoofdstuk 6 - Geheugenorganisatie en toegang + - Hoofdstuk 7 - Samengestelde gegevenstypen en geheugenobjecten + - Hoofdstuk 9 - CPU-architectuur + - Hoofdstuk 10 - Architectuur van instructieset + - Hoofdstuk 11 - Geheugenarchitectuur en -organisatie +- [Inleiding tot algoritmen](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **Belangrijk:** Het lezen van dit boek heeft maar een beperkte waarde. Dit boek is een geweldige recensie van algoritmen en datastructuren, maar zal je niet leren hoe je goede code schrijft. Je moet een fatsoenlijke oplossing efficiënt kunnen coderen + - AKA CLR, soms CLRS, omdat Stein te laat bij de wedstrijd was +- [Computerarchitectuur, zesde editie: een kwantitatieve benadering](https://www.amazon.com/dp/0128119055) + - Voor een rijkere, meer up-to-date (2017), maar langere behandeling + +## Systeemontwerp, schaalbaarheid, gegevensverwerking + +**Je kunt systeemontwerpvragen verwachten als je meer dan 4 jaar ervaring hebt.** + +- Schaalbaarheid en systeemontwerp zijn zeer grote onderwerpen met veel onderwerpen en bronnen, sinds + er komt veel kijken bij het ontwerpen van een software/hardwaresysteem dat kan worden geschaald. + Verwacht hier behoorlijk wat tijd aan te besteden +- Overwegingen: + - Schaalbaarheid + - Distilleer grote datasets naar enkele waarden + - Transformeer de ene dataset naar de andere + - Omgaan met obsceen grote hoeveelheden gegevens + - Systeem ontwerp + - functiesets + - interfaces + - klassenhiërarchieën + - een systeem ontwerpen onder bepaalde beperkingen + - eenvoud en robuustheid + - afwegingen + - prestatieanalyse en optimalisatie +- [ ] **START HIER**: [De System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [Systeemontwerp van HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [Hoe bereid ik me voor op het beantwoorden van ontwerpvragen in een technisch interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical -interview?redirected_qid=1500023) +- [ ] [8 dingen die u moet weten voordat u een systeemontwerpgesprek voert](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before -systeem-ontwerp-interviews/) +- [ ] [Databasenormalisatie - 1NF, 2NF, 3NF en 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - Er zijn veel bronnen in deze. Bekijk de artikelen en voorbeelden. Ik heb er een paar hieronder gezet +- [ ] [Hoe een systeemontwerpgesprek te halen](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems -ontwerp-interview/) +- [ ] [Nummers die iedereen moet weten](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [Hoe lang duurt het om van context te wisselen?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transacties in datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Een eenvoudige Engelse inleiding tot de CAP-stelling](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: gedistribueerde systemen, lente 2020 (20 video's)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensusalgoritmen: + - [ ] Paxos - [Overeenkomst van Paxos - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Gemakkelijk te lezen papier](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent hashen](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL-patronen](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Schaalbaarheid: + - Je hebt deze niet allemaal nodig. Kies er gewoon een paar uit die je interesseren. + - [ ] [Geweldig overzicht (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Korte reeks: + - [Klonen](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronisme](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Schaalbare webarchitectuur en gedistribueerde systemen](http://www.aosabook.org/en/dissys.html) + - [ ] [Fallacie + + s van Distributed Computing uitgelegd](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Softwaresystemen bouwen bij Google en geleerde lessen (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Inleiding tot Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Mobiele games schalen naar een wereldwijd publiek met App Engine en Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Hoe Google Planet-Scale Engineering doet voor Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Het belang van algoritmen](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 jaar schaalbaarheidslessen op YouTube in 30 minuten](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [Hoe PayPal opschaalde naar miljarden transacties per dag met slechts 8 VM's](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using -ju.html) + - [ ] [Duplicaten verwijderen in grote datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [Een kijkje in Etsy's schaal en technische cultuur met Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Wat leidde Amazon tot zijn eigen microservices-architectuur](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [Comprimeren of niet comprimeren, dat was de vraag van Uber](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Wanneer moet geschatte queryverwerking worden gebruikt?](http://highscalability.com/blog/2016/2/25/when-should- approximate-query-processing-be-used.html) + - [ ] [Google's transitie van één datacenter, naar failover, naar een native multihomed-architectuur]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover- naar-een-n.html) + - [ ] [De beeldoptimalisatietechnologie die miljoenen verzoeken per dag bedient](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re .html) + - [ ] [Een korte Patreon-architectuur](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: hoe bepaalt een van de grootste aanbevelingsengines wie u hierna zult zien?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of- de-grootste-aanbeveling-engines-de.html) + - [ ] [Ontwerp van een moderne cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live videostreaming op Facebook-schaal](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [Een beginnershandleiding voor het schalen naar 11 miljoen+ gebruikers op Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million- gebruikers-op-amazons.html) + - [ ] [Een 360 graden beeld van de hele Netflix-stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) + - [ ] [Latency is overal en het kost je omzet - Hoe het te verpletteren](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: honderden instanties, tientallen technologieën](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce-architectuur - hoe ze 1,3 miljard transacties per dag verwerken](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) + - [ ] [ESPN's architectuur op schaal - werkend met 100.000 Duh Nuh Nuhs per seconde](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh -nuh-nuhs.html) + - [ ] Zie "Messaging, Seriization en Queuing Systems" hieronder voor informatie over enkele van de technologieën die services aan elkaar kunnen lijmen + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Tijdlijnen op schaal](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - Zie voor meer informatie de videoserie "Massive datasets ontginnen" in de sectie [Video Series](#video-series) +- [ ] Het systeemontwerpproces oefenen: hier zijn enkele ideeën om op papier uit te werken, elk met wat documentatie over hoe het in de echte wereld werd behandeld: + - recensie: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [Systeemontwerp van HiredInTech](http://www.hiredintech.com/syste + + m-ontwerp/) + - [spiekbriefje](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - stromen: + 1. Begrijp het probleem en de reikwijdte: + - Definieer de gebruiksscenario's, met de hulp van de interviewer + - Stel extra functies voor + - Verwijder items die de interviewer buiten het bereik acht + - Ga ervan uit dat hoge beschikbaarheid vereist is, voeg dit toe als een use case + 2. Denk na over beperkingen: + - Vraag hoeveel verzoeken per maand + - Vraag hoeveel verzoeken per seconde (ze kunnen het vrijwillig doen of je laten rekenen) + - Schatting lees- versus schrijfpercentage + - Houd rekening met de 80/20-regel bij het schatten + - Hoeveel gegevens per seconde geschreven + - Totale opslag vereist over 5 jaar + - Hoeveel gegevens per seconde worden gelezen + 3. Abstract ontwerp: + - Lagen (service, data, caching) + - Infrastructuur: load balancing, messaging + - Ruw overzicht van elk belangrijk algoritme dat de service aanstuurt + - Overweeg knelpunten en bepaal oplossingen + - Opdrachten: + - [Ontwerp een willekeurig uniek ID-generatiesysteem](https://blog.twitter.com/2010/announcing-snowflake) + - [Ontwerp een sleutelwaardedatabase](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Ontwerp een systeem voor het delen van foto's](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Ontwerp een aanbevelingssysteem](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Ontwerp een URL-verkortingssysteem: van bovenaf gekopieerd](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Ontwerp een cachesysteem](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## Extra leren + + Ik heb ze toegevoegd om je te helpen een goed afgeronde software-engineer te worden, en om je bewust te zijn van bepaalde + technologieën en algoritmen, zodat je een grotere gereedschapskist hebt. + +- ### Compilers + - [Hoe een compiler werkt in ongeveer 1 minuut (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Inzicht in Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs en vi(m) + - Maak uzelf vertrouwd met een op Unix gebaseerde code-editor + -vi(m): + - [Bewerken met vim 01 - Installatie, configuratie en de modi (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM-avonturen](http://vim-adventures.com/) + - set van 4 video's: + - [De vi/vim-editor - Les 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [De vi/vim-editor - Les 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [De vi/vim-editor - Les 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [De vi/vim-editor - Les 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Vi gebruiken in plaats van Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [Basis Emacs-zelfstudie (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set van 3 (video's): + - [Emacs-zelfstudie (beginners) - Deel 1- Bestandsopdrachten, knippen/kopiëren/plakken, cursoropdrachten](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs-zelfstudie (beginners) - Deel 2- Bufferbeheer, zoeken, M-x grep- en rgrep-modi](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs-zelfstudie (beginners) - Deel 3- Uitdrukkingen, verklaringen, ~/.emacs-bestand en pakketten](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: Of, hoe ik heb geleerd te stoppen met piekeren en van Emacs te houden (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [C-programma's schrijven met Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) +- [De absolute beginnershandleiding voor Emacs (video door David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) +- [De absolute beginnersgids voor Emacs (aantekeningen door David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### Unix-opdrachtregelprogramma's + - Onderstaande lijst heb ik ingevuld vanuit goede tools. + - bash + - kat + - grep + - sed + - awk + - krul of wget + - sorteren + - tr + - uniek + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### Informatietheorie (video's) + - [Khan Academie](https://www.khanacademy.org/computing/computer-science/informationtheory) + - Meer over Markov-processen: + - [Core Markov-tekstgeneratie](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Kernimplementatie Markov-tekstgeneratie](https:// + + www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - Zie hieronder meer in de MIT 6.050J Informatie- en Entropy-serie: + +- ### Pariteit & Hamming-code (video's) + - [Inleiding](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Pariteit](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming-code: + - [Foutdetectie](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [Foutcorrectie](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [Foutcontrole](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### Entropie + - Zie ook onderstaande video's + - Zorg ervoor dat je eerst informatietheorie-video's bekijkt + - [Informatietheorie, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### Cryptografie + - Zie ook onderstaande video's + - Zorg ervoor dat je eerst informatietheorie-video's bekijkt + - [Khan Academy-serie](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptografie: hashfuncties](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptografie: versleuteling](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### Compressie + - Zorg ervoor dat je eerst informatietheorie-video's bekijkt + - Computerfiel (video's): + - [Compressie](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropie in compressie](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Ondersteboven Bomen (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegante compressie in tekst (de LZ 77-methode)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Tekstcompressie voldoet aan waarschijnlijkheden](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Video's van de compressorkop](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optioneel) Google Developers Live: GZIP is niet genoeg!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### Computer beveiliging + - [MIT (23 video's)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Inleiding, bedreigingsmodellen](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Controleer kapingaanvallen](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Uitbuiting en verdediging tegen bufferoverloop](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege scheiding](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Mogelijkheden](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing-native code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Webbeveiligingsmodel](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Webapplicaties beveiligen](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolische uitvoering](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Netwerkbeveiliging](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Netwerkprotocollen](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### Afvalinzameling + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### Parallel programmeren + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficiënte Python voor High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### Messaging-, serialisatie- en wachtrijsystemen + - [Zuurzaamheid](https://zuinigheid.apache.org/) + - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocolbuffers](https://developers.google.com/protocol-buffers/) + - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [gRPC 101 voor Java-ontwikkelaars (video)](https://www.youtube.com/ + + kijken?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Tutorial](http://try.redis.io/) + - [Amazon SQS (wachtrij)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Aan de slag](https://www.rabbitmq.com/getstarted.html) + - [Selderij](http://www.celeryproject.org/) + - [Eerste stappen met selderij](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [Intro - Lees de handleiding](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### EEN* + - [Een zoekalgoritme](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: uitleg algoritme) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Snelle Fourier-transformatie + - [Een interactieve gids voor de Fourier-transformatie](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Wat is een Fourier-transformatie? Waar wordt het voor gebruikt?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Wat is de Fourier-transformatie? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Verdeel en heers: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [De FFT begrijpen](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Bloeifilter + - Gegeven een Bloom-filter met m-bits en k hashing-functies, zijn zowel insertie- als lidmaatschapstesten O(k) + - [Bloom-filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom-filters | Mijnbouw van enorme datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Tutorial](http://billmill.org/bloomfilter-tutorial/) + - [Hoe een Bloom-filter-app te schrijven](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### HyperLogLog + - [Hoe een miljard verschillende objecten te tellen met slechts 1,5 KB geheugen](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct -objecten-us.html) + +- ### Plaatsgevoelige hashing + - Gebruikt om de gelijkenis van documenten te bepalen + - Het tegenovergestelde van MD5 of SHA die worden gebruikt om te bepalen of 2 documenten/strings precies hetzelfde zijn + - [Simhashing (hopelijk) eenvoudig gemaakt](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### van Emde Boas Trees + - [Verdeel en heers: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) + +- ### Augmented Data Structures + - [CS 61B Lezing 39: Gegevensstructuren vergroten](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### Evenwichtige zoekbomen + - Ken ten minste één type gebalanceerde binaire boom (en weet hoe deze wordt geïmplementeerd): + - "Onder evenwichtige zoekbomen zijn AVL- en 2/3-bomen nu passé en lijken rood-zwarte bomen populairder. + Een bijzonder interessante zelforganiserende datastructuur is de splay tree, die gebruik maakt van rotaties + om elke geopende sleutel naar de root te verplaatsen." - Skiena + - Hiervan heb ik ervoor gekozen om een ​​splay tree te implementeren. Van wat ik heb gelezen, implementeer je geen + evenwichtige zoekboom in uw interview. Maar ik wilde blootstelling aan het coderen van een up + en laten we eerlijk zijn, spreidende bomen zijn de knieën van de bij. Ik heb veel rood-zwarte boomcode gelezen + - Splay tree: functies invoegen, zoeken, verwijderen + Als je uiteindelijk een rode / zwarte boom implementeert, probeer dan deze: + - Zoek- en invoegfuncties, verwijderen overslaan + - Ik wil meer weten over B-Tree omdat het zo veel wordt gebruikt met zeer grote datasets + - [Zelfbalancerende binaire zoekboom](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL-bomen** + - In praktijk: + Voor zover ik kan zien, worden deze in de praktijk niet veel gebruikt, maar ik kon zien waar ze zouden zijn: + De AVL-boom is een andere structuur die het zoeken, invoegen en verwijderen van O(log n) ondersteunt. Het is meer rigide + evenwichtiger dan rood-zwarte bomen, wat leidt tot langzamer inbrengen en verwijderen, maar sneller ophalen. Dit maakt het + aantrekkelijk voor datastructuren die eenmalig kunnen worden gebouwd en zonder reconstructie kunnen worden geladen, zoals taal + woordenboeken (of programmawoordenboeken, zoals de opcodes van een assembler of interpreter) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - + + [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree-implementatie (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Splitsen en samenvoegen](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + + - **Splay bomen** + - In praktijk: + Splay-bomen worden meestal gebruikt bij de implementatie van caches, geheugentoewijzers, routers, afvalverzamelaars, + datacompressie, ropes (vervanging van string gebruikt voor lange tekststrings), in Windows NT (in het virtuele geheugen, + netwerk- en bestandssysteemcode) enz + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lezing: Splay Trees: + - Wordt heel wiskundig, maar kijk zeker de laatste 10 minuten. + - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **Rood/zwarte bomen** + - Dit is een vertaling van een 2-3 boom (zie hieronder). + - In praktijk: + Rood-zwarte bomen bieden in het slechtste geval garanties voor invoegtijd, verwijderingstijd en zoektijd. + Dit maakt ze niet alleen waardevol in tijdgevoelige toepassingen zoals real-time toepassingen, + maar het maakt ze waardevolle bouwstenen in andere datastructuren die in het slechtste geval garanties bieden; + veel datastructuren die in computationele geometrie worden gebruikt, kunnen bijvoorbeeld gebaseerd zijn op rood-zwarte bomen, en + de volledig eerlijke planner die in de huidige Linux-kernels wordt gebruikt, gebruikt rood-zwarte bomen. In versie 8 van Java, + de Collection HashMap is zodanig aangepast dat in plaats van een LinkedList te gebruiken om identieke elementen op te slaan met een slechte + hashcodes, wordt een rood-zwarte boom gebruikt + - [Aduni - Algoritmen - Lezing 4 (link springt naar startpunt) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algoritmen - Lezing 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Rood-Zwarte Boom](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [Een inleiding tot binair zoeken en Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + + - **2-3 zoekbomen** + - In praktijk: + 2-3 bomen hebben snellere invoegingen ten koste van langzamere zoekopdrachten (omdat de hoogte meer is in vergelijking met AVL-bomen). + - U zou 2-3 tree zeer zelden gebruiken omdat de implementatie verschillende soorten knooppunten omvat. In plaats daarvan gebruiken mensen roodzwarte bomen. + - [23-Tree Intuïtie en Definitie (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binaire weergave van 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (recitatie van studenten) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 bomen (ook bekend als 2-4 bomen)** + - In praktijk: + Voor elke 2-4 boom zijn er corresponderende rood-zwarte bomen met data-elementen in dezelfde volgorde. Het invoegen en verwijderen + bewerkingen op 2-4 bomen zijn ook gelijk aan kleuromkering en rotaties in rood-zwarte bomen. Dit maakt 2-4 bomen een + belangrijk hulpmiddel om de logica achter rood-zwarte bomen te begrijpen, en dit is de reden waarom veel inleidende algoritmeteksten introduceren: + 2-4 bomen net voor roodzwarte bomen, hoewel **2-4 bomen in de praktijk niet vaak worden gebruikt**. + - [CS 61B Lezing 26: Evenwichtige zoekbomen (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-ary (K-ary, M-ary) bomen** + - let op: de N of K is de vertakkingsfactor (max. vertakkingen) + - binaire bomen zijn een 2-voudige boom, met vertakkingsfactor = 2 + - 2-3 bomen zijn 3-ary + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B-bomen** + - Leuk weetje: het is een mysterie, maar de B zou kunnen staan ​​voor Boeing, Balanced of Bayer (mede-uitvinder). + - In praktijk: + B-Trees worden veel gebruikt in databases. De meeste moderne bestandssystemen gebruiken B-trees (of varianten). In aanvulling op + het gebruik in databases, wordt de B-tree ook gebruikt in bestandssystemen om snelle willekeurige toegang tot een willekeurige + blok in een bepaald bestand. Het basisprobleem is om het bestandsblok i-adres in een schijfblok te veranderen + (of misschien naar een cilinderkop-sector) adres + - [B-Tree](https://en.wikipedia.org/wiki/B-Tree) + - [B-Tree gegevensstructuur](http://btechsmartclass.com/ + + data_structures/b-trees.html) + - [Inleiding tot B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree definitie en invoeging (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree verwijdering (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Geheugenhiërarchiemodellen (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - omvat cache-onwetende B-Trees, zeer interessante datastructuren + - de eerste 37 minuten zijn erg technisch, kunnen worden overgeslagen (B is blokgrootte, cacheregelgrootte) + + +- ### k-D Bomen + - Geweldig voor het vinden van het aantal punten in een rechthoek of object met een hogere dimensie + - Een goede pasvorm voor k-dichtstbijzijnde buren + - [kNN K-d tree-algoritme (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### Sla lijsten over + - "Dit is een beetje een cultgegevensstructuur" - Skiena + - [Randomisatie: lijsten overslaan (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Voor animaties en wat meer details](https://en.wikipedia.org/wiki/Skip_list) + +- ### Netwerkstromen + - [Ford-Fulkerson in 5 minuten — Stap voor stap voorbeeld (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson-algoritme (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Netwerkstromen (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### Disjuncte Sets & Union Find + - [UCB 61B - onsamenhangende sets; Sorteren & selecteren (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick-algoritmen - Union-Find (6 video's)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### Wiskunde voor snelle verwerking + - [Rekenen met geheel getal, Karatsuba-vermenigvuldiging (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [De Chinese Reststelling (gebruikt in cryptografie) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### Treap + - Combinatie van een binaire zoekboom en een heap + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Datastructuren: Treaps uitgelegd (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Toepassingen in vaste bewerkingen](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### Lineaire programmering (video's) + - [Lineaire programmering](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Minimale kosten zoeken](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Maximale waarde zoeken](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Los lineaire vergelijkingen op met Python - Simplex-algoritme](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### Geometrie, bolle romp (video's) + - [Grafiek Alg. IV: Inleiding tot geometrische algoritmen - Lezing 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometrische algoritmen: Graham & Jarvis - Lezing 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Verdeel en heers: bolle romp, mediane bevinding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### Discrete wiskunde + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete wiskunde door Shai Simonson (19 video's)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete wiskunde door IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +--- + +## Aanvullende details over sommige onderwerpen + + Ik heb deze toegevoegd om enkele ideeën die hierboven al zijn gepresenteerd te versterken, maar wilde ze niet opnemen + hierboven omdat het gewoon te veel is. Het is gemakkelijk om het over een onderwerp te overdrijven. + Je wilt toch aangenomen worden in deze eeuw? + +- **STEVIG** + - [ ] [Bob Martin SOLID-principes van objectgeoriënteerd en agile ontwerpen (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Principe van één verantwoordelijkheid](http://www.oodesign.com/single-responsibility-principle.html) | [Eén verantwoordelijkheid voor elk object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [meer smaak](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Gesloten Principe](http://www.oodesign.com/open-close-principle.html) | [Op productieniveau zijn objecten klaar voor uitbreiding, maar niet voor wijziging](https://en.wikipedia.org/wiki/Open/closed_principle) + - [meer smaak](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1& + - [ ] L - [Liskov-substitutieprincipe](http://www.oodesign.com/liskov-s-substitution-p + + rinciple.html) | [Basisklasse en afgeleide klasse volgen het 'IS A'-principe](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [meer smaak](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5hl=en) + - [ ] I - [Interface-segregatieprincipe](http://www.oodesign.com/interface-segregation-principle.html) | klanten mogen niet worden gedwongen om interfaces te implementeren die ze niet gebruiken + - [Interface Segregation Principle in 5 minuten (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [meer smaak](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYm) + - [ ] D -[Dependency Inversion-principe](http://www.oodesign.com/dependency-inversion-principle.html) | Verminder de afhankelijkheid in samenstelling van objecten. + - [Waarom is het afhankelijkheidsinversieprincipe en waarom is het belangrijk](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [meer smaak](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&) + + +- **Union-Find** + - [Overzicht](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naïeve implementatie](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naïeve-implementations) + - [Bomen](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Padcompressie](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analyse-opties](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optioneel) + +- **Meer dynamische programmering** (video's) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Tekstrechtvaardiging, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Haakjes, Bewerk Afstand, Knapzak](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Gitaarvingeren, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: dynamisch programmeren en geavanceerde DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: dynamische programmering: alle paren kortste paden](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: dynamisch programmeren (recitatie van leerlingen)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Geavanceerde grafiekverwerking** (video's) + - [Synchroon gedistribueerde algoritmen: symmetriebreking. Kortste paden over bomen](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchrone gedistribueerde algoritmen: kortste paden die bomen overspannen](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Waarschijnlijkheid** (wiskunde, en ga langzaam, wat goed is voor wiskundige dingen) (video's): + - [MIT 6.042J - Waarschijnlijkheidsintroductie](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Voorwaardelijke waarschijnlijkheid](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Onafhankelijkheid](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Willekeurige variabelen](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Verwachting I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Verwachting II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Grote afwijkingen](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Willekeurige wandelingen](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: benaderingsalgoritmen (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **String Matching** + - Rabin-Karp (video's): + - [Rabin Karps-algoritme](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [Optimalisatie: implementatie en analyse](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [Tafelverdubbeling, Karp-Ra + + bin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [Rolling hashes, afgeschreven analyse](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - Knuth-Morris-Pratt (KMP): + - [THe Knuth-Morris-Pratt (KMP) String Matching Algoritme](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer-Moore string zoekalgoritme + - [Boyer-Moore String zoekalgoritme](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - begint geweldig, maar tegen de tijd dat het voorbij KMP komt, wordt het ingewikkelder dan het moet zijn + - mooie uitleg van pogingen + - kan worden overgeslagen + +- **Sorteren** + + - Stanford-lezingen over sorteren: + - [Lezing 15 | Abstracties programmeren (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lezing 16 | Abstracties programmeren (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - [Algoritmen - Sorteren - Lezing 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algoritmen - Sorteren II - Lezing 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena geeft een lezing over sorteren: + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Lineair sorteren (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +## Videoserie + +Leun achterover en geniet. + +- [Lijst met individuele problemen met dynamisch programmeren (elk is kort)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 Architectuur, Assemblage, Toepassingen (11 video's)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 lineaire algebra, lente 2005 (35 video's)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [Uitstekend - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Skiena-lezingen uit Algorithm Design Manual - CSE373 2020 - Analyse van algoritmen (26 video's)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) + +- [UC Berkeley 61B (lente 2014): datastructuren (25 video's)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (najaar 2006): gegevensstructuren (39 video's)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: Machinestructuren (26 video's)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: Software Dev Met UML en Java (21 video's)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [MIT 6.004: Computation Structures (49 video's)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - Lezingen over computerarchitectuur (39 video's)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: Inleiding tot algoritmen (47 video's)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: Computersysteemtechniek (22 video's)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 kunstmatige intelligentie, herfst 2010 (30 video's)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: Mathematics for Computer Science, herfst 2010 (25 video's)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: ontwerp en analyse van algoritmen (34 video's)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.824: gedistribueerde systemen, lente 2020 (20 video's)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: geavanceerde datastructuren (22 video's)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: geavanceerde algoritmen, lente 2016 (24 video's)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [Harvard COMPSCI 224: geavanceerde algoritmen (25 video's)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 Beveiliging computersystemen, herfst 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [Stanford: programmeerparadigma's (27 video's)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [Int + +roductie naar cryptografie door Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [Cursuswebsite samen met dia's en probleemsets](http://www.crypto-textbook.com/) + +- [Mening van enorme datasets - Stanford University (94 video's)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [Grafiektheorie door Sarada Herke (67 video's)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Cursussen informatica + +- [Directory of Online CS-cursussen](https://github.com/open-source-society/computer-science) +- [Directory of CS Courses (veel met online lezingen)](https://github.com/prakhar1989/awesome-courses) + +## Implementatie van algoritmen + +- [Meerdere algoritmen implementatie door Princeton University](https://algs4.cs.princeton.edu/code) + + +## Papieren + +- [Hou je van klassieke papieren?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Opeenvolgende processen communiceren](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [geïmplementeerd in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: het Google-bestandssysteem](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - vervangen door Colossus in 2012 +- [2004: MapReduce: vereenvoudigde gegevensverwerking op grote clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - grotendeels vervangen door Cloud Dataflow? +- [2006: Bigtable: een gedistribueerd opslagsysteem voor gestructureerde gegevens](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: de Chubby Lock-service voor los gekoppelde gedistribueerde systemen](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon's hoogst beschikbare sleutelwaardewinkel](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Het Dynamo-papier begon de NoSQL-revolutie +- [2007: wat elke programmeur moet weten over geheugen (erg lang, en de auteur moedigt het overslaan van sommige secties aan)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: een snelle adressanity checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: de wereldwijd gedistribueerde database van Google: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2015: continue pijplijnen bij Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: hoge beschikbaarheid op enorme schaal: bouwen aan Google's data-infrastructuur voor advertenties](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Hoe ontwikkelaars naar code zoeken: een casestudy](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- Meer papers: [1.000 papers](https://github.com/0voice/computer_expert_paper) + +## LICENTIE + +[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file From 22b8587f2adc7b64a1a80078ddbe7f0cb95affb6 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Fri, 21 Oct 2022 20:49:51 +0600 Subject: [PATCH 692/857] format heading and subheading --- translations/README-bn.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 9a4f2e9eca..07c5ed4def 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -97,7 +97,9 @@ --- -##সুচিপত্র +## সুচিপত্র + +### পাঠ পরিকল্পনা - [এটি কী?](#এটি-কী) - [কেন এটি ব্যবহার করবেন?](#এটি-কেন-ব্যবহার-করুন) @@ -105,7 +107,7 @@ - [মনে হয় আপনি যথেষ্ট স্মার্ট নন](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) - [ভিডিও সংস্থান সম্পর্কে](#ভিডিও-সংস্থান-সম্পর্কে) - [সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) -- [সাক্ষাত্কারের জন্য একটি ভাষা বাছুন](#সাক্ষাত্কারের-জন্য-ভাষা-বেছে-নিন) +- [একটি প্রোগ্রামিং ভাষা নির্বাচন করুন](#একটি-প্রোগ্রামিং-ভাষা-নির্বাচন-করুন) - [বইয়ের তালিকা](#বুক-তালিকা) - [আপনি শুরু করার আগে](#আপনি-আগে-শুরু-করার-আগে) - [যা আপনি আবৃত দেখবেন না](#কী-আপনি-দেখতে-পাবেন-না) From 70de5364117c7374600bf85d9263607fd504b115 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Wed, 26 Oct 2022 22:59:54 +0600 Subject: [PATCH 693/857] revise and rewrite first 5 section --- translations/README-bn.md | 114 ++++++++++++++++++++++---------------- 1 file changed, 67 insertions(+), 47 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 07c5ed4def..d2c4143ab9 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -7,6 +7,8 @@ > > আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্যি কেন আমি ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি?](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > +> **দয়া করে মনে রাখবেন:** আপনাকে আমার মত পড়াশুনা করতে হবে না। আমার জানার প্রয়োজন নেই এমন জিনিসগুলিতে আমি অনেক সময় নষ্ট করেছি। নিচে যে সম্পর্কে আরও তথ্য আছে। আপনার মূল্যবান সময় নষ্ট না করে আমি আপনাকে সেখানে যেতে সাহায্য করব। + > এখানে তালিকাভুক্ত আইটেমগুলি আপনাকে, অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট - এর মতো টেক জায়ান্টস সহ যে কোনও সফ্টওয়্যার সংস্থার সম্পর্কে একটি সাক্ষাত্কারের জন্য ভালভাবে প্রস্তুত করবে । > > *আপনার জন্য শুভকামনা!* @@ -52,10 +54,10 @@

- Become a sponsor and support Coding Interview University! + পৃষ্ঠপোষক হয়ে যান এবং কোডিং ইন্টারভিউ বিশ্ববিদ্যালয় সমর্থন করুন!

- Special thanks to: + বিশেষ ধন্যবাদঃ

@@ -83,17 +85,17 @@ ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) কোনও বড় প্রতিষ্ঠানের সফটওয়্যার ইঞ্জিনিয়ারের কাছে ওয়েব বিকাশকারী (স্ব-শিক্ষিত, কোনও সিএস ডিগ্রি) থেকে যাওয়ার জন্য এটি আমার বহু মাসের অধ্যয়ন পরিকল্পনা। + +**অপরিহার্যঃ** +* কোডিং নিয়ে একটু অভিজ্ঞতা (variables, loops, methods/functions, etc) +* ধৈর্য +* সময় -এটি -* নতুন সফটওয়্যার ইঞ্জিনিয়ার -* বা যাঁরা স্যুইচ করছেন তাদের জন্য -* সফ্টওয়্যার / ওয়েব ডেভলপমেন্ট সফটওয়্যার ইঞ্জিনিয়ারিং (যেখানে কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন)। যদি তোমার থাকে -বহু বছরের অভিজ্ঞতা রয়েছে এবং সফটওয়্যার ইঞ্জিনিয়ারিংয়ের বহু বছরের অভিজ্ঞতা দাবি করছেন, আরও একটি কঠিন সাক্ষাত্কারের প্রত্যাশা করুন। - -আপনার যদি অনেক বছরের সফ্টওয়্যার / ওয়েব বিকাশের অভিজ্ঞতা থাকে তবে নোট করুন যে গুগল, অ্যামাজন, -ফেসবুক এবং মাইক্রোসফ্ট সফ্টওয়্যার ইঞ্জিনিয়ারিং সফ্টওয়্যার / ওয়েব বিকাশ থেকে আলাদা হিসাবে দেখে এবং তাদের কম্পিউটার বিজ্ঞানের জ্ঞান প্রয়োজন। - -আপনি যদি নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে listচ্ছিক তালিকা (নেটওয়ার্কিং, সুরক্ষা) থেকে আরও অধ্যয়ন করুন। +এটা **সফ্টওয়্যার ইঞ্জিনিয়ারিং** এর জন্য অধ্যয়ন পরিকল্পনা, ওয়েব ডেভেলপমেন্টের জন্য নয়। বড় সফটওয়্যার কোম্পানি যেমন গুগল, অ্যামাজন, +ফেসবুক এবং মাইক্রোসফট সফটওয়্যার ইঞ্জিনিয়ারিংকে ওয়েব ডেভেলপমেন্ট থেকে আলাদা বলে মনে করে। উদাহরণস্বরূপ, অ্যামাজন আছে +ফ্রন্টেন্ড ইঞ্জিনিয়ার্স (FEE) এবং সফটওয়্যার ডেভেলপমেন্ট ইঞ্জিনিয়ার্স (SDE)। এই দুটি পৃথক পদ এবং তার জন্য সাক্ষাৎকার +তারা একই হবে না, প্রত্যেকের নিজস্ব দক্ষতা আছে। এই কোম্পানিগুলো চায় কম্পিউটার বিজ্ঞান জ্ঞান +সফ্টওয়্যার ডেভেলপমেন্ট/ইঞ্জিনিয়ারিং পদের জন্য। --- @@ -106,13 +108,17 @@ - [এটি কীভাবে ব্যবহার করবেন](#এটি-কীভাবে-ব্যবহার-করবেন) - [মনে হয় আপনি যথেষ্ট স্মার্ট নন](#মনে-করেন-না-আপনি-স্মার্ট-যথেষ্ট) - [ভিডিও সংস্থান সম্পর্কে](#ভিডিও-সংস্থান-সম্পর্কে) -- [সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি](#সাক্ষাত্কার-প্রক্রিয়া-সাধারণ-সাক্ষাত্কার-প্রস্তুতি) - [একটি প্রোগ্রামিং ভাষা নির্বাচন করুন](#একটি-প্রোগ্রামিং-ভাষা-নির্বাচন-করুন) -- [বইয়ের তালিকা](#বুক-তালিকা) -- [আপনি শুরু করার আগে](#আপনি-আগে-শুরু-করার-আগে) -- [যা আপনি আবৃত দেখবেন না](#কী-আপনি-দেখতে-পাবেন-না) -- [পূর্বশর্ত জ্ঞান](#পূর্বশর্ত-জ্ঞান) +- [ডেটা স্ট্রাকচার এবং অ্যালগরিদমের জন্য বই](#ডেটা-স্ট্রাকচার-এবং-অ্যালগরিদমের-জন্য-বই) +- [ইন্টারভিউ প্রস্তুতি বই](#ইন্টারভিউ-প্রস্তুতি-বই) +- [আমার মত ভুল করবেন না](#আমার-মত-ভুল-করবেন-না) +- [এখানে যে বিষয়গুলো থাকবে না](#এখানে-যে-বিষয়গুলো-থাকবে-না) - [দৈনিক পরিকল্পনা](#দৈনিক-পরিকল্পনা) +- [কোডিং প্রশ্ন অনুশীলন](#কোডিং-প্রশ্ন-অনুশীলন) +- [কোডিং চ্যালেঞ্জ](#কোডিং-চ্যালেঞ্জ) + +### অধ্যয়নের বিষয় + - [অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ](#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) - [ডেটা স্ট্রাকচার](#ডেটা-স্ট্রাকচার) -[অ্যারে](#অ্যারে) @@ -221,46 +227,60 @@ --- -##কেন এটি ব্যবহার করবেন? - -আমি যখন এই প্রকল্পটি শুরু করেছি, তখন আমি একটি স্তূপ থেকে একটি স্ট্যাক জানি না, বিগ-ও কিছুই জানতাম না, গাছ সম্পর্কে কিছুই বা কীভাবে করব -একটি গ্রাফ অতিক্রম করুন। যদি আমাকে কোনও বাছাই করা অ্যালগরিদম কোড করতে হয়, আমি তোমাকে বলতে পারি এটি খুব ভাল হত না। -আমি যে ডেটা কাঠামোটি ব্যবহার করেছি সেগুলি ভাষাতে নির্মিত হয়েছিল এবং তারা কীভাবে কাজ করেছিল তা আমি জানতাম না -আদৌ হুডের নিচে। আমি যে প্রক্রিয়াটি চালিয়ে যাচ্ছিলাম তা যদি না হয় তবে আমার কখনই মেমোরি পরিচালনা করতে হয়নি -স্মৃতিশক্তি "ত্রুটি, এবং তারপরে আমাকে একটি কাজের সন্ধান করতে হবে I've আমি আমার জীবনে কয়েকটি বহুমাত্রিক অ্যারে ব্যবহার করেছি এবং -সহস্রাধিক সংঘবদ্ধ অ্যারে, তবে আমি স্ক্র্যাচ থেকে কখনও ডেটা স্ট্রাকচার তৈরি করি নি। - -এটি একটি দীর্ঘ পরিকল্পনা। এটি আপনার কয়েক মাস সময় নিতে পারে। আপনি যদি ইতিমধ্যে এর অনেকের সাথে পরিচিত হন তবে আপনাকে অনেক কম সময় লাগবে। - -##এটি কিভাবে ব্যবহার করতে - -
-এটি কীভাবে ব্যবহার করবেন +## কেন এটি ব্যবহার করবেন? -নীচের সমস্ত কিছুই একটি রূপরেখা এবং আপনার আইটেমগুলি উপরের থেকে নীচে পর্যন্ত সামলানো উচিত। - -অগ্রগতি পরীক্ষা করার জন্য কার্য তালিকা সহ আমি গিথুবের বিশেষ মার্কডাউন গন্ধ ব্যবহার করছি। - -** একটি নতুন শাখা তৈরি করুন যাতে আপনি এর মতো আইটেমগুলি পরীক্ষা করতে পারেন, বন্ধনীগুলিতে কেবল একটি এক্স রাখুন: [x] ** +আপনি যদি একটি বড় কোম্পানির সফটওয়্যার ইঞ্জিনিয়ার হিসেবে কাজ করতে চান, তাহলে এই বিষয়গুলো আপনাকে জানতে হবে। + +আপনি যদি কম্পিউটার সায়েন্সে ডিগ্রী পেতে মিস করেন, যেমন আমি করেছি, এটি আপনাকে ধরবে এবং আপনার জীবনের চার বছর বাঁচাবে। + +যখন আমি এই প্রকল্পটি শুরু করি, তখন আমি একটি স্তূপ থেকে একটি স্ট্যাক জানতাম না, বিগ-ও কিছুই জানতাম না, বা গাছ সম্পর্কে কিছু জানতাম না, বা কীভাবে +একটি গ্রাফ অতিক্রম. যদি আমাকে একটি সাজানোর অ্যালগরিদম কোড করতে হয়, আমি আপনাকে বলতে পারি এটি ভয়ানক হত। +আমার ব্যবহৃত প্রতিটি ডেটা স্ট্রাকচার ভাষাতে তৈরি করা হয়েছিল এবংআমাকে কখনই মেমরি ম্যানেজ করতে হয়নি যদি না আমি যে প্রক্রিয়াটি চালাচ্ছি তা একটি "আউট অফ মেমরি" ইরর দেয়, এবং তারপর আমাকে একটি সমাধান খুঁজে বের করতে হবে। আমি আমার জীবনে কয়েকটি বহুমাত্রিক অ্যারে ব্যবহার করেছি এবং +হাজার হাজার সহযোগী অ্যারে, কিন্তু আমি স্ক্র্যাচ থেকে ডেটা স্ট্রাকচার তৈরি করিনি। + +এটা একটা দীর্ঘ পরিকল্পনা। এটা আপনার মাস লাগতে পারে. আপনি যদি ইতিমধ্যে এটির অনেক কিছুর সাথে পরিচিত হন তবে এটি আপনার অনেক কম সময় লাগবে। +## এটি কিভাবে ব্যবহার করতে - একটি শাখা কাঁটাচামচ করুন এবং নীচের আদেশগুলি অনুসরণ করুন +নীচের সমস্ত কিছুই একটি রূপরেখা এবং আপনার আইটেমগুলি উপরের থেকে নীচে পর্যন্ত অধ্যবসায় করা উচিত। -`git checkout-b progress` -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +অগ্রগতি পরীক্ষা করার জন্য কার্য তালিকা সহ আমি গিটহাবের বিশেষ মার্কডাউন ব্যবহার করছি। + - [গিটহাব মার্কডাউন সম্পর্কে আরও](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### যদি আপনি গিট ব্যবহার করতে না চান -`git fetch--all` - আপনার পরিবর্তনগুলি শেষ করার পরে এক্স সহ সমস্ত বাক্স চিহ্নিত করুন +এই পৃষ্ঠায়, উপরের দিকের কোড বোতামে ক্লিক করুন, তারপর "Download ZIP" এ ক্লিক করুন। ফাইলটি আনজিপ করুন এবং আপনি পাঠ্য ফাইলগুলির সাথে কাজ করতে পারেন। + +আপনি যদি মার্কডাউন বোঝে এমন একটি কোড এডিটরে খোলা থাকেন, তাহলে আপনি সবকিছু সুন্দরভাবে ফরম্যাট করা দেখতে পাবেন। + +![কিভাবে একটি জিপ ফাইল হিসাবে রেপো ডাউনলোড করবেন](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### যদি আপনি গিট ব্যবহার করতে চান -`git add .` +1. ***গিটহাব রেপো ফোর্ক করুনঃ*** `https://github.com/jwasham/coding-interview-university` by clicking on the Fork button. + + ![গিটহাব রেপো ফোর্ক করুন](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. আপনার লোকাল রেপোতে ক্লোন করুনঃ -`git commit-m "Marked x"` + ``` + git clone git@github.com:/coding-interview-university.git + cd coding-interview-university + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + ``` -`git rebase jwasham/main` +1. আপনি আপনার পরিবর্তনগুলি সম্পূর্ণ করার পরে X দিয়ে সমস্ত বাক্স চিহ্নিত করুনঃ -`git push--force` -[গিথুব-স্বাদযুক্ত মার্কডাউন সম্পর্কে আরও](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + ``` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + ```
From 1ca3e2b468fc942dc5c07ff936d2f32e630216d0 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Wed, 26 Oct 2022 23:07:41 +0600 Subject: [PATCH 694/857] revise and rewrite first 5 section --- translations/README-bn.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index d2c4143ab9..dd991a3b8d 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -282,25 +282,24 @@ git push --force ``` -
-##মনে হয় না আপনি যথেষ্ট স্মার্ট নন +## মনে হয় না আপনি যথেষ্ট স্মার্ট নন + -সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। --[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) --[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই][https://www.youtube.com/watch?v=1i8ylq4j_EY) --[বিশ্বাস আপনি পরিবর্তন করতে পারেন](http://www.aaronsw.com/weblog/dweck) --[ভাবেন আপনি গুগলে কাজ করার মতো স্মার্ট নন? ঠিক আছে, আবার চিন্তা করুন](https://www.youtube.com/watch?v=uPOJ1PR50ag) - -##ভিডিও সংস্থান সম্পর্কে +- নিম্নলিখিত ভিডিওগুলি আপনাকে এই নিরাপত্তাহীনতা কাটিয়ে উঠতে সাহায্য করতে পারে: + -[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) + -[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই][https://www.youtube.com/watch?v=1i8ylq4j_EY) -কিছু ভিডিও কেবল কোর্সেরা বা এডএক্স ক্লাসে ভর্তি হয়ে পাওয়া যায়। এগুলিকে এমওওসি বলা হয়। -কখনও কখনও ক্লাসগুলি সেশনে হয় না তাই আপনাকে কয়েক মাস অপেক্ষা করতে হবে, যাতে আপনার অ্যাক্সেস নেই। - - আমি অনলাইনে কোর্স ভিডিও সহ ইউটিউব ভিডিও হিসাবে সর্বদা উপলব্ধ এবং সর্বদা উপলভ্য পাবলিক উত্স যোগ করতে আপনার সাহায্যের প্রশংসা করব। - আমি বিশ্ববিদ্যালয়ের বক্তৃতা ব্যবহার করতে পছন্দ করি। +## ভিডিও সংস্থান সম্পর্কে +কিছু ভিডিও শুধুমাত্র একটি Coursera বা EdX ক্লাসে ভর্তির মাধ্যমে পাওয়া যায়। এগুলোকে MOOC বলা হয়। +কখনও কখনও ক্লাস সেশনে থাকে না তাই আপনাকে কয়েক মাস অপেক্ষা করতে হবে, তাই আপনার অ্যাক্সেস নেই। + +বিনামূল্যে এবং সর্বদা উপলব্ধ পাবলিক সোর্স দিয়ে অনলাইন কোর্সের সংস্থানগুলি প্রতিস্থাপন করা দুর্দান্ত হবে, +যেমন ইউটিউব ভিডিও (বিশেষত ইউনিভার্সিটির বক্তৃতা), যাতে আপনি যেকোন সময় এগুলি অধ্যয়ন করতে পারেন, +শুধুমাত্র যখন একটি নির্দিষ্ট অনলাইন কোর্স সেশনে থাকে তখন নয়। -##সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি +## সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি
<সুমারী> সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কারের প্রস্তুতি From 7eff46ec4b2e0a38e3e9f52a6a4bf3f3add0b944 Mon Sep 17 00:00:00 2001 From: Vishal Kumar <112061222+Vish1161@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:39:36 +0530 Subject: [PATCH 695/857] Added a useful resource Hey, I have added a helpful reference link for SQL that I think will best add to your content and give your readers a more diverse understanding of the topic. I hope you will like this. Thank you. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3e33562625..020e4c786d 100644 --- a/README.md +++ b/README.md @@ -494,7 +494,7 @@ without lyrics and you'll be able to focus pretty well. These are prevalent technologies but not part of this study plan: -- SQL +- [SQL](https://www.scaler.com/topics/sql/) - Javascript - HTML, CSS, and other front-end technologies From ba9e9cb45dc20e2fb63b1a7e3eb1bfc22c1fc791 Mon Sep 17 00:00:00 2001 From: Vishal Kumar <112061222+Vish1161@users.noreply.github.com> Date: Wed, 2 Nov 2022 16:03:13 +0530 Subject: [PATCH 696/857] Added a useful resource Hey, I have added a helpful reference link for SQL that I think will best add to your content and give your readers a more diverse understanding of the topic. I hope you will like this. Thank you. --- translations/README-ja.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index b3b7c8a69c..a6400b6f7c 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -376,7 +376,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. これらは一般的な技術ですが、この調査計画の一部ではありません: -- SQL +- [SQL](https://www.scaler.com/topics/sql/) - Javascript - HTML、CSS、およびその他のフロントエンド技術 @@ -1893,4 +1893,4 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 ## コンピュータサイエンスコース - [オンラインCSコースのディレクトリ](https://github.com/open-source-society/computer-science) -- [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) \ No newline at end of file +- [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) From fec6f644306d1de9915af9da135f9eb022a2a46e Mon Sep 17 00:00:00 2001 From: imran110219 Date: Wed, 2 Nov 2022 23:13:59 +0600 Subject: [PATCH 697/857] add text --- translations/README-bn.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/translations/README-bn.md b/translations/README-bn.md index dd991a3b8d..31d729a195 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -298,6 +298,36 @@ বিনামূল্যে এবং সর্বদা উপলব্ধ পাবলিক সোর্স দিয়ে অনলাইন কোর্সের সংস্থানগুলি প্রতিস্থাপন করা দুর্দান্ত হবে, যেমন ইউটিউব ভিডিও (বিশেষত ইউনিভার্সিটির বক্তৃতা), যাতে আপনি যেকোন সময় এগুলি অধ্যয়ন করতে পারেন, শুধুমাত্র যখন একটি নির্দিষ্ট অনলাইন কোর্স সেশনে থাকে তখন নয়। + +## একটি প্রোগ্রামিং ভাষা চয়ন করুন + +কোডিং ইন্টারভিউয়ের জন্য আপনাকে একটি প্রোগ্রামিং ভাষা বেছে নিতে হবে, +তবে আপনাকে এমন একটি ভাষা খুঁজে বের করতে হবে যা আপনি কম্পিউটার বিজ্ঞানের ধারণাগুলি অধ্যয়ন করতে ব্যবহার করতে পারেন। + +পছন্দের ভাষা একই হবে, যাতে আপনাকে শুধুমাত্র একটিতে দক্ষ হতে হবে। + +### For this Study Plan + +When I did the study plan, I used 2 languages for most of it: C and Python + +* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures + and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + but when you're learning how these low-level data structures are built, it's great to feel close to the metal. + - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - This is a short book, but it will give you a great handle on the C language and if you practice it a little + you'll quickly get proficient. Understanding C helps you understand how programs and memory work. + - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. + - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) +* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. + +This is my preference. You do what you like, of course. + +You may not need it, but here are some sites for learning a new language: +- [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/) ## সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি From ddfddd2b318ac4a804e7aee5734771976f51692d Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Fri, 4 Nov 2022 19:11:39 +0600 Subject: [PATCH 698/857] add text --- translations/README-bn.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 31d729a195..29aea9d848 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -306,19 +306,19 @@ পছন্দের ভাষা একই হবে, যাতে আপনাকে শুধুমাত্র একটিতে দক্ষ হতে হবে। -### For this Study Plan +### এই স্টাডি প্ল্যানের জন্য -When I did the study plan, I used 2 languages for most of it: C and Python +যখন আমি অধ্যয়নের পরিকল্পনাটি করেছি, তখন আমি এর বেশিরভাগের জন্য 2টি ভাষা ব্যবহার করেছি: সি এবং পাইথন -* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, - but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. +* সি: খুব নিম্ন স্তরের। আপনাকে পয়েন্টার এবং মেমরি বরাদ্দ/বরাদ্দকরণের সাথে মোকাবিলা করার অনুমতি দেয়, যাতে আপনি ডেটা স্ট্রাকচার এবং অ্যালগরিদম খুব দৃঢ়ভাবে বুঝতে পারেন। পাইথন বা জাভার মতো উচ্চ স্তরের ভাষাগুলিতে, এগুলি আপনার কাছ থেকে লুকানো থাকে। প্রতিদিনের কাজে, এটি দুর্দান্ত, + কিন্তু যখন আপনি এই নিম্ন-স্তরের ডেটা স্ট্রাকচারগুলি কীভাবে তৈরি করা হয় তা শিখছেন, তখন ধাতুর কাছাকাছি অনুভব করা দুর্দান্ত। + - সি সর্বত্র। আপনি যখন অধ্যয়ন করছেন তখন আপনি বই, বক্তৃতা, ভিডিও, *সব জায়গায়* উদাহরণ দেখতে পাবেন। - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. - - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) + - This is a short book, but it will give you a grea + - এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষার উপর একটি দুর্দান্ত হ্যান্ডেল দেবে এবং আপনি যদি এটি একটু অনুশীলন করেন + আপনি দ্রুত দক্ষ হয়ে উঠবেন। C বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কিভাবে কাজ করে তা বুঝতে সাহায্য করে। + - আপনাকে বইটির গভীরে যেতে হবে না (বা এমনকি এটি শেষ করতে হবে)। যেখানে আপনি সি-তে পড়তে এবং লিখতে স্বাচ্ছন্দ্যবোধ করেন সেখানে যান। + - [বইয়ের প্রশ্নের উত্তর](https://github.com/lekkas/c-algorithms) * Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. This is my preference. You do what you like, of course. From 426c3d68d083b6fecea8039b5b188d6c610a25b1 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Fri, 4 Nov 2022 19:12:12 +0600 Subject: [PATCH 699/857] add text --- translations/README-bn.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 29aea9d848..2e894ea1e1 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -314,16 +314,15 @@ কিন্তু যখন আপনি এই নিম্ন-স্তরের ডেটা স্ট্রাকচারগুলি কীভাবে তৈরি করা হয় তা শিখছেন, তখন ধাতুর কাছাকাছি অনুভব করা দুর্দান্ত। - সি সর্বত্র। আপনি যখন অধ্যয়ন করছেন তখন আপনি বই, বক্তৃতা, ভিডিও, *সব জায়গায়* উদাহরণ দেখতে পাবেন। - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a grea - এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষার উপর একটি দুর্দান্ত হ্যান্ডেল দেবে এবং আপনি যদি এটি একটু অনুশীলন করেন আপনি দ্রুত দক্ষ হয়ে উঠবেন। C বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কিভাবে কাজ করে তা বুঝতে সাহায্য করে। - আপনাকে বইটির গভীরে যেতে হবে না (বা এমনকি এটি শেষ করতে হবে)। যেখানে আপনি সি-তে পড়তে এবং লিখতে স্বাচ্ছন্দ্যবোধ করেন সেখানে যান। - [বইয়ের প্রশ্নের উত্তর](https://github.com/lekkas/c-algorithms) -* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. +* পাইথন: আধুনিক এবং খুব অভিব্যক্তিপূর্ণ, আমি এটি শিখেছি কারণ এটি খুব দরকারী এবং আমাকে একটি সাক্ষাত্কারে কম কোড লেখার অনুমতি দেয়। -This is my preference. You do what you like, of course. +এই আমার পছন্দ। আপনি অবশ্যই যা পছন্দ করেন তাই করেন। -You may not need it, but here are some sites for learning a new language: +আপনার এটির প্রয়োজন নাও হতে পারে, তবে একটি নতুন ভাষা শেখার জন্য এখানে কিছু সাইট রয়েছে: - [Exercism](https://exercism.org/tracks) - [Codewars](http://www.codewars.com) - [HackerEarth](https://www.hackerearth.com/for-developers/) From 09dc4f1efb2b5173af55772c2715f988caacf053 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Sun, 6 Nov 2022 23:55:32 +0600 Subject: [PATCH 700/857] add text --- translations/README-bn.md | 54 ++++++++++----------------------------- 1 file changed, 13 insertions(+), 41 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 2e894ea1e1..111b327e03 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -328,57 +328,29 @@ - [HackerEarth](https://www.hackerearth.com/for-developers/) - [Scaler Topics (Java, C++)](https://www.scaler.com/topics/) -## সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কার প্রস্তুতি +### আপনার কোডিং সাক্ষাত্কারের জন্য -
-<সুমারী> সাক্ষাত্কার প্রক্রিয়া এবং সাধারণ সাক্ষাত্কারের প্রস্তুতি - -- [এ বি সি: সর্বদা কোডিং থাকুন](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [হোয়াইটবোর্ডিং](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [প্রোগ্রামিং সাক্ষাত্কারের সময় কার্যকর হোয়াইটবোর্ডিং](http://www.coderust.com/blog/2014/04/10/Effective-Witeboarding-during-programming-interviews/) -- [টেক রিক্রুটিং কে ক্ষমা করা](https://www.youtube.com/watch?v=N233T0epWTs) -- কোডিং সাক্ষাত্কারটি ক্র্যাক করা 1: -- [গেইল এল ম্যাকডোয়েল-কোডিং সাক্ষাত্কারের ক্র্যাকিং (ভিডিও)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [লেখক গেইল লাকম্যান ম্যাকডোভেল (ভিডিও) এর সাথে কোডিং সাক্ষাত্কার ক্র্যাক করা](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- বিগ 4 এ কীভাবে চাকরী পাবেন? - - [বিগ 4 এ কীভাবে চাকরী পাবেন-অ্যামাজন, ফেসবুক, গুগল এবং মাইক্রোসফ্ট (ভিডিও)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - -- প্রস্তুতি কোর্স: - - [সফটওয়্যার ইঞ্জিনিয়ার সাক্ষাত্কার প্রকাশিত (বেতনভুক্ত কোর্স)](https://www.udemy.com/software-engineer-interview-unleashed): - -একজন প্রাক্তন গুগল সাক্ষাত্কারকারীর থেকে কীভাবে নিজেকে সফটওয়্যার ইঞ্জিনিয়ার সাক্ষাত্কারের জন্য প্রস্তুত করবেন তা শিখুন। - - [ডেটা স্ট্রাকচার, অ্যালগরিদম এবং সাক্ষাত্কারের জন্য পাইথন! (প্রদত্ত কোর্স)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - -পাইথন কেন্দ্রিক সাক্ষাত্কার প্রস্তুতির কোর্সে ডেটা স্ট্রাকচার, অ্যালগরিদম, মক সাক্ষাত্কার এবং আরও অনেক কিছু রয়েছে। - - [পাইথন ব্যবহার করে ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলিতে ইন্ট্রো! (উদাসীনতা মুক্ত কোর্স)](https://www.udacity.com/cورس/data-structures-এবং-algorithms-in-python--ud513): - -একটি ফ্রি পাইথন কেন্দ্রিক ডেটা স্ট্রাকচার এবং অ্যালগরিদম কোর্স। - - [ডেটা স্ট্রাকচার এবং অ্যালগোরিদম ন্যানোডগ্রি! (উদাস্তিটি ন্যানোডগ্রি প্রদান করেছে)](https://www.udacity.com/course/data-structures-এবং-algorithms-nanodegree--nd256): - -100 টিরও বেশি ডেটা স্ট্রাকচার এবং অ্যালগরিদম অনুশীলন এবং আপনাকে একটি সাক্ষাত্কারের জন্য এবং কাজের সুযোগে দৃশ্যের জন্য আপনাকে প্রস্তুত করতে ডেডিকেটেড পরামর্শদাতার দিকনির্দেশ দিয়ে অনুশীলন পান। - -
- -##সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করুন - -সাক্ষাত্কারের কোডিং অংশটি করতে আপনি স্বাচ্ছন্দ্যযুক্ত একটি ভাষা ব্যবহার করতে পারেন তবে বড় সংস্থাগুলির জন্য এগুলি কঠোর পছন্দ: +সাক্ষাত্কারের কোডিং অংশটি করতে আপনি স্বাচ্ছন্দ্যযুক্ত একটি ভাষা ব্যবহার করতে পারেন তবে বড় কোম্পানি গুলির জন্য এগুলি কঠোর পছন্দ: --সি ++ --জাভা --পাইথন +- সি ++ +- জাভা +- পাইথন আপনি এগুলি ব্যবহার করতে পারেন তবে প্রথমে পড়তে পারেন। সতর্কতা থাকতে পারে: --জাভাস্ক্রিপ্ট --রুবি +- জাভাস্ক্রিপ্ট +- রুবি -এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: [কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) - -এই মূল নিবন্ধটি আমার পোস্টের উপর ভিত্তি করে ছিল: http://blog.codingforinterviews.com/best-programming-language-jobs/ +এখানে একটি নিবন্ধটি আমি সাক্ষাত্কারের জন্য একটি ভাষা বেছে নেওয়ার বিষয়ে লিখেছি: +[কোডিং সাক্ষাত্কারের জন্য একটি ভাষা বেছে নিন](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/ --http://blog.codingforinterviews.com/best-programming-language-jobs/ - -[ভাষার সংস্থানগুলি এখানে দেখুন] (প্রোগ্রামিং-ভাষা-সংস্করণ.এমডি) +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) + +[See language-specific resources here](programming-language-resources.md) আপনি নীচে অন্তর্ভুক্ত কিছু সি, সি ++ এবং পাইথন শিখতে দেখবেন, কারণ আমি শিখছি। কয়েকটি বই জড়িত রয়েছে, নীচে দেখুন। From b9a42f4fb15e29c028072c03074099be84ed9107 Mon Sep 17 00:00:00 2001 From: KhrTim <42896525+KhrTim@users.noreply.github.com> Date: Tue, 8 Nov 2022 16:03:25 +0300 Subject: [PATCH 701/857] Replace repeating link Previously, link for the lecture 22 led to lecture 21 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 020e4c786d..6b531ffd16 100644 --- a/README.md +++ b/README.md @@ -1009,7 +1009,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) From 1049de69314832b9431a4f7dea9b3eb336040301 Mon Sep 17 00:00:00 2001 From: KhrTim <42896525+KhrTim@users.noreply.github.com> Date: Tue, 8 Nov 2022 16:04:38 +0300 Subject: [PATCH 702/857] Change repeating link and rename Previously, link for the lecture 22 led to lecture 21 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 020e4c786d..494151adcf 100644 --- a/README.md +++ b/README.md @@ -1009,7 +1009,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 22 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) From acace9ef98d7a25f5f4f63d68bc34daba3c5dd80 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 8 Nov 2022 08:48:40 -0800 Subject: [PATCH 703/857] Removes broken link. --- translations/README-bn.md | 1 - translations/README-de.md | 1 - translations/README-el.md | 1 - translations/README-es.md | 1 - translations/README-fr.md | 1 - translations/README-he.md | 1 - translations/README-ja.md | 1 - translations/README-kh.md | 1 - translations/README-pl.md | 1 - translations/README-ptbr.md | 1 - translations/README-ru.md | 1 - translations/README-th.md | 1 - translations/README-tw.md | 1 - translations/README-uk.md | 1 - translations/README-ur.md | 1 - translations/README-vi.md | 1 - 16 files changed, 16 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 2e894ea1e1..819b5a3e31 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -335,7 +335,6 @@ - [এ বি সি: সর্বদা কোডিং থাকুন](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [হোয়াইটবোর্ডিং](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [প্রোগ্রামিং সাক্ষাত্কারের সময় কার্যকর হোয়াইটবোর্ডিং](http://www.coderust.com/blog/2014/04/10/Effective-Witeboarding-during-programming-interviews/) - [টেক রিক্রুটিং কে ক্ষমা করা](https://www.youtube.com/watch?v=N233T0epWTs) - কোডিং সাক্ষাত্কারটি ক্র্যাক করা 1: - [গেইল এল ম্যাকডোয়েল-কোডিং সাক্ষাত্কারের ক্র্যাকিং (ভিডিও)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-de.md b/translations/README-de.md index fda0457316..0e46cf1688 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -285,7 +285,6 @@ keinen Zugriff darauf. - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] Cracking The Coding Interview Teil 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-el.md b/translations/README-el.md index 8a83dbd357..ce84225c40 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -186,7 +186,6 @@ - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Αποτελεσματικό Whiteboarding κατά τη διάρκεια των Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-es.md b/translations/README-es.md index 5e7fc0685f..4863a092b9 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -268,7 +268,6 @@ Apreciaría su ayuda añadiendo fuentes siempre disponibles, publicas y gratuita ## Prepárese para la entrevista - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-fr.md b/translations/README-fr.md index 079906171c..fb8127614c 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -293,7 +293,6 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo - [ ] [Quatre étapes à Google, sans un diplôme](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [Tableau blanc](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Comment Google pense à propos de l'embauche, gestion, et culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Tableau blanc efficace lors des entretiens de codage](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Réussis dans une entrevue de codage: - [ ] [Gayle L McDowell - Réussi l'entretien de codage (vidéo)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Réussi l'entretien de codage avec auteur Author Gayle Laakmann McDowell (vidéo)](https://www.youtube.com/watch?v=aClxtDcdpsQ) diff --git a/translations/README-he.md b/translations/README-he.md index 385a2f88b4..9291270a9f 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -308,7 +308,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [ארבעה צעדים לקראת גוגל בלי תואר](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [לוח מחיק](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) diff --git a/translations/README-ja.md b/translations/README-ja.md index a6400b6f7c..21cb9def19 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -191,7 +191,6 @@ Lynda.comコースは有料です。 - [ ] [ABC:常にコーディングする](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [プログラミング面接中の効果的なホワイトボード](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [技術職募集での謎解き](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] クラッキングコーディング面接セット1: - [ ] [Gayle L McDowell - コーディング面接(ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-kh.md b/translations/README-kh.md index bb6c333558..22baabdfa5 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -236,7 +236,6 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [ABC: តែងតែសរសេរកូដ](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [ការប្រេីប្រាស់ក្តារខៀន](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [ការប្រេីប្រាស់ក្តារខៀនមានប្រសិទ្ធិភាពក្នុងពេលសម្ភាសន៍កម្មវិធី](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [ជ្រើសរើសបុគ្គលិកជំនាញបច្ចេកវិទ្យា](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] វិធីរកការងារនៅក្រុមហ៊ុនធំ ៤៖ - [ ] [របៀបរកការងារធ្វើនៅក្រុមហ៊ុនធំ ៤ - Amazon, Facebook, Google និង Microsoft (មានវីដេអូ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) diff --git a/translations/README-pl.md b/translations/README-pl.md index 5209f0ecc8..e1840ad3ac 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -261,7 +261,6 @@ Czasami zajęcia nie są w sesji, więc musisz poczekać kilka miesięcy, więc - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index f9ba2c7ddb..67fb3b8fd1 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -256,7 +256,6 @@ Alguns vídeos estão disponíveis somente ao ingressar em um curso no Coursera, - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) (Usando O Quadro Branco) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) (Usando o Quadro Branco Efetivamente durante Entrevistas de Programação) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) (Desmistificando Recrutamento Técnico) - [ ] Decifrando A Entrevista de Programação Série 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) (Gayle L McDowell - Decifrando A Entrevista de Programação - vídeo) diff --git a/translations/README-ru.md b/translations/README-ru.md index b9ebc0bb32..94ef6b3c6c 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -300,7 +300,6 @@ Google не возьмёт тебя на работу. - [ ] [4 шага к Google без образования в CS](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [Кодирование на доске](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Что думает Google о найме, управлении и культуре](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) - - [ ] [Эффективное кодирование на доске в процессе собеседования](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Прохождения собеседования по программированию набор 1: - [ ] [Gayle L McDowell - Прохождения собеседования по программированию (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Прохождения собеседования по программированию с Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) diff --git a/translations/README-th.md b/translations/README-th.md index b5f823f282..fe29cd2dba 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -238,7 +238,6 @@ - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) diff --git a/translations/README-tw.md b/translations/README-tw.md index 1f5be7e847..0ff99f9033 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -265,7 +265,6 @@ - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] 如何錄取Big Tech(Google, Amazon, Facebook, Apple): - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) diff --git a/translations/README-uk.md b/translations/README-uk.md index 9fa7c83600..3188f72785 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -282,7 +282,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) diff --git a/translations/README-ur.md b/translations/README-ur.md index ebc22792af..64a12315ff 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -269,7 +269,6 @@ Sometimes the classes are not in session so you have to wait a couple of months, - [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) - [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) diff --git a/translations/README-vi.md b/translations/README-vi.md index e993f03566..4af369f938 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -262,7 +262,6 @@ Lynda.com thì không miễn phí. - [ ] [4 bước đến Google dù không có bằng cấp](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) - [ ] [Whiteboarding (Giải toán lập trình trên bảng trắng)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) - [ ] [Google nghĩ thế nào về Tuyển dụng, Quản lý và Văn hóa](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) -- [ ] [Whiteboarding hiệu quả trong khi phỏng vấn kỹ năng lập trình](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/) - [ ] Cracking The Coding Interview Set 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) From 030281a47c105a0ac13b9c70f34b79622f4d9df6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 8 Nov 2022 09:00:08 -0800 Subject: [PATCH 704/857] Adds link to CS roadmap. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 020e4c786d..fc4ef074aa 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,9 @@ Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 s them will not be the same, as each has its own competencies. These companies require computer science knowledge for software development/engineering roles. +There is a lot to learn in a university Computer Science program, but only knowing about 75% is good enough for an interview, so that's what I cover here. +For a complete CS self-taught program, the resources for my study plan have been included in Kamran Ahmed's Computer Science Roadmap: https://roadmap.sh/computer-science + --- ## Table of Contents @@ -494,9 +497,9 @@ without lyrics and you'll be able to focus pretty well. These are prevalent technologies but not part of this study plan: -- [SQL](https://www.scaler.com/topics/sql/) - Javascript - HTML, CSS, and other front-end technologies +- SQL ## The Daily Plan From 988821b1310667ac7a4f1d94d144befbaeed0367 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Thu, 10 Nov 2022 22:00:02 +0600 Subject: [PATCH 705/857] add language section --- translations/README-bn.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 111b327e03..3c18b00dfb 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -348,11 +348,9 @@ আপনার ভাষায় খুব স্বাচ্ছন্দ্য বোধ করা এবং বুদ্ধিমান হওয়া দরকার। পছন্দ সম্পর্কে আরও পড়ুন: -- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) +- [আপনার কোডিং সাক্ষাৎকারের জন্য সঠিক ভাষা নির্বাচন করুন](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -[See language-specific resources here](programming-language-resources.md) - -আপনি নীচে অন্তর্ভুক্ত কিছু সি, সি ++ এবং পাইথন শিখতে দেখবেন, কারণ আমি শিখছি। কয়েকটি বই জড়িত রয়েছে, নীচে দেখুন। +[ভাষা ভিত্তিক উৎসগুলো দেখুন](programming-language-resources.md) ##বইএর তালিকা From d175a903c4f9e302b76667c32b9dd65be78a2b45 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Thu, 10 Nov 2022 22:04:43 +0600 Subject: [PATCH 706/857] edit markdown --- translations/README-bn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 3c18b00dfb..112ece81a7 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -287,8 +287,8 @@ -সফল সফ্টওয়্যার ইঞ্জিনিয়াররা স্মার্ট, তবে অনেকেরই এমন নিরাপত্তাহীনতা রয়েছে যে তারা যথেষ্ট স্মার্ট নয়। - নিম্নলিখিত ভিডিওগুলি আপনাকে এই নিরাপত্তাহীনতা কাটিয়ে উঠতে সাহায্য করতে পারে: - -[জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) - -[একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই][https://www.youtube.com/watch?v=1i8ylq4j_EY) + - [জিনিয়াস প্রোগ্রামারটির রূপকথার কাহিনী](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [একা যাওয়া বিপদজনক: টেকের মধ্যে অদৃশ্য মনস্টারদের লড়াই](https://www.youtube.com/watch?v=1i8ylq4j_EY) ## ভিডিও সংস্থান সম্পর্কে From 39420f712ce548917bcecfd6bd57d1a628b45b57 Mon Sep 17 00:00:00 2001 From: imran110219 Date: Thu, 10 Nov 2022 22:23:48 +0600 Subject: [PATCH 707/857] add book section --- translations/README-bn.md | 43 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 112ece81a7..816e705b38 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -352,9 +352,46 @@ [ভাষা ভিত্তিক উৎসগুলো দেখুন](programming-language-resources.md) -##বইএর তালিকা - -আমি যা ব্যবহার করেছি তার চেয়ে এটি একটি সংক্ষিপ্ত তালিকা। এটি আপনার সময় বাঁচাতে সংক্ষেপে বর্ণিত। +## ডেটা স্ট্রাকচার এবং অ্যালগরিদমের জন্য বই + +এই বইটি কম্পিউটার বিজ্ঞানের জন্য আপনার ভিত্তি তৈরি করবে। + +শুধু একটি বেছে নিন, এমন একটি ভাষায় যা আপনি স্বাচ্ছন্দ্য বোধ করবেন। আপনাকে অনেক পড়াশুনা এবং কোডিং করতে হবে। + +### সি + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms + +### পাইথন + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - I loved this book. It covered everything and more. + - Pythonic code + - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### জাভা + +আপনার পছন্দ: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Free Coursera course that covers the book (taught by the authors!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### সি++ + +আপনার পছন্দ: + +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) ###সাক্ষাত্কার প্রস্তুতি From a5d5d610608fc076859a6de85bd3f31184940fbc Mon Sep 17 00:00:00 2001 From: imran110219 Date: Sat, 12 Nov 2022 20:23:37 +0600 Subject: [PATCH 708/857] add section --- translations/README-bn.md | 85 ++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 51 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 816e705b38..a74bfa6e94 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -393,59 +393,42 @@ - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -###সাক্ষাত্কার প্রস্তুতি - -- [প্রোগ্রামিং সাক্ষাত্কারগুলি উদ্ভাসিত হয়েছে: সাক্ষাত্কারের মাধ্যমে আপনার কোডের কোডিং, ৪ র্থ সংস্করণ](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - -সি ++ এবং জাভাতে উত্তর - -কোডিং সাক্ষাত্কার ক্র্যাক করার জন্য এটি একটি ভাল প্রস্তুতি - -খুব বেশি কঠিন নয়, বেশিরভাগ সমস্যাগুলি আপনি একটি সাক্ষাত্কারে যা দেখবেন তার চেয়ে সহজ হতে পারে (আমি যা পড়েছি তা থেকে) -- [কোডিং সাক্ষাত্কার ক্র্যাকিং, 6th ষ্ঠ সংস্করণ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - -জাভা উত্তর - -
-আপনার যদি অতিরিক্ত পরিমাণে সময় থাকে তবে - -একটি নির্বাচন করুন: - -- [প্রোগ্রামিং সাক্ষাত্কারের উপাদানগুলি (সি ++ সংস্করণ)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- প্রোগ্রামিং সাক্ষাত্কারের উপাদানসমূহ (জাভা সংস্করণ) - -[বই](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) - -[কোম্পানির প্রকল্প-বইয়ের প্রতিটি সমস্যার জন্য পদ্ধতি স্টাব এবং টেস্ট কেস](https://github.com/gardncl/elements-of-programming-interviews) - -
- -###কম্পিউটার আর্কিটেকচার - -- [গ্রেট কোড লিখুন: খণ্ড ১: মেশিনটি বোঝা] (https://www.amazon.com/Write-Great-Code-Unders સમજ-ম্যাচাইন / ডিপি / 1593270038) - -বইটি 2004 সালে প্রকাশিত হয়েছিল এবং এটি কিছুটা পুরানো হলেও সংক্ষেপে কম্পিউটার বোঝার জন্য এটি এক ভয়ঙ্কর উত্স। - -লেখক আবিষ্কার করেছেন [এইচএলএ] (https://en.wikedia.org/wiki/High_Level_As आशीर्वाद), তাই লবণের দানা দিয়ে এইচএলএ-তে উল্লেখ এবং উদাহরণ নিন। বিস্তৃতভাবে ব্যবহৃত হয় না, তবে সমাবেশটি কেমন লাগে তার শালীন উদাহরণ। - -এই অধ্যায়গুলি আপনাকে একটি সুন্দর ভিত্তি দেওয়ার জন্য মূল্যবান: -
- ...... - - -দ্বিতীয় অধ্যায়-সংখ্যা উপস্থাপনা - -অধ্যায় 3-বাইনারি গাণিতিক এবং বিট অপারেশন - -অধ্যায় 4-ভাসমান-পয়েন্ট প্রতিনিধিত্ব - -অধ্যায় 5-চরিত্র উপস্থাপনা - -অধ্যায় 6-মেমরি সংস্থা এবং অ্যাক্সেস - -অধ্যায় 7-সম্মিলিত ডেটা টাইপ এবং মেমরি অবজেক্টস - -অধ্যায় 9-সিপিইউ আর্কিটেকচার - -অধ্যায় 10-নির্দেশ সেট আর্কিটেকচার - -অধ্যায় 11-মেমরি আর্কিটেকচার এবং সংস্থা - -
- - -###ভাষা নির্দিষ্ট - -** আপনাকে সাক্ষাত্কারের জন্য একটি ভাষা চয়ন করতে হবে (উপরে দেখুন) * ** - -ভাষা অনুসারে আমার প্রস্তাবনা এখানে রইল। আমার কাছে সমস্ত ভাষার জন্য সংস্থান নেই। আমি সংযোজন স্বাগত জানাই। +## সাক্ষাত্কার প্রস্তুতি বই + +আপনি এই একটি গুচ্ছ কিনতে হবে না. সত্যি বলতে "Cracking the Coding Interview" সম্ভবত যথেষ্ট, +কিন্তু আমি নিজেকে আরো অনুশীলন দিতে আরো কেনা. কিন্তু আমি সবসময় খুব বেশি করি। + +আমি এই দুটি কিনলাম। তারা আমাকে প্রচুর অনুশীলন দিয়েছে। + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - উত্তরগুলো সি++ আর জাভাতে + - কোডিং ইন্টারভিউ ক্র্যাক করার জন্য এটি একটি ভাল ওয়ার্ম-আপ + - খুব কঠিন না। আপনি একটি সাক্ষাত্কারে যা দেখতে পাবেন তার চেয়ে বেশিরভাগ সমস্যা সহজ হতে পারে (আমি যা পড়েছি তা থেকে) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - উত্তরগুলো জাভাতে + +### আপনার যদি অতিরিক্ত সময় থাকে: + +একটি পছন্দ করুন: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -আপনি যদি এর মধ্যে একটির মাধ্যমে পড়ে থাকেন তবে আপনার কোডিং সমস্যাগুলি শুরু করতে হবে এমন সমস্ত ডেটা স্ট্রাকচার এবং অ্যালগরিদম জ্ঞান থাকা উচিত। -** আপনি যদি কোনও পর্যালোচনা না চান তবে আপনি এই প্রকল্পের সমস্ত ভিডিও বক্তৃতা ** এড়িয়ে যেতে পারেন। +## আমার মত ভুল করবেন না + +এই তালিকাটি অনেক মাস ধরে বেড়েছে, এবং হ্যাঁ, এটি হাতের বাইরে চলে গেছে। + +এখানে আমি কিছু ভুল করেছি যাতে আপনার আরও ভালো অভিজ্ঞতা হয়। এবং আপনি কয়েক মাস সময় বাঁচাবেন। -[অতিরিক্ত ভাষা-নির্দিষ্ট সংস্থানগুলি এখানে]] (প্রোগ্রামিং-ভাষাভাষা-উত্স.এমডি) +### 1. আপনি সব মনে রাখবেন না + +আমি ঘন্টার পর ঘন্টা ভিডিও দেখেছি এবং প্রচুর নোট নিয়েছি, এবং কয়েক মাস পরেও অনেক কিছু মনে ছিল না। আমার ৩ দিন লেগেছে আমার নোট এবং ফ্ল্যাশকার্ড তৈরি করতে, যাতে আমি পর্যালোচনা করতে পারি। আমার সেই সমস্ত জ্ঞানের প্রয়োজন ছিল না। + +অনুগ্রহ করে পড়ুন যাতে আপনি আমার ভুল করবেন না: + +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). ###সি ++ From 87d729b5596d67e4fc437a9a33dfc3c208b0e15f Mon Sep 17 00:00:00 2001 From: Meezan Mallick <58031846+meezan-mallick@users.noreply.github.com> Date: Sun, 13 Nov 2022 11:01:27 +0530 Subject: [PATCH 709/857] added Array video link from Harvard University Arrays explained in this video can be very helpful for beginners. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e2e0dfcf16..46ce5a54d8 100644 --- a/README.md +++ b/README.md @@ -608,6 +608,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Arrays - [ ] About Arrays: + - [Arrays CS50 Harvard University](https://youtu.be/tI_tIZFyKBw) - [Arrays (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) - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) From 586f15f0ade76fa2045f3b55e551cd0a2a8572a6 Mon Sep 17 00:00:00 2001 From: Meezan Mallick <58031846+meezan-mallick@users.noreply.github.com> Date: Fri, 18 Nov 2022 11:06:48 +0530 Subject: [PATCH 710/857] Updated the arrays video at the specific time --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 46ce5a54d8..0f00777960 100644 --- a/README.md +++ b/README.md @@ -608,7 +608,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Arrays - [ ] About Arrays: - - [Arrays CS50 Harvard University](https://youtu.be/tI_tIZFyKBw) + - [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) - [Arrays (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) - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) From 1af8143a65c670cc88e9a14de7e709850eef929a Mon Sep 17 00:00:00 2001 From: imran110219 Date: Sun, 20 Nov 2022 21:57:41 +0600 Subject: [PATCH 711/857] add section --- translations/README-bn.md | 150 ++++++++++++++------------------------ 1 file changed, 55 insertions(+), 95 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index a74bfa6e94..3cd1e3250f 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -430,111 +430,71 @@ [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). -###সি ++ - -
-সি ++ - -আমি এই দুটি পড়িনি, তবে সেডজেউইক দ্বারা তারা উচ্চ মানের এবং রচিত। সে দুর্দান্ত। - -- [সি ++ এ অ্যালগরিদম, অংশ 1-4: মূলসূত্র, ডেটা স্ট্রাকচার, বাছাই, অনুসন্ধান করা] (https://www.amazon.com/Algorithms-Partts-1-4-Fundamentals-কাঠামো / dp/0201350882/) -- [সি ++ পার্ট 5 এ অ্যালগরিদম: গ্রাফ অ্যালগরিদম] (https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -আপনার যদি সি ++ এর জন্য আরও ভাল প্রস্তাবনা থাকে তবে দয়া করে আমাকে জানান। একটি বিস্তৃত রিসোর্স খুঁজছি। - -
- -###জাভা - -
-জাভা - -- [অ্যালগোরিদম (সেডজউইক এবং ওয়েইন)] (https://www.amazon.com/Algorithms-4th-রবার্ট-সেজজউইক / dp/032157351X/) - -পাঠ্যক্রমের বইয়ের সামগ্রী (এবং সেডজউইক!) সহ ভিডিও: - -[অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) - -[অ্যালগোরিদম II] (https://www.coursera.org/learn/algorithms-part2) - -বা: - -- [জাভাতে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Data-Structures-Algorithms-Michael-গুডরিচ/dp/1118771338/) - -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - -ইউসি বার্কলে সিএস ইন্ট্রো কোর্সের জন্য textচ্ছিক পাঠ্য হিসাবে ব্যবহৃত - -নীচে পাইথন সংস্করণে আমার বইয়ের প্রতিবেদনটি দেখুন। এই বইটিতে একই বিষয় রয়েছে। - -
- -###পাইথন - -
-পাইথন - -- [পাইথনে ডেটা স্ট্রাকচারস এবং অ্যালগরিদম] (https://www.amazon.com/Structures-অ্যালগোরিদমস-পাইথন-মিশেল-গুডরিচ / ডিপি / 1118290275/) - -গুডরিচ, তমাসিয়া, গোল্ডওয়াসার দ্বারা - -আমি এই বই পছন্দ। এটি সব কিছুর আওতায় পড়ে। - -পাইথোনিক কোড - -আমার জ্বলজ্বল বইয়ের প্রতিবেদন: https://startupnextdoor.com/book-report-data-structures-এবং-algorithms-in-python/ - -
- - -##আপনি শুরু করার আগে - -এই তালিকাটি কয়েক মাস ধরে বেড়েছে, এবং হ্যাঁ, এটি একধরণের হাতছাড়া হয়ে যায়। - -এখানে আমি কিছু ভুল করেছি যাতে আপনার আরও ভাল অভিজ্ঞতা হয়। - -###1. আপনি সব মনে রাখবেন না - -আমি কয়েক ঘন্টা ভিডিও দেখেছি এবং প্রচুর নোট নিয়েছি এবং কয়েক মাস পরে এমন অনেক কিছুই ছিল যা আমি মনে করি না। আমি যেতে 3 দিন কাটিয়েছি -আমার নোটগুলি এবং ফ্ল্যাশকার্ডগুলি তৈরি করে যাতে আমি পর্যালোচনা করতে পারি। - -দয়া করে পড়ুন যাতে আপনি আমার ভুল করবেন না: - -[কম্পিউটার বিজ্ঞান জ্ঞান পুনরুদ্ধার করা] (https://startupnextdoor.com/retaining-computer-s विज्ञान-জ্ঞান /) - -###2. ফ্ল্যাশকার্ড ব্যবহার করুন - -সমস্যা সমাধানের জন্য, আমি একটি সামান্য ফ্ল্যাশকার্ডস সাইট তৈরি করেছি যেখানে আমি 2 ধরণের ফ্ল্যাশকার্ড যুক্ত করতে পারি: সাধারণ এবং কোড। -প্রতিটি কার্ডের আলাদা বিন্যাস রয়েছে। - -আমি একটি মোবাইল প্রথম ওয়েবসাইট তৈরি করেছি যাতে আমি যেখানেই থাকি না কেন আমার ফোন এবং ট্যাবলেটে পর্যালোচনা করতে পারি। - -বিনামূল্যে নিজের তৈরি করুন: - --[ফ্ল্যাশকার্ডস সাইটের রেপো] (https://github.com/jwasham/computer-science-flash-cards) --[আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)] (https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): --[আমার ফ্ল্যাশ কার্ডের ডাটাবেস (নতুন-1800 কার্ড)] (https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): - -মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং সমাবেশগুলির ভাষা এবং পাইথন ট্রিভিয়া থেকে শুরু করে মেশিন লার্নিং এবং পরিসংখ্যানের সমস্ত কিছুর জন্য কার্ড রয়েছে। যা প্রয়োজন তার জন্য এটি অনেক বেশি। - -** ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য: ** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে -একই কার্ড এবং এটি জেনে রাখার আগে বেশ কয়েকবার সঠিক উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীর করে দেবে -আপনার মস্তিষ্ক. - -আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার বিকল্প হ'ল [আনকি] (http://ankisrs.net/), যা আমার কাছে বহুবার প্রস্তাবিত হয়েছিল। এটি আপনাকে মনে রাখতে সহায়তা করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। -এটি ব্যবহারকারী-বান্ধব, সমস্ত প্ল্যাটফর্মে উপলব্ধ এবং একটি ক্লাউড সিঙ্ক সিস্টেম রয়েছে। আইওএসে এটির দাম 25 ডলার তবে অন্যান্য প্ল্যাটফর্মগুলিতে বিনামূল্যে। - -আনকি ফর্ম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেস: https://ankiweb.net/shared/info/25173560 (ধন্যবাদ [@ এক্সভিউনিয়া] (https://github.com/xiewenya)) - -###3. পর্যালোচনা, পর্যালোচনা, পর্যালোচনা - -আমি ASCII, ওএসআই স্ট্যাক, বিগ-ও স্বরলিপিগুলি এবং আরও অনেক কিছুতে চিট শীটের একটি সেট রাখি। আমার কিছুটা বাজে সময় পেলে আমি সেগুলি অধ্যয়ন করি। +### 2. ফ্ল্যাশকার্ড ব্যবহার করুন + +সমস্যা সমাধানের জন্য, আমি একটি ছোট ফ্ল্যাশকার্ড সাইট তৈরি করেছি যেখানে আমি 2 ধরনের ফ্ল্যাশকার্ড যোগ করতে পারি: সাধারণ এবং কোড। +প্রতিটি কার্ড আলাদা ফরম্যাটিং আছে। আমি একটি মোবাইল-প্রথম ওয়েবসাইট তৈরি করেছি, যাতে আমি যেখানেই থাকি না কেন আমার ফোন বা ট্যাবলেটে পর্যালোচনা করতে পারি৷ + +বিনামূল্যে আপনার নিজের তৈরি করুন: + +- [ফ্ল্যাশকার্ড সাইট রেপো](https://github.com/jwasham/computer-science-flash-cards) + +**আমি আমার ফ্ল্যাশকার্ডগুলি ব্যবহার করার পরামর্শ দিই না।** অনেকগুলি আছে এবং তাদের বেশিরভাগই তুচ্ছ বিষয় যা আপনার প্রয়োজন নেই। + +কিন্তু আপনি যদি আমার কথা শুনতে না চান তবে এখানে যান: +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং অ্যাসেম্বলি ভাষা এবং পাইথন ট্রিভিয়া থেকে মেশিন লার্নিং এবং পরিসংখ্যান পর্যন্ত সমস্ত কিছু কভার করে কার্ড আছে। +যা প্রয়োজন তার জন্য এটি অনেক বেশি। + +**ফ্ল্যাশকার্ডে দ্রষ্টব্য:** প্রথমবার যখন আপনি চিনবেন আপনি উত্তরটি জানেন, তখন এটি পরিচিত হিসাবে চিহ্নিত করবেন না। আপনি দেখতে হবে +একই কার্ড এবং আপনি সত্যিই এটি জানার আগে এটি সঠিকভাবে কয়েকবার উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীরে নিয়ে যাবে +আপনার মস্তিষ্ক। + +আমার ফ্ল্যাশকার্ড সাইটটি ব্যবহার করার একটি বিকল্প হল [আনকি](http://ankisrs.net/), যা আমাকে বহুবার সুপারিশ করা হয়েছে। +এটি আপনাকে মনে রাখতে সাহায্য করার জন্য একটি পুনরাবৃত্তি সিস্টেম ব্যবহার করে। এটি ব্যবহারকারী-বান্ধব, সমস্ত প্ল্যাটফর্মে উপলব্ধ এবং একটি ক্লাউড সিঙ্ক সিস্টেম রয়েছে৷ +iOS-এ এটির দাম $25 কিন্তু অন্যান্য প্ল্যাটফর্মে বিনামূল্যে। + +আনকি ফরম্যাটে আমার ফ্ল্যাশকার্ড ডাটাবেজ: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). + +কিছু ছাত্র ফাকা স্থানের সাথে বিন্যাস সংক্রান্ত সমস্যাগুলি উল্লেখ করেছে যা নিম্নলিখিতগুলি করে ঠিক করা যেতে পারে: ডেক খুলুন, কার্ড সম্পাদনা করুন, কার্ডগুলিতে ক্লিক করুন, "স্টাইলিং" রেডিও বোতাম নির্বাচন করুন, সদস্য যোগ করুন "হোয়াইট-স্পেস: প্রি;" কার্ড ক্লাসে। -আধা ঘন্টার জন্য প্রোগ্রামিং সমস্যা থেকে বিরতি নিন এবং আপনার ফ্ল্যাশকার্ডগুলি দিয়ে যান। +### 3. আপনি শেখার সময় কোডিং ইন্টারভিউ প্রশ্ন করুন + +এই অত্যন্ত গুরুত্বপূর্ণ. + +আপনি ডেটা স্ট্রাকচার এবং অ্যালগরিদম শেখার সময় কোডিং ইন্টারভিউ প্রশ্ন করা শুরু করুন। + +সমস্যা সমাধানের জন্য আপনি যা শিখছেন তা প্রয়োগ করতে হবে, নতুবা ভুলে যাবেন। আমি এই ভুল করেছি। + +একবার আপনি একটি বিষয় শিখে গেলে, এবং এটির সাথে কিছুটা স্বাচ্ছন্দ্য বোধ করেন, উদাহরণস্বরূপ, **লিঙ্ক করা তালিকা**: +১. [coding interview books](#interview-prep-books) (বা কোডিং সমস্যা ওয়েবসাইট, নীচে তালিকাভুক্ত) একটি খুলুন +২. লিঙ্ক করা তালিকা সম্পর্কিত ২ বা ৩ প্রশ্ন করুন। +৩. পরবর্তী শেখার বিষয়ে যান। +৪. পরে, ফিরে যান এবং আরও ২ বা ৩ লিঙ্কযুক্ত তালিকা সমস্যাগুলি করুন৷ +৫. আপনি শেখা প্রতিটি নতুন বিষয়ের সাথে এটি করুন। + +**আপনি এই সমস্ত জিনিস শেখার সময় সমস্যা করতে থাকুন, পরে নয়।** + +আপনাকে জ্ঞানের জন্য নিয়োগ করা হচ্ছে না, তবে আপনি কীভাবে জ্ঞান প্রয়োগ করবেন। + +এই জন্য অনেক সম্পদ আছে, নীচে তালিকাভুক্ত। সামনে আগাতে থাকুন। -###4. ফোকাস করুন +### 4. ফোকাস করুন -অনেকগুলি বিভ্রান্তি রয়েছে যা মূল্যবান সময় নিতে পারে। ফোকাস এবং ঘনত্ব শক্ত। +মূল্যবান সময় নিতে পারে যে বিভ্রান্তি অনেক আছে. ফোকাস এবং একাগ্রতা কঠিন। কিছু সঙ্গীত চালু করুন +গান ছাড়া এবং আপনি বেশ ভাল ফোকাস করতে সক্ষম হবেন। -##আপনি কি কভার দেখতে পাবেন না +## আপনি কি কভার দেখতে পাবেন না এগুলি প্রচলিত প্রযুক্তি তবে এই অধ্যয়ন পরিকল্পনার অংশ নয়: --এসকিউএল -জাভাস্ক্রিপ্ট -এইচটিএমএল, সিএসএস এবং অন্যান্য ফ্রন্ট-এন্ড প্রযুক্তি +-এসকিউএল -##দৈনিক পরিকল্পনা +## দৈনিক পরিকল্পনা কিছু বিষয় একদিন নেয়, এবং কিছুতে একাধিক দিন সময় লাগবে। কিছু বাস্তবায়নের কিছুই না দিয়ে কেবল শিখছে। From 13ae8b0c2e18bbe1bede92a4bb50cbcd18e9f12a Mon Sep 17 00:00:00 2001 From: imran110219 Date: Mon, 21 Nov 2022 21:16:37 +0600 Subject: [PATCH 712/857] add more text --- translations/README-bn.md | 38 +++++++++++--------------------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 3cd1e3250f..77a7a8fbc4 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -496,33 +496,17 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য ## দৈনিক পরিকল্পনা -কিছু বিষয় একদিন নেয়, এবং কিছুতে একাধিক দিন সময় লাগবে। কিছু বাস্তবায়নের কিছুই না দিয়ে কেবল শিখছে। - -প্রতিদিন আমি নীচের তালিকা থেকে একটি বিষয় নিয়ে যাই, সেই বিষয় সম্পর্কে ভিডিও দেখি এবং একটি বাস্তবায়ন এখানে লিখি: --সি-স্ট্রাকস এবং ফাংশনগুলি ব্যবহার করে যা স্ট্রাক * এবং আরজ হিসাবে অন্য কোনও কিছু নেয়। --সি ++-অন্তর্নির্মিত প্রকারগুলি ব্যবহার না করে --সি ++-অন্তর্নির্মিত প্রকারগুলি যেমন STL এর std :: লিঙ্কযুক্ত তালিকার জন্য তালিকা ব্যবহার করে --পাইথন-অন্তর্নির্মিত প্রকারগুলি (পাইথনের অনুশীলন চালিয়ে যেতে) ব্যবহার করে --এবং আমি এটি সঠিকভাবে করছি তা নিশ্চিত করার জন্য পরীক্ষাগুলি লিখুন, কখনও কখনও কেবল সাধারণ দাবী () বিবৃতি ব্যবহার করে --আপনি জাভা বা অন্য কিছু করতে পারেন, এটি কেবল আমার জিনিস। - -আপনার এসবের দরকার নেই। আপনার কেবলমাত্র [সাক্ষাত্কারের জন্য একটি ভাষা] প্রয়োজন (#সাক্ষাত্কারের জন্য এক-ভাষা বেছে নিন)। - -এই সবগুলিতে কোড কেন? --অনুশীলন করুন, অনুশীলন করুন, অনুশীলন করুন, যতক্ষণ না আমি এতে অসুস্থ না হয়ে থাকি এবং কোনও সমস্যা ছাড়াই এটি করতে পারি (কারও কারও কাছে অনেক প্রান্তের কেস এবং স্মরণে রাখার জন্য বইয়ের বিবরণ রয়েছে) --কাঁচা সীমাবদ্ধতার মধ্যে কাজ করুন (আবর্জনা সংগ্রহের সহায়তা ছাড়াই মেমরি বরাদ্দ / মুক্তকরণ (পাইথন বা জাভা বাদে)) --অন্তর্নির্মিত ধরণের ব্যবহার করুন যাতে বাস্তব-বিশ্বের ব্যবহারের জন্য অন্তর্নির্মিত সরঞ্জামগুলি ব্যবহার করার অভিজ্ঞতা আমার রয়েছে (উত্পাদনে আমার নিজের লিঙ্কযুক্ত তালিকার প্রয়োগটি লিখতে যাবেন না) - -আমার প্রতিটি বিষয়ের জন্য এগুলি করার জন্য সময় নাও থাকতে পারে তবে আমি চেষ্টা করব। - -আপনি আমার কোডটি এখানে দেখতে পারেন: --[সি] (https://github.com/jwasham/pੈਕਟ-c) --[সি ++] (https://github.com/jwasham/pੈਕਟ-cpp) --[পাইথন] (https://github.com/jwasham/pੈਕਟ-python) - -আপনার প্রতিটি অ্যালগরিদমের সাহস মুখস্থ করার দরকার নেই। - -হোয়াইটবোর্ড বা কাগজে কোড লিখুন, কম্পিউটার নয়। কিছু নমুনা ইনপুট দিয়ে পরীক্ষা করুন। তারপরে এটি কম্পিউটারে পরীক্ষা করে দেখুন। +এই কোর্সটিতে অনেক বিষয় রয়েছে। প্রতিটি সম্ভবত আপনাকে কয়েক দিন, বা এমনকি এক সপ্তাহ বা তারও বেশি সময় লাগবে। এটা আপনার সময়সূচী উপর নির্ভর করে। + +প্রতিদিন, তালিকার পরবর্তী বিষয় নিন, সেই বিষয়ে কিছু ভিডিও দেখুন এবং তারপর একটি বাস্তবায়ন লিখুন +এই কোর্সের জন্য আপনি যে ভাষাটি বেছে নিয়েছেন সেই ডেটা স্ট্রাকচার বা অ্যালগরিদমের। + +আপনি এখানে আমার কোড দেখতে পারেন: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) + +আপনাকে প্রতিটি অ্যালগরিদম মুখস্থ করতে হবে না। আপনার নিজের বাস্তবায়ন লিখতে সক্ষম হওয়ার জন্য আপনাকে এটি যথেষ্ট বুঝতে সক্ষম হতে হবে। ##পূর্বশর্ত জ্ঞান From a012183e1943e367c377e309a795c77aaa436803 Mon Sep 17 00:00:00 2001 From: Smith <116065791+Smith1161@users.noreply.github.com> Date: Tue, 22 Nov 2022 18:05:52 +0530 Subject: [PATCH 713/857] Added a useful resource Hey, I have added a helpful reference link for HTML that I think will best add to your content and give your readers a more diverse understanding of the topic. I hope you will like this. Thank you. --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index a128ac3378..b1c8c3b31d 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -74,6 +74,7 @@ - [HTML Cheat Sheet](https://www.interviewbit.com/html-cheat-sheet) - [Quick HTML Tutorial for Beginners](https://www.youtube.com/playlist?list=PLr6-GrHUlVf_ZNmuQSXdS197Oyr1L9sPB) - [HTML Crash Course for Beginners (1 hr)](https://www.youtube.com/watch?v=UB1O30fR-EE) + - [Learn HTML in Detail](https://www.scaler.com/topics/html/) - [Basic HTML and HTML5](https://www.freecodecamp.org/learn/responsive-web-design/basic-html-and-html5/) - [W3 Schools](https://www.w3schools.com/html/) - [Html Interview Questions](https://www.interviewbit.com/html-interview-questions) From 6acc65aa8da314e9f452161f5fdd0f11104d51c0 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Thu, 1 Dec 2022 23:49:52 +0600 Subject: [PATCH 714/857] add 3 section --- translations/README-bn.md | 66 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/translations/README-bn.md b/translations/README-bn.md index 77a7a8fbc4..3c19986058 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -507,7 +507,73 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [Python](https://github.com/jwasham/practice-python) আপনাকে প্রতিটি অ্যালগরিদম মুখস্থ করতে হবে না। আপনার নিজের বাস্তবায়ন লিখতে সক্ষম হওয়ার জন্য আপনাকে এটি যথেষ্ট বুঝতে সক্ষম হতে হবে। + +## কোডিং প্রশ্ন অনুশীলন + + এটা এখানে কেন? আমি ইন্টারভিউ দিতে প্রস্তুত নই। + +[তারপর ফিরে যান এবং এটি পড়ুন।](#3-do-coding-interview-questions-while-youre-learning) + +কেন আপনাকে প্রোগ্রামিং সমস্যাগুলি অনুশীলন করতে হবে: +- সমস্যা শনাক্তকরণ, এবং যেখানে সঠিক ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলি ফিট করে৷ +- সমস্যার জন্য দরকারী জিনিস সংগ্রহ করা +- ইন্টারভিউতে আপনার মতন সমস্যার মধ্য দিয়ে কথা বলা +- একটি হোয়াইটবোর্ড বা কাগজে কোডিং, কম্পিউটার নয় +- আপনার সমাধানের জন্য সময় এবং স্থান জটিলতা নিয়ে আসছে (নীচে Big-O দেখুন) +- আপনার সমাধান পরীক্ষা + +একটি ইন্টারভিউতে পদ্ধতিগত, যোগাযোগমূলক সমস্যা সমাধানের জন্য একটি দুর্দান্ত ভূমিকা রয়েছে। আপনি প্রোগ্রামিং থেকে এটি পাবেন +সাক্ষাৎকারের বইও, কিন্তু আমি এই অসামান্য খুঁজে পেয়েছি: +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) + +একটি হোয়াইটবোর্ড বা কাগজে কোড লিখুন, কম্পিউটার নয়। কিছু নমুনা ইনপুট দিয়ে পরীক্ষা করুন। তারপর এটি টাইপ করুন এবং একটি কম্পিউটারে এটি পরীক্ষা করুন। + +আপনার বাড়িতে একটি হোয়াইটবোর্ড না থাকলে, একটি আর্ট স্টোর থেকে একটি বড় অঙ্কন প্যাড নিন। আপনি সোফায় বসে অনুশীলন করতে পারেন। +এটি আমার "সোফা হোয়াইটবোর্ড"। আমি শুধু স্কেলের জন্য ফটোতে কলম যোগ করেছি। যদি আপনি একটি কলম ব্যবহার করেন, আপনি মুছে দিতে পারেন. +দ্রুত এলোমেলো হয়ে যায়। **আমি একটি পেন্সিল এবং ইরেজার ব্যবহার করি।** + +![আমার সোফা হোয়াইটবোর্ড](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**কোডিং প্রশ্ন অনুশীলন প্রোগ্রামিং সমস্যার উত্তর মুখস্ত করা সম্পর্কে নয়।** +## কোডিং সমস্যা + +আপনার মূল কোডিং ইন্টারভিউ বই ভুলবেন না [here](#interview-prep-books). + +সমস্যা সমাধানে: +- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +কোডিং ইন্টারভিউ প্রশ্ন ভিডিও: +- [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) + - সমস্যার সমাধানের জন্য সুপার ওয়াকথ্রু +- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - সমাধান এবং কোডের ভাল ব্যাখ্যা + - আপনি অল্প সময়ের মধ্যে বেশ কয়েকটি দেখতে পারেন +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +চ্যালেঞ্জ/অনুশীলনের সাইট: +- [LeetCode](https://leetcode.com/) + - আমার প্রিয় কোডিং সমস্যা সাইট। এটি 1-2 মাসের জন্য সাবস্ক্রিপশনের অর্থের মূল্য যা আপনি সম্ভবত প্রস্তুত করছেন। + - কোড ওয়াক-থ্রুগুলির জন্য উপরে নিক হোয়াইট এবং ফিশারকোডার ভিডিওগুলি দেখুন৷ +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [AlgoExpert](https://www.algoexpert.io/product) + - Google ইঞ্জিনিয়ারদের দ্বারা তৈরি, এটি আপনার দক্ষতা বাড়াতে একটি চমৎকার সম্পদও। +- [Project Euler](https://projecteuler.net/) + - খুব গণিত ফোকাসড, এবং কোডিং ইন্টারভিউয়ের জন্য সত্যিই উপযুক্ত নয় + +## চল শুরু করি + +ঠিক আছে, যথেষ্ট কথা, আসুন শিখি! + +কিন্তু শিখতে গিয়ে উপরে থেকে কোডিং সমস্যা করতে ভুলবেন না! + ##পূর্বশর্ত জ্ঞান
From 9b374c9f5be65c51d09bb4c7a90e832a84264151 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Fri, 16 Dec 2022 19:28:46 +0600 Subject: [PATCH 715/857] add algorithmic section --- translations/README-bn.md | 69 +++++++++++++-------------------------- 1 file changed, 22 insertions(+), 47 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 3c19986058..56acc8b0b9 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -574,53 +574,28 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য কিন্তু শিখতে গিয়ে উপরে থেকে কোডিং সমস্যা করতে ভুলবেন না! -##পূর্বশর্ত জ্ঞান - -
-<সংশ্লেষ> পূর্বশর্ত জ্ঞান << সংক্ষিপ্ত> - -- ** সি ** শিখুন - -সি সর্বত্র আছে। আপনি অধ্যয়নরত অবস্থায় আপনি বই, বক্তৃতা, ভিডিও, * সর্বত্র * এর উদাহরণ দেখতে পাবেন। - - [সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, খণ্ড ২] (https://www.amazon.com/Programming-Language-ব্রায়ান-ডব্লিউ-কর্নিগান/dp/0131103628) - -এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষায় দুর্দান্ত হ্যান্ডেল দেবে এবং যদি আপনি এটি কিছুটা অনুশীলন করেন - আপনি দ্রুত দক্ষ হয়ে উঠবেন। সি বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কীভাবে কাজ করে তা বুঝতে সহায়তা করে। - -[প্রশ্নের উত্তর] (https://github.com/lekkas/c-algorithms) - -- ** কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে: ** - - [সিপিইউ কীভাবে একটি প্রোগ্রাম (ভিডিও) চালায়]] (https://www.youtube.com/watch?v=XM4lGflQFvA) - - [কম্পিউটারগুলি কীভাবে গণনা করে-ALU (ভিডিও)] (https://youtu.be/1I5ZMmrOfnA) - - [নিবন্ধসমূহ এবং র‌্যাম (ভিডিও)] (https://youtu.be/fpnE6UAfbtU) - - [সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) (ভিডিও)] (https://youtu.be/FZGugFqdr60) - - [নির্দেশাবলী এবং প্রোগ্রামগুলি (ভিডিও)] (https://youtu.be/zltgXvg6r3k) - -
- -##অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপোটিক বিশ্লেষণ - -
-<স্যুমারী> অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিপটোটিক বিশ্লেষণ - --বাস্তবায়নের কিছুই নেই --এখানে প্রচুর ভিডিও রয়েছে। যতক্ষণ না আপনি এটি বুঝতে পারছেন ঠিক ততক্ষণ দেখুন। আপনি সর্বদা ফিরে এসে পর্যালোচনা করতে পারেন। --কিছু বক্তৃতা যদি খুব ম্যাথিক হয় তবে আপনি ব্যাকগ্রাউন্ডের জ্ঞান পেতে নীচে নেমে গিয়ে আলাদা গণিতের ভিডিওগুলি দেখতে পারেন। -- [হার্ভার্ড সিএস 50-অ্যাসিপটোটিক নোটেশন (ভিডিও)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [বিগ হে নোটেশনস (সাধারণ দ্রুত টিউটোরিয়াল) (ভিডিও)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [বিগ ও স্বরলিপি (এবং ওমেগা এবং থিতা)-সর্বোত্তম গাণিতিক ব্যাখ্যা (ভিডিও)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- স্কিয়েনা: - -[ভিডিও](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -[স্লাইডস](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [অ্যালগরিদম জটিলতা বিশ্লেষণের একটি নম্র ভূমিকা](http://discrete.gr/complexity/) -- [বৃদ্ধির অর্ডার (ভিডিও)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [অ্যাসিপটোটিকস (ভিডিও)](https://www.coursera.org/lecture/algorithmic-চিন্তাধারার-1/asyptics-bXAtM) -- [ইউসি বার্কলে বিগ ও (ভিডিও)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ইউসি বার্কলে বিগ ওমেগা (ভিডিও)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) -- [ইমোরটাইজড অ্যানালাইসিস (ভিডিও)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [চিত্রিত "বিগ ও" (ভিডিও)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) -- টপকোডার (পুনরাবৃত্ত সম্পর্ক এবং মাস্টার উপপাদ্য অন্তর্ভুক্ত): - -[গণনামূলক জটিলতা: বিভাগ 1](https://www.topcoder.com/commune/competitive-pramramming/tutorials/computational-complexity-section-1/) - -[গণনামূলক জটিলতা: বিভাগ 2](https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / কমপিটেশনাল-কমপ্লিকটি-সেকশন ২/২) -- [চিট শিট](http://bigocheatsheet.com/) - +## অ্যালগরিদমিক জটিলতা / বিগ-ও / অ্যাসিম্পটোটিক বিশ্লেষণ + +- এখানে বাস্তবায়নের কিছু নেই, আপনি শুধু ভিডিও দেখছেন এবং নোট নিচ্ছেন! হ্যাঁ! +- এখানে অনেক ভিডিও আছে। আপনি এটি বুঝতে না হওয়া পর্যন্ত শুধু যথেষ্ট দেখুন। আপনি সবসময় ফিরে আসতে পারেন এবং পর্যালোচনা করতে পারেন। +- আপনি যদি এর পিছনের সমস্ত গণিত না বুঝতে পারেন তবে চিন্তা করবেন না। +- আপনাকে শুধু বুঝতে হবে কিভাবে বিগ-ও এর পরিপ্রেক্ষিতে একটি অ্যালগরিদমের জটিলতা প্রকাশ করা যায়। +- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) + +ওয়েল, যে যথেষ্ট যে সম্পর্কে. + +আপনি যখন "Cracking the Coding Interview" এর মধ্য দিয়ে যান, তখন এই বিষয়ে একটি অধ্যায় থাকে এবং শেষে একটি কুইজ দেখতে হয় +যদি আপনি বিভিন্ন অ্যালগরিদমের রানটাইম জটিলতা সনাক্ত করতে পারেন। এটি একটি সুপার পর্যালোচনা এবং পরীক্ষা.
From 30c93ae77cdcf9882c84713ba9f85899b2505ed3 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Sat, 17 Dec 2022 12:28:27 +0600 Subject: [PATCH 716/857] add algorithmic section --- translations/README-bn.md | 73 ++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 56acc8b0b9..e3334926dd 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -597,45 +597,40 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য আপনি যখন "Cracking the Coding Interview" এর মধ্য দিয়ে যান, তখন এই বিষয়ে একটি অধ্যায় থাকে এবং শেষে একটি কুইজ দেখতে হয় যদি আপনি বিভিন্ন অ্যালগরিদমের রানটাইম জটিলতা সনাক্ত করতে পারেন। এটি একটি সুপার পর্যালোচনা এবং পরীক্ষা. -
- -##ডাটা স্ট্রাকচার - -
-<সংশ্লেটি> ডেটা স্ট্রাকচার - --###অ্যারে - -একটি স্বয়ংক্রিয় আকার পরিবর্তনকারী ভেক্টর প্রয়োগ করুন। - - বিবরণ: - -[অ্যারে (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন //sBSF/arrays) - -[ইউসি বার্কলে সিএস 61 বি-লিনিয়ার এবং মাল্টি-ডিম অ্যারে (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15m 32s থেকে দেখা শুরু করুন) - -[ডাইনামিক অ্যারে (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - -[জেগড অ্যারে (ভিডিও)] (https://www.youtube.com/watch?v=1jtrQqYpt7g) - - একটি ভেক্টর প্রয়োগ করুন (স্বয়ংক্রিয় আকার পুনরায় আকারের সাথে পরিবর্তনীয় অ্যারে): - - অ্যারে এবং পয়েন্টার ব্যবহার করে কোডিং অনুশীলন করুন, এবং সূচক ব্যবহারের পরিবর্তে সূচীতে ঝাঁপ দেওয়ার জন্য পয়েন্টার ম্যাথ th - - বরাদ্দ মেমরি সহ নতুন কাঁচা ডেটা অ্যারে - -হুডের অধীনে ইন অ্যারে বরাদ্দ করতে পারে, কেবল তার বৈশিষ্ট্যগুলি ব্যবহার করবেন না - -16 দিয়ে শুরু করুন, বা যদি শুরুর সংখ্যাটি বেশি হয় তবে 2-16, 32, 64, 128 এর শক্তি ব্যবহার করুন - - আকার ()-আইটেমের সংখ্যা - - ক্ষমতা ()-এটি ধরে রাখতে পারে এমন আইটেমের সংখ্যা - -[ ] খালি() - - এ (সূচক)-প্রদত্ত সূচকে আইটেমটি ফেরত দেয়, সূচক সীমা ছাড়িয়ে গেলে ফুটিয়ে উঠে - - ধাক্কা (আইটেম) - - সন্নিবেশ (সূচক, আইটেম)-সূচীতে আইটেম সন্নিবেশ করায়, সূচকের মান এবং পিছনের উপাদানগুলি ডানদিকে সরিয়ে দেয় - - প্রিপেন্ড (আইটেম)-উপরে সূচক 0 এ সন্নিবেশ ব্যবহার করতে পারেন - - পপ ()-শেষ থেকে সরান, ফেরতের মান - - মুছুন (সূচী)-সূচি অনুসারে আইটেম মুছুন, সমস্ত অনুবর্তনীয় উপাদান বাম দিকে সরিয়ে - - সরান (আইটেম)-মান সন্ধান করে এবং এটি ধরে রাখা সূচকটি সরিয়ে দেয় (এমনকি একাধিক জায়গায় থাকলেও) - - সন্ধান করুন (আইটেম)-মানটির সন্ধান করে এবং সেই মানটির সাথে প্রথম সূচকটি প্রদান করে,-১ পাওয়া না গেলে - - পুনরায় আকার দিন (নতুন_ক্ষমতা) // ব্যক্তিগত ফাংশন - -যখন আপনি সক্ষমতা পৌঁছেছেন, আকার দ্বিগুণ করার জন্য পুনরায় আকার দিন - -কোনও আইটেমটি পপ করার সময়, আকারটি যদি 1/4 ধারণক্ষমতা হয় তবে আকারটি অর্ধেক করুন - - সময় - -ও (1) শেষে অন্তর্ভুক্ত / অপসারণ (আরও স্থানের জন্য বরাদ্দের জন্য সূক্ষ্ম), সূচক বা আপডেট - -ও (এন) অন্যত্র সন্নিবেশ / অপসারণ করতে - - স্পেস - -স্মৃতিতে সামঞ্জস্যপূর্ণ তাই নৈকট্য পারফরম্যান্সে সহায়তা করে - -স্থান প্রয়োজন = (অ্যারে ক্ষমতা, যা> = এন) * আইটেমের আকার, তবে 2n হলেও এখনও হে (এন) +## ডাটা স্ট্রাকচার + +- ### অ্যারে +- [ ] অ্যারে সম্পর্কে: + - [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [Arrays (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) + - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Implement a 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 + - 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 + - [ ] size() - আইটেমের সংখ্যা + - [ ] capacity() - আইটেমের সংখ্যা এটি ধরে রাখতে পারে + - [ ] is_empty() + - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] push(item) + - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right + - [ ] prepend(item) - can use insert above at index 0 + - [ ] pop() - শেষ থেকে সরান, ভ্যালু রিটার্ন করুন + - [ ] delete(index) - delete item at index, shifting all trailing elements left + - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) + - [ ] find(item) - looks for value and returns first index with that value, -1 if not found + - [ ] resize(new_capacity) // private function + - when you reach capacity, resize to double the size + - when popping an item, if size is 1/4 of capacity, resize to half + - [ ] Time + - O(1) to add/remove at end (amortized for allocations for more space), index, or update + - O(n) to insert/remove elsewhere + - [ ] Space + - contiguous in memory, so proximity helps performance + - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) -###লিঙ্কযুক্ত তালিকাগুলি - বিবরণ: From 387e3709ac22327dd455bf1bc16a70b3f1c466f5 Mon Sep 17 00:00:00 2001 From: Durgesh <84910181+Durgesh-babu@users.noreply.github.com> Date: Sun, 18 Dec 2022 09:16:34 +0530 Subject: [PATCH 717/857] Added new linked list resource --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0f00777960..68fd43e58e 100644 --- a/README.md +++ b/README.md @@ -641,6 +641,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Linked Lists - [ ] Description: + - [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - this builds the intuition. - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) From 0a97cef8852baf649c978701cf460d3562eee360 Mon Sep 17 00:00:00 2001 From: Durgesh <84910181+Durgesh-babu@users.noreply.github.com> Date: Mon, 19 Dec 2022 00:38:33 +0530 Subject: [PATCH 718/857] Added checkbox to the new linked list resource. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68fd43e58e..5a7d9759df 100644 --- a/README.md +++ b/README.md @@ -641,7 +641,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Linked Lists - [ ] Description: - - [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - this builds the intuition. + - [ ] [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - this builds the intuition. - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) From fac4fce3280108222235ad0a92daf6e590a205ba Mon Sep 17 00:00:00 2001 From: zaienaji Date: Mon, 26 Dec 2022 13:04:52 +0800 Subject: [PATCH 719/857] add NAND to Tetris --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5a7d9759df..2fa64fcdac 100644 --- a/README.md +++ b/README.md @@ -1095,6 +1095,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + - [ ] [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) - ### Caches - [ ] LRU cache: From fe6eb797932e75c1ad395311bdb8d20a5a2a2df0 Mon Sep 17 00:00:00 2001 From: zaienaji Date: Tue, 27 Dec 2022 19:54:16 +0800 Subject: [PATCH 720/857] move NAND to Tetris to bottom (Additional Detail on Some Subjects) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2fa64fcdac..f7bbeb8e36 100644 --- a/README.md +++ b/README.md @@ -1095,8 +1095,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - - [ ] [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) - - ### Caches - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) @@ -1894,6 +1892,8 @@ You're never really done. - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) +- NAND To Tetris: [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) + ## Video Series Sit back and enjoy. From 6d8e7dd229776923873df0c2608e8e035369d7cc Mon Sep 17 00:00:00 2001 From: Zaien Aji Trahutomo Date: Wed, 28 Dec 2022 14:43:13 +0800 Subject: [PATCH 721/857] add book Algorithm from Jeff Erickson - University of Illionis --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f7bbeb8e36..067b43a5a2 100644 --- a/README.md +++ b/README.md @@ -1370,6 +1370,7 @@ You're never really done. - Answers: - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + - [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like From 6567e14cd35fe6ce561b17943416e0a8de1ab6bd Mon Sep 17 00:00:00 2001 From: Zaien Aji Trahutomo Date: Wed, 28 Dec 2022 14:43:13 +0800 Subject: [PATCH 722/857] add book Algorithm from Jeff Erickson - University of Illionis --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f7bbeb8e36..067b43a5a2 100644 --- a/README.md +++ b/README.md @@ -1370,6 +1370,7 @@ You're never really done. - Answers: - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + - [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like From 3fc569e6757769a1ad0a714f30ac314cf2af1968 Mon Sep 17 00:00:00 2001 From: Zaien Aji Trahutomo Date: Wed, 28 Dec 2022 14:48:45 +0800 Subject: [PATCH 723/857] fix wrong identation --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 067b43a5a2..20abefa72b 100644 --- a/README.md +++ b/README.md @@ -1370,7 +1370,7 @@ You're never really done. - Answers: - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - - [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) +- [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) - [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like From 7ec05f80b928e4bb5c567b2bcffab40c2edb71c6 Mon Sep 17 00:00:00 2001 From: Sadman Date: Fri, 30 Dec 2022 20:12:40 +0600 Subject: [PATCH 724/857] add limked list draft --- translations/README-bn.md | 67 ++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index e3334926dd..bc8eb0e93b 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -632,39 +632,40 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - contiguous in memory, so proximity helps performance - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) --###লিঙ্কযুক্ত তালিকাগুলি - - বিবরণ: - - [একক লিঙ্কযুক্ত তালিকাগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 1 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - সিএস 61 বি-লিঙ্কযুক্ত তালিকাগুলি 2 (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [সি কোড (ভিডিও)] (https://www.youtube.com/watch?v=QN6FPiD0Gzo) - -পুরো ভিডিও নয়, নোড স্ট্রাক্ট এবং মেমরির বরাদ্দ সম্পর্কে কেবল অংশ। - - লিঙ্কযুক্ত তালিকা বনাম অ্যারে: - -[কোর লিঙ্কযুক্ত তালিকা বনাম অ্যারেগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - -[রিয়েল ওয়ার্ল্ডের লিঙ্কযুক্ত তালিকায় বনাম অ্যারেগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [কেন আপনার লিঙ্কযুক্ত তালিকাগুলি (ভিডিও) এড়ানো উচিত]] (https://www.youtube.com/watch?v=YQs6IC-vgmo) - - গোটচা: আপনার পয়েন্টার জ্ঞানের জন্য পয়েন্টার প্রয়োজন: - (আপনি যখন কোনও ফাংশনটিতে কোনও পয়েন্টার পাস করেন যা ঠিকানা পরিবর্তন করতে পারে যেখানে সেই পয়েন্টারটি নির্দেশ করে) - এই পৃষ্ঠাটি কেবল পিটিআর থেকে পিটিআর এ উপলব্ধি পেতে। আমি এই তালিকাটি ট্র্যাভার্সাল স্টাইলের প্রস্তাব দিই না। পড়ার যোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা চতুরতার কারণে ভোগে। - -[পয়েন্টারগুলিতে নির্দেশক] (https://www.eskimo.com/~scs/cclass/int/sx8.html) - - বাস্তবায়ন করুন (আমি টেইল পয়েন্টার দিয়ে ও ছাড়াই করেছি): - - আকার ()-তালিকায় ডাটা উপাদানগুলির সংখ্যা প্রদান করে - - খালি ()-শূন্য হলে বুল সত্য দেয় - - মান_আট (সূচক)-নবম আইটেমটির মান প্রদান করে (প্রথমটির জন্য 0 থেকে শুরু করে) - - পুশ_ফ্রন্ট (মান)-তালিকার সামনের অংশে একটি আইটেম যুক্ত করে - - পপ_ফ্রন্ট ()-সামনের আইটেমটি সরিয়ে তার মানটি ফিরিয়ে দিন - - পুশ_ব্যাক (মান)-শেষে একটি আইটেম যুক্ত করে - - পপ_ব্যাক ()-শেষ আইটেমটি সরিয়ে দেয় এবং এর মান প্রদান করে - - সামনের ()-সামনের আইটেমটির মান পান - - ফিরে ()-শেষ আইটেমটির মান পান - - সন্নিবেশ (সূচক, মান)-সূচকে মূল্য সন্নিবেশ করানো হয়, সুতরাং সেই সূচীতে বর্তমান আইটেমটি সূচীতে নতুন আইটেম দ্বারা নির্দেশিত - - মুছুন (সূচক)-প্রদত্ত সূচকে নোড সরান s - - মান_ন_ফ্রম_েন্ড (এন)-তালিকার শেষে থেকে নবম অবস্থানে নোডের মান প্রদান করে - - বিপরীত ()-তালিকার বিপরীতে - - সরান_মূল্য (মান)-এই মান সহ তালিকার প্রথম আইটেমটি সরিয়ে দেয় - - দ্বিগুণভাবে সংযুক্ত তালিকা - -[বিবরণ (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - -বাস্তবায়নের দরকার নেই +- ### লিঙ্কড লিস্ট + - [ ] Description: + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) + - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - not the whole video, just portions about Node struct and memory allocation + - [ ] Linked List vs Arrays: + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Gotcha: you need pointer to pointer knowledge: + (for when you pass a pointer to a function that may change the address where that pointer points) + This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Implement (I did with tail pointer & without): + - [ ] size() - returns number of data elements in list + - [ ] empty() - bool returns true if empty + - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) + - [ ] push_front(value) - adds an item to the front of the list + - [ ] pop_front() - remove front item and return its value + - [ ] push_back(value) - adds an item at the end + - [ ] pop_back() - removes end item and returns its value + - [ ] front() - get value of front item + - [ ] back() - get value of end item + - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] erase(index) - removes node at given index + - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] reverse() - reverses the list + - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] Doubly-linked List + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - No need to implement -###স্ট্যাক - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) From 5aaeb662926d2fd453fd152bcee676c55b17140f Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Sat, 31 Dec 2022 22:00:24 +0600 Subject: [PATCH 725/857] add text --- translations/README-bn.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index bc8eb0e93b..b86c9edea6 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -623,7 +623,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size + - যখন সাইজ পুরন হয়ে যায়, তখন সেটার সাইজ ডবল করে দিন - when popping an item, if size is 1/4 of capacity, resize to half - [ ] Time - O(1) to add/remove at end (amortized for allocations for more space), index, or update @@ -633,14 +633,14 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - ### লিঙ্কড লিস্ট - - [ ] Description: + - [ ] বিবরণ: - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation - - [ ] Linked List vs Arrays: + - [ ] লিঙ্কড লিস্ট বনাম অ্যারে: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) From 1680cb43e6de4e252d6d67e808978246d6e4fc03 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 1 Jan 2023 13:53:52 -0800 Subject: [PATCH 726/857] Removed IB since it consistently gives network errors in link check. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 20abefa72b..cc25457184 100644 --- a/README.md +++ b/README.md @@ -569,7 +569,6 @@ Challenge/Practice sites: - [Codeforces](https://codeforces.com/) - [Codility](https://codility.com/programmers/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) -- [InterviewBit](https://www.interviewbit.com/) - [AlgoExpert](https://www.algoexpert.io/product) - Created by Google engineers, this is also an excellent resource to hone your skills. - [Project Euler](https://projecteuler.net/) From 68b02435c3c277a13b571590361c706ca5ddfcdc Mon Sep 17 00:00:00 2001 From: Ismael Alves Date: Wed, 4 Jan 2023 12:06:25 -0300 Subject: [PATCH 727/857] Fixing link. --- translations/README-ptbr.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 67fb3b8fd1..28a8932427 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -932,7 +932,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) (Engenharia de Software Orientada a Objetos: Desenvolvedor de Software usando UML e Java) - [ ] Princípios de SOLID de POO: - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) (Princípios de SOLID de Orientação a Objetos e Design Ágil por Bob Martin) - - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) (Padrões de Design de SOLID em C# - vídeo) + - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8RerBWgqkey0rgzdmoJTc_ijMo8lf5T-) (Padrões de Design de SOLID em C# - vídeo) - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) (Princípios de SOLID - vídeo) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) (S - Princípio da Responsabilidade Única) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) (mais informações) @@ -1926,4 +1926,4 @@ Sente-se e aproveite. "Netflix e habilidade" :P ## Cursos de Ciência da Computação - [Diretório de Cursos Online de Ciência da Computação](https://github.com/open-source-society/computer-science) -- [Diretório de Cursos Online de Ciência da Computação (muitos com aulas online)](https://github.com/prakhar1989/awesome-courses) \ No newline at end of file +- [Diretório de Cursos Online de Ciência da Computação (muitos com aulas online)](https://github.com/prakhar1989/awesome-courses) From 677103a87f56bd98dc538ce6a0cfd2502d5feae8 Mon Sep 17 00:00:00 2001 From: Sadman Sobhan Date: Sat, 7 Jan 2023 21:51:04 +0600 Subject: [PATCH 728/857] add more text --- translations/README-bn.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index b86c9edea6..c79743732d 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -600,10 +600,10 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য ## ডাটা স্ট্রাকচার - ### অ্যারে -- [ ] অ্যারে সম্পর্কে: + - [ ] অ্যারে সম্পর্কে: - [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) - [Arrays (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) (১৫ মিনিট ৩২ সেকেন্ড থেকে দেখা শুরু করুন) - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implement a vector (mutable array with automatic resizing): @@ -639,7 +639,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation + - পুরো ভিডিওটি নয়, নোড স্ট্রাকট এবং মেমরি বরাদ্দ সম্পর্কে কিছু অংশ - [ ] লিঙ্কড লিস্ট বনাম অ্যারে: - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) @@ -662,10 +662,10 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [ ] erase(index) - removes node at given index - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value + - [ ] remove_value(value) - এই মান দিয়ে তালিকার প্রথম আইটেমটি সরিয়ে দেয় - [ ] Doubly-linked List - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - - No need to implement + - ইমপ্লিমেন্টের প্রয়োজন নাই। -###স্ট্যাক - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) From 91a4617403ee63abd81170d1015d3117005c7528 Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Sun, 8 Jan 2023 19:46:09 +0900 Subject: [PATCH 729/857] Fix translation Signed-off-by: Shogo Hida --- translations/README-ja.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 21cb9def19..35ec3a8bc3 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1,7 +1,7 @@ # コーディング面接の大学 >私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、 ->今日それは大きなリストに成長しました。この調査計画を経て、[私はAmazonで +>今日それは大きなリストに成長しました。この勉強の計画を経て、[私はAmazonで > ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) >おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 > @@ -52,9 +52,9 @@

- Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time - and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve - any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident + Created by ex-Google engineers, AlgoMonster will help you crush the technical interview in less time + and with fewer sleepless nights grinding away random problems. You will learn the key patterns necessary to solve + any interview question and gain the systematic knowledge you need to prove your expertise. Be more confident as you walk into that interview!
@@ -180,10 +180,10 @@ SREまたはシステムエンジニアになりたい場合は、オプショ 一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 これらはMOOCと呼ばれています。 -時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 +時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 Lynda.comコースは有料です。 -オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 +オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 私は大学の講義を使うのが好きです。 @@ -654,7 +654,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] insert //木に値を挿入する - [ ] get_node_count //格納された値の数を取得する - [ ] print_values //最小値から最大値まで木の値を出力します - - [ ] delete_tree + - [ ] delete_tree - [ ] is_in_tree //与えられた値が木に存在する場合はtrueを返します - [ ] get_height //ノードの高さを返します(単一ノードの高さは1です) - [ ] get_min //木に格納されている最小値を返します @@ -1171,16 +1171,16 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - [ ] [Dockerの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - [ ] [AMPはGoogleに存在する脅威に対抗していますか?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - [ ] [サーバーレス(非常に長い、要点が必要](http://martinfowler.com/articles/serverless.html) - [ ] [Instagramを動かすもの:何百ものインスタンス、数十のテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - [ ] [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - [ ] [アーキテクチャ - 40Mビジター、200Mダイナミックページビュー、30TBデータ]() - [ ] [PlentyOfFishアーキテクチャ](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 - [ ] Twitter: From a271fcc05d64cd357237abcb95dea284b96b1de9 Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Mon, 9 Jan 2023 11:35:44 +0900 Subject: [PATCH 730/857] Add some translations Signed-off-by: Shogo Hida --- translations/README-ja.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 35ec3a8bc3..0050ad5dbc 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -4,7 +4,8 @@ >今日それは大きなリストに成長しました。この勉強の計画を経て、[私はAmazonで > ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) >おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 -> +> 私は数ヶ月間、1日約8〜12時間勉強しました。これが私のストーリーです: [Google の面接のために8か月間フルタイムで勉強した理由](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +>注意してください: あなたは私ほど勉強する必要はありません。私は、知る必要のないことに多くの時間を無駄にしました。詳細については、以下をご覧ください。貴重な時間を無駄にすることなく、必要なことを勉強するのを手伝います。 >ここに掲載されている項目を学べば、Amazon、Facebook、Google、Microsoftなど >大手企業を含む、ほぼすべてのソフトウェア会社の面接に備えることができます。 > From 8211333fec85ca477f387ca59d241097aabc381e Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Mon, 9 Jan 2023 12:48:50 +0900 Subject: [PATCH 731/857] Add some translations Signed-off-by: Shogo Hida --- translations/README-ja.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 0050ad5dbc..5ab56260b6 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -64,17 +64,19 @@
## これは何? +![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の複数月の学習計画です。 +これは、大企業のソフトウェア エンジニアになるための私の数か月にわたる学習計画です。 -![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +必須: -これは、 **新人ソフトウェアエンジニア** 、またはソフトウェア/ Webエンジニアからソフトウェアエンジニア(CSの知識が必要な場合)に転職する人を対象にしています。 -長年のソフトウェアエ開発経験をお持ちの場合は、より面白い面接を期待してください。 +コーディングの経験 (変数、ループ、メソッド/関数など) +忍耐 +時間 -あなたに何年ものソフトウェア/Web開発経験がある場合、Google、Amazon、Facebook、Microsoftなどの大規模なソフトウェア会社は、ソフトウェア/Web開発力ではなくソフトウェア工学に関して見ており、そのためにはCSに関する知識が必要となることをご了承ください。 +これは**ソフトウェアエンジニアリング**の学習計画であり、Web 開発の学習計画ではありません。 Google、Amazon、Facebook、Microsoft などの大手ソフトウェア企業は、ソフトウェアエンジニアリングを Web 開発とは異なるものと見なしています。 たとえば、Amazon にはフロントエンドエンジニア (FEE) とソフトウェア開発エンジニア (SDE) がいます。 これらは2つの別個の役割であり、それぞれに独自の能力があるため、面接は同じではありません。これらの企業は、ソフトウェア開発/エンジニアリングの役割のためにコンピューターサイエンスの知識を必要とします。 -SREまたはシステムエンジニアになりたい場合は、オプションのリスト(ネットワーク、セキュリティ)から詳細を調べてください。 +大学のコンピューターサイエンスプログラムで学ぶことはたくさんありますが、75%程度の知識があれば面接に十分なので、ここではそれについて説明します。 完全な CS 独学プログラムについては、私の学習計画のリソースがカムラン アーメドのコンピューターサイエンスロードマップに含まれています: https://roadmap.sh/computer-science --- From eb5e7cb5a4e7ee977de05a6f7dc190252f20e146 Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Mon, 9 Jan 2023 14:48:28 +0900 Subject: [PATCH 732/857] Add some translations and fix structural mistakes Signed-off-by: Shogo Hida --- translations/README-ja.md | 40 ++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 5ab56260b6..74ba6dcf80 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -132,6 +132,10 @@ ## なぜこれを使用するのか +大企業でソフトウェアエンジニアとして働きたい場合は、次のことを知っておく必要があります。 + +私のようにコンピューターサイエンスの学位を取得していない場合、これで追いつき、人生の4年間を救うことができます。 + 私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-O とは何か、木構造に関すること、グラフをたどる方法を知らなかったのです。 ソートアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 これまで使用してきたすべてのデータ構造は言語に組み込まれていて、どのようにしてそれらがどのようにして動作するのか分かりませんでした。 @@ -525,7 +529,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - ### スタック - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [スタックをの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] [スタックの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) - [ ] 実装されません。配列で実装するのは簡単です。 - ### キュー @@ -536,11 +540,11 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] テールポインタ付き連結リストを使って実装する: - enqueue(value) - テールの位置に値を追加する - dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面) -        - empty() + - empty() - [ ] 固定長配列を使って実装する: - enqueue(value) - 利用可能なストレージの最後にアイテムを追加する - dequeue() - 値を返し、最近追加された要素のうち最も古い要素を削除します -        - empty() + - empty() - full() - [ ] コスト: - 最後の要素の次の要素が必要になるため、先頭にエンキューし、末尾をデキューするリンクリストを使用する悪い実装はO(n)になり、デキューごとに完全なトラバーサルが発生します @@ -553,9 +557,11 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [連鎖によるハッシング(動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - [ ] [ダブリング、ラビン-カープ(ビデオ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [公開アドレス指定、暗号化ハッシング(動画)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010:The Mighty Dictionary(video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2010: The Mighty Dictionary(video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier(video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(上級)Randomization:ユニバーサル&完全 ハッシング(ビデオ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(高度)完全ハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://www.youtube.com/watch?v=knV86FlSXJ8) - [ ] オンラインコース: - [ ] [ハッシュ関数について(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) @@ -622,19 +628,18 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - 操作アルゴリズム - BFS(幅優先検索) - [MIT(動画)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - レベルオーダー(BFS、キューを使用) -            時間複雑度:O(n) -            空間の複雑さ:最適:O(1)、最悪:O(n / 2)= O(n) + - メモ: + - レベルオーダー(BFS、キューを使用) + - 時間複雑度:O(n) + - 空間の複雑さ:最適:O(1)、最悪:O(n / 2)= O(n) - DFS(深さ優先探索) - [MIT(動画)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) -        - メモ: -            時間複雑度:O(n) -            空間の複雑さ: -                最良:O(log n) - 平均。木の高さ -                最悪:O(n) - - inorder(DFS:left、self、right) - - postorder(DFS:left、right、self) - - preorder(DFS:自己、左、右) + - メモ: + - 時間複雑度:O(n) + - 空間の複雑さ:最良:O(log n) - 平均。木の高さ 最悪:O(n) + - inorder(DFS:left、self、right) + - postorder(DFS:left、right、self) + - preorder(DFS:自己、左、右) - ### 二分探索木:BST - [ ] [二分探索木レビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -690,7 +695,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] is_empty() - ヒープに要素が含まれていない場合はtrueを返します。 - [ ] extract_max - 最大アイテムを返し、それを削除します。 - [ ] sift_down - extract_maxに必要です - - [ ] remove(i) - インデックスxのアイテムを削除する + - [ ] remove(x) - インデックスxのアイテムを削除する - [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する - [ ] heap_sort() - ソートされていない配列を取り出し、最大ヒープを使用してソート済みの配列に変換します - 注意:代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります([in-place](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)では実行できません)。 @@ -755,7 +760,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。 -- note: +- メモ: - メモリにグラフを表示するには4つの基本的な方法があります: - オブジェクトとポインタ - 隣接行列 @@ -823,6 +828,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [テール再帰(ビデオ)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### 動的プログラミング + - 面接で動的プログラミングの問題が見られることはおそらくないでしょうが、問題が動的プログラミングの候補であると認識できることは価値があります。 - この問題はかなり難しいかもしれません。なぜなら、それぞれのDP可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 - [ ] 動画: From 7364986ea47312889de35aefba3db9b54fc5f583 Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Mon, 9 Jan 2023 15:01:10 +0900 Subject: [PATCH 733/857] Add some translations Signed-off-by: Shogo Hida --- translations/README-ja.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 74ba6dcf80..e668ea991c 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -934,6 +934,13 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [JupyterNotebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - あなたが持っているなら、CLRSの1048 - 1140ページ。 +- ### コンピューターはどのようにプログラムを実行するか + - [ ] [CPU がどのようにプログラムを実行するか (動画)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [コンピューターがどのように計算するか - ALU (動画)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [レジスタと RAM (動画)](https://youtu.be/fpnE6UAfbtU) + - [ ] [中央処理装置 (CPU) (動画)](https://youtu.be/FZGugFqdr60) + - [ ] [命令とプログラム (動画)](https://youtu.be/zltgXvg6r3k) + - ### キャッシュ - [ ] LRUキャッシュ: - [ ] [LRUキャッシュの魔法(Google Devの100日間)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) @@ -1358,12 +1365,13 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - 何をしているの? - それについて何が好きですか? - 仕事の生活はどうですか? +- ワークライフバランスはどうですか? ## 一度あなたは仕事を得た おめでとう! -学び続けます。 +学び続けてください。 あなたは決して本当に終わらない。 From f0c6d8da705e1e3bb9c79bca7e228763ccb9f3fa Mon Sep 17 00:00:00 2001 From: Shogo Hida Date: Mon, 9 Jan 2023 15:03:13 +0900 Subject: [PATCH 734/857] Fix translation Signed-off-by: Shogo Hida --- translations/README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index e668ea991c..6238bf4478 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1,7 +1,7 @@ # コーディング面接の大学 >私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、 ->今日それは大きなリストに成長しました。この勉強の計画を経て、[私はAmazonで +>今日それは大きなリストに成長しました。この学習計画を経て、[私はAmazonで > ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) >おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。 > 私は数ヶ月間、1日約8〜12時間勉強しました。これが私のストーリーです: [Google の面接のために8か月間フルタイムで勉強した理由](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) From 5afbb043c075e106aa1a5c9b1a063cc884512e6c Mon Sep 17 00:00:00 2001 From: ajoneshs <32287147+ajoneshs@users.noreply.github.com> Date: Fri, 13 Jan 2023 21:26:15 -0500 Subject: [PATCH 735/857] Correct book name in README The C Programming Language by Brian Kernighan and Dennis Ritchie only has one volume. This commit replaces "Vol 2" with "2nd Edition". --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc25457184..199c5afe9f 100644 --- a/README.md +++ b/README.md @@ -319,7 +319,7 @@ When I did the study plan, I used 2 languages for most of it: C and Python and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - [The C Programming Language, 2nd Edition](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. From 1b5ad8159d95f5dec5dd30f16792bac649ed0959 Mon Sep 17 00:00:00 2001 From: John Washam Date: Tue, 24 Jan 2023 18:43:10 -0800 Subject: [PATCH 736/857] Removes sponsor. --- README.md | 21 --------------------- translations/README-af.md | 21 --------------------- translations/README-ar.md | 21 --------------------- translations/README-bg.md | 21 --------------------- translations/README-bn.md | 21 --------------------- translations/README-cn.md | 18 ------------------ translations/README-de.md | 21 --------------------- translations/README-es.md | 21 --------------------- translations/README-fa.md | 21 --------------------- translations/README-fr.md | 21 --------------------- translations/README-he.md | 21 --------------------- translations/README-hi.md | 21 --------------------- translations/README-id.md | 21 --------------------- translations/README-it.md | 21 --------------------- translations/README-ja.md | 21 --------------------- translations/README-kh.md | 21 --------------------- translations/README-ko.md | 21 --------------------- translations/README-pl.md | 21 --------------------- translations/README-ptbr.md | 21 --------------------- translations/README-ru.md | 21 --------------------- translations/README-th.md | 21 --------------------- translations/README-tr.md | 21 --------------------- translations/README-tw.md | 18 ------------------ translations/README-uk.md | 21 --------------------- translations/README-ur.md | 21 --------------------- translations/README-uz.md | 21 --------------------- translations/README-vi.md | 21 --------------------- 27 files changed, 561 deletions(-) diff --git a/README.md b/README.md index 199c5afe9f..3e4626d7b9 100644 --- a/README.md +++ b/README.md @@ -59,27 +59,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-af.md b/translations/README-af.md index 5ec0cecb63..72633d0b1c 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -59,27 +59,6 @@

Word 'n bydraër en borg Kodering Onderhoud Universiteit!

-

- Spesiale dank aan: -

-
diff --git a/translations/README-ar.md b/translations/README-ar.md index c3b9d9da5b..19afc9fa44 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -58,27 +58,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-bg.md b/translations/README-bg.md index f2144cfc4f..8be2becbe8 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -52,27 +52,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-bn.md b/translations/README-bn.md index c79743732d..ae2ebec122 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -56,27 +56,6 @@

পৃষ্ঠপোষক হয়ে যান এবং কোডিং ইন্টারভিউ বিশ্ববিদ্যালয় সমর্থন করুন!

-

- বিশেষ ধন্যবাদঃ -

-
diff --git a/translations/README-cn.md b/translations/README-cn.md index 004dae02c2..f5ab2a5ee2 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -13,24 +13,6 @@

成为赞助商 并支持编程大学!

-

- 特别感谢: -

-
diff --git a/translations/README-de.md b/translations/README-de.md index 0e46cf1688..9906e28026 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -49,27 +49,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-es.md b/translations/README-es.md index 4863a092b9..4b820b2c77 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -51,27 +51,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-fa.md b/translations/README-fa.md index 2a30ff5b47..383e5e6fcf 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -55,27 +55,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-fr.md b/translations/README-fr.md index fb8127614c..7245cde0ea 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -10,27 +10,6 @@ Traductions:

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-he.md b/translations/README-he.md index 9291270a9f..b6e01cfa30 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -22,27 +22,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-hi.md b/translations/README-hi.md index d16afe6965..889d2a7a9b 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -61,27 +61,6 @@ प्रायोजक बनें और कोडिंग साक्षात्कार विश्वविद्यालय का समर्थन करें!

-

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

-
diff --git a/translations/README-id.md b/translations/README-id.md index 7ea2d71913..2c40f4e795 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -7,27 +7,6 @@ Versi asli: [Bahasa Inggris](../README.md)

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-it.md b/translations/README-it.md index 9f4bab8ab0..8128bace10 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -64,27 +64,6 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh)

Diventa uno sponsor e supporta Coding Interview University!

-

- Un ringraziamento speciale a: -

-
diff --git a/translations/README-ja.md b/translations/README-ja.md index 6238bf4478..e30028525e 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -39,27 +39,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-kh.md b/translations/README-kh.md index 22baabdfa5..7e5b187949 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -51,27 +51,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ko.md b/translations/README-ko.md index 4007987a68..30f64f03ae 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -56,27 +56,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-pl.md b/translations/README-pl.md index e1840ad3ac..b65e832354 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -48,27 +48,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
## Co to jest? diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 28a8932427..75ca63bd2b 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -44,27 +44,6 @@ Traduções em progresso:

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ru.md b/translations/README-ru.md index 94ef6b3c6c..0030bbce49 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,27 +7,6 @@

Become a sponsor and support Coding Interview University!

-

- Особые благодарности: -

-
diff --git a/translations/README-th.md b/translations/README-th.md index fe29cd2dba..84477cf05b 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -31,27 +31,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-tr.md b/translations/README-tr.md index f691396981..0cf2664609 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -54,27 +54,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-tw.md b/translations/README-tw.md index 0ff99f9033..fa5a8ab3bd 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -56,24 +56,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-uk.md b/translations/README-uk.md index 3188f72785..371b068812 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -57,27 +57,6 @@ Microsoft.

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ur.md b/translations/README-ur.md index 64a12315ff..01b5eafd38 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -49,27 +49,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-uz.md b/translations/README-uz.md index 44f456eb0c..be85bca262 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -17,27 +17,6 @@ Asl versiyasi: [Inglizcha](../README.md)

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-vi.md b/translations/README-vi.md index 4af369f938..07b27081d8 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -34,27 +34,6 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
From a2152157ebf82a6ff82513a3aaccb27c3180ae16 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 28 Jan 2023 11:35:28 -0800 Subject: [PATCH 737/857] Adds prep course. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3e4626d7b9..5d5acf10c4 100644 --- a/README.md +++ b/README.md @@ -1240,8 +1240,6 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) - Prep Courses: - - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): @@ -1250,6 +1248,8 @@ Graphs can be used to represent many problems in computer science, so this secti - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + - [AlgoMonster (paid course with free content)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - The crash course for LeetCode. Covers all the patterns condensed from thousands of questions. Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview From 5583a11e4b176a3e6e7fcb02acf536aeb39965e6 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 1 Feb 2023 08:06:13 -0800 Subject: [PATCH 738/857] Removes non-responsive links. --- README.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5d5acf10c4..f4d6e930f2 100644 --- a/README.md +++ b/README.md @@ -1214,17 +1214,11 @@ Graphs can be used to represent many problems in computer science, so this secti ## Update Your Resume - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: - - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) - ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." - ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume - - -## Find a Job - -- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) + - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume ## Interview Process & General Interview Prep @@ -1274,9 +1268,6 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? -- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: - - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) - ## Have questions for the interviewer Some of mine (I already may know the answers, but want their opinion or team perspective): @@ -1864,7 +1855,7 @@ You're never really done. - Stanford lectures on sorting: - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - Shai Simonson: - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - Steven Skiena lectures on sorting: From cdfe0965092f3f4dfbec35ca64b0ef3026313bcd Mon Sep 17 00:00:00 2001 From: Abdullah Afzal Date: Fri, 3 Feb 2023 04:23:08 +0500 Subject: [PATCH 739/857] translate table of content in urdu --- translations/README-ur.md | 247 +++++++++++++++++++------------------- 1 file changed, 122 insertions(+), 125 deletions(-) diff --git a/translations/README-ur.md b/translations/README-ur.md index 01b5eafd38..49e9f8c7c7 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -47,144 +47,141 @@ -## What is it? +## یہ کیا ہے؟ -This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. +یہ ایک بڑی کمپنی کے لیے ایک ویب ڈویلپر (خود سیکھا ہوا، بغیر CS ڈگری کے) سے سافٹ ویئر انجینئر تک جانے کے لیے کئی مہینوں کا میرا اسٹڈی پلان ہے۔ ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -This is meant for **new software engineers** or those switching from -software/web development to software engineering (where computer science knowledge is required). If you have -many years of experience and are claiming many years of software engineering experience, expect a harder interview. +یہ **نئے سافٹ ویئر انجینئرز** یا سافٹ ویئر/ویب ڈویلپمنٹ سے سافٹ ویئر انجینئرنگ میں تبدیل ہونے والوں کے لیے ہے (جہاں کمپیوٹر سائنس کا علم درکار ہے)۔ اگر آپ کے پاس کئی سالوں کا تجربہ ہے اور آپ سافٹ ویئر انجینئرنگ کے کئی سالوں کے تجربے کا دعویٰ کر رہے ہیں تو ایک مشکل انٹرویو کی توقع کریں۔ -If you have many years of software/web development experience, note that large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge. +اگر آپ کے پاس سافٹ ویئر/ویب ڈویلپمنٹ کا کئی سال کا تجربہ ہے، تو نوٹ کریں کہ بڑی سافٹ ویئر کمپنیاں جیسے گوگل، ایمیزون، فیس بک اور مائیکروسافٹ سافٹ ویئر انجینئرنگ کو سافٹ ویئر/ویب ڈویلپمنٹ سے مختلف سمجھتے ہیں، اور انہیں کمپیوٹر سائنس کے علم کی ضرورت ہوتی ہے۔ -If you want to be a reliability engineer or operations engineer, study more from the optional list (networking, security). +اگر آپ ریلائیبلٹی انجینئر یا آپریشنز انجینئر بننا چاہتے ہیں تو اختیاری فہرست (نیٹ ورکنگ، سیکیورٹی) سے مزید مطالعہ کریں۔ --- -## Table of Contents - -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [About Video Resources](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) - - [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -## Additional Resources - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) - - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) +## مواد کی فہرست + +- [یہ کیا ہے؟](#what-is-it) +- [اسے کیوں استعمال کریں؟](#why-use-it) +- [اسے کیسے استعمال کریں](#how-to-use-it) +- [اپنے آپ کو کم نہ سمجھیں](#dont-feel-you-arent-smart-enough) +- [ویڈیو مواد کے بارے میں](#about-video-resources) +- [انٹرویو کا عمل اور عام انٹرویو کی تیاری](#interview-process--general-interview-prep) +- [انٹرویو کے لیے ایک زبان کا انتخاب کریں۔](#pick-one-language-for-the-interview) +- [کتابوں کی فہرست](#book-list) +- [شروع کرنے سے پہلے](#before-you-get-started) +- [جو آپ نہیں سیکھیں گے۔](#what-you-wont-see-covered) +- [پہلے سے ضروری علم](#prerequisite-knowledge) +- [روزانہ کی منصوبہ بندی](#the-daily-plan) +- [الگورتھمک پیچیدگی / بگ-او / اسیمپٹوٹک تجزیہ(Algorithmic complexity / Big-O / Asymptotic analysis)](#algorithmic-complexity--big-o--asymptotic-analysis) +- [ڈیٹا سٹرکچرز(Data Structures)](#data-structures) + - [آرے (Arrays)](#arrays) + - [لنکڈلسٹ (Linked Lists)](#linked-lists) + - [سٹیک (Stack)](#stack) + - [کیو (Queue)](#queue) + - [ہیش ٹیبل (Hash table)](#hash-table) +- [مزید معلومات](#more-knowledge) + - [بینری سرچ (Binary search)](#binary-search) + - [بٹ وائزاپریشنز (Bitwise operations)](#bitwise-operations) +- [ٹریز (Trees)](#trees) + - [ٹریز - نوٹس اور پس منظر](#trees---notes--background) + - [بینری سرچ ٹریز (Binary search trees: BSTs)](#binary-search-trees-bsts) + - [ہیپ / پریاٹری کیو / بینری ہیپ (Heap / Priority Queue / Binary Heap)](#heap--priority-queue--binary-heap) + - بیلنسڈ سرچ ٹریز - عمومی جائزہ (balanced search trees - general concept, not details) + - ٹریورسل (traversals: preorder, inorder, postorder, BFS, DFS) +- [ترتیب / سارٹنگ (Sorting)](#sorting) + - سلیکشن (selection) + - انسرشن (insertion) + - ہیپ سارٹ (heapsort) + - کوک سارٹ (quicksort) + - مرج سارٹ (merge sort) +- [گرافس (Graphs)](#graphs) + - ڈریکٹڈ (directed) + - انڈریکٹڈ (undirected) + - اڈجیسنسی میٹرکس (adjacency matrix) + - اڈجیسنسی لسٹ (adjacency list) + - ٹریورسل (traversals: BFS, DFS) +- [اس سے بھی زیادہ معلومات](#even-more-knowledge) + - [رکرین / تکرار (Recursion)](#recursion) + - [ڈینیمک پروگرامنگ](#dynamic-programming) + - [ابجیکٹ پروگرامنگ](#object-oriented-programming) + - [ڈیزائن پیٹرن](#design-patterns) + - [امتزاج (n منتخب k) اور امکان](#combinatorics-n-choose-k--probability) + - [تخمینہ الگورتھم ،NPاورNP-مکمل (NP, NP-Complete and Approximation Algorithms)](#np-np-complete-and-approximation-algorithms) + - [کیچز](#caches) + - [پروسسزاور تھریڈز](#processes-and-threads) + - [ٹیسٹنگ](#testing) + - [شیڈولنگ](#scheduling) + - [سٹرنگ تلاش کرنا اور تبدیل کرنا](#string-searching--manipulations) + - [ٹرایز (Tries)](#tries) + - [اعشاریہ کے ساتھ نمبر](#floating-point-numbers) + - [یونیکوڈ](#unicode) + - [اینڈیاننس](#endianness) + - [نیٹ ورکنگ](#networking) +- [سسٹم ڈیزائن، اسکیل ایبلٹی، ڈیٹا ہینڈلنگ](#system-design-scalability-data-handling) (اگر آپ کو 4 سال سے زیادہ کا تجربہ ہے۔) +- [حتمی جائزہ](#final-review) +- [کوڈنگ سوال کی مشق](#coding-question-practice) +- [کوڈنگ کی مشقیں/چیلنجز](#coding-exerciseschallenges) +- [ایک بار جب آپ انٹرویو کے قریب پہنچ جائیں۔](#once-youre-closer-to-the-interview) +- [آپ کا رزیومے](#your-resume) +- [اپنے انٹرویو لینے والے کی طرح سوچیں۔](#be-thinking-of-for-when-the-interview-comes) +- [انٹرویو لینے والے کے لیے سوالات](#have-questions-for-the-interviewer) +- [ایک بار جب آپ کو نوکری مل جائے گی۔](#once-youve-got-the-job) + +---------------- ذیل کی چیزیں اختیاری ہیں ---------------- + +## اضافی مواد + +- [اضافی کتابیں](#additional-books) +- [اضافی معلومات](#additional-learning) + - [کمپائلر](#compilers) + - [ایماکس اور vi(m)](#emacs-and-vim) + - [یونکس کمانڈ لائن ٹولز](#unix-command-line-tools) + - [انفارمیشن تھیوری](#information-theory-videos) + - [پیرٹی اور ہیمنگ کوڈ](#parity--hamming-code-videos) + - [اینٹروپی](#entropy) + - [خفیہ نگاری (Cryptography)](#cryptography) + - [کمپریشن](#compression) + - [کمپیوٹر سیکیورٹی](#computer-security) + - [گاربیج کلیکشن](#garbage-collection) + - [پیرالل پروگرامنگ](#parallel-programming) + - [پیغام رسانی، سیریلائزیشن، اور قطار لگانے کے نظام (Messaging, Serialization, and Queueing Systems)](#messaging-serialization-and-queueing-systems) + - [اے سٹار (A*)](#a) + - [فاسٹ فوئیر ٹرانسفارم](#fast-fourier-transform) + - [بلوم فلٹر](#bloom-filter) + - [ہائپر لاگ لاگ](#hyperloglog) + - [لوکلٹی سنسٹیو ہیشنگ](#locality-sensitive-hashing) + - [وین ایمڈ بوس ٹریز](#van-emde-boas-trees) + - [اگیومینٹڈ ڈیٹا سٹرکچر](#augmented-data-structures) + - [بیلنسڈ سرچ ٹریز](#balanced-search-trees) + - اے وی ایل ٹریز + - سپلے ٹریز + - رڈ/بلیک ٹریز + - ۳-۲ سرچ ٹریز + - ۴-۳-۲ سرچ ٹریز(۲-۴ ٹریز) + - این-ارے(کے-ارے،ایم-ارے) ٹریز (N-ary (K-ary, M-ary) trees) + - بی - ٹریز + - [کے-ڈی ٹریز](#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) + - [مشین لرننگ](#machine-learning) +- [کچھ مضامین پر اضافی تفصیل](#additional-detail-on-some-subjects) +- [ویڈیو سیریز](#video-series) +- [کمپیوٹر سائنس کورسز](#computer-science-courses) +- [پیپرز](#papers) --- From 695928a20ed303fd159955d25a2628c08a2d85c2 Mon Sep 17 00:00:00 2001 From: Abdullah Afzal Date: Fri, 3 Feb 2023 17:10:51 +0500 Subject: [PATCH 740/857] Correction of Introductory para conventional and idiomatic correction of the introductory paragraph according to the speaking style of native people. --- translations/README-ur.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/translations/README-ur.md b/translations/README-ur.md index 49e9f8c7c7..f3ad066f68 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1,16 +1,15 @@ -# Coding Interview University +# کوڈنگ انٹرویو یونیورسٹی -> سافٹ ویئر انجینئر بننے کے لئے میں نے اصل میں اس کو اسٹڈی لسٹ کے طور پر اسٹڈی ٹاپکس کی فہرست کے طور پر تخلیق کیا ہے, -> لیکن یہ اس بڑی تعداد میں بڑھ گئی جو آپ آج دیکھ رہے ہیں۔ اس مطالعاتی منصوبے سے گزرنے کے بعد ، [مجھے نوکری مل گئی -> ایمیزون میں سافٹ ویئر ڈویلپمنٹ انجینئر کی حیثیت سے](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> آپ کو شاید اتنا مطالعہ نہیں کرنا پڑے گا جتنا میں نے کیا تھا۔ بہر حال ، آپ کی ہر چیز کی ضرورت یہاں ہے۔ +>میں نے اصل میں اسے سافٹ ویئر انجینئر بننے کے لیے مطالعے کے عنوانات کی ایک مختصر فہرست کے طور پر بنایا تھا، لیکن یہ اس بڑی فہرست تک پہنچ گئی جو آپ آج دیکھ رہے ہیں۔ اس مطالعاتی منصوبے سے گزرنے کے بعد ، [مجھے ایمیزون میں سافٹ ویئر ڈویلپمنٹ انجینئر کے طور پر ملازمت پر رکھا گیا ہے!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> آپ کو شاید اتنا مطالعہ نہیں کرنا پڑے گا جتنا میں نے کیا تھا۔ بہرحال، آپ کی ضرورت کی ہر چیز یہاں ہے۔ > > میں نے کئی مہینوں تک ، دن میں تقریبا 8 سے 12 گھنٹے مطالعہ کیا۔ یہ میری کہانی ہے: [گوگل انٹرویو کے لئے میں نے 8 ماہ تک فل ٹائم کیوں پڑھا](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> یہاں درج آئٹمز کسی بھی سافٹ ویئر کمپنی کے بارے میں تکنیکی انٹرویو کے ل آپ کو اچھی طرح تیار کریں گے ، -> سمیت: Amazon, Facebook, Google, and Microsoft. +>*براہ کرم نوٹ کریں:* آپ کو اتنا مطالعہ کرنے کی ضرورت نہیں ہوگی جتنا میں نے کیا تھا۔ میں نے ان چیزوں پر بہت وقت ضائع کیا جن کے بارے میں مجھے جاننے کی ضرورت نہیں تھی۔ ذیل میں اس کے بارے میں مزید معلومات۔ میں آپ کا قیمتی وقت ضائع کیے بغیر وہاں پہنچنے میں آپ کی مدد کروں گا۔ > -> *آپ کو نیک خواہشات!* +> یہاں درج عنوانات آپ کو کسی بھی سافٹ ویئر کمپنی بشمول ایمیزون، فیس بک، گوگل، اور مائیکروسافٹ میں تکنیکی انٹرویو کے لیے اچھی طرح تیار کریں گے۔ +> +> *آپ کے لیے نیک تمنائیں!*
ترجمہ: From 4c07bdda2c67ce3d7c5f7d55a441810bf4071f2d Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Thu, 9 Feb 2023 18:15:32 -0500 Subject: [PATCH 741/857] Add review videos in other languages --- README.md | 2 +- translations/README-af.md | 24 +++++++++++++++++++++++- translations/README-ar.md | 24 +++++++++++++++++++++++- translations/README-bg.md | 25 +++++++++++++++++++++++-- translations/README-bn.md | 26 +++++++++++++++++++++++--- translations/README-cn.md | 24 +++++++++++++++++++++++- translations/README-de.md | 24 +++++++++++++++++++++++- translations/README-el.md | 11 ++++++++++- translations/README-es.md | 24 +++++++++++++++++++++++- translations/README-fa.md | 24 +++++++++++++++++++++++- translations/README-fr.md | 25 +++++++++++++++++++++++-- translations/README-he.md | 24 +++++++++++++++++++++++- translations/README-hi.md | 27 +++++++++++++++++++++++++-- translations/README-id.md | 24 +++++++++++++++++++++++- translations/README-it.md | 24 +++++++++++++++++++++++- translations/README-ja.md | 23 ++++++++++++++++++++++- translations/README-kh.md | 24 +++++++++++++++++++++++- translations/README-ko.md | 24 +++++++++++++++++++++++- translations/README-pl.md | 26 ++++++++++++++++++++++++-- translations/README-ptbr.md | 26 ++++++++++++++++++++++++-- translations/README-ru.md | 24 +++++++++++++++++++++++- translations/README-th.md | 24 +++++++++++++++++++++++- translations/README-tr.md | 25 ++++++++++++++++++++++++- translations/README-tw.md | 24 +++++++++++++++++++++++- translations/README-uk.md | 24 +++++++++++++++++++++++- translations/README-ur.md | 24 +++++++++++++++++++++++- translations/README-uz.md | 24 +++++++++++++++++++++++- translations/README-vi.md | 24 +++++++++++++++++++++++- 28 files changed, 613 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index f4d6e930f2..cd965d6377 100644 --- a/README.md +++ b/README.md @@ -1204,7 +1204,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-af.md b/translations/README-af.md index 72633d0b1c..4e2cc3ca4f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -571,6 +571,7 @@ Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie! - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Well, dis genoeg van daardie. @@ -616,6 +617,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - nie die hele video nie, net gedeeltes oor Node struct en geheue toekening - [ ] Linked List vs Skikkings: @@ -647,11 +649,13 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - ### Stapel - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Sal nie implementeer nie. Implementering met skikking is maklik - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implementeer met linked-list, met stert wyser: - enqueue(waarde) - voeg waarde by posisie by stert - dequeue() - lewer waarde en verwyder die minste onlangse gevoegde element (voorkant) @@ -677,6 +681,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -700,6 +705,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (op 'n gesorteerde skikking van heelgetalle) - binary search met recursion @@ -751,6 +757,9 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - inorder (DFS: links, self, regs) - postorder (DFS: links, regs, self) - preorder (DFS: self, links, regs) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Revisie (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -796,6 +805,7 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [MIT: Heaps en Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Lineêr Tyd BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implementeer 'n max-heap: - [ ] insert - [ ] sift_up - nodig vir insert @@ -860,6 +870,14 @@ of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implementeer: - [ ] Mergesort: O(n log n) gemiddelde en slegste gevalle - [ ] Quicksort O(n log n) gemiddelde geval @@ -922,6 +940,8 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Kursus: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1181,7 +1201,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (38 videos): +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1672,6 +1692,7 @@ Jy is nooit regtig klaar nie. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - Prakties: @@ -1712,6 +1733,7 @@ Jy is nooit regtig klaar nie. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - dek cache-oblivious B-Trees, baie interessante datastrukture - die eerste 37 minute is baie tegnies en mag geskiep word (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-ar.md b/translations/README-ar.md index 19afc9fa44..486e796015 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -525,6 +525,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Data Structures @@ -566,6 +567,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: @@ -597,11 +599,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -626,6 +630,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -648,6 +653,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -699,6 +705,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -744,6 +753,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -808,6 +818,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -871,6 +889,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1257,7 +1277,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1695,6 +1715,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1735,6 +1756,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-bg.md b/translations/README-bg.md index 8be2becbe8..1cc97bc0ab 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -498,6 +498,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Пищови](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Е, това е достатъчно за тази тема. @@ -544,6 +545,7 @@ - [ ] [Единично свързани списъци (клип)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [ ] [CS 61B - Linked Lists 1 (клип)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (клип)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [Код в C (клип)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - не цялото видео, само частите за Node structs и алокация на памет - [ ] Свързани списъци срещу масиви: - [Core Linked Lists Vs Arrays (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) @@ -575,12 +577,14 @@ - ### Стек - [ ] [Стекове (клип)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Няма нужда да се имплементира. Имплементацията с масив е тривиална. - ### Опашка - [ ] [Опашка (клип)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Имплементирайте със свързан списък с tail pointer: - enqueue(value) - добавя стойност на опашката - dequeue() - връща стойността и премахва най-предния елемент на опашката (front) @@ -608,6 +612,7 @@ - [ ] [PyCon 2017: The Dictionary Even Mightier (клип)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (клип)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(За напреднали) Perfect hashing (клип)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Онлайн курсовe: @@ -631,6 +636,7 @@ - [ ] [Binary Search (клип)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Binary Search (клип)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [детайли](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Имплементирайте: - двоично търсене (на сортиран масив от integers) - двоично търсене чрез рекурсия @@ -682,6 +688,9 @@ - inorder (DFS: ляво, self, дясно) - postorder (DFS: ляво, дясно, self) - preorder (DFS: self, ляво, дясно) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Дървета за двоично търсене: BSTs @@ -728,6 +737,7 @@ - [ ] [MIT: Heaps and Heap Sort (клип)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (клип)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Имплементирайте max-heap: - [ ] insert - [ ] sift_up - нужно е за insert @@ -797,6 +807,14 @@ - [ ] [Имплементация (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Имплементация (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Имплементирайте: - [ ] Mergesort: O(n log n) сложност в средния/ най-лошия случай @@ -864,6 +882,8 @@ - [ ] [CS 61B 2014: Претеглени графи (клип)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Алчни алгоритми: Минимално обхващащо дърво (клип)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Алгоритъм за граф на Kosaraju за силно свързани компоненти (клип)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Пълен курс в Coursera: @@ -1134,7 +1154,7 @@ - [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (38 клипа): +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (40 клипа): - [Клипове](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Алгоритми II](https://www.coursera.org/learn/algorithms-part2) @@ -1643,7 +1663,7 @@ Mock интервюта: - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) - + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1684,6 +1704,7 @@ Mock интервюта: - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-bn.md b/translations/README-bn.md index ae2ebec122..e4c074d55a 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -648,11 +648,13 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য -###স্ট্যাক - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - ] বাস্তবায়ন করবে না। অ্যারের সাথে প্রয়োগ করা তুচ্ছ। -###কিউ - [সারি (ভিডিও)] (https://www.coursera.org/lecture/data-structures/queues-EShpq) - [বিজ্ঞপ্তি বাফার / ফিফো] (https://en.wikedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - লেজ পয়েন্টার সহ লিঙ্কযুক্ত-তালিকা ব্যবহার করে প্রয়োগ করুন: -এনকুই (মান)-লেজের স্থানে মান যোগ করে -ডেকিউ ()-মান ফেরত দেয় এবং সর্বশেষে যুক্ত হওয়া উপাদান (সামনে) সরিয়ে দেয় @@ -677,6 +679,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [পাইকন ২০১০: দ্য মাইটি ডিকশনারী (ভিডিও)] (https://www.youtube.com/watch?v=C4Kc8xzcA68) - [(উন্নত) র্যান্ডমাইজেশন: ইউনিভার্সাল এবং পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [(উন্নত) পারফেক্ট হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEWKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - অনলাইন কোর্স: - [কোর হ্যাশ টেবিল (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -704,6 +707,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [বাইনারি অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=D5SrAga1pno) - [বাইনারি সন্ধান (ভিডিও)] (https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [বিস্তারিত] (https://www.topcoder.com/commune/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - বাস্তবায়ন: -বাইনারি অনুসন্ধান (পূর্ণসংখ্যার সাজানো অ্যারেতে) -পুনরাবৃত্তি ব্যবহার করে বাইনারি অনুসন্ধান @@ -760,7 +764,10 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য -অর্ডার (ডিএফএস: বাম, স্ব, ডান) -পোস্টর্ডার (ডিএফএস: বাম, ডান, স্ব) -প্রির্ডার (ডিএফএস: স্ব, বাম, ডান) - + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + -###বাইনারি অনুসন্ধান গাছ: বিএসটি - [বাইনারি অনুসন্ধান বৃক্ষ পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [সিরিজ (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-intr پيداوار-to-binary-search-trees) @@ -807,6 +814,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [এমআইটি: হিপস এবং হিপ সাজান (ভিডিও)] (https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [সিএস 61 বি লেকচার 24: অগ্রাধিকার ক্যু (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [লিনিয়ার টাইম বিল্ডহীপ (সর্বাধিক হিপ)] (https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - একটি সর্বোচ্চ গাদা প্রয়োগ করুন: - sertোকান - সিফ্ট_আপ-.োকানোর জন্য প্রয়োজনীয় @@ -876,7 +884,15 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [বাস্তবায়ন (সি)] (http://www.cs.yale.edu/homes/aspnes/class/223/exults/randomization/quick.c) - [বাস্তবায়ন (সি)] (https://github.com/jwasham/pੈਕਟ-c/blob/master/quick_sort/quick_sort.c) - [বাস্তবায়ন (পাইথন)] (https://github.com/jwasham/pੈਕਟ-python/blob/master/quick_sort/quick_sort.py) - + +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - বাস্তবায়ন: - মার্জোর্ট: ও (এন লগ এন) গড় এবং সবচেয়ে খারাপ অবস্থা case - কুইকসোর্ট ও (এন লগ এন) গড় কেস @@ -945,6 +961,8 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [সিএস 61 বি 2014: ওজনযুক্ত গ্রাফ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [লোভী অ্যালগরিদম: ন্যূনতম বিস্তৃত গাছ (ভিডিও)] (https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [দৃr়ভাবে সংযুক্ত উপাদানগুলি কোসারাজুর অ্যালগোরিদম গ্রাফ আলগোরিদিম (ভিডিও)] (https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) -সম্পূর্ণ কোর্সেরা কোর্স: - [গ্রাফগুলিতে অ্যালগরিদমগুলি (ভিডিও)] (https://www.coursera.org/learn/algorithms-on-অনুচ্ছেদ / হোম / উপস্ব) @@ -1368,7 +1386,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল (18 টি ভিডিও): +- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (40 টি ভিডিও): -[ভিডিও] (https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) - [সেজেজিক ভিডিও-দ্বিতীয় অ্যালগোরিদম] (https://www.coursera.org/learn/algorithms-part2) @@ -1797,6 +1815,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [আদুনি-অ্যালগরিদম-লেকচার 5 (ভিডিও)] (https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [লাল-কালো বৃক্ষ] (https://en.wikedia.org/wiki/Red%E2%80%93 ব্ল্যাক_ট্রি) - [বাইনারি অনুসন্ধান এবং লাল কালো গাছের পরিচিতি] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/an-intr Produc-to-binary-search-and-red-black-trees /) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - ** ২-৩ টি অনুসন্ধান গাছ ** -প্রস্তুতিতে: @@ -1837,6 +1856,7 @@ iOS-এ এটির দাম $25 কিন্তু অন্যান্য - [এমআইটি 85.৮৫১-মেমরি হায়ারার্কি মডেলগুলি (ভিডিও)] (https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -ক্যাশে-বিস্মৃত বি-গাছগুলি কভার করে, খুব আকর্ষণীয় ডেটা স্ট্রাকচার -প্রথম 37 মিনিট খুব প্রযুক্তিগত, এড়িয়ে যেতে পারে (বি ব্লকের আকার, ক্যাশে লাইনের আকার) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) -###কেডি গাছ diff --git a/translations/README-cn.md b/translations/README-cn.md index f5ab2a5ee2..b504ec7079 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -450,6 +450,7 @@ - [计算性复杂度:第一部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [计算性复杂度:第二部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [速查表(Cheat sheet)](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## 数据结构 @@ -491,6 +492,7 @@ - [ ] [单向链表(视频)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B —— 链表(一)(视频)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B —— 链表(二)(视频)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C 代码(视频)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) ── 并非看完整个视频,只需要看关于节点结构和内存分配那一部分即可 - [ ] 链表 vs 数组: - [基本链表 Vs 数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) @@ -519,11 +521,13 @@ - ### 堆栈(Stack) - [ ] [堆栈(视频)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] 可以不实现,因为使用数组来实现并不重要 - ### 队列(Queue) - [ ] [队列(视频)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [原型队列/先进先出(FIFO)](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] 使用含有尾部指针的链表来实现: - enqueue(value) —— 在尾部添加值 - dequeue() —— 删除最早添加的元素并返回其值(首部元素) @@ -547,6 +551,7 @@ - [ ] [PyCon 2010:The Mighty Dictionary(视频)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(进阶)随机取样(Randomization):全域哈希(Universal Hashing)& 完美哈希(Perfect Hashing)(视频)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(进阶)完美哈希(Perfect hashing)(视频)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] 在线课程: - [ ] [基本哈希表(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -569,6 +574,7 @@ - [ ] [二分查找(视频)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [二分查找(视频)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [详情](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] 实现: - 二分查找(在一个已排序好的整型数组中查找) - 迭代式二分查找 @@ -622,6 +628,9 @@ - 中序遍历(DFS:左、节点本身、右) - 后序遍历(DFS:左、右、节点本身) - 先序遍历(DFS:节点本身、左、右) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 二叉查找树(Binary search trees):BSTs - [ ] [二叉查找树概览(视频)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -669,6 +678,7 @@ - [ ] [MIT:堆与堆排序(视频)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24:优先级队列(视频)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [构建线性时间复杂度的堆(大顶堆)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 实现一个大顶堆: - [ ] insert - [ ] sift_up —— 用于插入元素 @@ -724,6 +734,14 @@ - [ ] [实现(C语言)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [实现(Python语言)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] 实现: - [ ] 归并:平均和最差情况的时间复杂度为 O(n log n)。 - [ ] 快排:平均时间复杂度为 O(n log n)。 @@ -786,6 +804,8 @@ - [ ] [CS 61B 2014: 加权图(视频)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [贪心算法: 最小生成树(视频)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [图的算法之强连通分量 Kosaraju 算法(视频)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - 完整的 Coursera 课程: - [ ] [图的算法(视频)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1172,7 +1192,7 @@ - [ ] 2-3分钟的简短主题视频系列(23个视频) - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (38个视频): +- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (40个视频): - [视频](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) @@ -1586,6 +1606,7 @@ - [Aduni —— 算法 —— 课程5(视频)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [黑树(Black Tree)](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [二分查找及红黑树的介绍](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3查找树** - 实际中:2-3树的元素插入非常快速,但却有着查询慢的代价(因为相比较 AVL 树来说,其高度更高)。 @@ -1617,6 +1638,7 @@ - [MIT 6.851 —— 内存层次模块(Memory Hierarchy Models)(视频)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - 覆盖有高速缓存参数无关型(cache-oblivious)B 树和非常有趣的数据结构 - 头37分钟讲述的很专业,或许可以跳过(B 指块的大小、即缓存行的大小) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D树 - 非常适合在矩形或更高维度的对象中查找点数 diff --git a/translations/README-de.md b/translations/README-de.md index 9906e28026..ad2a3b4f2f 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -549,6 +549,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Spickzettel](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU)
@@ -596,6 +597,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - nicht das ganze Video nur die Teile über Knotenstruktur und Speicherverwaltung. - [ ] Linked Lists vs Arrays: @@ -627,11 +629,13 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - ### Stack (Stapel) - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Werde ich nicht implementieren. Implementierung mittels Array ist trivial. - ### Queue (Warteschlangen) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implementierung mittels verketteten Listen, mit Tail-Pointer: - enqueue(value) - fügt Wert am Ende ein - dequeue() - gibt das älteste Element (am Anfang der Liste) zurück und löscht es @@ -656,6 +660,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Kurse: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -683,6 +688,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [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) - [ ] [Details](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implementierung: - Binärsuche (auf einem sortierten Array von Ganzzahlen) - Binärsuche mittels Rekursion @@ -739,6 +745,9 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - inorder (DFS: links, selber, rechts) - postorder (DFS: links, rechts, selber) - preorder (DFS: selber, links, rechts) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs (Binäre Suchbäume) - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -786,6 +795,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implementierung eines Max-Heap: - [ ] insert - [ ] sift_up - gebraucht fürs Einfügen @@ -856,6 +866,14 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implementierung: - [ ] Mergesort: O(n log n) Durchschnitt und worst case - [ ] Quicksort O(n log n) Durchschnitt @@ -924,6 +942,8 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Kompletter Coursera Kurs: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1347,7 +1367,7 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Reihe mit kurzen 2-3 Minuten Videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (38 videos): +- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1778,6 +1798,7 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 Bäume** - In der Praxis: @@ -1818,6 +1839,7 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - behandelt cache-oblivious B-Bäume, sehr interessante Datenstrukturen - die ersten 37 Minuten sind sehr technisch, können übersprungen werden (B ist Blockgröße, Cache Zeilen Länge) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Bäume diff --git a/translations/README-el.md b/translations/README-el.md index ce84225c40..a3057e19d4 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -456,6 +456,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Εάν μερικές διαλέξεις είναι πολύ μαθηματικές, μπορείς να μεταβείς προς τα κάτω και να παρακολουθήσεις μερικά βίντεο σχετικά με τα διακριτά μαθηματικά για να πάρεις όλες τις γνώσεις που απαιτούνται. @@ -503,6 +504,7 @@ - [ ] Περιγραφή: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -538,6 +540,7 @@ - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Queue @@ -545,6 +548,7 @@ - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -569,6 +573,7 @@ - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) @@ -595,6 +600,7 @@ - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -648,4 +654,7 @@ worst: O(n) - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) \ No newline at end of file + - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) diff --git a/translations/README-es.md b/translations/README-es.md index 4b820b2c77..af5eebb749 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -520,6 +520,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Si algunas de las lecturas son muy matemáticas, puede saltar a la parte inferior y ver las matemáticas discretas para tener el conocimiento base. @@ -563,6 +564,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] Descripción: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - No todo el video, solo porciones acerca de la estructura de nodos y la asignación de memoria. - [ ] Listas enlazadas vs Arreglos: @@ -593,11 +595,13 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - No es necesario. - ### Pila: - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] No implementaré. Implementando con arreglos es trivial. - ### Cola o fila - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implementar usando listas enlazadas, con el puntero de la cola: - enqueue(value) – Añade el valor en la posición de la cola. - dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal) @@ -621,6 +625,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Cursos en línea: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -642,6 +647,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implementar: - Búsqueda binaria (en un arreglo ordenado de enteros) - Búsqueda binaria usando recursión. @@ -694,6 +700,9 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Árboles de búsqueda binaria: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -741,6 +750,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implementar una cola máxima: - [ ] insert - [ ] sift_up – Necesario para el insert. @@ -786,6 +796,14 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implemente: - [ ] Mergesort: O(n log n) Promedio y peor caso. - [ ] Quicksort O(n log n) Caso promedio. @@ -844,6 +862,8 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Curso Completo de Coursera: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1282,7 +1302,7 @@ Es bueno si quieres repasar frecuentemente. - [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (38 videos): +- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1625,6 +1645,7 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **Árboles de búsqueda 2-3** - En práctica: @@ -1658,6 +1679,7 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - Cubre árboles-B de cache inconsistente, estructuras de datos muy interesantes. - Los primeros 37 minutos son muy técnicos, puede saltarlos (B es tamaño de bloque, tamaño de línea de caché) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### Árboles k-D - Ideal para encontrar el número de puntos en un rectángulo o un objeto de dimensión superior. diff --git a/translations/README-fa.md b/translations/README-fa.md index 383e5e6fcf..3db8fcc272 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -552,6 +552,7 @@ Choose one: - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) بسیارخب، فکر کنم در همین حد کافی باشه. @@ -597,6 +598,7 @@ Choose one: - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: @@ -628,11 +630,13 @@ Choose one: - ### پشته - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial - ### صف - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -658,6 +662,7 @@ Choose one: - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -680,6 +685,7 @@ Choose one: - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -731,6 +737,9 @@ Choose one: - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### درخت جستجوی دودویی: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -776,6 +785,7 @@ Choose one: - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -840,6 +850,14 @@ Choose one: - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -903,6 +921,8 @@ Choose one: - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1161,7 +1181,7 @@ Choose one: - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1647,6 +1667,7 @@ Mock Interviews: - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1687,6 +1708,7 @@ Mock Interviews: - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-fr.md b/translations/README-fr.md index 7245cde0ea..8099aa0fdd 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -560,7 +560,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. @@ -604,6 +604,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -635,11 +636,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -664,6 +667,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -686,6 +690,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -739,6 +744,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -786,6 +794,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -832,6 +841,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -889,6 +906,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1256,7 +1275,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1689,6 +1708,7 @@ You're never really done. - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - In practice: @@ -1728,6 +1748,7 @@ You're never really done. - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-he.md b/translations/README-he.md index b6e01cfa30..a2c1fa988b 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -571,6 +571,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) If some of the lectures are too mathy, you can jump down to the bottom and @@ -614,6 +615,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -645,11 +647,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### מחסנית - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### תור - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -674,6 +678,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -696,6 +701,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -749,6 +755,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -796,6 +805,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -842,6 +852,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -899,6 +917,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1266,7 +1286,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [סרטונים](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1700,6 +1720,7 @@ You're never really done. - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - In practice: @@ -1739,6 +1760,7 @@ You're never really done. - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-hi.md b/translations/README-hi.md index 889d2a7a9b..40882cc744 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -579,6 +579,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [कम्प्यूटेशनल जटिलता: सेक्शन 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [चीट शीट] (http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) खैर, बस इतना ही काफी है। @@ -623,6 +624,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [सिंगली लिंक्ड लिस्ट (वीडियो)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [ ] [सीएस 61बी - लिंक्ड सूचियां 1 (वीडियो)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [सीएस 61बी - लिंक्ड सूचियां 2 (वीडियो)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [सी कोड (वीडियो)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - संपूर्ण वीडियो नहीं, केवल नोड संरचना और स्मृति आवंटन के बारे में अंश - [] लिंक्ड लिस्ट बनाम एरेज़: @@ -653,11 +655,13 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - No need to implement - ### ढेर - [ ] [स्टैक (वीडियो)](https://www.coursera.org/lecture/data-structs/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] लागू नहीं होगा। सरणी के साथ कार्यान्वित करना तुच्छ है - ### कतार - [ ] [कतार (वीडियो)](https://www.coursera.org/lecture/data-structs/queues-EShpq) - [ ] [सर्कुलर बफर/फीफो](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [] टेल पॉइंटर के साथ लिंक्ड-लिस्ट का उपयोग करके लागू करें: - एनक्यू (मान) - पूंछ पर स्थिति पर मूल्य जोड़ता है - dequeue () - मान लौटाता है और कम से कम हाल ही में जोड़े गए तत्व (सामने) को हटाता है @@ -683,6 +687,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [पायकॉन 2017: द डिक्शनरी इवन माइटियर (वीडियो)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(उन्नत) रैंडमाइजेशन: यूनिवर्सल एंड परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(उन्नत) परफेक्ट हैशिंग (वीडियो)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] ऑनलाइन पाठ्यक्रम: @@ -707,6 +712,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [बाइनरी सर्च (वीडियो)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [विस्तार] (https://www.topcoder.com/thrive/articles/Binary%20Search) - [ ] [खाका](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] अमल में लाना: - द्विआधारी खोज (पूर्णांक के क्रमबद्ध सरणी पर) - पुनरावर्तन का उपयोग कर द्विआधारी खोज @@ -756,6 +762,9 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - क्रम में (डीएफएस: बाएं, स्वयं, दाएं) - पोस्टऑर्डर (डीएफएस: बाएं, दाएं, स्वयं) - प्रीऑर्डर (डीएफएस: स्वयं, बाएं, दाएं) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### बाइनरी सर्च ट्री: बीएसटी - [ ] [बाइनरी सर्च ट्री रिव्यू (वीडियो)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -801,6 +810,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [एमआईटी: हीप्स एंड हीप सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [सीएस 61बी व्याख्यान 24: प्राथमिकता कतारें (वीडियो)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [रैखिक समय BuildHeap (अधिकतम-ढेर)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [] अधिकतम ढेर लागू करें: - [ ] डालना - [] sift_up - डालने के लिए आवश्यक @@ -863,11 +873,20 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [कार्यान्वयन (सी)] (https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [कार्यान्वयन (पायथन)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] अमल में लाना: - [] मर्जसॉर्ट: ओ (एन लॉग एन) औसत और सबसे खराब स्थिति - [] क्विकसॉर्ट ओ (एन लॉग एन) औसत मामला - चयन प्रकार और सम्मिलन प्रकार दोनों ओ (एन ^ 2) औसत और सबसे खराब स्थिति हैं - हीपसॉर्ट के लिए, ऊपर हीप डेटा संरचना देखें + - [] आवश्यक नहीं है, लेकिन मैंने उनकी सिफारिश की: - [ ] [सेजविक - रेडिक्स सॉर्ट्स (6 वीडियो)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. जावा में स्ट्रिंग्स](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) @@ -924,6 +943,8 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] [सीएस 61बी 2014: भारित ग्राफ (वीडियो)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [लालची एल्गोरिदम: न्यूनतम फैले हुए पेड़ (वीडियो)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [मजबूत रूप से जुड़े घटक कोसाराजू का एल्गोरिथम ग्राफ़ एल्गोरिथम (वीडियो)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - पूर्ण कौरसेरा कोर्स: - [ ] [ग्राफ़ पर एल्गोरिदम (वीडियो)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1179,9 +1200,9 @@ Anki प्रारूप में मेरा फ्लैशकार्ड इस अनुभाग में छोटे वीडियो होंगे जिन्हें आप अधिकांश महत्वपूर्ण अवधारणाओं की समीक्षा करने के लिए बहुत तेज़ी से देख सकते हैं। यदि आप अक्सर एक पुनश्चर्या चाहते हैं तो यह अच्छा है। -- [] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) +- [ ] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - माइकल साम्बोल (18 वीडियो): +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (40 वीडियो): - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) - [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) @@ -1670,6 +1691,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [अदुनी - एल्गोरिदम - व्याख्यान 5 (वीडियो)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [रेड-ब्लैक ट्री](https://en.wikipedia.org/wiki/Red%E2%80%93ब्लैक_ट्री) - [एन इंट्रोडक्शन टू बाइनरी सर्च एंड रेड ब्लैक ट्री](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 पेड़ खोजें** - प्रयोग में: @@ -1710,6 +1732,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [MIT 6.851 - मेमोरी पदानुक्रम मॉडल (वीडियो)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - कैशे-अनभिज्ञ बी-पेड़ों को शामिल करता है, बहुत ही रोचक डेटा संरचनाएं - पहले 37 मिनट बहुत तकनीकी हैं, छोड़े जा सकते हैं (बी ब्लॉक आकार, कैश लाइन आकार है) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### के-डी पेड़ diff --git a/translations/README-id.md b/translations/README-id.md index 2c40f4e795..47a7a2bbb4 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -442,6 +442,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Struktur Data @@ -483,6 +484,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [Kode C (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - bukan keseluruhan video, hanya bagian tentang struct Node dan alokasi memori - [ ] Linked List vs Array: @@ -514,12 +516,14 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - ### Stack - [ ] [Stack (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Tidak akan diterapkan. Implementasi dengan array itu sepele - ### Queue - Queue (Antrean) - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implementasikan menggunakan linked-list, dengan tail pointer: - enqueue(value) - menambah nilai pada posisi di ekor - dequeue() - mengembalikan nilai dan menghapus elemen yang paling baru ditambahkan (depan) @@ -545,6 +549,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Lanjutan) Pengacakan: Universal & Hashing Sempurna (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Lanjutan) Hash sempurna (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Kursus Online: - [ ] [Tabel Hash Inti (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -567,6 +572,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Pencarian Biner (video)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Pencarian Biner (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/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implementkan: - pencarian biner (pada susunan bilangan bulat yang diurutkan) - pencarian biner menggunakan rekursi @@ -620,6 +626,9 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - dalam urutan (DFS: kiri, sendiri/self, kanan) - pasca urutan (DFS: kiri, kanan, sendiri/self) - pra urutan (DFS: sendiri/self, kiri, kanan) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Ulasan Binary Search Tree (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -670,6 +679,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [MIT: Heaps dan Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Kuliah 24: Antrian Prioritas (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Menerapkan sebuah max-heap: - [ ] insert - [ ] sift_up - digunakan untuk memasukkan @@ -734,6 +744,14 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [ ] [Implementasi (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementasi (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implementasi: - [ ] Mergesort: O(n log n) rata-rata dan kasus terburuk - [ ] Quicksort: O(n log n) kasus rata-rata @@ -797,6 +815,8 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] [CS 61B 2014: Graphs berbobot (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Algoritma Serakah: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Komponen yang Sangat Terhubung Algoritma Graphs Algoritma Kosaraju (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Kursus Coursera Penuh: - [ ] [Algoritma pada Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1180,7 +1200,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (38 video): +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (40 video): - [Video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Video Sedgewick - Algoritma II](https://www.coursera.org/learn/algorithms-part2) @@ -1605,6 +1625,7 @@ Anda tidak pernah benar-benar selesai. - [Aduni - Algoritma - Kuliah 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [Pengantar Pencarian Biner Dan Red-Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - Dalam praktek: @@ -1644,6 +1665,7 @@ Anda tidak pernah benar-benar selesai. - [MIT 6.851 - Model Hirarki Memori (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-it.md b/translations/README-it.md index 8128bace10..0cc41c8f59 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -575,6 +575,7 @@ Ma non dimenticare di esercitarti con i problemi, anche durante lo studio! - [Complessità Computazionale: Sezione 1 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Complessità Computazionale: Sezione 2 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat-Sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Bene, direi che può bastare. @@ -620,6 +621,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - [ ] [CS 61B - Linked Lists 1 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (Video in Inglese)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - non il video intero, ma solo nozioni sulla struttura del nodo e l'allocazione della memoria - [ ] Linked List vs Arrays: @@ -652,11 +654,13 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Stack - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Non saranno implementati. Esercitarsi con l'array è quasi banale. - ### Queue - [ ] [Queue (Video in Inglese)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Buffer Circolare/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implementazione usando le linked list, con puntatore alla coda: - enqueue(value) - aggiunge un valore alla posizione della coda - dequeue() - returna il valore aggiunto per ultimo e lo rimuove @@ -682,6 +686,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [PyCon 2017: Dizionario, ma ancora Più Potente (Video in Inglese)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Avanzato) Randomizzazione: Universale & Hashing Perfetto (Video in Inglese)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Avanzato) L'hashing perfetto (Video in Inglese)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Corsi Online: - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -705,6 +710,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [Ricerca Binaria (Video in Inglese)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [dettagli](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - [ ] [progetto](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implementazione: - ricerca binaria (su array ordinati di interi) - ricerca binaria usando la ricorsione @@ -758,6 +764,9 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - inorder (DFS: sinistra, se stesso, destra) - postorder (DFS: sinistra, destra, se stesso) - preorder (DFS: se stesso, sinistra, destra) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Alberi Binari di Ricerca: BSTs - [ ] [Review Alberi Binari di Ricerca (Video in Inglese)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -803,6 +812,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [MIT: Heaps e Ordinamento Heap (Video in Inglese)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lezione 24: Code di Priorità (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Costruire un Heap (max-heap) (Video in Inglese)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implementa un max-heap: - [ ] insert - inserisci un valore - [ ] sift_up - neccessario per l'inserimento @@ -867,6 +877,14 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [Implementazione (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementazione (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implementazione: - [ ] Mergesort: O(n log n) caso medio e peggiore - [ ] Quicksort O(n log n) caso medio @@ -929,6 +947,8 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] [CS 61B 2014: Grafi Pesati (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Algoritmi Greedy: Alberi Ricoprenti Minimi (Video in Inglese)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Componenti Legati Strettamente, Algoritmo di Kosaraju e Algoritmi per Grafi (Video in Inglese)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Corsi di Coursera Completi: - [ ] [Algorithms on Graphs (Video in Inglese)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1188,7 +1208,7 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] Series of 2-3 minutes short subject video (23 video) - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject video - Michael Sambol (38 video): +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (40 video): - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1679,6 +1699,7 @@ You're never really done. - [Aduni - Algorithms - Lezione 5 (Video in Inglese)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1719,6 +1740,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (Video in Inglese)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-ja.md b/translations/README-ja.md index e30028525e..888e118471 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -428,6 +428,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [計算の複雑さ:セクション1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [計算の複雑さ:セクション2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [チートシート](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU)     講義の中には数学的にも余裕がある場合は、下にジャンプして @@ -477,6 +478,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [単独連結されたリスト(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - 連結リスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) - [ ] [CS 61B - 連結リスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [Cコード(動画)](https://www.youtube.com/watch?v=QN6FPiD0Gzo)             ビデオ全体ではなく、ノード構造体とメモリ割り当てに関する部分だけです。 - [ ] 連結リスト Vs 配列: @@ -509,6 +511,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - ### スタック - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [スタックの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] 実装されません。配列で実装するのは簡単です。 - ### キュー @@ -516,6 +519,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [キュー(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [環状バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [優先度つきキュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] テールポインタ付き連結リストを使って実装する: - enqueue(value) - テールの位置に値を追加する - dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面) @@ -567,6 +571,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [二分探索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [二分探索(ビデオ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [詳細](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] 実装: - 二分探索(ソートされた整数の配列) - 再帰を利用した二分探索 @@ -619,6 +624,9 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - inorder(DFS:left、self、right) - postorder(DFS:left、right、self) - preorder(DFS:自己、左、右) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 二分探索木:BST - [ ] [二分探索木レビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -666,6 +674,7 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [MIT:ヒープとヒープソート(ビデオ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B講義24:優先度つきキュー(ビデオ)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [線形時間BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 最大ヒープを実装する: - [ ] insert - [ ] sift_up - 挿入に必要 @@ -712,6 +721,14 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [実装(C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [実装(Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] 実装: - [ ] Mergesort:O(n log n)平均と最悪の場合 - [ ] Quicksort O(n log n)平均の場合 @@ -771,6 +788,8 @@ Anki形式の私のフラッシュカードデータベース:https://ankiweb. - [ ] [CS 61B 2014:加重グラフ(ビデオ)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [欲張りアルゴリズム:最小スパニング木(ビデオ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - フルcourseraコース: - [ ] [グラフのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1225,7 +1244,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(38ビデオ) +- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(40ビデオ) - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1641,6 +1660,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Aduni - アルゴリズム - 講義5(ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3の検索木** - 実際には: @@ -1680,6 +1700,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [MIT 6.851 - メモリ階層モデル(ビデオ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - キャッシュに気付かないB木、非常に興味深いデータ構造 - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D木 diff --git a/translations/README-kh.md b/translations/README-kh.md index 7e5b187949..0f35007f96 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -496,6 +496,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ១](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ២](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [សន្លឹកជំនួយ](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) --- @@ -542,6 +543,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [Singly Linked Lists (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists ១ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists ២ (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [កូដ C (វីដេអូ)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - មិនមែនវីដេអូទាំងមូលទេគឺគ្រាន់តែជាផ្នែកអំពីរចនាសម្ព័ន្ធ (Data Structure) និងការបែងចែក Memory ។ - [ ] Linked List vs Arrays: @@ -575,11 +577,13 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - ### Stack - [ ] [Stack (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] នឹងមិនអនុវត្តទេ។ ការអនុវត្តជាមួយ Array គឺមិនសំខាន់។ - ### Queue - [ ] [Queue (វីដេអូ)](https://www.coursera.org/lecture/data-structures/queues-EShpq)     - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ)     - [ ] ប្រើ linked-list ដែលមានភ្ជាប់ជាមួយទ្រនិចនៅកន្ទុយ៖ - enqueue(តម្លៃ) - បន្ថែមតម្លៃនៅទីតាំងនៅកន្ទុយ - dequeue() - ត្រឡប់តម្លៃនិងយកធាតុដែលបានបន្ថែមថ្មីៗចេញ (ផ្នែកខាងមុខ) @@ -604,6 +608,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [PyCon 2010: វចនានុក្រមដ៏អស្ចារ្យ (វីដេអូ)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(កម្រិតខ្ពស់) Randomization: Universal & Perfect Hashing (វីដេអូ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(ជឿនលឿន) Perfect hashing (វីដេអូ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] វគ្គសិក្សាអនឡាញ៖ - [ ] [Core Hash Tables (វីដេអូ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -629,6 +634,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [Binary search (វីដេអូ)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Binary search (វីដេអូ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [លម្អិត](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] អនុវត្ត៖ - Binary search (នៅលើជួរអារេនៃចំនួនគត់) - Binary search ដោយប្រើការហៅខ្លួនឯង @@ -683,6 +689,9 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - inorder (DFS: ឆ្វេង, ខ្លួនឯង, ស្តាំ) - postorder (DFS: ឆ្វេង, ស្តាំ, ខ្លួនឯង) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [ការពិនិត្យឡើងវិញ Binary Search Tree (វីដេអូ)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -730,6 +739,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [MIT: Heaps និង Heap Sort (វីដេអូ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B មេរៀន 24: Priority Queues (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] ការអនុវត្ត max-heap: - [ ] insert - [ ] sift_up - ត្រូវការសំរាប់បញ្ចូល @@ -797,6 +807,14 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] អនុវត្ត: - [ ] Mergesort: O(n log n) ករណីមធ្យម និង អាក្រក់បំផុត - [ ] Quicksort O(n log n) ករណីមធ្យម @@ -862,6 +880,8 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] [CS 61B 2014: Weighted graphs (វីដេអូ)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (វីដេអូ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (វីដេអូ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - វគ្គសិក្សា Coursera: - [ ] [Algorithms on Graphs (វីដេអូ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1246,7 +1266,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 វីដេអូ): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 វីដេអូ): - [វីដេអូ](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [វីដេអូ Sedgewick - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1676,6 +1696,7 @@ Mock Interviews: - [Aduni - Algorithms - Lecture 5 (វីដេអូ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - ក្នុងការអនុវត្ត ៖ @@ -1715,6 +1736,7 @@ Mock Interviews: - [MIT 6.851 - Memory Hierarchy Models (វីដេអូ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - រៀនពី cache-oblivious B-Trees, data structures - ៣៧ នាទីដំបូងគឺបច្ចេកទេសហើយប្រហែលជាអាចរំលងចោល (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-ko.md b/translations/README-ko.md index 30f64f03ae..0ed388856d 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -531,6 +531,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## 자료구조 @@ -572,6 +573,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [단일 연결 리스트 (영상)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - 연결 리스트 1 (영상)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - 연결 리스트 2 (영상)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - 전체 영상은 아니고, 노드 구조와 메모리 할당에 대한 부분입니다. - [ ] 연결 리스트 vs 배열: @@ -603,11 +605,13 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - ### 스택 - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### 큐 - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)05_04-priorityQueuesAndDeques.mp4) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] tail 포인터가 있는 연결 리스트를 사용하여 구현하기: - enqueue(value) - tail이 가리키는 곳에 value를 추가한다 - dequeue() - value를 반환하고 가장 최근에 추가된 원소(front)를 제거한다. @@ -632,6 +636,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] 온라인 강의들: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -654,6 +659,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [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) - [ ] [자세한 내용](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] 구현: - (정수가 정렬된 배열에서) 이진 탐색 - 재귀를 사용한 이진 탐색 @@ -706,6 +712,9 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - 중위(inorder) (DFS: 왼쪽, 자신, 오른쪽) - 후위(postorder) (DFS: 왼쪽, 오른쪽, 자신) - 전위(preorder) (DFS: 자신, 왼쪽, 오른쪽) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 이진 탐색 트리 (BST) - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -751,6 +760,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [MIT: 힙과 힙 정렬 (영상)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: 우선순위 큐 (영상)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [선형 시간에 힙 만들기 (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] max-heap 구현하기: - [ ] insert - [ ] sift_up - `insert` 하려면 필요 @@ -816,6 +826,14 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [구현 (C언어)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [구현 (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] 구현: - [ ] 병합 정렬: 평균과 최악의 경우 O(n log n) - [ ] 퀵 정렬: 평균적인 경우 O(n log n) @@ -879,6 +897,8 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1265,7 +1285,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (38 videos): +- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1699,6 +1719,7 @@ Challenge repos: - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1737,6 +1758,7 @@ Challenge repos: - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees - great for finding number of points in a rectangle or higher dimension object diff --git a/translations/README-pl.md b/translations/README-pl.md index b65e832354..080e890e5c 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -483,6 +483,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Ściągawka](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Struktury danych @@ -524,6 +525,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Singly Linked Lists (wideo)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (wideo)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (wideo)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (wideo)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -555,11 +557,13 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - ### Stos - [ ] [Stacks (wideo)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Kolejka - [ ] [Queue (wideo)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -584,6 +588,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [PyCon 2010: The Mighty Dictionary (wideo)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Zaawansowane) Randomization: Universal & Perfect Hashing (wideo)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Zaawansowane) Perfect hashing (wideo)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Kursy online: - [ ] [Core Hash Tables (wideo)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -606,6 +611,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Binary Search (wideo)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Binary Search (wideo)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -655,6 +661,9 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - drzewa binarne - [ ] [Binary Search Tree Review (wideo)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -702,6 +711,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [MIT: Heaps and Heap Sort (wideo)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (wideo)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -767,6 +777,14 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -830,7 +848,9 @@ Grafy mogą być wykorzystane do przedstawienia wielu problemów w informatyce, - [ ] [CS 61B 2014: Weighted graphs (wideo)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (wideo)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (wideo)](https://www.youtube.com/watch?v=RpgcYiky7uw) - + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + - Pełny kurs Coursera: - [ ] [Algorithms on Graphs (wideo)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1219,7 +1239,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (38 wideo): +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (40 wideo): - [Wideo](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorytmy II](https://www.coursera.org/learn/algorithms-part2) @@ -1652,6 +1672,7 @@ Tak na prawdę nigdy nie skończyłeś. - [Aduni - Algorithms - Lecture 5 (wideo)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1692,6 +1713,7 @@ Tak na prawdę nigdy nie skończyłeś. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 75ca63bd2b..d52f3530e5 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -512,6 +512,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) (Complexidade Computacional: Seção 1) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) (Complexidade Computacional: Seção 2) - [ ] [Cheat sheet](http://bigocheatsheet.com/) (Folha de Consultas) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Se alguma das aulas forem muito "matemáticas", você pode pular para o final e @@ -557,6 +558,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) (listas ligadas individualmente - vídeo) - [ ] [CS 61B - Linked Lists 1 (video)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) (CS 61B - Listas Ligadas 1 - vídeo) - [ ] [CS 61B - Linked Lists 2 (video)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) (CS 61B - Listas Ligadas 2 - vídeo) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) (Código em C - vídeo) - não o vídeo inteiro, apenas as partes sobre estrutura de nodes (nós) e alocação de memória. - [ ] Listas Ligadas vs Arrays: @@ -588,11 +590,13 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Não implementarei. Implementar com array é trivial. - ### Queue (Fila) - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) (Buffer circular/Primeiro a entrar, último a sair) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ)(Buffer circular/Primeiro a entrar, último a sair) - [ ] Implementar usando lista ligada, com ponteiro de cauda (aponta para o último elemento de uma lista): - enqueue(valor) - adiciona "valor" na posição na cauda (final da lista) - dequeue() - retorna um valor e remove o elemento menos recentemente adicionado (início da lista)) @@ -617,6 +621,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) (PyCon 2010: O Poderoso Dicionário (vídeo) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) ((Avançado) Randomização: Hashing Perfeito & Universal - vídeo) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) ((Avançado) Hashing perfeito - vídeo) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Cursos Online: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) (Fundamentos de Tabelas Hash - vídeo) @@ -639,6 +644,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) (Busca Binária - vídeo) - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) (Busca Binária - vídeo) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) (detalhes) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implementar: - busca binária (em um array ordenado de números inteiros) - busca binária usando recursividade @@ -692,6 +698,9 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - em-ordem ou ordem simétrica(na busca em profundidade (ou DFS): percorre subárvore esquerda em ordem simétrica (em-ordem), visita a raiz, percorre subárvore direita em ordem simétrica) - pós-ordem (na busca em profundidade (ou DFS): percorre subárvore esquerda em pós-ordem, percorre subárvore direita em pós-ordem, visita a raiz) - pré-ordem (na busca em profundidade (ou DFS): visita a raiz, percorre subárvore esquerda em pré-ordem, percorre subárvore direita em pré-ordem) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Árvores binárias de busca: ABB - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) (Revisão de Árvores Binárias de Busca - vídeo) @@ -739,6 +748,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) (MIT: Memórias Dinâmias e heapsort - vídeo) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) (CS (Ciência da Computação) 61B Aula 24: Filas Prioritárias - vídeo) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) (BuildHeap em Tempo Linear (heap máxima)) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implementar uma heap máxima (max-heap): - [ ] insert - [ ] sift_up - necessário insert @@ -785,6 +795,14 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) (Implementação em C) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) (Implementação em Python) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implementar: - [ ] Mergesort: O(n log n) caso comum e pior caso - [ ] Quicksort O(n log n) caso comum @@ -844,6 +862,8 @@ Grafos podem ser usados para representar muitos problemas na Ciência da Computa - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) (CS 61B 2014: Grafos Ponderados - vídeo) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) (Algoritmos Gulosos: Árvore de Extensão Mínima - vídeo) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) (Componentes Fortemente Conectados, Algoritmo de Kosaraju, Algoritmo de Grafo - vídeo) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Curso Completo do Coursera: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) (Algoritmos em Grafos - vídeo) @@ -1288,7 +1308,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Séries de vídeos curtos (2 - 3 minutos) sobre o assunto (23 vídeos) - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (38 vídeos): +- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (40 vídeos): - [Vídeos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1659,6 +1679,7 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) (Aduni - Algoritmos - Aula 5 - vídeo) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) (Árvore Rubro-Negra) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) (Uma Introdução a Busca Binária E Árvore Rubro-Negra) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **Árvores de busca 2-3** - Ná prática: @@ -1698,6 +1719,7 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) (MIT 6.851 - Modelos de Hierarquia de Memória - vídeo) - cobre Árvores B de cache-alheio (do Inglês, cache-oblivious), estruturas de dados muito interessantes - os primeiros 37 minutos são bem técnicos, pode ser pulado (B é tamanho de bloco, tamanho de linha de cache) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### Árvores k-D diff --git a/translations/README-ru.md b/translations/README-ru.md index 0030bbce49..cb45ba8596 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -565,6 +565,7 @@ Google не возьмёт тебя на работу. - [Вычислительная сложность: Часть 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Вычислительная сложность: Часть 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Шпаргалка](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Если в некоторых лекциях слишком много математики, вы можете ниже найти и посмотреть лекции по дискретной математике для получения базовых знаний. @@ -612,6 +613,7 @@ Google не возьмёт тебя на работу. - [ ] Описание: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - не все видео целиком, только кусочки об узлах и распределении памяти. - [ ] Связные списки vs Массивы: @@ -646,6 +648,7 @@ Google не возьмёт тебя на работу. - ### Стек - [ ] [Стек (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [Использование стека Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Не будет реализован. Реализация с помощью массива очевидна. - ### Очередь @@ -653,6 +656,7 @@ Google не возьмёт тебя на работу. - [ ] [Очередь (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Очередь с приоритетом (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Реализация с использованием связанного списка и указателя на последний элемент(tail): - enqueue(value) - добавляет элемент в конец очереди - dequeue() - возвращает значение и удаляет из очереди последний добавленный элемент(front) @@ -677,6 +681,7 @@ Google не возьмёт тебя на работу. - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Онлайн курсы: - [ ] [Understanding Hash Functions (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) @@ -703,6 +708,7 @@ Google не возьмёт тебя на работу. - [ ] [Бинарный поиск (видео на ютубе)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Бинарный поиск (видео на khanacademy)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [Длинная статья с деталями](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Реализация: - бинарный поиск (на отсортированном числовом массиве) - бинарный поиск с использованием рекурсии @@ -757,6 +763,9 @@ Google не возьмёт тебя на работу. - in-order (DFS: левый, вершина, правый) - post-order (DFS: левый, правый, вершина) - pre-order (DFS: вершина, левый, правый) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Бинарное дерево поиска (BST: Binary search trees) - [ ] [Обзор бинарного дерева поиска (видео)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -804,6 +813,7 @@ Google не возьмёт тебя на работу. - [ ] [MIT: Кучи и пирамидальная сортировка (видео)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Лекция 24: Приоритетные очереди (видео)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Построение кучи за линейное время (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Реализация max-heap: - [ ] insert - [ ] sift_up - необходима для вставки @@ -850,6 +860,14 @@ Google не возьмёт тебя на работу. - [ ] [Реализация (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Реализация (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Реализация: - [ ] Сортировка слиянием: O(n log n) средний и худший случаи - [ ] Быстрая сортировка O(n log n) средний случай @@ -906,6 +924,8 @@ Google не возьмёт тебя на работу. - [ ] [CS 61B 2014: Взвешенные графы (видео)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Жадные алгоритмы: Минимальное остовное дерево (видео)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Сильно связные компоненты, Алгоритм Косарайю, Алгоритмы на графах (видео)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Полный курс на Coursera: - [ ] [Алгоритмы на графах (видео)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1268,7 +1288,7 @@ Google не возьмёт тебя на работу. - [ ] Серия 2-3 минутных короткие видео по темам (23 видео) - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (38 видео): +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (40 видео): - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1692,6 +1712,7 @@ Google не возьмёт тебя на работу. - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - In practice: @@ -1727,6 +1748,7 @@ Google не возьмёт тебя на работу. - [ ] [MIT 6.851 - Модели Иерархии Памяти (видео)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - включает кэш-агностические B-Деревья, крайне интересные структуры данных - первые 37 минут очень технические, можно пропустить (B это размер блока, размер кэша) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Деревья - прекрасны для нахождения всех точек в прямоугольнике или более многомерном объекте diff --git a/translations/README-th.md b/translations/README-th.md index 84477cf05b..32263f08c8 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -492,6 +492,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) If some of the lectures are too mathy, you can jump down to the bottom and @@ -536,6 +537,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] Description: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -567,11 +569,13 @@ There are a lot of distractions that can take up valuable time. Focus and concen - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -596,6 +600,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -618,6 +623,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -671,6 +677,9 @@ There are a lot of distractions that can take up valuable time. Focus and concen - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -718,6 +727,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -764,6 +774,14 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -822,6 +840,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1262,7 +1282,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1630,6 +1650,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - In practice: @@ -1669,6 +1690,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-tr.md b/translations/README-tr.md index 0cf2664609..073c8ffdca 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -510,6 +510,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Veri Yapıları @@ -551,6 +552,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - tüm video değil, Node yapısı ve bellek ayırma için olan bölümler. - [ ] Bağlı Listeler vs Diziler: @@ -582,11 +584,13 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - ### Yığın - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Uygulamayın. Diziyle gerçekleştirmek önemsiz. - ### Kuyruk - [ ] [Kuyruk (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Bağlı listeyle birlikte kuyruk işaretçisi kullanarak uygulayın: - enqueue(value) - kuyruktaki pozisyona değer ekler - dequeue() - değeri döndürür ve en son eklenen elemanı kaldırır (ön) @@ -612,6 +616,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(İleri Seviye) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(İleri Seviye) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Kurslar: - [ ] [Hash Fonksiyonlarını Anlama (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) @@ -638,6 +643,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Uygulama: - binary search (sıralanmış tam sayı dizisine) - binary search (rekürsif kullanarak) @@ -689,6 +695,10 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - inorder (DFS: sol, kendisi, sağ) - postorder (DFS: sol, sağ, kendisi) - preorder (DFS: kendisi, sol, sağ) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + - ### İkili arama ağaçları: BSTs - [ ] [İkili Arama Ağacı İncelemesi (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -734,6 +744,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Max-heap uygulaması: - [ ] insert - [ ] sift_up - eklemek için gerekli @@ -798,6 +809,14 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Uygulama: - [ ] Mergesort: O(n log n) ortalama ve en kötü durum - [ ] Quicksort O(n log n) ortalama durum @@ -861,6 +880,8 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Kursu: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1233,7 +1254,7 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1681,6 +1702,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1721,6 +1743,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-tw.md b/translations/README-tw.md index fa5a8ab3bd..8dc0e98630 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -482,6 +482,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## 資料結構 - ### 陣列 @@ -524,6 +525,7 @@ - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - 沒有完整的code,裡面只包含了用struct實作節點的方式以及其記憶體配置。 - [ ] Linked List vs 陣列: @@ -556,6 +558,7 @@ - ### Stack(堆疊) - [ ] [Stacks(影片)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [使用Stacks先進後出(Last-In First-Out)(影片)]() + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] 無須實作,可以用陣列實作,但這樣太過簡單了。 - ### Queue(佇列) @@ -563,6 +566,7 @@ - [ ] [Queue(影片)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [Priority Queues(影片)]() + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] 使用linked list實作,包含末端指標(tail pointer): - enqueue(value) - 在queue末端加入元素 - dequeue() - 刪除當時queue中最早進入的元素(意即queue中第一個元素),並且回傳該元素的值。 @@ -582,6 +586,7 @@ - [ ] [PyCon 2010: The Mighty Dictionary (影片)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (影片)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (影片)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] 線上開放式課程: - [ ] [Understanding Hash Functions (影片)]() - [ ] [Using Hash Tables (影片)]() @@ -607,6 +612,7 @@ - [ ] [二分搜尋法(影片)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [二分搜尋法(影片)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [細節](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] 實作: - 二分搜尋法 (對已經排列好的數列) - 用遞迴(recursion)的方法實作二分搜尋法 @@ -656,6 +662,9 @@ - 中序 (DFS: 左子樹、根、右子樹) - 後序 (DFS: 左子樹、右子樹、根) - 前序 (DFS: 根、左子樹、右子樹) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 二元搜尋樹Binary search trees: BSTs - [ ] [Binary Search Tree Review (影片)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -703,6 +712,7 @@ - [ ] [MIT: Heaps and Heap Sort (影片)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (影片)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 實作max heap: - [ ] insert - [ ] sift_up - needed for insert @@ -768,6 +778,14 @@ - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] 實作: - [ ] 合併排序: 平均與最糟都是O(n log n) - [ ] 快速排序: 平均O(n log n) @@ -830,6 +848,8 @@ - [ ] [CS 61B 2014: Weighted graphs (影片)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (影片)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (影片)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - 完整Coursera課程: - [ ] [Algorithms on Graphs (影片)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1212,7 +1232,7 @@ - [ ] 2-3分鐘快速複習影片系列(23個影片) - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (38個影片) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (40個影片) - [影片](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1601,6 +1621,7 @@ Coding面試題目影片: - [Aduni - Algorithms - Lecture 5 (影片)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3搜尋樹** - 實際上: @@ -1637,6 +1658,7 @@ Coding面試題目影片: - [MIT 6.851 - Memory Hierarchy Models (影片)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - 涵蓋了cache-oblivious B樹,非常有趣的資料結構 - 前37分鐘非常技術性,可以跳過(B代表block大小、cache line大小) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D樹 diff --git a/translations/README-uk.md b/translations/README-uk.md index 371b068812..bd46a4fdb1 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -539,6 +539,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) If some of the lectures are too mathy, you can jump down to the bottom and @@ -583,6 +584,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Description: - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -614,11 +616,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -643,6 +647,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -665,6 +670,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -718,6 +724,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -765,6 +774,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -811,6 +821,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -870,6 +888,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1312,7 +1332,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1680,6 +1700,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - In practice: @@ -1719,6 +1740,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-ur.md b/translations/README-ur.md index f3ad066f68..950a5dce82 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -491,6 +491,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Data Structures @@ -532,6 +533,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - not the whole video, just portions about Node struct and memory allocation. - [ ] Linked List vs Arrays: @@ -563,11 +565,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Will not implement. Implementing with array is trivial. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - enqueue(value) - adds value at position at tail - dequeue() - returns value and removes least recently added element (front) @@ -592,6 +596,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) @@ -614,6 +619,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [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) - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion @@ -664,6 +670,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -711,6 +720,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Implement a max-heap: - [ ] insert - [ ] sift_up - needed for insert @@ -776,6 +786,14 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case @@ -839,6 +857,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Full Coursera Course: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1225,7 +1245,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (38 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1659,6 +1679,7 @@ You're never really done. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search trees** - In practice: @@ -1699,6 +1720,7 @@ You're never really done. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees diff --git a/translations/README-uz.md b/translations/README-uz.md index be85bca262..a80d639634 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -486,6 +486,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat varaq](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) ## Ma'lumotlar tuzilmasi (Data structures) @@ -528,6 +529,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - butun videoni ko'rmang, Node struct va xotira ajratish (memory allocation) qismlarini ko'ring - [ ] Linked List va Array(massiv)lar: @@ -559,11 +561,13 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - [ ] Kodda yozmayman. Massivda stackni yaratish juda oson. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] linked-list dan foydalangan holda kodda yozaman (tail pointer bilan): - enqueue(value) - qiymatni queue-ni oxiriga qo'yadi - dequeue() - queue-ni boshidagi elementni o'chirib uni qiymatini qaytaradi @@ -587,6 +591,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Onlayn kurslar: - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) @@ -609,6 +614,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [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) - [ ] [batafsil](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Kodda yozish: - binary search (tartiblangan integer massivlarida) - rekursiv binary search @@ -660,6 +666,9 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - inorder (DFS: left, self, right) - postorder (DFS: left, right, self) - preorder (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search tree lar: BST lar - [ ] [Binary Search Tree Tahlili (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -705,6 +714,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] max-heap ni kodda yozish: - [ ] insert - [ ] sift_up - insert operatsiyasi uchun kerak @@ -769,6 +779,14 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Kodda yozish: - [ ] Mergesort: O(n log n) o'rtacha va eng yomon holat - [ ] Quicksort O(n log n) o'rtacha @@ -831,6 +849,8 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - To'liq Coursera kursi: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1215,7 +1235,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (38 video): +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (40 video): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1652,6 +1672,7 @@ Hech qachon tugatgan bo'lmaymiz. - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3 search tree-lar** - Amalda: @@ -1690,6 +1711,7 @@ Hech qachon tugatgan bo'lmaymiz. - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - keshga e'tiborsiz B-Tree-lar haqida, juda qiziq data strukturalari - birinchi 37 minuti juda texnik, o'tkazib yuborsangiz bo'ladi (B bu bo'lak hajmi, kesh qator hajmi) + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Tree-lar diff --git a/translations/README-vi.md b/translations/README-vi.md index 07b27081d8..c62ef3f527 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -530,6 +530,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Nếu một vài bài học quá chuyên sâu về toán, bạn có thể nhảy cóc tới các bài toán riêng lẻ để có kiến thức toàn diện hơn. @@ -573,6 +574,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] Miêu tả: - [ ] [Singly Linked Lists - Danh sách liên kết (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - Linked Lists - Danh sách liên kết (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - Không cần xem toàn bộ video, chỉ phần cấu trúc Node và cấp phát vùng nhớ. - [ ] Danh sách liên kết so sánh với Mảng: @@ -604,11 +606,13 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU)   - [ ] Sẽ không cài đặt. Cài đặt với mảng là điều hiển nhiên. - ### Queue - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Cài đặt sử dụng danh sách liên kết, áp dụng con trỏ đuôi: - enqueue(value) - Thêm giá trị ở đuôi - dequeue() - Trả về giá trị của dữ liệu được thêm vào xa nhất (thông thường là dữ liệu đầu tiên trong danh sách) @@ -632,6 +636,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Các khóa học online: - [ ] [Core Hash Tables - Cơ bản về bảng băm (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - [ ] [Data Structures - Cấu trúc dữ liệu (video)](https://www.coursera.org/learn/data-structures/home/week/3) @@ -652,6 +657,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] [Tìm kiếm nhị phân (Binary Search) - video](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Tìm kiếm nhị phân - Khan Academy (Binary Search) - video](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [giải thích chi tiết](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Cài đặt: - Tìm kiếm nhị phân (trên mảng số nguyên đã sắp xếp) - Tìm kiếm nhị phân sử dụng đệ quy @@ -706,6 +712,9 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - theo thứ tự (inorder) - (DFS: left, self, right) - nhánh con trước (postorder) - (DFS: left, right, self) - nhánh con sau (preorder) - (DFS: self, left, right) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Cây tìm kiếm nhị phân @@ -756,6 +765,7 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] [MIT: Heaps và Heap Sort - video](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues - video](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [Xây dựng Heap với thời gian tuyến tính `O(n)`](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Tự cài đặt max-heap: - [ ] `insert` - [ ] `sift_up` - cần thiết cho hàm `insert`. @@ -803,6 +813,14 @@ Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy - [ ] [Cài đặt khác dùng C](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Python](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) +- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + - [ ] Bài tập cài đặt: - [ ] Sắp xếp trộn: O(n log n) trường hợp trung bình và xấu nhất - [ ] Sắp xếp nhanh O(n log n) trường hợp trung bình @@ -859,6 +877,8 @@ Nếu bạn muốn biết thêm chi tiết trong chủ đề này, xem qua phầ - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - Khóa học đầy đủ về đồ thị trên Coursera: - [ ] [Các thuật toán trên đồ thị (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -1300,7 +1320,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-3 phút (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Các video ngắn 2-5 phút - Michael Sambol (38 video) +- [ ] Các video ngắn 2-5 phút - Michael Sambol (40 video) - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- @@ -1645,6 +1665,7 @@ Bạn không bao giờ thực sự học xong! - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - Trong thực tế: @@ -1679,6 +1700,7 @@ Bạn không bao giờ thực sự học xong! - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - giải thích cache mau quên (cache-oblivious) B-Trees, một cấu trúc dữ liệu rất thú vị. - 37 phút đầu tiên rất nặng kỹ thuật, có thể bỏ qua + - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees From b9357d4abd6e7b7e9784e019b7dbd474225601dc Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 15:16:23 +0100 Subject: [PATCH 742/857] Fix typo in 'studied' --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 1cc97bc0ab..199e5aa476 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -2,7 +2,7 @@ > Първоначално създадох това като кратък списък с теми за учене, за това как се става софтуерен инженер, но то прерасна в този огромен списък, който виждате в момента. След като преминах през този учебен план, [бях нает като софтуерен инженер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Най-вероятно няма да Ви се налага да учите колкото на мен, но все пак всичко, от което се нуждаете е тук. > -> Учих между 8-12 часа на ден в продължение на няколко месеца. Това е историята ми: [Why I studies full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> Учих между 8-12 часа на ден в продължение на няколко месеца. Това е историята ми: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > **Моля обърнете внимание:** Няма да Ви се налага да учите колкото мен. Загубих много време, учейки неща, които нямах нужда да знам. Може да прочетете повече за това надолу. Ще Ви помогна да достигнете до крайната цел без да прахосвате скъпото си време. > From 3fa5d59c91d0caf2a01c564d960ff8348fdecf14 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 15:17:20 +0100 Subject: [PATCH 743/857] Update languages list --- translations/README-bg.md | 53 +++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 199e5aa476..e93e5e44f9 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -13,37 +13,40 @@
Преводи: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) -- [Japanese (日本語)](translations/README-ja.md) -- [Russian](translations/README-ru.md) -- [Bulgarian](translations/README-bg.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) -- [Uzbek](translations/README-uz.md) +- [中文版本](translations/README-cn.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Español](translations/README-es.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Polish](translations/README-pl.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md)
Текущи преводи: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164)
From 4cdb65be93f0c18b1f241a3b07d51f5c84af9b31 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 15:17:40 +0100 Subject: [PATCH 744/857] Add translation --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index e93e5e44f9..a7646c29b3 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -53,7 +53,7 @@ From 8de8c3109da749a0b3c8c85789f109aff32412df Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 16:12:15 +0100 Subject: [PATCH 745/857] Fix indentation & formatting --- translations/README-bg.md | 233 +++++++++++++++++++------------------- 1 file changed, 117 insertions(+), 116 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index a7646c29b3..c50695b8a2 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -66,9 +66,10 @@ **Изисквания:** -- Малко опит с програмиране (променливи, цикли, методи/функции и т.н) -- Търпение -- Време +- Малко опит с програмиране (променливи, цикли, методи/функции и т.н) +- Търпение +- Време + Обърнете внимание, че това е учебен план за **софтуерно инженерство**, а не за уеб разработка. Големите компании като Google, Amazon, Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани със софтуерно инженерство/разработка @@ -78,125 +79,125 @@ ### Учебният план -- [Какво е това?](#какво-е-това) -- [Защо да го ползвате?](#защо-да-го-ползвате) -- [Как да го ползвате?](#как-да-го-ползвате) -- [Не мислете, че не сте достатъчно умни](#не-мислете-че-не-сте-достатъчно-умни) -- [Бележка за видео ресурсите](#бележка-за-видео-ресурсите) -- [Изберете език за програмиране](#изберете-език-за-програмиране) -- [Книги за структури от данни и алгоритми](#книги-за-структури-от-данни-и-алгоритми) -- [Книги за подготовка за интервю](#книги-за-подготовка-за-интервю) -- [Не повтаряйте грешките ми](#не-повтаряйте-грешките-ми) -- [Какво няма да намерите тук](#какво-няма-да-намерите-тук) -- [Дневния план](#дневния-план) -- [Подготовка за въпроси за програмиране](#подготовка-за-въпроси-за-програмиране) -- [Задачи по програмиране](#задачи-по-програмиране) +- [Какво е това?](#какво-е-това) +- [Защо да го ползвате?](#защо-да-го-ползвате) +- [Как да го ползвате?](#как-да-го-ползвате) +- [Не мислете, че не сте достатъчно умни](#не-мислете-че-не-сте-достатъчно-умни) +- [Бележка за видео ресурсите](#бележка-за-видео-ресурсите) +- [Изберете език за програмиране](#изберете-език-за-програмиране) +- [Книги за структури от данни и алгоритми](#книги-за-структури-от-данни-и-алгоритми) +- [Книги за подготовка за интервю](#книги-за-подготовка-за-интервю) +- [Не повтаряйте грешките ми](#не-повтаряйте-грешките-ми) +- [Какво няма да намерите тук](#какво-няма-да-намерите-тук) +- [Дневния план](#дневния-план) +- [Подготовка за въпроси за програмиране](#подготовка-за-въпроси-за-програмиране) +- [Задачи по програмиране](#задачи-по-програмиране) ### Теми за учене -- [Алгоритмична сложност / Big-O / Асимптотичен анализ](#алгоритмична-сложност--big-o--асимптотичен-анализ) -- [Структури от данни](#структури-от-данни) - - [Масиви (Arrays)](#масиви) - - [Свързани списъци(Linked Lists)](#свързани-списъци) - - [Стек (Stack)](#стек) - - [Опашка (Queue)](#опашка) - - [Хеш таблици (Hash table)](#хеш-таблици) -- [Повече знания](#повече-знания) - - [Двоично търсене (Binary search)](#двоично-търсене) - - [Побитови операции (Bitwise operations)](#побитови-операции) -- [Дървета](#дървета) - - [Дървета - бележки & основи](#дървета---бележки--основи) - - [Дървета за двоично търсене: BSTs (Binary search trees)](#дървета-за-двоично-търсене-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - балансирани дървета за търсене (основна концепция, без детайли) - - обхождане: preorder, inorder, postorder, BFS, DFS -- [Сортиране (Sorting)](#сортиране) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Графи (Graphs)](#графи) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Още повече знания](#още-повече-знания) - - [Рекурсия (Recursion)](#рекурсия) - - [Динамично програмиране (Dynamic programming)](#динамично-програмиране) - - [Design Patterns](#design-patterns) - - [Комбинаторика & вероятности](#комбинаторика--вероятности) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Как компютрите обработват една програма](#как-компютрите-обработват-една-програма) - - [Кеширане (Caches)](#кеширане) - - [Процеси и нишки](#процеси-и-нишки) - - [Тестване (Testing)](#тестване) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Уникод (Unicode)](#уникод) - - [Endianness](#endianness) - - [Мрежи (Networking)](#мрежи) -- [Последен преглед](#последен-преглед) +- [Алгоритмична сложност / Big-O / Асимптотичен анализ](#алгоритмична-сложност--big-o--асимптотичен-анализ) +- [Структури от данни](#структури-от-данни) + - [Масиви (Arrays)](#масиви) + - [Свързани списъци(Linked Lists)](#свързани-списъци) + - [Стек (Stack)](#стек) + - [Опашка (Queue)](#опашка) + - [Хеш таблици (Hash table)](#хеш-таблици) +- [Повече знания](#повече-знания) + - [Двоично търсене (Binary search)](#двоично-търсене) + - [Побитови операции (Bitwise operations)](#побитови-операции) +- [Дървета](#дървета) + - [Дървета - бележки & основи](#дървета---бележки--основи) + - [Дървета за двоично търсене: BSTs (Binary search trees)](#дървета-за-двоично-търсене-bsts) + - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) + - балансирани дървета за търсене (основна концепция, без детайли) + - обхождане: preorder, inorder, postorder, BFS, DFS +- [Сортиране (Sorting)](#сортиране) + - selection + - insertion + - heapsort + - quicksort + - merge sort +- [Графи (Graphs)](#графи) + - directed + - undirected + - adjacency matrix + - adjacency list + - traversals: BFS, DFS +- [Още повече знания](#още-повече-знания) + - [Рекурсия (Recursion)](#рекурсия) + - [Динамично програмиране (Dynamic programming)](#динамично-програмиране) + - [Design Patterns](#design-patterns) + - [Комбинаторика & вероятности](#комбинаторика--вероятности) + - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) + - [Как компютрите обработват една програма](#как-компютрите-обработват-една-програма) + - [Кеширане (Caches)](#кеширане) + - [Процеси и нишки](#процеси-и-нишки) + - [Тестване (Testing)](#тестване) + - [String searching & manipulations](#string-searching--manipulations) + - [Tries](#tries) + - [Floating Point Numbers](#floating-point-numbers) + - [Уникод (Unicode)](#уникод) + - [Endianness](#endianness) + - [Мрежи (Networking)](#мрежи) +- [Последен преглед](#последен-преглед) ### Как да спечелите позицията -- [Актуализирайте резюмето си](#актуализирайте-резюмето-си) -- [Намерете позиция](#намерете-позиция) -- [Процесът на интервюто & обща подготовка](#процесът-на-интервюто--обща-подготовка) -- [Мислете за това, когато дойде интервюто](#мислете-за-това-когато-дойде-интервюто) -- [Подгответе въпроси за интервюиращия](#подгответе-въпроси-за-интервюиращия) -- [След като са Ви наели](#след-като-са-ви-наели) +- [Актуализирайте резюмето си](#актуализирайте-резюмето-си) +- [Намерете позиция](#намерете-позиция) +- [Процесът на интервюто & обща подготовка](#процесът-на-интервюто--обща-подготовка) +- [Мислете за това, когато дойде интервюто](#мислете-за-това-когато-дойде-интервюто) +- [Подгответе въпроси за интервюиращия](#подгответе-въпроси-за-интервюиращия) +- [След като са Ви наели](#след-като-са-ви-наели) **---------------- Всичко оттук надолу е по желание ----------------** ### Допълнителни теми и ресурси -- [Допълнителни книги](#допълнителни-книги) -- [Системен дизайн, мащабируемост, обработка на данни](#системен-дизайн-мащабируемост-обработка-на-данни) (ако имате над 4 години опит) -- [Additional Learning](#additional-learning) - - [Компилатори](#компилатори) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Паритет & код на Хаминг](#паритет--код-на-хаминг) - - [Ентропия](#ентропия) - - [Криптография](#криптография) - - [Компресия](#компресия) - - [Компютърна сигурност](#компютърна-сигурност) - - [Garbage collection](#garbage-collection) - - [Паралелно програмиране](#паралелно-програмиране) - - [Системи за съобщения, сериализация и последователност](#системи-за-съобщения-сериализация-и-последователност) - - [A\*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) - - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Разширени структури от данни](#разширени-структури-от-данни) - - [Балансирани дървета за търсене](#балансирани-дървета-за-търсене) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Мрежови потоци](#мрежови-потоци) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Математика за бърза обработка](#математика-за-бърза-обработка) - - [Treap](#treap) - - [Линейно програмиране](#линейно-програмиране) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Дискретна математика](#дискретна-математика) - - [Machine Learning](#machine-learning) -- [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) -- [Видео серии](#видео-серии) -- [Курсове по компютърни науки](#курсове-по-компютърни-науки) -- [Papers](#papers) +- [Допълнителни книги](#допълнителни-книги) +- [Системен дизайн, мащабируемост, обработка на данни](#системен-дизайн-мащабируемост-обработка-на-данни) (ако имате над 4 години опит) +- [Допълнителни теми за учене](#Допънителни-теми-за-учене) + - [Компилатори](#компилатори) + - [Emacs and vi(m)](#emacs-and-vim) + - [Unix command line tools](#unix-command-line-tools) + - [Information theory](#information-theory-videos) + - [Паритет & код на Хаминг](#паритет--код-на-хаминг) + - [Ентропия](#ентропия) + - [Криптография](#криптография) + - [Компресия](#компресия) + - [Компютърна сигурност](#компютърна-сигурност) + - [Garbage collection](#garbage-collection) + - [Паралелно програмиране](#паралелно-програмиране) + - [Системи за съобщения, сериализация и последователност](#системи-за-съобщения-сериализация-и-последователност) + - [A\*](#a) + - [Fast Fourier Transform](#fast-fourier-transform) + - [Bloom Filter](#bloom-filter) + - [HyperLogLog](#hyperloglog) + - [Locality-Sensitive Hashing](#locality-sensitive-hashing) + - [van Emde Boas Trees](#van-emde-boas-trees) + - [Разширени структури от данни](#разширени-структури-от-данни) + - [Балансирани дървета за търсене](#балансирани-дървета-за-търсене) + - AVL trees + - Splay trees + - Red/black trees + - 2-3 search trees + - 2-3-4 Trees (aka 2-4 trees) + - N-ary (K-ary, M-ary) trees + - B-Trees + - [k-D Trees](#k-d-trees) + - [Skip lists](#skip-lists) + - [Мрежови потоци](#мрежови-потоци) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) + - [Математика за бърза обработка](#математика-за-бърза-обработка) + - [Treap](#treap) + - [Линейно програмиране](#линейно-програмиране) + - [Geometry, Convex hull](#geometry-convex-hull-videos) + - [Дискретна математика](#дискретна-математика) + - [Machine Learning](#machine-learning) +- [Допълнителни детайли по някои теми](#допълнителни-детайли-по-някои-теми) +- [Видео серии](#видео-серии) +- [Курсове по компютърни науки](#курсове-по-компютърни-науки) +- [Papers](#papers) --- @@ -216,9 +217,9 @@ ## Не мислете, че не сте достатъчно умни -- Успешните софтуерни инженери са умни, но много имат чувството, че не са достатъчно умни -- [Митът за гениалния програмист](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [Опасно е да сте сами: битката с невидимите чудовища в IT](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- Успешните софтуерни инженери са умни, но много имат чувството, че не са достатъчно умни +- [Митът за гениалния програмист](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [Опасно е да сте сами: битката с невидимите чудовища в IT](https://www.youtube.com/watch?v=1i8ylq4j_EY) ## Бележка за видео ресурсите @@ -1459,8 +1460,8 @@ Mock интервюта: - [Emacs въководство (За начинаещи) -Част 3- Изрази, Твърдения, ~/.emacs файлове и пакети](https://www.youtube.com/watch?v=paSgzPso-yc) - [Зъл режим(Evil mode): Или как се научих да спра да се тревожа и да заобичам Emacs (клип)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Писане на C програми с Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [Emacs-Наръчник за начинаещи (видео от David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - - [Emacs-Наръчник за начинаещи (записки на David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + - [Emacs-Наръчник за начинаещи (видео от David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [Emacs-Наръчник за начинаещи (записки на David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Unix command line tools From 845f52fa82fb8eaa2bc06669f72f36f3b83c5fca Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 16:16:00 +0100 Subject: [PATCH 746/857] Fix indentation --- translations/README-bg.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index c50695b8a2..261bac2cf0 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -51,11 +51,11 @@ ## Какво е това? From 2b14efe00b5c3a7c78aab99d617ec2b9538d8ad7 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 16:22:10 +0100 Subject: [PATCH 747/857] Add translation --- translations/README-bg.md | 67 +++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 261bac2cf0..016752f363 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -70,8 +70,15 @@ - Търпение - Време +Обърнете внимание, че това е учебен план за **софтуерно инженерство**, а не за уеб разработка. Големите компании като Google, Amazon, +Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) +и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от +тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани със софтуерно инженерство/разработка. -Обърнете внимание, че това е учебен план за **софтуерно инженерство**, а не за уеб разработка. Големите компании като Google, Amazon, Facebook и Microsoft различават софтуерното инженерство и уеб разработката. Amazon, например, имат Frontend инженери (FEE) и Software Development инженери (SDE). Това са 2 отделни позиции и интервютата за тях няма да са еднакви, тъй като всяка една от тях има своите специфики. Тези компании изискват знания по компютърни науки за позиции свързани със софтуерно инженерство/разработка +По принцип в университетска програма по Компютърни науки/Информатика има много неща за учене, но знаейки около 75% от това е +достатъчно добре за да се справите на интервю, това е и информацията която покривам тук. +За пълна програма по Компютърни науки за самоуки записките от моя план за учене са включени в Пътеката по Компютърни науки на Камран +Ахмед: https://roadmap.sh/computer-science --- @@ -207,14 +214,60 @@ Ако също като мен не сте учили компютърни науки в университет това ще Ви помогне да наваксате и ще Ви спести години. -Когато започнах този проект не знаех какво е стек или опашка, нямах представа какво е Big-O, не знаех нищо за дървета или как да обхождам графи. Ако трябваше да напиша сортиращ алгоритъм мога да Ви кажа, че бих се справил ужасно. Всяка от структурите от данни, които бях използвал досега бяха имплементирани в езика, който ползвах и нямах представа как работят реално. Никога не ми се беше налагало да управлявам памет освен ако някой от процесите, които бях пуснал не връщаха грешка "out of memory"- тогава се налагаше да търся заобиколен път. Бях ползвал хиляди асоциативни масиви и многоизмерни масиви няколко пъти, но никога преди не бях имплементирал структури от данни от нулата. +Когато започнах този проект не знаех какво е стек или опашка, нямах представа какво е Big-O, не знаех нищо за дървета или как да +pобхождам графи. Ако трябваше да напиша сортиращ алгоритъм мога да Ви кажа, че бих се справил ужасно. Всяка от структурите от данни, +които бях използвал досега бяха имплементирани в езика, който ползвах и нямах представа как работят реално. Никога не ми се беше +налагало да управлявам памет освен ако някой от процесите, които бях пуснал не връщаха грешка "out of memory"- тогава се налагаше +да търся заобиколен път. Бях ползвал хиляди асоциативни масиви и многоизмерни масиви няколко пъти, но никога преди не бях +имплементирал структури от данни от нулата. -Планът е дълъг. Може да Ви отнеме месеци. Ако вече сте запознати с повечето от темите ще Ви отнеме много по-малко +Планът е дълъг. Може да Ви отнеме месеци. Ако вече сте запознати с повечето от темите ще Ви отнеме много по-малко. ## Как да го ползвате Всичко надолу е само схематично изложение и трябва да преминете през темите от горе до долу. +Аз използвам специалния маркдаун на ГитХъб, включително листове със задачи за да следвам прогреса си. + - [Повече за GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### Ако не желаете да използвате git + +На тази страница кликнете върху бутона Code най-отгоре, а след това изберете "Download ZIP". Накрая разархивирайте файла и можете да +работите с текстовите файлове. + +Ако сте отворили файловете с текстов редактор, който разбира markdown, ще видите всичко форматирано подредено и красиво. + +![Как да изтеглим хранилище като zip файл](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Ако се чувствате сигурни да ползвате git + +Създайте нов бранч за да може да отбелязвате елементи по този начин, като просто вкарате един х в скобите: [x] + +1. ***Направете Fork на GitHub хранилището:*** `https://github.com/jwasham/coding-interview-university` като кликнете върху бутона Fork. + + ![Направете Fork на GitHub хранилище](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. Клонирайте хранилището на персоналния Ви компютър: + + ``` + git clone git@github.com:/coding-interview-university.git + cd coding-interview-university + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + ``` + +1. Маркирайте всички кутийки с Х след като сте готови с промените си: + + ``` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + ``` + + ## Не мислете, че не сте достатъчно умни - Успешните софтуерни инженери са умни, но много имат чувството, че не са достатъчно умни @@ -223,9 +276,11 @@ ## Бележка за видео ресурсите -Някои видеа са достъпни само след записване в курс на Coursera или EdX- т.нар. MOOCs. Понякога се налага да изчакате няколко месеца, за да стартира ново издание на курса, така че няма да имате достъп до тях. +Някои видеа са достъпни само след записване в курс на Coursera или EdX- т.нар. MOOCs. Понякога се налага да изчакате няколко месеца, +за да стартира ново издание на курса, така че няма да имате достъп до тях. -Би било чудесно такива ресурси да бъдат заменени с безплатни и свободнодостъпни публични източници като YouTube видеа (по възможност университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. +Би било чудесно такива ресурси да бъдат заменени с безплатни и свободнодостъпни публични източници като YouTube видеа (по възможност +университетски лекции), за да могат всички да учат навсякъде и по всяко време, а не само когато даден курс върви в момента. ## Изберете език за програмиране @@ -1429,7 +1484,7 @@ Mock интервюта: - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) -## Additional Learning +## Допънителни теми за учене Добавих тези теми, за да Ви помогна да бъдете по-добри софтуерни инженери и да сте наясно с определени технологии и алгоритми, което ще разшири "инструментите", с които можете да работите From 297c19f64662aa248dfb33e4c81efd1ddc134a56 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 14 Feb 2023 17:42:21 +0100 Subject: [PATCH 748/857] Fix indentation & formatting --- translations/README-bg.md | 68 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 016752f363..bdb13a3400 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -292,38 +292,40 @@ pобхождам графи. Ако трябваше да напиша сорт Когато преминавах през учебния план ползвах 2 езика за по-голямата част от нещата: C и Python -- C: Език на много ниско ниво. Дава Ви възможност да се справяте с пойнтъри и управляване на паметта, за да разберете структурите от данни и алгоритмите на много дълбоко ниво. В езици за програмиране на по-високо ниво тези неща са скрити от Вас. В ежедневната работа това е прекрасно, но когато се учите как тези структури от данни работят е хубаво да усещате как става всичко. - - C е навсякъде. Ще виждате примери в книги, лекции, видеа _навсякъде_ докато учите. - - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Това е кратка книга, но ще Ви даде добра представа за езика и с малко упражнения бързо ще имате добро владение над него. Ако разбирате C значи разбирате как програмите и паметта работят. - - Не трябва да се зачитате много надълбоко в книгата (или дори да я прочитате докрай). Нужно е само да сте уверени в способността си да четете и пишете в C. - - [Отговори на въпросите в книгата](https://github.com/lekkas/c-algorithms) -- Python: модерен и много експресивен. Научих го защото е наистина много полезен и ми позволява да пиша по-малко код когато съм на интервю. +* C: Език на много ниско ниво. Дава Ви възможност да се справяте с пойнтъри и управляване на паметта, за да разберете структурите + от данни и алгоритмите на много дълбоко ниво. В езици за програмиране на по-високо ниво тези неща са скрити от Вас. В ежедневната + работа това е прекрасно, но когато се учите как тези структури от данни работят е хубаво да усещате как става всичко. + - C е навсякъде. Ще виждате примери в книги, лекции, видеа _навсякъде_ докато учите. + - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Това е кратка книга, но ще Ви даде добра представа за езика и с малко упражнения бързо ще имате добро владение над него. Ако разбирате C значи разбирате как програмите и паметта работят. + - Не трябва да се зачитате много надълбоко в книгата (или дори да я прочитате докрай). Нужно е само да сте уверени в способността си да четете и пишете в C. + - [Отговори на въпросите в книгата](https://github.com/lekkas/c-algorithms) +* Python: модерен и много експресивен. Научих го защото е наистина много полезен и ми позволява да пиша по-малко код когато съм на интервю. Това е моя личен избор. Вие можете да изберете каквото пожелаете, разбира се. Може да не Ви трябват, но ето някои сайтове за учене на нов език: -- [Exercism](https://exercism.org/tracks) -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) -- [Codeforces](https://codeforces.com/) +- [Exercism](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Codeforces](https://codeforces.com/) ### За интервюто Ви по програмиране Може да изберете език, в който се чувствате комфортно за интервюто Ви, но за големите компании това са най-добрите опции: -- C++ -- Java -- Python +- C++ +- Java +- Python Може да ползвате и тези, но поразгледайте преди това, защото може да има уловки: -- JavaScript -- Ruby +- JavaScript +- Ruby Това е статия, която написах за избирането на език за вашето интервю: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). @@ -345,28 +347,28 @@ pобхождам графи. Ако трябваше да напиша сорт ### C -- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Основни познания, структури от данни, сортиране, търсене и алгоритми за графи +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Основни познания, структури от данни, сортиране, търсене и алгоритми за графи ### Python -- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - от Goodrich, Tamassia, Goldwasser - - Тази книга ми допадна много. Покрива всичко и още нещо - - 'Питоничен' код - - Докладът ми за тази книга: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - от Goodrich, Tamassia, Goldwasser + - Тази книга ми допадна много. Покрива всичко и още нещо + - 'Питоничен' код + - Докладът ми за тази книга: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ ### Java Изборът е ваш: -- Goodrich, Tamassia, Goldwasser - - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) -- Sedgewick and Wayne: - - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Безплатен курс в Coursera, който покрива материала от книгата (воден от писателите!): - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Безплатен курс в Coursera, който покрива материала от книгата (воден от писателите!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) ### C++ From b91bc8f3884e34c1b3d4d2c99f60291a13d9a2c7 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Wed, 15 Feb 2023 10:23:30 +0100 Subject: [PATCH 749/857] Fix indentation --- translations/README-bg.md | 298 +++++++++++++++++++------------------- 1 file changed, 151 insertions(+), 147 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index bdb13a3400..2541f702ce 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -464,42 +464,48 @@ pобхождам графи. Ако трябваше да напиша сорт Това са широко разпространени технологии, но не и част от учебния план: -- SQL -- Javascript -- HTML, CSS, и други front-end технологии +- SQL +- Javascript +- HTML, CSS, и други front-end технологии ## Дневния план -Този курс преминава през множество от теми. Всяка от тях най-вероятно ще Ви отнеме няколко дена или дори седмица, или повече. Зависи от графика Ви. +Този курс преминава през множество от теми. Всяка от тях най-вероятно ще Ви отнеме няколко дена или дори седмица, или +повече. Зависи отграфика Ви. -Всеки ден взимайте следващата тема в списъка, изгледайте няколко клипа по тази тема и след това напишете имплементацията на въпросната структура от данни или алгоритъм в езика за програмиране, който сте избрали за този курс. +Всеки ден взимайте следващата тема в списъка, изгледайте няколко клипа по тази тема и след това напишете имплементацията +на въпросната структура от данни или алгоритъм в езика за програмиране, който сте избрали за този курс. Можете да видите моя код тук: -- [C](https://github.com/jwasham/practice-c) -- [C++](https://github.com/jwasham/practice-cpp) -- [Python](https://github.com/jwasham/practice-python) +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) -Не е нужно да помните всеки алгоритъм наизуст. Необходимо е просто да ги разбирате достатъчно добре, за да можете да напишете собствена имплементация. +Не е нужно да помните всеки алгоритъм наизуст. Необходимо е просто да ги разбирате достатъчно добре, за да можете да +напишете собствена имплементация. ## Подготовка за въпроси за програмиране - Защо това е тук? Аз не съм готов да се явя на интервю. +Защо това е тук? Аз не съм готов да се явя на интервю. [Тогава се върни и прочети това.](#3-решавайте-задачи-от-интервюта-по-програмиране-докато-учите) Защо трябва да се упражнявате да решавате задачи по програмиране: -- Разпознаване на проблеми и знанието кога и къде да ползвате дадена структура от данни или алгоритъм -- Събиране на изискванията за задачата -- Изговаряне на мислите Ви докато решавате както ще правите на интервюто -- Писане на код върху дъска или лист хартия вместо на компютър -- Намиране на времевата и пространствената сложност на решенията Ви (вижте Big-O надолу) -- Тестване на решенията Ви +- Разпознаване на проблеми и знанието кога и къде да ползвате дадена структура от данни или алгоритъм +- Събиране на изискванията за задачата +- Изговаряне на мислите Ви докато решавате както ще правите на интервюто +- Писане на код върху дъска или лист хартия вместо на компютър +- Намиране на времевата и пространствената сложност на решенията Ви (вижте Big-O надолу) +- Тестване на решенията Ви -Пишете код на дъска или лист хартия вместо на компютър. Тествайте с няколко различни входни данни. След това го напишете и тествайте на компютър. +Пишете код на дъска или лист хартия вместо на компютър. Тествайте с няколко различни входни данни. След това го напишете +и тествайте на компютър. -Ако нямате дъска за писане вкъщи можете да си купите голям тефтер от магазин за арт материали. Можете просто да седите на дивана и да се упражнявате. Това е моята "дъска за дивана". Добавих химикала към снимката за съпоставка на размера. Ако използвате химикал бързо ще ви се поиска да можеше да триете написаното- бързо става мазало. **Аз ползвам молив и гума.** +Ако нямате дъска за писане вкъщи можете да си купите голям тефтер от магазин за арт материали. Можете просто да седите +на дивана и да се упражнявате. Това е моята "дъска за дивана". Добавих химикала към снимката за съпоставка на размера. +Ако използвате химикал бързо ще ви се поиска да можеше да триете написаното - бързо става мазало. **Аз ползвам молив и гума.** ![моята дъска за дивана](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -511,29 +517,29 @@ pобхождам графи. Ако трябваше да напиша сорт Решаване на задачи: -- [Как да намерим решение](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) -- [Как да направим дисекция на условие на задача от Topcoder](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-find-a-solution/) +- [Как да направим дисекция на условие на задача от Topcoder](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) Клипове за задачи от интервюта по програмиране: -- [IDeserve (88 клипа)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy (5 плейлисти)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - - Супер за насоки за решаване на задачи -- [Nick White - LeetCode Solutions (187 клипа)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - - Добро обяснение на решението и кода - - Можете да изгледате няколко клипа в малък прозорец от време -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +- [IDeserve (88 клипа)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 плейлисти)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Супер за насоки за решаване на задачи +- [Nick White - LeetCode Solutions (187 клипа)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Добро обяснение на решението и кода + - Можете да изгледате няколко клипа в малък прозорец от време +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) Сайтове със задачи: -- [LeetCode](https://leetcode.com/) - - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. - - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) -- [InterviewBit](https://www.interviewbit.com/) -- [Project Euler](https://projecteuler.net/) +- [LeetCode](https://leetcode.com/) + - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. + - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [InterviewBit](https://www.interviewbit.com/) +- [Project Euler](https://projecteuler.net/) ## Да започваме @@ -543,124 +549,122 @@ pобхождам графи. Ако трябваше да напиша сорт ## Алгоритмична сложност / Big-O / Асимптотичен анализ -- Няма нищо за имплементация тук, единствено ще гледате клипове и ще си водите записки! Йей! -- Има доста клипове тук. Просто изгледайте достатъчно докато не го разберете. Винаги можете да се върнете обратно и да преговорите. -- Не се притеснявайте ако не разбирате всичката математика, която стои отзад. -- Трябва просто да можете да изразите сложността на даден алгоритъм чрез Big-O -- [ ] [Harvard CS50 - Asymptotic Notation (клип)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [Big O Notations (общ наръчник) (клип)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] [Big O Notation (и Omega, и Theta) - най-доброто математично обяснение (клип)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [клип](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](https://archive.org/details/lecture2_202008) -- [ ] [UC Berkeley Big O (клип)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [Амортизиран анализ (клип)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [ ] [Пищови](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- Няма нищо за имплементация тук, единствено ще гледате клипове и ще си водите записки! Йей! +- Има доста клипове тук. Просто изгледайте достатъчно докато не го разберете. Винаги можете да се върнете обратно и да преговорите. +- Не се притеснявайте ако не разбирате всичката математика, която стои отзад. +- Трябва просто да можете да изразите сложността на даден алгоритъм чрез Big-O +- [ ] [Harvard CS50 - Asymptotic Notation (клип)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (общ наръчник) (клип)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (и Omega, и Theta) - най-доброто математично обяснение (клип)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Skiena: + - [клип](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [slides](https://archive.org/details/lecture2_202008) +- [ ] [UC Berkeley Big O (клип)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [Амортизиран анализ (клип)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (includes recurrence relations and master theorem): + - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) + - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) +- [ ] [Пищови](http://bigocheatsheet.com/) +- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) Е, това е достатъчно за тази тема. -Когато четете "Cracking the Coding Interview" ще срещнете главата, която разглежда тази тема. Накрая на главата има кратък тест, който проверява дали можете да намерите сложността на различни алгоритми. Това е супер преговор и тест. +Когато четете "Cracking the Coding Interview" ще срещнете главата, която разглежда тази тема. Накрая на главата има +кратък тест, който проверява дали можете да намерите сложността на различни алгоритми. Това е супер преговор и тест. ## Структури от данни -- ### Масиви - - - [ ] За масивите: - - [Arrays (клип)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (клип)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [Dynamic Arrays (клип)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - - [Jagged Arrays (клип)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] Имплементирайте вектор (променлив масив с автоматично преоразмеряване): - - [ ] Упражнявайте се да пишете код, ползвайки масиви и пойнтъри. Ползвайте пойнтъри за преместване към индекс вместо индексиране - - [ ] New raw data array with allocated memory - - 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 - - [ ] size() - номер на елементите - - [ ] capacity() - номер на елементите, които може да побира - - [ ] is_empty() - - [ ] at(index) - връща елемента на дадения индекс, ако индекса е извън границите на масива връща грешка - - [ ] push(item) - - [ ] insert(index, item) - вкарва елемента на дадения елемент, измествайки съществуващия елемент на този индекс и всички елементи след него надясно - - [ ] prepend(item) - може да добавя елементи на индекс 0 - - [ ] pop() - премахва елемент от края и връща стойността му - - [ ] delete(index) - изтрива елемента на дадения индекс и измества всички елементи след него наляво - - [ ] remove(item) - търси стойността на елемента и премахва всички индекси, които я съдържат - - [ ] find(item) - търси стойността на елемента и връща първия индекс, който я съдържа, или -1 ако няма такъв елемент - - [ ] resize(new_capacity) // private function - - когато достигнете максималния обем, преоразмерете като дублирате обема - - когато pop-вате елемент, ако обема на масива е 1/4 от капацитета му, преоразмерете масива наполовина - - [ ] Време - - O(1) за добавяне/премахване към края, индексиране или актуализиране - - O(n) за добавяне/премахване другаде - - [ ] Пространство - - contiguous in memory, so proximity helps performance - - нужно място = (капацитета на масива, който е >= n) \* размера на елемента, но дори 2n, пак е O(n) - -- ### Свързани списъци - - - [ ] Описание: - - [ ] [Единично свързани списъци (клип)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) - - [ ] [CS 61B - Linked Lists 1 (клип)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [CS 61B - Linked Lists 2 (клип)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - - [ ] [Код в C (клип)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - не цялото видео, само частите за Node structs и алокация на памет - - [ ] Свързани списъци срещу масиви: - - [Core Linked Lists Vs Arrays (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [Свързани списъци срещу масиви в истинския свят (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - - [ ] [Защо да избягваме свързаните списъци (клип)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Аха: трябват Ви pointer to pointer знания: - (за да можете да подавате pointer към функция, която може да промени адреса, към който сочи pointer-a) - Тази страница служи само да схванете ptr to ptr. Не препоръчвам този стил на обхождане на списъка. Четливостта и поддържаемостта страдат заради хитрости. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] Имплементация: - - [ ] size() - връща броя на елементите - - [ ] empty() - булева стойност, връща true ако списъка е празен - - [ ] value_at(index) - връща стойността на n-тия елемент (почвайки от 0 за първия елемент) - - [ ] push_front(value) - добавя стойност към началото на списъка - - [ ] pop_front() - премахва първия елемент и връща стойността му - - [ ] push_back(value) - добавя елемент към края - - [ ] pop_back() - премахва последния елемент и връща стойността му - - [ ] front() - взима стойността на първия елемент - - [ ] back() - взима стойността на последния елемент - - [ ] insert(index, value) - вкарва елемента на дадения индекс, така че новия елемент да сочи към стария елемент на този индекс - - [ ] erase(index) - изтрива node-а на дадения индекс - - [ ] value_n_from_end(n) - връща стойността на node-а, седящ на позиция n от края на списъка - - [ ] reverse() - обръща списъка - - [ ] remove_value(value) - премахва първия елемент от списъка, съдържащ тази стойност - - [ ] Двойно свързан списък - - [Описание (клип)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - - Няма нужда от имплементация - -- ### Стек - - - [ ] [Стекове (клип)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] Няма нужда да се имплементира. Имплементацията с масив е тривиална. - -- ### Опашка - - - [ ] [Опашка (клип)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - - [ ] Имплементирайте със свързан списък с tail pointer: - - enqueue(value) - добавя стойност на опашката - - dequeue() - връща стойността и премахва най-предния елемент на опашката (front) - - empty() - - [ ] Имплементрайте с масив с фиксирана големина: - - enqueue(value) - добавя елемента в края на наличното пространство - - dequeue() - връща стойността и премахва най-предния елемент на опашката - - empty() - - full() - - [ ] Разход: - - лоша имплементация, ползвайки свързан списък където правим enqueue в началото и dequeue в края би била O(n) - защото ще се нуждаете от предпоследния елемент, което ще предизвиква цялостно обхождане при всяко dequeue - - enqueue: O(1) (amortized, свъзран списък и масив [probing]) - - dequeue: O(1) (свъзран списък и масив) - - empty: O(1) (свъзран списък и масив) +- ### Масиви + - [ ] За масивите: + - [Arrays (клип)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (клип)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Dynamic Arrays (клип)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Jagged Arrays (клип)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] Имплементирайте вектор (променлив масив с автоматично преоразмеряване): + - [ ] Упражнявайте се да пишете код, ползвайки масиви и пойнтъри. Ползвайте пойнтъри за преместване към индекс вместо индексиране + - [ ] New raw data array with allocated memory + - 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 + - [ ] size() - номер на елементите + - [ ] capacity() - номер на елементите, които може да побира + - [ ] is_empty() + - [ ] at(index) - връща елемента на дадения индекс, ако индекса е извън границите на масива връща грешка + - [ ] push(item) + - [ ] insert(index, item) - вкарва елемента на дадения елемент, измествайки съществуващия елемент на този индекс и всички елементи след него надясно + - [ ] prepend(item) - може да добавя елементи на индекс 0 + - [ ] pop() - премахва елемент от края и връща стойността му + - [ ] delete(index) - изтрива елемента на дадения индекс и измества всички елементи след него наляво + - [ ] remove(item) - търси стойността на елемента и премахва всички индекси, които я съдържат + - [ ] find(item) - търси стойността на елемента и връща първия индекс, който я съдържа, или -1 ако няма такъв елемент + - [ ] resize(new_capacity) // private function + - когато достигнете максималния обем, преоразмерете като дублирате обема + - когато pop-вате елемент, ако обема на масива е 1/4 от капацитета му, преоразмерете масива наполовина + - [ ] Време + - O(1) за добавяне/премахване към края, индексиране или актуализиране + - O(n) за добавяне/премахване другаде + - [ ] Пространство + - contiguous in memory, so proximity helps performance + - нужно място = (капацитета на масива, който е >= n) \* размера на елемента, но дори 2n, пак е O(n) + +- ### Свързани списъци + - [ ] Описание: + - [ ] [Единично свързани списъци (клип)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [CS 61B - Linked Lists 1 (клип)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - Linked Lists 2 (клип)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) + - [ ] [Код в C (клип)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - не цялото видео, само частите за Node structs и алокация на памет + - [ ] Свързани списъци срещу масиви: + - [Core Linked Lists Vs Arrays (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Свързани списъци срещу масиви в истинския свят (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [Защо да избягваме свързаните списъци (клип)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] Аха: трябват Ви pointer to pointer знания: + (за да можете да подавате pointer към функция, която може да промени адреса, към който сочи pointer-a) + Тази страница служи само да схванете ptr to ptr. Не препоръчвам този стил на обхождане на списъка. Четливостта + и поддържаемостта страдат заради хитрости. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) + - [ ] Имплементация: + - [ ] size() - връща броя на елементите + - [ ] empty() - булева стойност, връща true ако списъка е празен + - [ ] value_at(index) - връща стойността на n-тия елемент (почвайки от 0 за първия елемент) + - [ ] push_front(value) - добавя стойност към началото на списъка + - [ ] pop_front() - премахва първия елемент и връща стойността му + - [ ] push_back(value) - добавя елемент към края + - [ ] pop_back() - премахва последния елемент и връща стойността му + - [ ] front() - взима стойността на първия елемент + - [ ] back() - взима стойността на последния елемент + - [ ] insert(index, value) - вкарва елемента на дадения индекс, така че новия елемент да сочи към стария елемент на този индекс + - [ ] erase(index) - изтрива node-а на дадения индекс + - [ ] value_n_from_end(n) - връща стойността на node-а, седящ на позиция n от края на списъка + - [ ] reverse() - обръща списъка + - [ ] remove_value(value) - премахва първия елемент от списъка, съдържащ тази стойност + - [ ] Двойно свързан списък + - [Описание (клип)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Няма нужда от имплементация + +- ### Стек + - [ ] [Стекове (клип)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) + - [ ] Няма нужда да се имплементира. Имплементацията с масив е тривиална. + +- ### Опашка + - [ ] [Опашка (клип)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) + - [ ] Имплементирайте със свързан списък с tail pointer: + - enqueue(value) - добавя стойност на опашката + - dequeue() - връща стойността и премахва най-предния елемент на опашката (front) + - empty() + - [ ] Имплементрайте с масив с фиксирана големина: + - enqueue(value) - добавя елемента в края на наличното пространство + - dequeue() - връща стойността и премахва най-предния елемент на опашката + - empty() + - full() + - [ ] Разход: + - лоша имплементация, ползвайки свързан списък където правим enqueue в началото и dequeue в края би била O(n) + защото ще се нуждаете от предпоследния елемент, което ще предизвиква цялостно обхождане при всяко dequeue + - enqueue: O(1) (amortized, свъзран списък и масив [probing]) + - dequeue: O(1) (свъзран списък и масив) + - empty: O(1) (свъзран списък и масив) - ### Хеш таблици From 1436b9d451663aad5f244585be972fb2d2671480 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Wed, 15 Feb 2023 10:30:27 +0100 Subject: [PATCH 750/857] Fix formatting to ### Trees --- translations/README-bg.md | 118 ++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 62 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 2541f702ce..a53b284234 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -666,71 +666,65 @@ pобхождам графи. Ако трябваше да напиша сорт - dequeue: O(1) (свъзран списък и масив) - empty: O(1) (свъзран списък и масив) -- ### Хеш таблици - - - [ ] Клипове: - - - [ ] [Hashing with Chaining (клип)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [Table Doubling, Karp-Rabin (клип)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Open Addressing, Cryptographic Hashing (клип)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (клип)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier (клип)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (клип)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(За напреднали) Perfect hashing (клип)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - - - [ ] Онлайн курсовe: - - - [ ] [Core Hash Tables (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Data Structures (клип)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (клип)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] Дистрибутирани хеш таблици: - - [Instant Uploads And Storage Optimization In Dropbox (клип)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Distributed Hash Tables (клип)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [ ] Имплементирайте с масив, ползвайки linear probing - - hash(k, m) - m е размера на хеш таблицата - - add(key, value) - ако ключа съществува актуализирайте стойността - - exists(key) - - get(key) - - remove(key) +- ### Хеш таблици + - [ ] Клипове: + - [ ] [Hashing with Chaining (клип)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Table Doubling, Karp-Rabin (клип)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Open Addressing, Cryptographic Hashing (клип)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: The Mighty Dictionary (клип)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (клип)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (клип)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(За напреднали) Perfect hashing (клип)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) + - [ ] Онлайн курсовe: + - [ ] [Core Hash Tables (клип)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures (клип)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem (клип)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] Дистрибутирани хеш таблици: + - [Instant Uploads And Storage Optimization In Dropbox (клип)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (клип)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + - [ ] Имплементирайте с масив, ползвайки linear probing + - hash(k, m) - m е размера на хеш таблицата + - add(key, value) - ако ключа съществува актуализирайте стойността + - exists(key) + - get(key) + - remove(key) ## Повече знания -- ### Двоично търсене - - [ ] [Binary Search (клип)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [Binary Search (клип)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [ ] [детайли](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - - [ ] Имплементирайте: - - двоично търсене (на сортиран масив от integers) - - двоично търсене чрез рекурсия -- ### Побитови операции - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - трябва да знаете доста от степените на 2 от (2^1 до 2^16 и 2^32) - - [ ] Бъдете сигурни, че разбирате добре битовата манипулация: &, |, ^, ~, >>, << - - [ ] [думи]() - - [ ] Добро въведение: - [Bit Manipulation (клип)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (клип)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] [Bit Hacks (клип)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (клип)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] Преброяване на набор от битове - - [4 ways to count bits in a byte (клип)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Размяна на стойности: - - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] Абсолютна стойност: - - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) +- ### Двоично търсене + - [ ] [Binary Search (клип)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [Binary Search (клип)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [детайли](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) + - [ ] Имплементирайте: + - двоично търсене (на сортиран масив от integers) + - двоично търсене чрез рекурсия +- ### Побитови операции + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - трябва да знаете доста от степените на 2 от (2^1 до 2^16 и 2^32) + - [ ] Бъдете сигурни, че разбирате добре битовата манипулация: &, |, ^, ~, >>, << + - [ ] [думи]() + - [ ] Добро въведение: [Bit Manipulation (клип)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [C Programming Tutorial 2-10: Bitwise Operators (клип)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) + - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (клип)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s and 1s complement + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (клип)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] Преброяване на набор от битове + - [4 ways to count bits in a byte (клип)](https://youtu.be/Hzuzo9NJrlc) + - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] Размяна на стойности: + - [Swap](https://bits.stephan-brumme.com/swap.html) + - [ ] Абсолютна стойност: + - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## Дървета From cbef74e03eb0da5680298cd8fa8b54841390ceb1 Mon Sep 17 00:00:00 2001 From: Abdullah Afzal Date: Mon, 20 Feb 2023 02:57:13 +0500 Subject: [PATCH 751/857] Complete Urdu Translation --- translations/README-ur.md | 1405 ++++++++++++++++++------------------- 1 file changed, 676 insertions(+), 729 deletions(-) diff --git a/translations/README-ur.md b/translations/README-ur.md index 950a5dce82..0e71a77a0c 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -13,13 +13,21 @@
ترجمہ: - + - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) - [Português Brasileiro](translations/README-ptbr.md) - [Polish](translations/README-pl.md) -- [Urdu](translations/README-ur.md) +- [繁體中文](translations/README-tw.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Russian](translations/README-ru.md) +- [German](translations/README-de.md) +- [Bahasa Indonesia](translations/README-id.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Uzbek](translations/README-uz.md) +- [Bulgarian](translations/README-bg.md) +- [বাংলা - Bangla](translations/README-bn.md)
@@ -27,19 +35,18 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) +
@@ -57,40 +64,51 @@ ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -یہ **نئے سافٹ ویئر انجینئرز** یا سافٹ ویئر/ویب ڈویلپمنٹ سے سافٹ ویئر انجینئرنگ میں تبدیل ہونے والوں کے لیے ہے (جہاں کمپیوٹر سائنس کا علم درکار ہے)۔ اگر آپ کے پاس کئی سالوں کا تجربہ ہے اور آپ سافٹ ویئر انجینئرنگ کے کئی سالوں کے تجربے کا دعویٰ کر رہے ہیں تو ایک مشکل انٹرویو کی توقع کریں۔ +**شرط:** +* کوڈنگ کے ساتھ تھوڑا سا تجربہ (متغیرات، لوپس، فنکشنز وغیرہ) +* صبر +* وقت -اگر آپ کے پاس سافٹ ویئر/ویب ڈویلپمنٹ کا کئی سال کا تجربہ ہے، تو نوٹ کریں کہ بڑی سافٹ ویئر کمپنیاں جیسے گوگل، ایمیزون، فیس بک اور مائیکروسافٹ سافٹ ویئر انجینئرنگ کو سافٹ ویئر/ویب ڈویلپمنٹ سے مختلف سمجھتے ہیں، اور انہیں کمپیوٹر سائنس کے علم کی ضرورت ہوتی ہے۔ +نوٹ کریں کہ یہ **سافٹ ویئر انجینئرنگ** کے لیے مطالعہ کا منصوبہ ہے، ویب ڈویلپمنٹ کے لیے نہیں۔ بڑی سافٹ ویئر کمپنیاں جیسے گوگل، ایمیزون، +فیس بک اور مائیکروسافٹ سافٹ ویئر انجینئرنگ کو ویب ڈویلپمنٹ سے مختلف سمجھتے ہیں۔ مثال کے طور پر، ایمیزون کے پاس فرنٹ اینڈ انجینئرز (FEE) اور سافٹ ویئر ڈویلپمنٹ انجینئرز (SDE)ہیں۔ یہ 2 الگ الگ کردارہیں اوران کےلیے الگ الگ انٹرویوز ہیں۔ کیونکہ ہر ایک کی اپنی ضروریات ہیں۔ ان کمپنیوں کو سافٹ ویئر ڈویلپمنٹ / انجینئرنگ کےلے کمپیوٹر سائنس کا علم درکار ہوتا ہے۔ -اگر آپ ریلائیبلٹی انجینئر یا آپریشنز انجینئر بننا چاہتے ہیں تو اختیاری فہرست (نیٹ ورکنگ، سیکیورٹی) سے مزید مطالعہ کریں۔ +یونیورسٹی کے کمپیوٹر سائنس پروگرام میں سیکھنے کے لیے بہت کچھ ہے، لیکن انٹرویو کے لیے صرف 75% جاننا ہی کافی ہے، اس لیے میں یہاں صرف اتنا ہی احاطہ کرتا ہوں۔ +مکمل خود سیکھے جانے والے سی-ایس پروگرام کے لیے، میرے اسٹڈی پلان کے وسائل کامران احمد کے کمپیوٹر سائنس روڈ میپ میں شامل کیے گئے ہیں: https://roadmap.sh/computer-science --- ## مواد کی فہرست -- [یہ کیا ہے؟](#what-is-it) -- [اسے کیوں استعمال کریں؟](#why-use-it) -- [اسے کیسے استعمال کریں](#how-to-use-it) -- [اپنے آپ کو کم نہ سمجھیں](#dont-feel-you-arent-smart-enough) -- [ویڈیو مواد کے بارے میں](#about-video-resources) -- [انٹرویو کا عمل اور عام انٹرویو کی تیاری](#interview-process--general-interview-prep) -- [انٹرویو کے لیے ایک زبان کا انتخاب کریں۔](#pick-one-language-for-the-interview) -- [کتابوں کی فہرست](#book-list) -- [شروع کرنے سے پہلے](#before-you-get-started) -- [جو آپ نہیں سیکھیں گے۔](#what-you-wont-see-covered) -- [پہلے سے ضروری علم](#prerequisite-knowledge) -- [روزانہ کی منصوبہ بندی](#the-daily-plan) -- [الگورتھمک پیچیدگی / بگ-او / اسیمپٹوٹک تجزیہ(Algorithmic complexity / Big-O / Asymptotic analysis)](#algorithmic-complexity--big-o--asymptotic-analysis) -- [ڈیٹا سٹرکچرز(Data Structures)](#data-structures) +### مطالعہ کا منصوبہ + +- [یہ کیا ہے؟](#یہ-کیا-ہے) +- [اسے کیوں استعمال کریں؟](#اسے-کیوں-استعمال-کریں) +- [اسے کیسے استعمال کریں](#اسے-کیسے-استعمال-کریں) +- [اپنے آپ کو کم نہ سمجھیں](#اپنے-آپ-کو-کم-مت-سمجھو) +- [ویڈیو مواد کے بارے میں](#ویڈیو-وسائل-کے-بارے-میں-ایک-نوٹ) +- [انٹرویو کے لیے ایک پروگرامنگ زبان کا انتخاب کریں۔](#ایک-پروگرامنگ-زبان-کا-انتخاب) +- [ڈیٹا سٹرکچرز اور الگورتھم کے لیے کتابیں](#ڈیٹا-سٹرکچرز-اور-الگورتھم-کے-لیے-کتابیں) +- [انٹرویو کی تیاری کی کتابیں](#انٹرویو-کی-تیاری-کی-کتابیں) +- [میری غلطیاں مت کرنا](#میری-غلطیاں-مت-کرنا) +- [جو آپ نہیں سیکھیں گے۔](#جو-آپ-نہیں-سیکھیں-گے) +- [روزانہ کی منصوبہ بندی](#روزانہ-کا-منصوبہ) +- [کوڈنگ سوال کی مشق](#کوڈنگ-سوال-کی-مشق) +- [کوڈنگ چیلنجز](#کوڈنگ-کے-سوالاتمسائل) + +### مطالعہ کے موضوعات + +- [الگورتھمک پیچیدگی / بگ-او / اسیمپٹوٹک تجزیہ(Algorithmic complexity / Big-O / Asymptotic analysis)](#الگورتھمک-پیچیدگی--بگ-او--اسیمپٹوٹک-تجزیہ) +- [ڈیٹا سٹرکچرز(Data Structures)](#ڈیٹا-سٹرکچرز) - [آرے (Arrays)](#arrays) - [لنکڈلسٹ (Linked Lists)](#linked-lists) - [سٹیک (Stack)](#stack) - [کیو (Queue)](#queue) - [ہیش ٹیبل (Hash table)](#hash-table) -- [مزید معلومات](#more-knowledge) +- [مزید معلومات](#مزید-معلومات) - [بینری سرچ (Binary search)](#binary-search) - [بٹ وائزاپریشنز (Bitwise operations)](#bitwise-operations) - [ٹریز (Trees)](#trees) - - [ٹریز - نوٹس اور پس منظر](#trees---notes--background) + - [ٹریز - تعارف](#trees---intro) - [بینری سرچ ٹریز (Binary search trees: BSTs)](#binary-search-trees-bsts) - [ہیپ / پریاٹری کیو / بینری ہیپ (Heap / Priority Queue / Binary Heap)](#heap--priority-queue--binary-heap) - بیلنسڈ سرچ ٹریز - عمومی جائزہ (balanced search trees - general concept, not details) @@ -107,38 +125,39 @@ - اڈجیسنسی میٹرکس (adjacency matrix) - اڈجیسنسی لسٹ (adjacency list) - ٹریورسل (traversals: BFS, DFS) -- [اس سے بھی زیادہ معلومات](#even-more-knowledge) +- [اس سے بھی زیادہ معلومات](#اس-سے-بھی-زیادہ-معلومات) - [رکرین / تکرار (Recursion)](#recursion) - [ڈینیمک پروگرامنگ](#dynamic-programming) - - [ابجیکٹ پروگرامنگ](#object-oriented-programming) - [ڈیزائن پیٹرن](#design-patterns) - [امتزاج (n منتخب k) اور امکان](#combinatorics-n-choose-k--probability) - [تخمینہ الگورتھم ،NPاورNP-مکمل (NP, NP-Complete and Approximation Algorithms)](#np-np-complete-and-approximation-algorithms) + - [How computers process a program](#how-computers-process-a-program) - [کیچز](#caches) - [پروسسزاور تھریڈز](#processes-and-threads) - [ٹیسٹنگ](#testing) - - [شیڈولنگ](#scheduling) - [سٹرنگ تلاش کرنا اور تبدیل کرنا](#string-searching--manipulations) - [ٹرایز (Tries)](#tries) - [اعشاریہ کے ساتھ نمبر](#floating-point-numbers) - [یونیکوڈ](#unicode) - [اینڈیاننس](#endianness) - [نیٹ ورکنگ](#networking) -- [سسٹم ڈیزائن، اسکیل ایبلٹی، ڈیٹا ہینڈلنگ](#system-design-scalability-data-handling) (اگر آپ کو 4 سال سے زیادہ کا تجربہ ہے۔) -- [حتمی جائزہ](#final-review) -- [کوڈنگ سوال کی مشق](#coding-question-practice) -- [کوڈنگ کی مشقیں/چیلنجز](#coding-exerciseschallenges) -- [ایک بار جب آپ انٹرویو کے قریب پہنچ جائیں۔](#once-youre-closer-to-the-interview) -- [آپ کا رزیومے](#your-resume) -- [اپنے انٹرویو لینے والے کی طرح سوچیں۔](#be-thinking-of-for-when-the-interview-comes) -- [انٹرویو لینے والے کے لیے سوالات](#have-questions-for-the-interviewer) -- [ایک بار جب آپ کو نوکری مل جائے گی۔](#once-youve-got-the-job) +- [حتمی جائزہ](#حتمی-جائزہ) + +### ملازمت حاصل کرنا + +- [اپنا ریزومےاپ ڈیٹ کریں](#اپنے-ریزیومے-کو-اپ-ڈیٹ-کریں) +- [نوکری تلاش کریں](#find-a-job) +- [انٹرویو کا عمل اور عام انٹرویو کی تیاری](#انٹرویو-کا-عمل-اور-عام-انٹرویو-کی-تیاری) +- [اپنے انٹرویو لینے والے کی طرح سوچیں۔](#اپنے-انٹرویو-لینے-والے-کی-طرح-سوچیں) +- [انٹرویو لینے والے کے لیے سوالات](#انٹرویو-لینے-والے-کے-لیے-سوالات) +- [ایک بار جب آپ کو نوکری مل جائے گی۔](#ایک-بار-جب-آپ-کو-نوکری-مل-جائے-گی) ---------------- ذیل کی چیزیں اختیاری ہیں ---------------- -## اضافی مواد +## اختیاری اضافی عنوانات اور مواد - [اضافی کتابیں](#additional-books) +- [سسٹم ڈیزائن، اسکیل ایبلٹی، ڈیٹا ہینڈلنگ](#system-design-scalability-data-handling) (اگر آپ کو 4 سال سے زیادہ کا تجربہ ہے۔) - [اضافی معلومات](#additional-learning) - [کمپائلر](#compilers) - [ایماکس اور vi(m)](#emacs-and-vim) @@ -176,7 +195,6 @@ - [لینیرپروگرامنگ](#linear-programming-videos) - [جیومیٹری، کنویکس ہل](#geometry-convex-hull-videos) - [مجرد ریاضی](#discrete-math) - - [مشین لرننگ](#machine-learning) - [کچھ مضامین پر اضافی تفصیل](#additional-detail-on-some-subjects) - [ویڈیو سیریز](#video-series) - [کمپیوٹر سائنس کورسز](#computer-science-courses) @@ -184,327 +202,377 @@ --- -## Why use it? +## اسے کیوں استعمال کریں؟ -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good. -Every data structure I've ever used was built into the language, and I didn't know how they worked -under the hood at all. I've never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and -thousands of associative arrays, but I've never created data structures from scratch. +اگر آپ کسی بڑی کمپنی میں سافٹ ویئر انجینئر کے طور پر کام کرنا چاہتے ہیں تو یہ وہ چیزیں ہیں جو آپ کو جاننا ہوں گی۔ -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +اگر آپ میری طرح کمپیوٹر سائنس میں ڈگری حاصل کرنے سے محروم رہ گئے تو اس سے آپ کی زندگی کے چار سال بچ جائیں گے۔ -## How to use it +جب میں نے یہ پروجیکٹ شروع کیا تھا، مجھےہیپ ، بگ-O یا ٹریز جیسا کچھ معلوم نہیں تھا،نہ ہی یہ معلوم تھا کہ گراف کے ساتھ کام کیسے کرتےہیں. اگر مجھے سورٹنگ الگورتھم کو کوڈ کرنا ہوتا تو میں آپ کو بتا سکتا ہوں کہ یہ میے لیے بہت مشکل کام تھا۔ +ہر ڈیٹا سٹرکچر جو میں نے کبھی استعمال کیا تھا مجھے نہیں معلوم تھا کہ وہ کیسے کام کرتاہے۔ مجھے کبھی بھی میموری کو سنبھالنے کی ضرورت نہیں تھی جب تک کہ میں جس پروسس کو چلا رہا ہوں اسے "میموری آؤٹ" کا ایرر نہیں ملتا تھا۔ میں نے اپنی زندگی میں چند کثیر جہتی اریزاورہزاروں ایسوسی ایٹیو ارےکا استعمال کیا، لیکن میں نے کبھی بھی شروع سے ڈیٹا سٹرکچرز نہیں بنائے۔ -Everything below is an outline, and you should tackle the items in order from top to bottom. +یہ ایک طویل منصوبہ ہے۔ اس میں آپ کو مہینے لگ سکتے ہیں۔ اگر آپ پہلے ہی اس میں سے بہت کچھ سے واقف ہیں تو اس میں آپ کو بہت کم وقت لگے گا۔ -I'm using Github's special markdown flavor, including tasks lists to check progress. +## اسے کیسے استعمال کریں -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +نیچے دی گئی ہر چیز ایک خاکہ ہے، اور آپ کو اشیاء کو اوپر سے نیچے تک ترتیب سے نمٹنا چاہیے۔ +میں GitHub کا خصوصی مارک ڈاؤن ورژن استعمال کر رہا ہوں، جس میں پیش رفت کو ٹریک کرنے کے لیے ٹاسک کی فہرست شامل ہے۔ + - [GitHub-flavored markdown کے بارے میں مزید](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - Fork a branch and follow the commands below +### اگر آپ گٹ استعمال نہیں کرنا چاہتے -`git checkout -b progress` +اس صفحہ پر، اوپر کے قریب کوڈ(Code) بٹن پر کلک کریں، پھر "زپ ڈاؤن لوڈ کریں(Download Zip)" پر کلک کریں۔ فائل کو ان زپ کریں اور آپ ٹیکسٹ فائلوں کے ساتھ کام کر سکتے ہیں۔ -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +اگر آپ ایک کوڈ ایڈیٹر میں کھول رہے ہیں جو مارک ڈاؤن کو سمجھتا ہے، تو آپ کو ہر چیز اچھی طرح سے فارمیٹ کی ہوئی نظر آئے گی۔ -`git fetch --all` +![ریپو کو زپ فائل کے طور پر کیسے ڈاؤن لوڈ کریں۔](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - Mark all boxes with X after you completed your changes +### اگر آپ گٹ کے ساتھ کام کر سکتے ہیں -`git add .` +ایک نئی برانچ بنائیں تاکہ آپ اس طرح کے آئٹمز کو چیک کر سکیں، صرف بریکٹ میں ایک x لگائیں: [x] -`git commit -m "Marked x"` + ۱. ***گٹ ہب (GitHub) ریپو*** `https://github.com/jwasham/coding-interview-university` کوفورک بٹن پر کلک کرکے فورک کریں۔ -`git rebase jwasham/master` + ![GitHub ریپو کو فورک کریں:](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -`git push --force` +۲. اپنی لوکل ریپو پر کلون کریں: -[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + ``` + git clone git@github.com:/coding-interview-university.git + cd coding-interview-university + git checkout -b progress + git remote add jwasham https://github.com/jwasham/coding-interview-university + git fetch --all + ``` +۳. اپنی تبدیلیاں مکمل کرنے کے بعد تمام خانوں کو X کے ساتھ نشان زد کریں: -## Don't feel you aren't smart enough + ``` + git add . + git commit -m "Marked x" + git rebase jwasham/main + git push --set-upstream origin progress + git push --force + ``` -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +## اپنے آپ کو کم مت سمجھو -## About Video Resources +- کامیاب سافٹ ویئر انجینئرز ہوشیار ہوتے ہیں، لیکن بہت سے لوگوں کو یہ عدم تحفظ ہوتا ہے کہ وہ اتنے ہوشیار نہیں ہیں۔ +- مندرجہ ذیل ویڈیوز آپ کو اس عدم تحفظ پر قابو پانے میں مدد کر سکتی ہیں: + - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. +## ویڈیو وسائل کے بارے میں ایک نوٹ - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. +کچھ ویڈیوز صرف Coursera یا EdX کلاس میں داخلہ لے کر دستیاب ہیں۔ یہ MOOCs کہلاتے ہیں۔ +بعض اوقات کلاسز سیشن میں نہیں ہوتیں اس لیے آپ کو چند ماہ انتظار کرنا پڑتا ہے، اس لیے آپ کو رسائی نہیں ہوتی۔ +آن لائن کورس کے وسائل کو مفت اور ہمیشہ دستیاب عوامی ذرائع سے تبدیل کرنا بہت اچھا ہوگا، جیسے یوٹیوب ویڈیوز (ترجیحی طور پر یونیورسٹی کے لیکچرز)، تاکہ آپ لوگ کسی بھی وقت ان کا مطالعہ کر سکیں، بجاے کہ صرف اس وقت کے جب ایک مخصوص آن لائن کورس سیشن میں ہو۔ -## Interview Process & General Interview Prep +## ایک پروگرامنگ زبان کا انتخاب -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Cracking the Facebook Coding Interview - - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] Prep Course: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - - [ ] [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. - - [ ] [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. - - [ ] [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. +آپ جو کوڈنگ انٹرویوز کرتے ہیں اس کے لیے آپ کو پروگرامنگ لینگویج کا انتخاب کرنا ہوگا، +لیکن آپ کو ایک ایسی زبان بھی تلاش کرنے کی ضرورت ہوگی جسے آپ کمپیوٹر سائنس کے تصورات کا مطالعہ کرنے کے لیے استعمال کر سکیں۔ -## Pick One Language for the Interview +ترجیحی طور پر زبان ایک ہی ہونی چاہیے، تانکہ آپ کو صرف ایک میں مہارت حاصل کرنے کی ضرورت ہو۔ -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +### اس اسٹڈی پلان کے لیے -- C++ -- Java -- Python +جب میں نے مطالعہ کا منصوبہ بنایا تو میں نے اس کے لیے 2 زبانیں استعمال کیں: C اور Python -You could also use these, but read around first. There may be caveats: +* سی (C): نچلی سطح کی زبان۔ آپ کو پوائنٹرز اور میموری ایلوکیشن/ڈی ایلوکیشن سے نمٹنے کی اجازت دیتا ہے، تاکہ آپ اپنی خون میں ڈیٹا سٹرکچر اور الگورتھم کو محسوس کریں۔ پائتھون یا جاوا جیسی اعلیٰ سطح کی زبانوں میں، یہ آپ سے پوشیدہ ہیں۔ روزمرہ کے کام میں، یہ بہت اچھا ہے، لیکن جب آپ یہ سیکھ رہے ہیں کہ یہ نچلے درجے کے ڈیٹا سٹرکچر کیسے بنائے جاتے ہیں، تو جڑ کے قریب محسوس کرنا بہت اچھا ہے۔ + - سی ہر جگہ ہے۔ جب آپ مطالعہ کر رہے ہوں گے تو آپ کو کتابوں، لیکچرز، ویڈیوز، *ہر جگہ* میں مثالیں نظر آئیں گی۔ + - [سی پروگرامنگ لینگویج، دوسرا ایڈیشن (The C Programming Language, 2nd Edition)](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - یہ ایک مختصر کتاب ہے، لیکن یہ آپ کو C زبان پر بہت اچھا کنٹرول دے گی اور اگر آپ اس پر تھوڑی سی مشق کریں گے تو آپ جلد مہارت حاصل کر لیں گے۔ C کو سمجھنا آپ کو یہ سمجھنے میں مدد کرتا ہے کہ پروگرام اور میموری کیسے کام کرتے ہیں۔ + - آپ کو کتاب کی بہت گہرائی میں جانے کی ضرورت نہیں ہے (نہ ہی اسے ختم کرنے کی)۔ بس اتنی مہارت حاصل کر لیں کے آپ کو C میں پڑھنے اور لکھنے میں آسانی ہو۔ + - [کتاب میں موجود سوالات کے جوابات](https://github.com/lekkas/c-algorithms) +* پائتھون(Python): جدید اور اظہار کرنے میں بہت آسان، میں نے یہ سیکھی کیونکہ یہ بہت مفید ہے اور مجھے انٹرویو میں کم کوڈ لکھنے میں مدد دیتی ہے۔ -- JavaScript -- Ruby +یہ میری ترجیح ہے۔ تم وہی کرو جو تمہیں پسند ہو۔ -Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/) +ہو سکتا ہے آپ کو اس کی ضرورت نہ ہو، لیکن نئی زبان سیکھنے کے لیے یہاں کچھ سائٹیں ہیں: +- [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/) -You need to be very comfortable in the language and be knowledgeable. +### آپ کے کوڈنگ انٹرویو کے لیے -Read more about choices: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ +آپ انٹرویو کا کوڈنگ حصہ کرنے کے لیے ایسی زبان استعمال کر سکتے ہیں جس میں آپ کو آسانی ہو، لیکن بڑی کمپنیوں کے لیے یہ بہترین انتخاب ہیں: -[See language resources here](programming-language-resources.md) +- سی++ (C++) +- جاوا (Java) +- پائتھون (Python) -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +آپ مندرجہ ذیل کو بھی استعمال کرسکتے ہیں لیکن پہلے پڑھ سکتے ہیں۔ انتباہات ہو سکتے ہیں: -## Book List +- جاوا اسکرپٹ (JavaScript) +- روبی (Ruby) -This is a shorter list than what I used. This is abbreviated to save you time. +یہاں ایک مضمون ہے جو میں نے انٹرویو کے لیے زبان کے انتخاب کے بارے میں لکھا تھا: +[کوڈنگ انٹرویو کے لیے ایک زبان چنیں](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/) -### Interview Prep +آپ کو زبان میں بہت مہارت اور علم رکھنے کی ضرورت ہے۔ -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - answers in C++ and Java - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +انتخاب کے بارے میں مزید پڑھیں: +- [اپنے کوڈنگ انٹرویو کے لیے صحیح زبان کا انتخاب کریں](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -### If you have tons of extra time: +[زبان سے متعلق وسائل یہاں دیکھیں](programming-language-resources.md) -Choose one: +## ڈیٹا سٹرکچرز اور الگورتھم کے لیے کتابیں -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [ ] Elements of Programming Interviews (Java version) - - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +یہ کتاب کمپیوٹر سائنس کے لیے آپ کی بنیاد بنائے گی۔ -### Language Specific +صرف ایک کا انتخاب کریں، ایسی زبان میں جس میں آپ کو مہارت حاصل ہو۔ آپ کو بہت زیادہ پڑھنا اور کوڈنگ کرنا ہوگی۔ -**You need to choose a language for the interview (see above).** +### سی (C) -Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +- [سی میں الگورتھم، حصے 1-5 (بنڈل)، تیسرا ایڈیشن](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - بنیادی باتیں، ڈیٹا سٹرکچر، سارٹنگ، تلاش کرنا، اور گراف الگورتھم -If you read through one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +### پا ئیتھون (Python) -[Additional language-specific resources here.](programming-language-resources.md) +- [پا ئیتھون میں ڈیٹا کے سٹرکچر اور الگورتھم](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - مصنف Goodrich, Tamassia, Goldwasser + - مجھے یہ کتاب پسند ہے۔ اس نے ہر چیز کا احاطہ کیا ہے۔ + - پائتھون کے کوڈ + - میری چمکتی ہوئی کتاب کی رپورٹ: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -### C++ +### جاوا (Java) -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +تمھارا انتخاب: -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - مفت کورسیرا کورس جو کتاب کا احاطہ کرتا ہے (مصنفین کے ذریعہ پڑھایا گیا): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. +### سی++ (++C) -### Java +تمھارا انتخاب:: -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!) on coursera: - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -OR: +## انٹرویو کی تیاری کی کتابیں -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. +آپ کو ان میں سے بہت زیادہ خریدنے کی ضرورت نہیں ہے۔ ایمانداری سے "کریکنگ دی کوڈنگ انٹرویو(Cracking the Coding Interview)" شاید کافی ہے، +لیکن میں نے خود کو مزید مشق دینے کے لیے بہت کچھ خریدا۔ لیکن میں ہمیشہ بہت زیادہ کرتا ہوں۔ -### Python +میں نے یہ دونوں خریدے ہیں۔ انہوں نے مجھے کافی مشق دی۔ -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +- [پروگرامنگ انٹرویوز کا انکشاف: انٹرویو کے ذریعے اپنے راستے کی کوڈنگ، 4th ایڈیشن](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - سی++ (++C) اور جاوا (Java) میں جوابات + - کوڈنگ انٹرویو کو کریک کرنے کے لیے یہ ایک اچھی شروعات ہے۔ + - زیادہ مشکل نہیں۔ زیادہ تر مسائل اس سے آسان ہوسکتے ہیں جو آپ انٹرویو میں دیکھیں گے (اس سے جو میں نے پڑھا ہے) +- [کریکنگ دی کوڈنگ انٹرویو، چھٹا ایڈیشن](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - جاوا میں جوابات +### اگر آپ کے پاس بہت زیادہ وقت ہے: -## Before you Get Started +ایک کا انتخاب کرو: -This list grew over many months, and yes, it kind of got out of hand. +- [پروگرامنگ انٹرویوز کے عناصر (C++ ورژن)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [پا ئیتھون میں پروگرامنگ انٹرویوز کے عناصر](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [پروگرامنگ انٹرویوز کے عناصر (جاوا ورژن)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [ساتھی پروجیکٹ - کتاب میں ہر مسئلے کے لیے ٹیسٹ کیسز](https://github.com/gardncl/elements-of-programming-interviews) -Here are some mistakes I made so you'll have a better experience. +## میری غلطیاں مت کرنا -### 1. You Won't Remember it All +یہ فہرست کئی مہینوں میں بڑھی، اور ہاں، یہ ہاتھ سے نکل گئی۔ -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +یہ کچھ غلطیاں ہیں جو میں نے کی تھی۔ تو آپ کو ایک بہتر تجربہ ملے گا۔ اور آپ مہینوں کا وقت بچائیں گے۔ -Read please so you won't make my mistakes: +### 1. آپ سب یادنہیں رکھ سکیں گے -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). +میں نے گھنٹوں کی ویڈیوز دیکھی اور کافی نوٹ لیے، اور مہینوں بعد مجھے بہت کچھ یاد نہیں تھا۔ میں نے 3 دن گزارے، اپنے نوٹس پڑھے اور فلیش کارڈز بنائے، تاکہ میں جائزہ لے سکوں۔ مجھے اس سارے علم کی ضرورت نہیں تھی۔ -A course recommended to me (haven't taken it): [Learning how to Learn](https://www.coursera.org/learn/learning-how-to-learn) +براہ کرم، پڑھیں تاکہ آپ میری غلطی نہ کریں: -### 2. Use Flashcards +[کمپیوٹر سائنس کا علم برقرار رکھنا](https://startupnextdoor.com/retaining-computer-science-knowledge/). -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. +### 2. فلیش کارڈز استعمال کریں -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +اس مسئلے کو حل کرنے کے لیے، میں نے ایک چھوٹی سی فلیش کارڈز سائٹ بنائی جہاں میں 2 اقسام کے فلیش کارڈز شامل کر سکتا ہوں: جنرل اور کوڈ۔ +ہر کارڈ کی فارمیٹنگ مختلف ہوتی ہے۔ میں نے ایک موبائل مسابقتی ویب سائٹ بنائی ہے، تاکہ میں اپنے فون یا ٹیبلیٹ پر جہاں بھی ہوں، جائزہ لے سکوں۔ -Make your own for free: +اپنےلیے مفت میں بنائیں: -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db): +- [فلیش کارڈز سائٹ ریپو](https://github.com/jwasham/computer-science-flash-cards) -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. +**میں اپنے فلیش کارڈز استعمال کرنے کا مشورہ نہیں دیتا۔** یہ بہت زیادہ ہیں اور ان میں سے زیادہ تر چیزیں ایسی ہیں جن کی آپ کو ضرورت نہیں ہے۔ -**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. +لیکن اگر آپ میری بات نہیں سننا چاہتے، تو آپ یہاں جائیں: +- [میرے فلیش کارڈز کا ڈیٹا بیس (1200 کارڈز)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [میرے فلیش کارڈز کا ڈیٹا بیس (انتہائی - 1800 کارڈز)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. +ذہن میں رکھیں کہ میں اوور بورڈ گیا اور میرے جو کارڈز ہیں ان میں اسمبلی لینگویج اور پائیتھون کی چھوٹی معلومات سے لے کر مشین لرننگ اور اعدادوشمار تک ہر چیز کا احاطہ کیا گیا ہے۔ +جو کے ضرورت سے بہت زیادہ ہے۔ -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +**فلیش کارڈز پر نوٹ:** پہلی بار جب آپ پہچانیں گے کہ آپ کو جواب معلوم ہے تو اسے معلوم کے طور پر نشان زد نہ کریں۔ایک ہی کارڈ دیکھیں + اور اس کا کئی بار صحیح جواب دیں اس سے پہلے کہ آپ واقعی اسے نشان زدہ کریں۔ تکرار اس علم کو آپ کا دماغ کی مزید گہرائی میں اتار دے گی۔ -### 3. Start doing coding interview questions while you're learning data structures and algorithms, +میری فلیش کارڈ سائٹ کو استعمال کرنے کا ایک متبادل ہے [Anki](http://ankisrs.net/)، جو مجھے متعدد بار تجویز کیا گیا ہے۔ +یہ آپ کو یاد رکھنے میں مدد کے لیے تکرار کا نظام استعمال کرتا ہے۔ یہ صارف دوست ہے، تمام پلیٹ فارمز پر دستیاب ہے اور اس میں کلاؤڈ سنک سسٹم ہے۔ +ای-اہ-ایس (iOS) پر اس کی قیمت $25 ہے لیکن دوسرے پلیٹ فارمز پر مفت ہے۔ -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 comfortable with it, like linked lists, open one of the coding interview books and do a couple of questions regarding -linked lists. Then move on to the next learning topic. Then later, go back and do another linked list problem, -or recursion problem, or whatever. But keep doing problems while you're learning. You're not being hired for knowledge, -but how you apply the knowledge. There are several books and sites I recommend. -See here for more: [Coding Question Practice](#coding-question-practice) +انکی (Anki)فارمیٹ میں میرا فلیش کارڈ ڈیٹا بیس: https://ankiweb.net/shared/info/25173560 (شکریہ [@xiewenya](https://github.com/xiewenya)). -### 4. Review, review, review +کچھ طلباء نے سفید جگہ کے ساتھ فارمیٹنگ کے مسائل کا ذکر کیا ہے جنہیں درج ذیل کام کرکے حل کیا جا سکتا ہے: ڈیک کھولیں، کارڈ میں ترمیم کریں، کارڈز پر کلک کریں، "اسٹائلنگ" ریڈیو بٹن کو منتخب کریں، کارڈ کی کلاس میں ";white-space: pre" ممبر کو شامل کریں۔ -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +### 3. جب آپ سیکھ رہے ہوں تو کوڈنگ انٹرویو کے سوالات کریں -Take a break from programming problems for a half hour and go through your flashcards. +یہ بہت اہم ہے. -### 5. Focus +جب آپ ڈیٹا سٹرکچر اور الگورتھم سیکھ رہے ہوں تو انٹرویو کے سوالات کو کوڈنگ کرنا شروع کریں۔ -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 +ایک بار جب آپ نے کوئی موضوع سیکھ لیا، اور اس میں کسی حد تک مہارت محسوس کریں، مثال کے طور پر، **لنکڈلسٹ**: +1. ان میں سے ایک کھولیں [کوڈنگ انٹرویو کی کتابیں](#interview-prep-books) (یا مندرجہ ذیل کوڈنگ سوالات ویب سائٹس) +2. لنکڈلسٹ سے متعلق 2 یا 3 سوالات کریں۔ +3. اگلے موضوع کی طرف بڑھیں۔ +4. بعد میں، واپس جائیں اور لنکڈ لسٹ کے مزید 2 یا 3 سوالات کریں۔ +5. یہ ہر نئے موضوع کے ساتھ کریں جو آپ سیکھتے ہیں۔ -These are prevalent technologies but not part of this study plan: +**جب آپ یہ سب چیزیں سیکھ رہے ہوں تو سوالات کرتے رہیں، اس کے بعد نہیں۔** -- SQL -- Javascript -- HTML, CSS, and other front-end technologies +آپ کو علم کی وجہ سے نوکری پر نہیں رکھا جا رہا ہے، بلکہ آپ کو اس لیے رکھا گیا ہے کہ آپ علم کو کیسے استعمال کرتے ہیں۔ -## The Daily Plan +ذیل میں اس کے لیے بہت سے وسائل موجود ہیں۔ کام جاری رکھیں۔ -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. +### 4. توجہ -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +بہت سارے خلفشار ہیں جن میں قیمتی وقت لگ سکتا ہے۔ توجہ اور ارتکاز مشکل ہے۔ کچھ میوزک آن کریں۔ +دھن کے بغیر اور آپ اچھی طرح توجہ مرکوز کر سکیں گے۔ -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). +## جو آپ نہیں سیکھیں گے -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python or Java)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +یہ مروجہ ٹیکنالوجیز ہیں لیکن اس اسٹڈی پلان کا حصہ نہیں ہیں: -I may not have time to do all of these for every subject, but I'll try. +- جاوا اسکرپٹ +- فرنٹ اینڈ ٹیکنالوجیز اور HTML، CSS +- ایس کیو ایل (SQL) -You can see my code here: +## روزانہ کا منصوبہ + +یہ کورس بہت سارے مضامین پر مشتمل ہے۔ ہر ایک میں شاید آپ کو کچھ دن لگیں گے، یا شاید ایک ہفتہ یا اس سے بھی زیادہ۔ یہ آپ کے شیڈول پر منحصر ہے۔ + +ہر روز، فہرست سے اگلا مضمون لیں، اس موضوع کے بارے میں کچھ ویڈیوز دیکھیں، اور پھر اس ڈیٹا سٹرکچر یا الگورتھم کا، اس زبان میں جو آپ نے اس کورس کے لیے منتخب کی ہے ،کاایک کوڈ لکھیں۔ + +آپ میرا کوڈ یہاں دیکھ سکتے ہیں: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -You don't need to memorize the guts of every algorithm. +آپ کو ہر الگورتھم کو حفظ کرنے کی ضرورت نہیں ہے۔ آپ کو صرف اتنا سمجھنے کی ضرورت ہے کہ آپ اپنا کوڈ لکھ سکیں۔ -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +## کوڈنگ سوال کی مشق -## Prerequisite Knowledge + ابھی کیوں؟ میں انٹرویو کے لیے تیار نہیں ہوں۔ -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) +[توپھر واپس جا کر یہ پڑھیں۔](#3-do-coding-interview-questions-while-youre-learning) -- [ ] **How computers process a program:** - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) +آپ کو پروگرامنگ کی مشقیں کرنے کی کیوں ضرورت ہے: +- سوال کی شناخت، اور کہاں صحیح ڈیٹا اسٹرکچر اور الگورتھم فٹ ہوتے ہیں +- سوال کے تقاضوں کو سمجھنا +- سوال کے ذریعے اپنے طریقے سے بات کرنا جیسا کہ آپ انٹرویو میں کریں گے +- کمپیوٹر کے بجائے وائٹ بورڈ یا کاغذ پر کوڈنگ +- اپنے حل کے لیے وقت اور میموری کی اصلاح کے بارے میں سوچنا (نیچے بگ-او دیکھیں) +- اپنے جوابات کی جانچ کرنا + +یہ انٹرویو میں سوال حل کرنے کے طریقہ کار، اور بات چیت کے طریقے کا ایک بہترین تعارف ہے۔ آپ کو یہ پروگرامنگ انٹرویو کی کتابوں سے بھی ملے گا، لیکن مجھے یہ شاندار معلوم ہوا: +[الگورتھم ڈیزائن کینوس (Algorithm design canvas)](http://www.hiredintech.com/algorithm-design/) + +وائٹ بورڈ یا کاغذ پر کوڈ لکھیں، کمپیوٹر پر نہیں۔ کچھ نمونے کے جوابات کے ساتھ ٹیسٹ کریں۔ پھر اسے ٹائپ کریں اور کمپیوٹر پر اس کی جانچ کریں۔ + +اگر آپ کے پاس گھر میں وائٹ بورڈ نہیں ہے تو آرٹ اسٹور سے ایک بڑا ڈرائنگ پیڈ لیں۔ آپ صوفے پر بیٹھ کر مشق کر سکتے ہیں۔ +یہ میرا "صوفہ وائٹ بورڈ" ہے۔ میں نے صرف دکھانے کے لیے تصویر میں قلم شامل کیا۔ اگر آپ قلم استعمال کرتے ہیں، تو آپ چاہیں گے کہ آپ اسے مٹابھی سکیں۔ +کیونکہ یہ جلدی گندا ہو جاتا ہے. **میں پنسل اور صافی کا استعمال کرتا ہوں۔** + +![میرا صوفہ وائٹ بورڈ](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**کوڈنگ سوال کی مشق پروگرامنگ کے مسائل کے جوابات کو یاد کرنے کے بارے میں نہیں ہے۔** + +## کوڈنگ کے سوالات/مسائل + +اپنی اہم کوڈنگ انٹرویو کی کتابوں کو مت بھولنا [یہاں](#interview-prep-books). + +سوالات حل کرنا: +- [حل تلاش کرنے کا طریقہ](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [ٹاپ کوڈر پرابلم اسٹیٹمنٹ کو ڈسیکٹ کرنے کا طریقہ](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +کوڈنگ انٹرویو سوال کی ویڈیوز: +- [IDeserve (88 ویڈیوز)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy (5 پلے لسٹس)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - سوالات کے حل کے لیے بہترین +- [Nick White - LeetCode Solutions (187 ویڈیوز)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - حل اور کوڈ کی اچھی وضاحت + - آپ مختصر وقت میں کئی دیکھ سکتے ہیں۔ +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +چیلنج/پریکٹس سائٹس: +- [لیٹ کوڈ(LeetCode)](https://leetcode.com/) + - میری پسندیدہ کوڈنگ سوالات کی سائٹ۔ یہ کم از کم 1-2 مہینوں کے لئے(جن میں آپ تیاری کر رہے ہوں گے) سبسکرپشن کی رقم کے قابل ہے۔ + - کوڈ واک تھرو کے لیے اوپر نک وائٹ اور فشر کوڈر کی ویڈیوز دیکھیں۔ +- [ہیکر رینک (HackerRank)](https://www.hackerrank.com/) +- [ٹاپ کوڈر (TopCoder)](https://www.topcoder.com/) +- [کوڈفورسز(Codeforces)](https://codeforces.com/) +- [کوڈیلیٹی(Codility)](https://codility.com/programmers/) +- [گیکس فار گیکس(Geeks for Geeks)](https://practice.geeksforgeeks.org/explore/?page=1) +- [الگو ایکسپرٹ(AlgoExpert)](https://www.algoexpert.io/product) + - گوگل انجینئرز کے ذریعہ تخلیق کیا گیا، یہ آپ کی صلاحیتوں کو نکھارنے کا ایک بہترین ذریعہ بھی ہے۔ +- [پروجیکٹ یولر(Project Euler)](https://projecteuler.net/) + - بہت زیادہ ریاضی پر مرکوز ہے، اور انٹرویو کوڈنگ کے لیے واقعی موزوں نہیں ہے۔ + +## آو شروع کریں + +باتیں کافی ہیں، آئیے اب سیکھتے ہیں! + +لیکن سیکھتے وقت اوپر سے کوڈنگ سوالات کرنا نہ بھولیں! -## Algorithmic complexity / Big-O / Asymptotic analysis +## الگورتھمک پیچیدگی / بگ-او / اسیمپٹوٹک تجزیہ -- Nothing to implement -- There are a lot of videos here. Just watch enough until you understand it. You can always come back and review. -- If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. +- یہاں کرنے کو کچھ نہیں، آپ صرف ویڈیوز دیکھیں گے اور نوٹ لیں گے! آہا! +- یہاں بہت ساری ویڈیوز ہیں۔ صرف اس وقت تک دیکھیں جب تک آپ اسے سمجھ سکیں۔ آپ ہمیشہ واپس آ کر نظر ثانی کر سکتے ہیں۔ +- پریشان نہ ہوں اگر آپ اس کے پیچھے کی تمام ریاضی کو نہیں سمجھتے ہیں۔ +- آپ کو صرف یہ سمجھنے کی ضرورت ہے کہ بگ-او کے لحاظ سے الگورتھم کی پیچیدگی کو کیسے ظاہر کیا جائے۔ - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/orders-of-growth-6PKkX) -- [ ] [Asymptotics (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/asymptotics-bXAtM) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://www.coursera.org/lecture/algorithmic-thinking-1/illustrating-big-o-YVqzv) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) -## Data Structures +یہ اس کے بارے میں کافی ہے. + +جب آپ "کریکنگ دی کوڈنگ انٹرویو" سے گزرتے ہیں، تو اس پر ایک باب ہوتا ہے، اور آخر میں یہ دیکھنے کے لیے ایک کوئز ہوتا ہے کہ آپ مختلف الگورتھم کی رن ٹائم پیچیدگی کی شناخت کر سکتے ہیں یانہیں۔ یہ ایک زبردست جائزہ اور ٹیسٹ ہے۔ + +## ڈیٹا سٹرکچرز - ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) + - [ ] About Arrays: + - [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [Arrays (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) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implement a 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 - start with 16, or if starting number is greater, use power of 2 - 16, 32, 64, 128 - [ ] size() - number of items @@ -530,21 +598,22 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Linked Lists - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - this builds the intuition. + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. + - not the whole video, just portions about Node struct and memory allocation - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [ ] [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Gotcha: you need pointer to pointer knowledge: (for when you pass a pointer to a function that may change the address where that pointer points) This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): + - [ ] Implement (I did with tail pointer & without): - [ ] size() - returns number of data elements in list - [ ] empty() - bool returns true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) @@ -560,13 +629,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - No need to implement -- ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) +- ### Stacks + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] 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) @@ -588,44 +657,46 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - dequeue: O(1) (linked list and array) - empty: O(1) (linked list and array) -- ### Hash table +- ### Hash Table - [ ] Videos: - [ ] [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) - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - [ ] Online Courses: - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] implement with array using linear probing + - [ ] Implement with array using linear probing - hash(k, m) - m is size of hash table - add(key, value) - if key already exists, update value - exists(key) - get(key) - remove(key) -## More Knowledge +## مزید معلومات - ### Binary search - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) + - [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - binary search (on sorted array of integers) - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: @@ -636,27 +707,26 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) + - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits + - [ ] Count set bits - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] swap values: + - [ ] Swap values: - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: + - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) ## Trees -- ### Trees - Notes & Background - - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms +- ### Trees - Intro + - [ ] [Intro to Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Tree Traversal (video)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS notes: - level order (BFS, using queue) @@ -675,11 +745,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) @@ -707,16 +775,15 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - ### Heap / Priority Queue / Binary Heap - visualized as a tree, but is usually linear in storage (array, linked list) - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) @@ -729,17 +796,16 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] is_empty() - returns true if heap contains no elements - [ ] extract_max - returns the max item, removing it - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x + - [ ] remove(x) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap ## Sorting - [ ] Notes: - Implement sorts & know best case/worst case, average complexity of each: - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") + - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) @@ -748,26 +814,27 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. +- For heapsort, see Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) + - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) + - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) + - [ ] [1. Quicksort](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21: Radix Sort(video)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) @@ -798,15 +865,15 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. + - For heapsort, see Heap data structure above - [ ] Not required, but I recommended them: - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) @@ -819,41 +886,40 @@ If you need more detail on this subject, see "Sorting" section in [Additional De ## Graphs -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +گراف کو کمپیوٹر سائنس میں بہت سے مسائل کی نمائندگی کرنے کے لیے استعمال کیا جا سکتا ہے، اس لیے یہ سیکشن لمبا ہے، جیسا کہ ٹریز اور ترتیب / سارٹنگ تھے۔ - Notes: - - There are 4 basic ways to represent a graph in memory: + - میموری میں گراف کی نمائندگی کرنے کے 4 بنیادی طریقے ہیں: - objects and pointers - adjacency matrix - adjacency list - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. + - ہر ایک نمائندگی اور اس کے فوائد اور نقصانات سے اپنے آپ کو واقف کریں۔ + - BFS اور DFS - ان کی کمپیوٹیشنل پیچیدگی، ان کے تجارتی معاہدوں، اور انہیں حقیقی کوڈ میں لاگو کرنے کا طریقہ جانیں۔ + - جب کوئی سوال پوچھا جائے تو پہلے گراف پر مبنی حل تلاش کریں، پھر اگر کوئی نہیں تو آگے بڑھیں۔ - [ ] MIT(videos): - - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) - [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - [ ] Graphs (review and more): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) @@ -879,7 +945,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph -## Even More Knowledge +## اس سے بھی زیادہ معلومات - ### Recursion - [ ] Stanford lectures on recursion & backtracking: @@ -887,21 +953,25 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? + - When it is appropriate to use it? + - How is tail recursion better than not? - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - + - [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) + + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + problem as being a candidate for dynamic programming. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 22 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) @@ -911,17 +981,13 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] SOLID OOP Principles: [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - ### Design patterns - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Learn these patterns: @@ -942,15 +1008,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - ### Combinatorics (n choose k) & Probability - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) @@ -973,9 +1034,10 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) @@ -983,6 +1045,13 @@ Graphs can be used to represent many problems in computer science, so this secti - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. +- ### How computers process a program + + - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - ### Caches - [ ] LRU cache: - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) @@ -999,26 +1068,27 @@ Graphs can be used to represent many problems in computer science, so this secti - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Covers: - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock + - Difference between processes and threads + - Processes + - Threads + - Locks + - Mutexes + - Semaphores + - Monitors + - How they work? + - Deadlock + - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - - How context switching is initiated by the operating system and underlying hardware + - How context switching is initiated by the operating system and underlying hardware? - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] concurrency in Python (videos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) @@ -1043,26 +1113,22 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos - - ### String searching & manipulations - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. + to track the path + - I read through code, but will not implement - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1073,13 +1139,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) @@ -1093,9 +1158,9 @@ Graphs can be used to represent many problems in computer science, so this secti - The first half is enough. - ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) + - **If you have networking experience or want to be a reliability engineer or operations engineer, expect questions** + - Otherwise, this is just good to know + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) @@ -1109,19 +1174,182 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) +--- + +## حتمی جائزہ + + اس سیکشن میں چھوٹی ویڈیوز ہوں گی جنہیں آپ زیادہ تر اہم تصورات کا جائزہ لینے کے لیے بہت تیزی سے دیکھ سکتے ہیں۔ + اگر آپ اکثر ریفریشر چاہتے ہیں تو یہ اچھا ہے۔ + +- [ ] 2-3 منٹ کی مختصر سبجیکٹ ویڈیوز کی سیریز (23 ویڈیوز) + - [ویڈیوز](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (38 ویڈیوز): + - [ویڈیوز](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +--- + +## اپنے ریزیومے کو اپ ڈیٹ کریں + +- درج کتابوں میں ریزیومے کی تیاری کی معلومات دیکھیں: +- "کریکنگ دی کوڈنگ انٹرویو" اور "پروگرامنگ انٹرویوز بے نقاب" +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - مصنف کی طرف سے نوٹ: "یہ یونائیٹڈ سٹیٹس امریکا فوکسڈ ریزیومے کے لیے ہے۔ ہندوستان اور دیگر ممالک کے لیے سی وی کی توقعات مختلف ہیں، حالانکہ بہت سے پوائنٹس ایک جیسے ہوں گے۔" +- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - اپنے ریزیومے کو شروع سے ترتیب دینے، موثر ریزیومے کا مواد لکھنے، اسے بہتر بنانے اور اپنے ریزیومے کی جانچ کرنے کے طریقے کے بارے میں تفصیلی گائیڈ + +## انٹرویو کا عمل اور عام انٹرویو کی تیاری + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + - [AlgoMonster (paid course with free content)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - The crash course for LeetCode. Covers all the patterns condensed from thousands of questions. + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - میں نے اسے استعمال کیا اور اس نے مجھے فون اسکرین اور آن سائٹ انٹرویو کے لیے آرام دہ رہنے میں مدد کی +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - پریکٹس انٹرویوز کا ہم مرتبہ ماڈل +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - FAANG کے سینئر انجینئرز کے ساتھ الگورتھم/سسٹم ڈیزائن انٹرویوز، گمنام طور پر + +## اپنے انٹرویو لینے والے کی طرح سوچیں۔ + +انٹرویو کے تقریباً 20 سوالات کے بارے میں سوچیں جو آپ کو نیچے دیے گئے آئٹمز کی لائنوں کے ساتھ ملیں گے۔ ہر ایک کے لیے کم از کم ایک جواب دیں۔ +ایک کہانی رکھیں، نہ کہ صرف ڈیٹا، کسی ایسی چیز کے بارے میں جو آپ نے حاصل کی ہے۔ + +- آپ کو یہ نوکری کیوں چاہیے؟ +- آپ نے کون سا مشکل مسئلہ حل کیا ہے؟ +- سب سے بڑے چیلنجز کا سامنا؟ +- بہترین/بدترین ڈیزائن جو آپ نے دیکھے ہیں؟ +- موجودہ مصنوعات کو بہتر بنانے کے خیالات +- آپ ایک فرد کے طور پر اور ایک ٹیم کے حصے کے طور پر بہترین کام کیسے کرتے ہیں؟ +- آپ کی کونسی مہارت یا تجربات اس کردار میں اثاثہ ہوں گے اور کیوں؟ +- آپ کو کس چیز میں سب سے زیادہ مزہ آیا [job x / project y]؟ +- سب سے بڑا چیلنج جس کا آپ نے سامنا کیا؟ +- سب سے مشکل بگ جس کا آپ نے سامنا کیا؟ +- آپ نے اس میں کیا سیکھا؟ [job x / project y]؟ +- آپ اپنے پروجیکٹ میں کیا بہتر کرتے؟ + +## انٹرویو لینے والے کے لیے سوالات + +میرے کچھ (ہو سکتا ہے کہ میں پہلے سے ہی جوابات جانتا ہوں، لیکن ان کی رائے یا ٹیم کے نقطہ نظر کو سمجھنے کے لیے): + +- آپ کی ٹیم کتنی بڑی ہے؟ +- آپ کا دیو سائیکل کیا ہے؟ کیا آپ واٹرفال/سپرنٹ/اجائیل کرتے ہیں؟ +- کیا ڈیڈ لائن پر جلدی کرنا عام ہے؟ یا لچک ہے؟ +- آپ کی ٹیم میں فیصلے کیسے ہوتے ہیں؟ +- آپ فی ہفتہ کتنی میٹنگز کرتے ہیں؟ +- کیا آپ محسوس کرتے ہیں کہ آپ کے کام کا ماحول آپ کو توجہ مرکوز کرنے میں مدد کرتا ہے؟ +- کس پر کام کر رہے ہو؟ +- آپ کو اس کے بارے میں کیا پسند ہے؟ +- کام کی زندگی کیسی ہے؟ +- کام/زندگی کا توازن کیسا ہے؟ + +## ایک بار جب آپ کو نوکری مل جائے گی + +مبارک ہو! + +سیکھتے رہیں۔ + +ابھی بھی بہت کچھ کرنا باقی ہے. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + اس نقطہ کے نیچے ہر چیز اختیاری ہے۔ داخلہ سطح کے انٹرویو کے لیے اس کی ضرورت نہیں ہے۔ تاہم، ان کا مطالعہ کرنے سےآپ کمپیوٹر سائنس کے + مزید تصورات سے زیادہ روشناس ہوں گے،اور آپ کسی بھی سافٹ ویئر انجینئرنگ کے کام کے لیے بہتر طور پر تیار ہوں گے۔ آپ ایک اچھے سافٹ ویئر انجینئر بنیں گے۔ + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book, or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment + ## System Design, Scalability, Data Handling -**You can expect system design questions if you have 4+ years of experience.** +**اگر آپ کے پاس 4+ سال کا تجربہ ہے تو آپ سسٹم ڈیزائن کے سوالات کی توقع کر سکتے ہیں۔** - Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this. + Expect to spend quite a bit of time on this - Considerations: - - scalability + - Scalability - Distill large data sets to single values - Transform one data set to another - Handling obscenely large amounts of data - - system design + - System design - features sets - interfaces - class hierarchies @@ -1131,16 +1359,16 @@ Graphs can be used to represent many problems in computer science, so this secti - performance analysis and optimization - [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below. -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [ ] Consensus Algorithms: - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) @@ -1149,7 +1377,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. + - آپ کو ان سب کی ضرورت نہیں ہے۔ صرف چند ایک منتخب کریں جو آپ کی دلچسپی رکھتے ہیں۔ - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1158,15 +1386,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) @@ -1175,299 +1400,58 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Machine Learning Driven Programming: A New Programming For A New World](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [How Does The Use Of Docker Effect Latency?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (very long, just need the gist)](http://martinfowler.com/articles/serverless.html) - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv's Live Video Broadcasting Architecture](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish Architecture](http://highscalability.com/plentyoffish-architecture) - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. + - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: - 1. Understand the problem and scope: - - define the use cases, with interviewer's help - - suggest additional features - - remove items that interviewer deems out of scope - - assume high availability is required, add as a use case - 2. Think about constraints: - - ask how many requests per month - - ask how many requests per second (they may volunteer it or make you do the math) - - estimate reads vs. writes percentage - - keep 80/20 rule in mind when estimating - - how much data written per second - - total storage required over 5 years - - how much data read per second - 3. Abstract design: - - layers (service, data, caching) - - infrastructure: load balancing, messaging - - rough overview of any key algorithm that drives the service - - consider bottlenecks and determine solutions + 1. سوال اور سوال کے دائرہ کار کو سمجھیں: + - انٹرویو لینے والے کی مدد سے استعمال کے معاملات کی وضاحت کریں + - اضافی خصوصیات تجویز کریں + - ایسے آئٹمز کو ہٹا دیں جن کو انٹرویو لینے والے دائرہ کار سے باہر سمجھتے ہیں + - فرض کریں کہ اعلی دستیابی کی ضرورت ہے، اضرورت کے طور پر شامل کریں + 2. پابندیوں کے بارے میں سوچو: + - پوچھیں کہ ماہانہ کتنی درخواستیں ہیں + - پوچھیں کہ فی سیکنڈ کتنی درخواستیں ہیں (وہ اسے رضاکارانہ طور پر دے سکتے ہیں یا آپ کو حساب کتاب کرنے پر مجبور کر سکتے ہیں) + - تخمینہ پڑھنا بمقابلہ لکھنا فیصد + - تخمینہ لگاتے وقت 80/20 اصول کو ذہن میں رکھیں + - فی سیکنڈ میں کتنا ڈیٹا لکھا جاتا ہے + - 5 سالوں میں کل ذخیرہ درکار ہے + - فی سیکنڈ کتنا ڈیٹا پڑھتا ہے + 3. ڈیزائن کاخلاصہ: + - پرتیں (سروس، ڈیٹا، کیشنگ) + - انفراسٹرکچر: بوجھ میں توازن، پیغام رسانی + - سروس کو چلانے والے کسی بھی کلیدی الگورتھم کا کچا جائزہ + - رکاوٹوں پر غور کریں اور حل کا تعین کریں - Exercises: - - [Design a CDN network: old article](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - ---- - -## Final Review - - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. - -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) - ---- - -## Coding Question Practice - -Now that you know all the computer science topics above, it's time to practice answering coding problems. - -**Coding question practice is not about memorizing answers to programming problems.** - -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for 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/) - -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 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) - -Supplemental: - -- [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - -**Read and Do Programming Problems (in this order):** - -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - -See [Book List above](#book-list) - - -## Coding exercises/challenges - -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. - -- [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/) - -Coding Interview Question Videos: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [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-) - - Good explanations of solution and the code. - - You can watch several in a short time. -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) - -Challenge sites: -- [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. - - [LeetCode solutions from FisherCoder](https://github.com/fishercoder1534/Leetcode) - - See Nick White Videos above for short code-throughs -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com/invite/icjf) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) - -Language-learning sites, with challenges: -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) - -Challenge repos: -- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) - -Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview. -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. - - -## Once you're closer to the interview - -- Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - -## Your Resume - -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - - -## Be thinking of for when the interview comes - -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. - -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? - -## Have questions for the interviewer - - Some of mine (I already may know answer to but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is work/life balance? - -## Once You've Got The Job - -Congratulations! - -Keep learning. - -You're never really done. - ---- - - ***************************************************************************************************** - ***************************************************************************************************** - - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. - - ***************************************************************************************************** - ***************************************************************************************************** - ---- - -## Additional Books - - These are here so you can dive into a topic you find interesting. - -- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - an oldie but a goodie -- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book -- [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) -- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) -- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization -- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - aka CLR, sometimes CLRS, because Stein was late to the game - -- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - - For a richer, more up-to-date (2017), but longer treatment - -- [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture. + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) ## Additional Learning - - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. + + میں نے انہیں شامل کیا تاکہ آپ کو ایک بہترین سافٹ ویئر انجینئر بننے میں مدد ملے، اور کچھ ٹیکنالوجیز اور الگورتھم سے آگاہی ہو، تاکہ آپ کے پاس ایک بڑا ٹول باکس ہو۔ - ### Compilers - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) @@ -1494,6 +1478,8 @@ You're never really done. - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Unix command line tools - I filled in the list below from good tools. @@ -1511,11 +1497,11 @@ You're never really done. - ### Information theory (videos) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - more about Markov processes: + - More about Markov processes: - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below. + - See more in MIT 6.050J Information and Entropy series below - ### Parity & Hamming Code (videos) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) @@ -1526,19 +1512,19 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - also see videos below - - make sure to watch information theory videos first + - نیچے دی گئی ویڈیوز بھی دیکھیں + - پہلے انفارمیشن تھیوری کی ویڈیوز ضرور دیکھیں - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - also see videos below - - make sure to watch information theory videos first + - نیچے دی گئی ویڈیوز بھی دیکھیں + - پہلے انفارمیشن تھیوری کی ویڈیوز ضرور دیکھیں - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - make sure to watch information theory videos first + - پہلے انفارمیشن تھیوری کی ویڈیوز ضرور دیکھیں - Computerphile (videos): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) @@ -1597,7 +1583,6 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform @@ -1618,8 +1603,8 @@ You're never really done. - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - ### Locality-Sensitive Hashing - - used to determine the similarity of documents - - the opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same. + - Used to determine the similarity of documents + - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees @@ -1630,17 +1615,17 @@ You're never really done. - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): + - کم از کم ایک قسم کے بیلنسڈ بائنری ٹری کو جانیں (اور جانیں کہ اسے کیسے کوڈ کیا گیا ہے): - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena - Of these, I chose to implement a splay tree. From what I've read, you won't implement a balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code. - - splay tree: insert, search, delete functions + and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code + - Splay tree: insert, search, delete functions If you end up implementing red/black tree try just these: - - search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets. + - Search and insertion functions, skipping delete + - I want to learn more about B-Tree since it's used so widely with very large data sets - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - **AVL trees** @@ -1649,7 +1634,7 @@ You're never really done. The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter). + dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) @@ -1659,14 +1644,14 @@ You're never really done. - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc. + networking and file system code) etc - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - **Red/black trees** - - these are a translation of a 2-3 tree (see below) + - These are a translation of a 2-3 tree (see below). - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, @@ -1674,7 +1659,7 @@ You're never really done. for example, many data structures used in computational geometry can be based on red–black trees, and the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used. + hashcodes, a Red-Black tree is used - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) @@ -1706,12 +1691,12 @@ You're never really done. - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - **B-Trees** - - fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor) + - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - In Practice: B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address. + (or perhaps to a cylinder-head-sector) address - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1724,9 +1709,8 @@ You're never really done. - ### k-D Trees - - great for finding number of points in a rectangle or higher dimension object - - a good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - Great for finding number of points in a rectangle or higher dimension object + - A good fit for k-nearest neighbors - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists @@ -1765,49 +1749,24 @@ You're never really done. - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - see videos below - -- ### Machine Learning - - Why ML? - - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - Resources: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) --- ## Additional Detail on Some Subjects - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? + میں نے ان کو پہلے سے پیش کیے گئے کچھ خیالات کو تقویت دینے کے لیے شامل کیا تھا لیکن میں انھیں اوپر شامل نہیں کرنا چاہتا تھا کیونکہ یہ کافی سے زیادہ ہے۔ کسی ایک موضوع پر اسے زیادہ کرنا آسان ہے۔ +آپ اس صدی میں ملازمت حاصل کرنا چاہتے ہیں، کیا میں ٹھیک کہہ رہا ہوں؟ - **SOLID** - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) @@ -1826,10 +1785,10 @@ You're never really done. - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - **More Dynamic Programming** (videos) - - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) @@ -1852,7 +1811,7 @@ You're never really done. - **String Matching** - Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) @@ -1872,18 +1831,18 @@ You're never really done. - Stanford lectures on sorting: - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - Shai Simonson, [Aduni.org](http://www.aduni.org/): + - Shai Simonson: - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +- NAND To Tetris: [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) ## Video Series -Sit back and enjoy. "Netflix and skill" :P +Sit back and enjoy. - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1893,14 +1852,7 @@ Sit back and enjoy. "Netflix and skill" :P - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - -- [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - -- [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - -- CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) - [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -1910,8 +1862,6 @@ Sit back and enjoy. "Netflix and skill" :P - [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ - - [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) - [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) @@ -1926,7 +1876,7 @@ Sit back and enjoy. "Netflix and skill" :P - [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) @@ -1950,6 +1900,11 @@ Sit back and enjoy. "Netflix and skill" :P - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +## Algorithms implementation + +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + ## Papers - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) @@ -1960,28 +1915,20 @@ Sit back and enjoy. "Netflix and skill" :P - [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - mostly replaced by Cloud Dataflow? - [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - The Dynamo paper kicked off the NoSQL revolution - [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) -- [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) -- [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) -- [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - 2012: AddressSanitizer: A Fast Address Sanity Checker: - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google’s Globally-Distributed Database: - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [video](https://www.usenix.org/node/170855) -- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) ## LICENSE From 63ac395b63ac158e3760ecea39d42895b43c0c64 Mon Sep 17 00:00:00 2001 From: Abdullah Afzal Date: Mon, 20 Feb 2023 14:47:41 +0500 Subject: [PATCH 752/857] Update translation links removing urdu translation link from "Translation in progress" to "Translations" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cd965d6377..60b25a94c1 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@
Translations: +- [اردو - Urdu](translations/README-ur.md) - [中文版本](translations/README-cn.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) - [Español](translations/README-es.md) @@ -45,7 +46,6 @@ - [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) From 0936b520f3f7440c129ad04b89f9443d68952935 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 15 Mar 2023 18:14:48 -0700 Subject: [PATCH 753/857] Updated software engineering note. --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ec41ef57f9..748dd64bce 100644 --- a/README.md +++ b/README.md @@ -73,11 +73,8 @@ This is my multi-month study plan for becoming a software engineer for a large c * Patience * Time -Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from web development. For example, Amazon has -Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for -them will not be the same, as each has its own competencies. These companies require computer science knowledge for -software development/engineering roles. +Note this is a study plan for **software engineering**, not frontend engineering or fullstack development. There are really +super roadmaps and coursework for those career paths elsewhere (see https://roadmap.sh/ for more info). There is a lot to learn in a university Computer Science program, but only knowing about 75% is good enough for an interview, so that's what I cover here. For a complete CS self-taught program, the resources for my study plan have been included in Kamran Ahmed's Computer Science Roadmap: https://roadmap.sh/computer-science From 5c84cc0b7c13eed44ae3fb928e4ae2ee22a77974 Mon Sep 17 00:00:00 2001 From: jamesatmeetapro <126988910+jamesatmeetapro@users.noreply.github.com> Date: Thu, 16 Mar 2023 23:24:30 -0700 Subject: [PATCH 754/857] Add a new mock interview website It is a great mock interview option for job seekers to prepare for upcoming interviews. The interviewers on Meetapro are very experienced. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 748dd64bce..93acf891fd 100644 --- a/README.md +++ b/README.md @@ -1246,6 +1246,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously +- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com) - an Airbnb-style mock interview/coaching platform. ## Be thinking of for when the interview comes From d6ff89ef0e9469b3c344d795383affdaa91d80be Mon Sep 17 00:00:00 2001 From: jamesatmeetapro <126988910+jamesatmeetapro@users.noreply.github.com> Date: Fri, 17 Mar 2023 08:59:50 -0700 Subject: [PATCH 755/857] Update Meetapro link @jwasham Thank you very much for merging the previous change! --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93acf891fd..f9a56e7b6e 100644 --- a/README.md +++ b/README.md @@ -1246,7 +1246,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously -- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com) - an Airbnb-style mock interview/coaching platform. +- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. ## Be thinking of for when the interview comes From 94c8619bf5a3ae98dca1644e84d9d9458c81d16e Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Sun, 19 Mar 2023 18:10:32 +0300 Subject: [PATCH 756/857] Fix broken link to a Python resource --- programming-language-resources.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programming-language-resources.md b/programming-language-resources.md index b1c8c3b31d..bdb2cd5c88 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -47,7 +47,7 @@ - [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs) - [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M) - [Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) - - [Coding Interview Essentials](https://github.com/ajinkyal121/coding-interview-university/blob/master/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) + - [Coding Interview Essentials](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/Coding%20Interview%20Python%20Language%20Essentials.pdf) - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - [Python Programming Tutorial](https://www.scaler.com/topics/python/) - [Python Interview Questions](https://www.interviewbit.com/python-interview-questions) From ee5a16800bcb54db7baa8f769c97e5e2902cb139 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 25 Mar 2023 11:17:47 -0700 Subject: [PATCH 757/857] Adds sponsor. --- README.md | 17 ++++++++++++++++- translations/README-af.md | 15 +++++++++++++++ translations/README-ar.md | 15 +++++++++++++++ translations/README-bg.md | 15 +++++++++++++++ translations/README-bn.md | 15 +++++++++++++++ translations/README-cn.md | 15 +++++++++++++++ translations/README-de.md | 15 +++++++++++++++ translations/README-es.md | 15 +++++++++++++++ translations/README-fa.md | 15 +++++++++++++++ translations/README-fr.md | 15 +++++++++++++++ translations/README-he.md | 15 +++++++++++++++ translations/README-hi.md | 15 +++++++++++++++ translations/README-id.md | 15 +++++++++++++++ translations/README-it.md | 15 +++++++++++++++ translations/README-ja.md | 15 +++++++++++++++ translations/README-kh.md | 15 +++++++++++++++ translations/README-ko.md | 15 +++++++++++++++ translations/README-pl.md | 15 +++++++++++++++ translations/README-ptbr.md | 15 +++++++++++++++ translations/README-ru.md | 15 +++++++++++++++ translations/README-th.md | 15 +++++++++++++++ translations/README-tr.md | 15 +++++++++++++++ translations/README-tw.md | 15 +++++++++++++++ translations/README-uk.md | 15 +++++++++++++++ translations/README-ur.md | 15 +++++++++++++++ translations/README-uz.md | 15 +++++++++++++++ translations/README-vi.md | 15 +++++++++++++++ 27 files changed, 406 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f9a56e7b6e..473bca03cd 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
@@ -1246,7 +1261,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously -- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. +- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciusponsor) - an Airbnb-style mock interview/coaching platform. ## Be thinking of for when the interview comes diff --git a/translations/README-af.md b/translations/README-af.md index 4e2cc3ca4f..d9daca0c19 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -59,6 +59,21 @@

Word 'n bydraër en borg Kodering Onderhoud Universiteit!

+

+ Special thanks to: +

+
diff --git a/translations/README-ar.md b/translations/README-ar.md index 486e796015..c733b9c24b 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -58,6 +58,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-bg.md b/translations/README-bg.md index a53b284234..7ee43c2b34 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -55,6 +55,21 @@

Станете спонсор за да покрепите Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-bn.md b/translations/README-bn.md index 4ffca73e0a..f1874278ed 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -57,6 +57,21 @@

পৃষ্ঠপোষক হয়ে যান এবং কোডিং ইন্টারভিউ বিশ্ববিদ্যালয় সমর্থন করুন!

+

+ Special thanks to: +

+
diff --git a/translations/README-cn.md b/translations/README-cn.md index b504ec7079..9ed2cad3ab 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -13,6 +13,21 @@

成为赞助商 并支持编程大学!

+

+ Special thanks to: +

+
diff --git a/translations/README-de.md b/translations/README-de.md index ad2a3b4f2f..9f71fd2fa6 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -49,6 +49,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-es.md b/translations/README-es.md index af5eebb749..81b79e13ea 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -51,6 +51,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-fa.md b/translations/README-fa.md index 3db8fcc272..97fc498e55 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -55,6 +55,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-fr.md b/translations/README-fr.md index 8099aa0fdd..87d7f4f7f2 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -10,6 +10,21 @@ Traductions:

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-he.md b/translations/README-he.md index a2c1fa988b..4b15f35923 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -22,6 +22,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-hi.md b/translations/README-hi.md index 40882cc744..5fd9caf92f 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -61,6 +61,21 @@ प्रायोजक बनें और कोडिंग साक्षात्कार विश्वविद्यालय का समर्थन करें!

+

+ Special thanks to: +

+
diff --git a/translations/README-id.md b/translations/README-id.md index 47a7a2bbb4..c7d2860024 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -7,6 +7,21 @@ Versi asli: [Bahasa Inggris](../README.md)

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-it.md b/translations/README-it.md index 0cc41c8f59..d329f697e3 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -64,6 +64,21 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh)

Diventa uno sponsor e supporta Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-ja.md b/translations/README-ja.md index 888e118471..4b1a5340f0 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -39,6 +39,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-kh.md b/translations/README-kh.md index 0f35007f96..7e5f2dc611 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -51,6 +51,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-ko.md b/translations/README-ko.md index 0ed388856d..7f3c1d71f7 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -56,6 +56,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-pl.md b/translations/README-pl.md index 080e890e5c..7a53110b16 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -48,6 +48,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
## Co to jest? diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index d52f3530e5..4e1bbc4bc7 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -44,6 +44,21 @@ Traduções em progresso:

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-ru.md b/translations/README-ru.md index cb45ba8596..9a56012efc 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,6 +7,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-th.md b/translations/README-th.md index 32263f08c8..55d126287a 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -31,6 +31,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-tr.md b/translations/README-tr.md index 073c8ffdca..9f3f69f5df 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -54,6 +54,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-tw.md b/translations/README-tw.md index 8dc0e98630..e987d21dcc 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -56,6 +56,21 @@

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-uk.md b/translations/README-uk.md index bd46a4fdb1..880a64adc7 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -57,6 +57,21 @@ Microsoft.

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-ur.md b/translations/README-ur.md index 0e71a77a0c..848843b73d 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -55,6 +55,21 @@

کفیل بنیں اور کوڈنگ انٹرویو یونیورسٹی کی مدد کریں!

+

+ Special thanks to: +

+
diff --git a/translations/README-uz.md b/translations/README-uz.md index a80d639634..71191a178b 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -17,6 +17,21 @@ Asl versiyasi: [Inglizcha](../README.md)

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
diff --git a/translations/README-vi.md b/translations/README-vi.md index c62ef3f527..30aefb9ac6 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -34,6 +34,21 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Become a sponsor and support Coding Interview University!

+

+ Special thanks to: +

+
From f776cc049de036b493505881819e95d26b55a07d Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 3 Apr 2023 08:46:49 -0700 Subject: [PATCH 758/857] Revert "Adds sponsor." This reverts commit ee5a16800bcb54db7baa8f769c97e5e2902cb139. --- README.md | 17 +---------------- translations/README-af.md | 15 --------------- translations/README-ar.md | 15 --------------- translations/README-bg.md | 15 --------------- translations/README-bn.md | 15 --------------- translations/README-cn.md | 15 --------------- translations/README-de.md | 15 --------------- translations/README-es.md | 15 --------------- translations/README-fa.md | 15 --------------- translations/README-fr.md | 15 --------------- translations/README-he.md | 15 --------------- translations/README-hi.md | 15 --------------- translations/README-id.md | 15 --------------- translations/README-it.md | 15 --------------- translations/README-ja.md | 15 --------------- translations/README-kh.md | 15 --------------- translations/README-ko.md | 15 --------------- translations/README-pl.md | 15 --------------- translations/README-ptbr.md | 15 --------------- translations/README-ru.md | 15 --------------- translations/README-th.md | 15 --------------- translations/README-tr.md | 15 --------------- translations/README-tw.md | 15 --------------- translations/README-uk.md | 15 --------------- translations/README-ur.md | 15 --------------- translations/README-uz.md | 15 --------------- translations/README-vi.md | 15 --------------- 27 files changed, 1 insertion(+), 406 deletions(-) diff --git a/README.md b/README.md index 473bca03cd..f9a56e7b6e 100644 --- a/README.md +++ b/README.md @@ -59,21 +59,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
@@ -1261,7 +1246,7 @@ Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously -- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciusponsor) - an Airbnb-style mock interview/coaching platform. +- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. ## Be thinking of for when the interview comes diff --git a/translations/README-af.md b/translations/README-af.md index d9daca0c19..4e2cc3ca4f 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -59,21 +59,6 @@

Word 'n bydraër en borg Kodering Onderhoud Universiteit!

-

- Special thanks to: -

-
diff --git a/translations/README-ar.md b/translations/README-ar.md index c733b9c24b..486e796015 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -58,21 +58,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-bg.md b/translations/README-bg.md index 7ee43c2b34..a53b284234 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -55,21 +55,6 @@

Станете спонсор за да покрепите Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-bn.md b/translations/README-bn.md index f1874278ed..4ffca73e0a 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -57,21 +57,6 @@

পৃষ্ঠপোষক হয়ে যান এবং কোডিং ইন্টারভিউ বিশ্ববিদ্যালয় সমর্থন করুন!

-

- Special thanks to: -

-
diff --git a/translations/README-cn.md b/translations/README-cn.md index 9ed2cad3ab..b504ec7079 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -13,21 +13,6 @@

成为赞助商 并支持编程大学!

-

- Special thanks to: -

-
diff --git a/translations/README-de.md b/translations/README-de.md index 9f71fd2fa6..ad2a3b4f2f 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -49,21 +49,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-es.md b/translations/README-es.md index 81b79e13ea..af5eebb749 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -51,21 +51,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-fa.md b/translations/README-fa.md index 97fc498e55..3db8fcc272 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -55,21 +55,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-fr.md b/translations/README-fr.md index 87d7f4f7f2..8099aa0fdd 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -10,21 +10,6 @@ Traductions:

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-he.md b/translations/README-he.md index 4b15f35923..a2c1fa988b 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -22,21 +22,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-hi.md b/translations/README-hi.md index 5fd9caf92f..40882cc744 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -61,21 +61,6 @@ प्रायोजक बनें और कोडिंग साक्षात्कार विश्वविद्यालय का समर्थन करें!

-

- Special thanks to: -

-
diff --git a/translations/README-id.md b/translations/README-id.md index c7d2860024..47a7a2bbb4 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -7,21 +7,6 @@ Versi asli: [Bahasa Inggris](../README.md)

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-it.md b/translations/README-it.md index d329f697e3..0cc41c8f59 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -64,21 +64,6 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh)

Diventa uno sponsor e supporta Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ja.md b/translations/README-ja.md index 4b1a5340f0..888e118471 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -39,21 +39,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-kh.md b/translations/README-kh.md index 7e5f2dc611..0f35007f96 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -51,21 +51,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ko.md b/translations/README-ko.md index 7f3c1d71f7..0ed388856d 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -56,21 +56,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-pl.md b/translations/README-pl.md index 7a53110b16..080e890e5c 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -48,21 +48,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
## Co to jest? diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 4e1bbc4bc7..d52f3530e5 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -44,21 +44,6 @@ Traduções em progresso:

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ru.md b/translations/README-ru.md index 9a56012efc..cb45ba8596 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -7,21 +7,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-th.md b/translations/README-th.md index 55d126287a..32263f08c8 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -31,21 +31,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-tr.md b/translations/README-tr.md index 9f3f69f5df..073c8ffdca 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -54,21 +54,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-tw.md b/translations/README-tw.md index e987d21dcc..8dc0e98630 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -56,21 +56,6 @@

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-uk.md b/translations/README-uk.md index 880a64adc7..bd46a4fdb1 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -57,21 +57,6 @@ Microsoft.

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-ur.md b/translations/README-ur.md index 848843b73d..0e71a77a0c 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -55,21 +55,6 @@

کفیل بنیں اور کوڈنگ انٹرویو یونیورسٹی کی مدد کریں!

-

- Special thanks to: -

-
diff --git a/translations/README-uz.md b/translations/README-uz.md index 71191a178b..a80d639634 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -17,21 +17,6 @@ Asl versiyasi: [Inglizcha](../README.md)

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
diff --git a/translations/README-vi.md b/translations/README-vi.md index 30aefb9ac6..c62ef3f527 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -34,21 +34,6 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt

Become a sponsor and support Coding Interview University!

-

- Special thanks to: -

-
From c25761b685d6503e79267d1a8643b52fd6cbec9f Mon Sep 17 00:00:00 2001 From: John Washam Date: Sun, 23 Apr 2023 11:06:07 -0700 Subject: [PATCH 759/857] Updates private fork instructions. --- README.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f9a56e7b6e..aab6520419 100644 --- a/README.md +++ b/README.md @@ -247,21 +247,19 @@ Create a new branch so you can check items like this, just put an x in the brack 1. Clone to your local repo: ``` - git clone git@github.com:/coding-interview-university.git + git clone https://github.com//coding-interview-university.git cd coding-interview-university - git checkout -b progress - git remote add jwasham https://github.com/jwasham/coding-interview-university - git fetch --all + git remote add upstream https://github.com/jwasham/coding-interview-university.git + git remote set-url --push upstream DISABLE # so that you don't push your personal progress back to the original repo ``` 1. Mark all boxes with X after you completed your changes: ``` - git add . - git commit -m "Marked x" - git rebase jwasham/main - git push --set-upstream origin progress - git push --force + git commit -am "Marked personal progress" + git pull upstream main # keep your fork up-to-date with changes from the original repo + + git push # just pushes to your fork ``` ## Don't feel you aren't smart enough From 1edfb8ce6b46b6299528250ce5e6f2fdbff828cd Mon Sep 17 00:00:00 2001 From: Bahriddin <124910953+bahriddin-m@users.noreply.github.com> Date: Tue, 25 Apr 2023 15:22:42 +0500 Subject: [PATCH 760/857] Update README-uz.md Added websites for data structure and algorithm visualizations. These websites help to understand how data structures and algorithms work. --- translations/README-uz.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/translations/README-uz.md b/translations/README-uz.md index a80d639634..ac5f862d66 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -607,6 +607,14 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - exists(key) - get(key) - remove(key) + +## Ma'lumotlar tuzilmasi vizualizatsiya (Data structure Visualizations) + +Animatsiya orqali ma'lumotlar tuzilmalari va algoritmlarini vizualizatsiya qilish. +Quyidagi havolada siz ma'lumotlar tuzilmasi aslida qanday ishlashini tushunib olasiz. + + - [ ] [Visualizing Algorithms](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html) + - [ ] [Visualgo](https://visualgo.net/en) ## Qo'shimcha bilimlar From 5431c045799e03ca0df2d98166ba1b4656ee4553 Mon Sep 17 00:00:00 2001 From: Manibhadra Singh Rathore <132562272+manibhadra01@users.noreply.github.com> Date: Mon, 15 May 2023 16:44:37 +0530 Subject: [PATCH 761/857] Added a new resource Hey, I have added a reference link for Python Guide. I came upon this article while looking for resources to learn Python. This citation, in my opinion, will enhance the content of this article. Hope that my contribution will benefit other learners. --- programming-language-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/programming-language-resources.md b/programming-language-resources.md index bdb2cd5c88..ce83c16a4a 100644 --- a/programming-language-resources.md +++ b/programming-language-resources.md @@ -51,6 +51,7 @@ - [Data Structures And Algorithms in Python](https://www.youtube.com/watch?v=kQDxmjfkIKY) - [Python Programming Tutorial](https://www.scaler.com/topics/python/) - [Python Interview Questions](https://www.interviewbit.com/python-interview-questions) + - [Python Guide for Beginners](https://wiingy.com/learn/python/python-tutorial/) - Java - [Stanford CS106A - Programming Methodology (video)](https://see.stanford.edu/Course/CS106A) - [Java Cheat Sheet](https://www.interviewbit.com/java-cheat-sheet) From e91870a77560d6f99e37cee53a67879d6b25c18d Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Tue, 13 Jun 2023 13:11:30 -0500 Subject: [PATCH 762/857] Update video count for review videos --- README.md | 2 +- translations/README-af.md | 2 +- translations/README-ar.md | 2 +- translations/README-bg.md | 2 +- translations/README-bn.md | 2 +- translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fa.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-it.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index aab6520419..d1e274646e 100644 --- a/README.md +++ b/README.md @@ -1199,7 +1199,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-af.md b/translations/README-af.md index 4e2cc3ca4f..541bb724ef 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1201,7 +1201,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (40 videos): +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ar.md b/translations/README-ar.md index 486e796015..992a932395 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1277,7 +1277,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-bg.md b/translations/README-bg.md index a53b284234..d61968f4f3 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1213,7 +1213,7 @@ pобхождам графи. Ако трябваше да напиша сорт - [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (40 клипа): +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (43 клипа): - [Клипове](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Алгоритми II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-bn.md b/translations/README-bn.md index 4ffca73e0a..89891711b9 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1490,7 +1490,7 @@ https://github.com/jwasham/coding-interview-university - শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (40 টি ভিডিও): +- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (43 টি ভিডিও): -[ভিডিও] (https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) - [সেজেজিক ভিডিও-দ্বিতীয় অ্যালগোরিদম] (https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-cn.md b/translations/README-cn.md index b504ec7079..7b1da38f8a 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1192,7 +1192,7 @@ - [ ] 2-3分钟的简短主题视频系列(23个视频) - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (40个视频): +- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (43个视频): - [视频](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-de.md b/translations/README-de.md index ad2a3b4f2f..511dfe702a 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1367,7 +1367,7 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Reihe mit kurzen 2-3 Minuten Videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (40 videos): +- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-es.md b/translations/README-es.md index af5eebb749..d783b4ad64 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1302,7 +1302,7 @@ Es bueno si quieres repasar frecuentemente. - [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (40 videos): +- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-fa.md b/translations/README-fa.md index 3db8fcc272..78a72591b7 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1181,7 +1181,7 @@ Choose one: - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-fr.md b/translations/README-fr.md index 8099aa0fdd..074eb0602d 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1275,7 +1275,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-he.md b/translations/README-he.md index a2c1fa988b..e867fb69db 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1286,7 +1286,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [סרטונים](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-hi.md b/translations/README-hi.md index 40882cc744..b57d314539 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1202,7 +1202,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (40 वीडियो): +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (43 वीडियो): - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) - [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-id.md b/translations/README-id.md index 47a7a2bbb4..1ad482729e 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1200,7 +1200,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (40 video): +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (43 video): - [Video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Video Sedgewick - Algoritma II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-it.md b/translations/README-it.md index 0cc41c8f59..af1afd407d 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1208,7 +1208,7 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] Series of 2-3 minutes short subject video (23 video) - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject video - Michael Sambol (40 video): +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (43 video): - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ja.md b/translations/README-ja.md index 888e118471..39cf769bb0 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1244,7 +1244,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(40ビデオ) +- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(43ビデオ) - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-kh.md b/translations/README-kh.md index 0f35007f96..2f760964d7 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1266,7 +1266,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 វីដេអូ): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 វីដេអូ): - [វីដេអូ](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [វីដេអូ Sedgewick - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ko.md b/translations/README-ko.md index 0ed388856d..1afb77d45f 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1285,7 +1285,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (40 videos): +- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-pl.md b/translations/README-pl.md index 080e890e5c..a628f3d689 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1239,7 +1239,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (40 wideo): +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (43 wideo): - [Wideo](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorytmy II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index d52f3530e5..503d27b1b6 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1308,7 +1308,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Séries de vídeos curtos (2 - 3 minutos) sobre o assunto (23 vídeos) - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (40 vídeos): +- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (43 vídeos): - [Vídeos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-ru.md b/translations/README-ru.md index cb45ba8596..ff9b6df133 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1288,7 +1288,7 @@ Google не возьмёт тебя на работу. - [ ] Серия 2-3 минутных короткие видео по темам (23 видео) - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (40 видео): +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (43 видео): - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-th.md b/translations/README-th.md index 32263f08c8..3d4f6af709 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1282,7 +1282,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-tr.md b/translations/README-tr.md index 073c8ffdca..f21013adc0 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1254,7 +1254,7 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-tw.md b/translations/README-tw.md index 8dc0e98630..f8a0f2c7ec 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1232,7 +1232,7 @@ - [ ] 2-3分鐘快速複習影片系列(23個影片) - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (40個影片) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (43個影片) - [影片](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-uk.md b/translations/README-uk.md index bd46a4fdb1..1a6650ab30 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1332,7 +1332,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (40 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- diff --git a/translations/README-ur.md b/translations/README-ur.md index 0e71a77a0c..3eb72f174f 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1183,7 +1183,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] 2-3 منٹ کی مختصر سبجیکٹ ویڈیوز کی سیریز (23 ویڈیوز) - [ویڈیوز](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (38 ویڈیوز): +- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (43 ویڈیوز): - [ویڈیوز](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-uz.md b/translations/README-uz.md index ac5f862d66..70c95e8bde 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1243,7 +1243,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (40 video): +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (43 video): - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) diff --git a/translations/README-vi.md b/translations/README-vi.md index c62ef3f527..4444b5847f 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1320,7 +1320,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-3 phút (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Các video ngắn 2-5 phút - Michael Sambol (40 video) +- [ ] Các video ngắn 2-5 phút - Michael Sambol (43 video) - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) --- From 534d2b0862fd1d07b7049f780e58e6e0087e6aa6 Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Fri, 23 Jun 2023 17:11:28 -0500 Subject: [PATCH 763/857] Add review videos for AVL trees, link to code examples --- README.md | 6 ++++-- translations/README-af.md | 6 ++++-- translations/README-ar.md | 6 ++++-- translations/README-bg.md | 6 ++++-- translations/README-bn.md | 6 ++++-- translations/README-cn.md | 6 ++++-- translations/README-de.md | 6 ++++-- translations/README-es.md | 6 ++++-- translations/README-fa.md | 6 ++++-- translations/README-fr.md | 6 ++++-- translations/README-he.md | 6 ++++-- translations/README-hi.md | 8 +++++--- translations/README-id.md | 6 ++++-- translations/README-it.md | 6 ++++-- translations/README-ja.md | 6 ++++-- translations/README-kh.md | 6 ++++-- translations/README-ko.md | 6 ++++-- translations/README-pl.md | 6 ++++-- translations/README-ptbr.md | 6 ++++-- translations/README-ru.md | 6 ++++-- translations/README-th.md | 6 ++++-- translations/README-tr.md | 6 ++++-- translations/README-tw.md | 6 ++++-- translations/README-uk.md | 6 ++++-- translations/README-ur.md | 6 ++++-- translations/README-uz.md | 6 ++++-- translations/README-vi.md | 6 ++++-- 27 files changed, 109 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index d1e274646e..771ea83aaf 100644 --- a/README.md +++ b/README.md @@ -1199,8 +1199,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1658,6 +1659,7 @@ You're never really done. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-af.md b/translations/README-af.md index 541bb724ef..804154d1ea 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1201,8 +1201,9 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1667,6 +1668,7 @@ Jy is nooit regtig klaar nie. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - Prakties: diff --git a/translations/README-ar.md b/translations/README-ar.md index 992a932395..a7e3c6907b 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1277,8 +1277,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1690,6 +1691,7 @@ You're never really done. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-bg.md b/translations/README-bg.md index d61968f4f3..5c32b86e95 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1213,8 +1213,9 @@ pобхождам графи. Ако трябваше да напиша сорт - [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (43 клипа): - - [Клипове](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (46 клипа): + - [Клипове](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Алгоритми II](https://www.coursera.org/learn/algorithms-part2) @@ -1695,6 +1696,7 @@ Mock интервюта: - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** diff --git a/translations/README-bn.md b/translations/README-bn.md index 89891711b9..9d4ef81758 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1490,8 +1490,9 @@ https://github.com/jwasham/coding-interview-university - শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (43 টি ভিডিও): - -[ভিডিও] (https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (46 টি ভিডিও): + - [ভিডিও](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) - [সেজেজিক ভিডিও-দ্বিতীয় অ্যালগোরিদম] (https://www.coursera.org/learn/algorithms-part2) @@ -1894,6 +1895,7 @@ https://github.com/jwasham/coding-interview-university - [এভিএল ট্রি (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Qq5E0/avl-trees) - [এভিএল ট্রি বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-বাস্তবায়ন) - [স্প্লিট এবং মার্জ করুন] (https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-विसর) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - ** গাছ স্প্লে ** -প্রস্তুতিতে: diff --git a/translations/README-cn.md b/translations/README-cn.md index 7b1da38f8a..2a5efe80e7 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1192,8 +1192,9 @@ - [ ] 2-3分钟的简短主题视频系列(23个视频) - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (43个视频): - - [视频](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (46个视频): + - [视频](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) @@ -1591,6 +1592,7 @@ - [AVL 树(视频)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL 树的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [分离与合并](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **伸展树** - 实际中:伸展树一般用于缓存、内存分配者、路由器、垃圾回收者、数据压缩、ropes(字符串的一种替代品,用于存储长串的文本字符)、Windows NT(虚拟内存、网络及文件系统)等的实现。 diff --git a/translations/README-de.md b/translations/README-de.md index 511dfe702a..937a4b28c5 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1367,8 +1367,9 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Reihe mit kurzen 2-3 Minuten Videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1773,6 +1774,7 @@ Algorithmen Bescheid wisst, sodass ihr eine größere Auswahl an Werkzeugen habt - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay Trees** - In der Praxis: diff --git a/translations/README-es.md b/translations/README-es.md index d783b4ad64..a85a5f7826 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1302,8 +1302,9 @@ Es bueno si quieres repasar frecuentemente. - [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1627,6 +1628,7 @@ Es probable que estos temas no aparezcan en una entrevista, pero los añadí par - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Árboles biselados** - En práctica: diff --git a/translations/README-fa.md b/translations/README-fa.md index 78a72591b7..7cb3895eeb 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1181,8 +1181,9 @@ Choose one: - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1642,6 +1643,7 @@ Mock Interviews: - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-fr.md b/translations/README-fr.md index 074eb0602d..a7debf35ed 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1275,8 +1275,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1683,6 +1684,7 @@ You're never really done. - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - In practice: diff --git a/translations/README-he.md b/translations/README-he.md index e867fb69db..43ded72815 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1286,8 +1286,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [סרטונים](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [סרטונים](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1695,6 +1696,7 @@ You're never really done. - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - In practice: diff --git a/translations/README-hi.md b/translations/README-hi.md index b57d314539..520d340666 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1202,8 +1202,9 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (43 वीडियो): - - [वीडियो](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (46 वीडियो): + - [वीडियो](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) - [ ] [सेजविक वीडियो - एल्गोरिदम II](https://www.coursera.org/learn/algorithms-part2) @@ -1663,9 +1664,10 @@ Anki प्रारूप में मेरा फ्लैशकार्ड डेटा संरचनाओं के लिए आकर्षक जिसे एक बार बनाया जा सकता है और पुनर्निर्माण के बिना लोड किया जा सकता है, जैसे भाषा शब्दकोश (या प्रोग्राम डिक्शनरी, जैसे असेंबलर या दुभाषिया के ऑपकोड) - [MIT AVL ट्री / AVL सॉर्ट (वीडियो)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [एवीएल पेड़ (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/Qq5E0/avl-trees) + - [एवीएल पेड़ (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/Qq5E0/avl-trees) - [एवीएल ट्री इंप्लीमेंटेशन (वीडियो)](https://www.coursera.org/learn/data-structs/lecture/PKEBC/avl-tree-implementation) - [स्प्लिट एंड मर्ज](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **स्प्ले ट्री** - प्रयोग में: diff --git a/translations/README-id.md b/translations/README-id.md index 1ad482729e..51e1b097cd 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1200,8 +1200,9 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (43 video): - - [Video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (46 video): + - [Video](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Video Sedgewick - Algoritma II](https://www.coursera.org/learn/algorithms-part2) @@ -1605,6 +1606,7 @@ Anda tidak pernah benar-benar selesai. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [Implementasi AVL Tree (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split Dan Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - Dalam praktek: diff --git a/translations/README-it.md b/translations/README-it.md index af1afd407d..14a87f3e45 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1208,8 +1208,9 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] Series of 2-3 minutes short subject video (23 video) - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject video - Michael Sambol (43 video): - - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (46 video): + - [video](https://www.youtube.com/@MichaelSambol) + - [code examples](https://github.com/msambol/dsa) - [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1674,6 +1675,7 @@ You're never really done. - [AVL Trees (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-ja.md b/translations/README-ja.md index 39cf769bb0..18e0a40f1e 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1244,8 +1244,9 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(43ビデオ) - - [動画](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(46ビデオ) + - [動画](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1635,6 +1636,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [AVL木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL木実装(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **スプレッド木**         - 実際には: diff --git a/translations/README-kh.md b/translations/README-kh.md index 2f760964d7..e6bca72b14 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1266,8 +1266,9 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 វីដេអូ): - - [វីដេអូ](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 វីដេអូ): + - [វីដេអូ](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [វីដេអូ Sedgewick - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1673,6 +1674,7 @@ Mock Interviews: - [AVL Trees (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (វីដេអូ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - ក្នុងការអនុវត្ត ៖ diff --git a/translations/README-ko.md b/translations/README-ko.md index 1afb77d45f..4d8a53727b 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1285,8 +1285,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1694,6 +1695,7 @@ Challenge repos: - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-pl.md b/translations/README-pl.md index a628f3d689..98295aa719 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1239,8 +1239,9 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (43 wideo): - - [Wideo](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (46 wideo): + - [Wideo](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorytmy II](https://www.coursera.org/learn/algorithms-part2) @@ -1647,6 +1648,7 @@ Tak na prawdę nigdy nie skończyłeś. - [AVL Trees (wideo)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (wideo)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 503d27b1b6..69a394713b 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1308,8 +1308,9 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Séries de vídeos curtos (2 - 3 minutos) sobre o assunto (23 vídeos) - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (43 vídeos): - - [Vídeos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (46 vídeos): + - [Vídeos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1654,6 +1655,7 @@ Esses tópicos provavelmente não aparecerão em uma entrevista, mas eu adicione - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) (Árvores AVl - vídeo) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) (Implementação de Árvores AVL - vídeo) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) (Dividir e Fundir) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Árvores Splay** - Ná prática: diff --git a/translations/README-ru.md b/translations/README-ru.md index ff9b6df133..1fb7e919f1 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1288,8 +1288,9 @@ Google не возьмёт тебя на работу. - [ ] Серия 2-3 минутных короткие видео по темам (23 видео) - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (43 видео): - - [Видео](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (46 видео): + - [Видео](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1687,6 +1688,7 @@ Google не возьмёт тебя на работу. - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - In practice: diff --git a/translations/README-th.md b/translations/README-th.md index 3d4f6af709..3c507b365f 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1282,8 +1282,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1625,6 +1626,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - In practice: diff --git a/translations/README-tr.md b/translations/README-tr.md index f21013adc0..0b784ea1ba 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1254,8 +1254,9 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1677,6 +1678,7 @@ You're never really done. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-tw.md b/translations/README-tw.md index f8a0f2c7ec..3508158202 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1232,8 +1232,9 @@ - [ ] 2-3分鐘快速複習影片系列(23個影片) - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (43個影片) - - [影片](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (46個影片) + - [影片](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1601,6 +1602,7 @@ Coding面試題目影片: - [AVL Trees (影片)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (影片)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **伸縮樹Splay tree** - 實際上: diff --git a/translations/README-uk.md b/translations/README-uk.md index 1a6650ab30..00c9464e63 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1332,8 +1332,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (43 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1675,6 +1676,7 @@ software engineer, and to be aware of certain technologies and algorithms, so yo - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - In practice: diff --git a/translations/README-ur.md b/translations/README-ur.md index 3eb72f174f..702cb9866c 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1183,8 +1183,9 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] 2-3 منٹ کی مختصر سبجیکٹ ویڈیوز کی سیریز (23 ویڈیوز) - [ویڈیوز](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (43 ویڈیوز): - - [ویڈیوز](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (46 ویڈیوز): + - [ویڈیوز](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1639,6 +1640,7 @@ Mock Interviews: - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - In practice: diff --git a/translations/README-uz.md b/translations/README-uz.md index 70c95e8bde..d4e44265a0 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1243,8 +1243,9 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (43 video): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (46 video): + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) @@ -1656,6 +1657,7 @@ Hech qachon tugatgan bo'lmaymiz. - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **Splay trees** - Amalda: diff --git a/translations/README-vi.md b/translations/README-vi.md index 4444b5847f..2424de0db0 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1320,8 +1320,9 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-3 phút (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Các video ngắn 2-5 phút - Michael Sambol (43 video) - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] Các video ngắn 2-5 phút - Michael Sambol (46 video) + - [Videos](https://www.youtube.com/@MichaelSambol) + - [Code Examples](https://github.com/msambol/dsa) --- @@ -1648,6 +1649,7 @@ Bạn không bao giờ thực sự học xong! - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - Trong thực tế: From f9c853f9095a7bcbc8d1ed632e049bec87a19d84 Mon Sep 17 00:00:00 2001 From: Rishikesh Date: Thu, 6 Jul 2023 15:09:16 +0530 Subject: [PATCH 764/857] Updated Readme.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 771ea83aaf..0e33f7d724 100644 --- a/README.md +++ b/README.md @@ -776,15 +776,15 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implement: - - [ ] insert // insert value into tree + - [ ] [insert // insert value into tree](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) - [ ] get_node_count // get count of values stored - [ ] print_values // prints the values in the tree, from min to max - [ ] delete_tree - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] [get_height // returns the height in nodes (single node's height is 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) - [ ] get_min // returns the minimum value stored in the tree - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree + - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) - [ ] delete_value - [ ] get_successor // returns next-highest value in tree after given value, -1 if none @@ -1102,7 +1102,7 @@ Graphs can be used to represent many problems in computer science, so this secti - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - - How context switching is initiated by the operating system and underlying hardware? + - [How context switching is initiated by the operating system and underlying hardware?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] concurrency in Python (videos): @@ -1379,7 +1379,7 @@ You're never really done. - [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [8 steps guide to ace your system design interview](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) - [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) From 1f231e8557d754d1986219e40e54f16fd1f02fa3 Mon Sep 17 00:00:00 2001 From: Zain Arshad Date: Tue, 18 Jul 2023 11:27:14 +0500 Subject: [PATCH 765/857] Fixed duplicated bullet point --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0e33f7d724..7f9b94d678 100644 --- a/README.md +++ b/README.md @@ -1214,7 +1214,6 @@ Graphs can be used to represent many problems in computer science, so this secti - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." - ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume - - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume ## Interview Process & General Interview Prep From 7c101779758ad06d3bac4a84a033981747254775 Mon Sep 17 00:00:00 2001 From: hashcookie Date: Sun, 6 Aug 2023 12:31:37 +0800 Subject: [PATCH 766/857] Update section of Chinese documents --- translations/README-cn.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 2a5efe80e7..b8b5c3fc25 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1,12 +1,13 @@ # 编程面试大学 -原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间的推移而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 - -我每天自学8~12小时,这样持续了好几个月。这是我的故事:[为什么我为了 Google 面试而自学了8个月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)。 - -在这份清单内的主题会让你拥有足够的知识去面对几乎每家软件公司的技术面试,包括科技巨头:Amazon、Facebook、Google,以及 Microsoft。 - -祝你好运! +> 原先我为了成为一个软件工程师而建立这份简单的学习主题清单, 但这份清单随着时间的推移而膨胀成今天这样。在做完这份清单上的每个目标后,[我成为了 Amazon 的软件开发工程师](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! 你或许不需要像我一样学习这么多。但是,让你成为一位称职工程师所需要的知识都在这里了。 +> +>我每天自学8~12小时,这样持续了好几个月。这是我的故事:[为什么我为了 Google 面试而自学了8个月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)。 +> +> **请注意:** 你不需要像我一样那么努力学习。我在一些不必要的事情上浪费了很多时间。关于这个问题下面有更多信息。我会帮助你节省宝贵的时间,让你达到目标。 +> 在这份清单内的主题会让你拥有足够的知识去面对几乎每家软件公司的技术面试,包括科技巨头:Amazon、Facebook、Google,以及 Microsoft。 +> +> *祝你好运!*

From acc2011a5c1f8b171a63326fca2a9b95e3b9db3e Mon Sep 17 00:00:00 2001 From: hashcookie Date: Mon, 7 Aug 2023 22:23:57 +0800 Subject: [PATCH 767/857] update Readme-cn.md --- translations/README-cn.md | 543 +++++++++++++++++++++----------------- 1 file changed, 308 insertions(+), 235 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index b8b5c3fc25..f0048defb4 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -7,7 +7,7 @@ > **请注意:** 你不需要像我一样那么努力学习。我在一些不必要的事情上浪费了很多时间。关于这个问题下面有更多信息。我会帮助你节省宝贵的时间,让你达到目标。 > 在这份清单内的主题会让你拥有足够的知识去面对几乎每家软件公司的技术面试,包括科技巨头:Amazon、Facebook、Google,以及 Microsoft。 > -> *祝你好运!* +> **祝你好运!**

@@ -19,32 +19,43 @@ ## 这是? -这是我为了从 web 开发者(自学、非计算机科学学位)蜕变至 Google 软件工程师所制定的计划,其内容历时数月。 - ![白板上编程 ———— 来自 HBO 频道的剧集,“硅谷”](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -这份清单适用于 **新手软件工程师**,或者想从软件/网站开发转向软件工程(需要计算机科学知识)的人员。如果你有多年的经验,并且声称拥有多年的软件工程经验,并且期待一次更艰难的面试。 +这是我为成为一家大公司的软件工程师制定的多月学习计划。 + +**要求:** +* 一点编程经验(变量、循环、方法/函数等) +* 耐心 +* 时间 -如果你具有多年的软件/网页开发经验,请注意,大型软件公司(例如 Google,Amazon,Facebook 和 Microsoft)将软件工程视为不同于软件/网页开发,并且它们需要计算机科学知识。 +注意,这是一份关于 **软件工程** 的学习计划,而不是前端工程或全栈开发。 +这些职业路径有很多详细的路线图和课程资料可以在其他地方找到(请参阅 https://roadmap.sh/ 获取更多信息)。 -如果你想成为可靠性工程师或运维工程师,请从可选列表(网络,安全)中学习更多。 +在大学计算机科学专业中,有很多知识需要学习,但是只掌握大约75%的内容就足够应对面试了,这也是我在这里涵盖的内容。 +如果你想进行完整的自学计算机科学项目,可以参考Kamran Ahmed的计算机科学路线图:https://roadmap.sh/computer-science。 --- ## 目录 +### 学习计划 + - [这是?](#这是) - [为何要用到它?](#为何要用到它) - [如何使用它](#如何使用它) - [不要觉得自己不够聪明](#不要觉得自己不够聪明) - [相关视频资源](#相关视频资源) -- [面试过程 & 通用的面试准备](#面试过程--通用的面试准备) -- [为你的面试选择一种语言](#为你的面试选择一种语言) -- [书单](#书单) -- [在你开始之前](#在你开始之前) -- [没有包含的内容](#没有包含的内容) -- [必备知识](#必备知识) -- [日常计划](#日常计划) +- [选择编程语言](#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) + +### 学习的主题 + - [算法复杂度 / Big-O / 渐进分析法](#算法复杂度--big-o--渐进分析法) - [数据结构](#数据结构) - [数组(Arrays)](#数组arrays) @@ -56,7 +67,7 @@ - [二分查找(Binary search)](#二分查找binary-search) - [按位运算(Bitwise operations)](#按位运算bitwise-operations) - [树(Trees)](#树trees) - - [树 —— 笔记 & 背景](#树--笔记--背景) + - [树 —— 简介](#树--简介) - [二叉查找树(Binary search trees):BSTs](#二叉查找树binary-search-treesbsts) - [堆(Heap) / 优先级队列(Priority Queue) / 二叉堆(Binary Heap)](#堆heap--优先级队列priority-queue--二叉堆binary-heap) - [平衡查找树(Balanced search trees)(基本概念,非细节)](#平衡查找树balanced-search-trees) @@ -76,7 +87,6 @@ - [更多知识](#更多知识) - [递归](#递归recursion) - [动态规划](#动态规划dynamic-programming) - - [面向对象编程](#面向对象编程) - [设计模式](#设计模式) - [组合 & 概率](#组合combinatorics-n-中选-k-个--概率probability) - [NP, NP-完全和近似算法](#np-np-完全和近似算法) @@ -90,19 +100,23 @@ - [Unicode](#unicode) - [字节顺序](#字节序Endianness) - [网络](#网络视频) -- [系统设计、可伸缩性、数据处理](#系统设计可伸缩性数据处理)(如果你有4+年经验) - [终面](#终面) -- [编程问题练习](#编程问题练习) -- [编程练习和挑战](#编程练习和挑战) -- [当你临近面试时](#当你临近面试时) -- [你的简历](#你的简历) -- [当面试来临的时候](#当面试来临的时候) -- [问面试官的问题](#问面试官的问题) -- [当你获得了梦想的职位](#当你获得了梦想的职位) ----------------- 下面的内容是可选的 ---------------- +### 获得工作机会 + +- [更新你的简历](#update-your-resume) +- [找工作](#find-a-job) +- [面试流程和面试准备p](#interview-process--general-interview-prep) +- [面试前需要考虑的事项](#be-thinking-of-for-when-the-interview-comes) +- [准备一些问题以便问面试官](#have-questions-for-the-interviewer) +- [一旦你得到了工作](#once-youve-got-the-job) + +**---------------- 以下所有内容均为可选项 ----------------** + +### 可选的额外主题和资源 - [额外书籍](#额外书籍) +- [系统设计、可扩展性、数据处理](#system-design-scalability-data-handling) (如果你有4年以上的工作经验) - [附加学习](#附加学习) - [编译器](#编译器) - [Emacs and vi(m)](#emacs-and-vim) @@ -140,7 +154,6 @@ - [线性规划](#线性规划linear-programming视频) - [几何:凸包(Geometry, Convex hull)](#几何凸包geometry-convex-hull视频) - [离散数学](#离散数学) - - [机器学习](#机器学习machine-learning) - [一些主题的额外内容](#一些主题的额外内容) - [视频系列](#视频系列) - [计算机科学课程](#计算机科学课程) @@ -150,7 +163,16 @@ ## 为何要用到它? -当我开始这个项目时,我不知道堆和栈的区别,不了解时间复杂度(Big-O)、树,或如何去遍历一个图。如果非要我去编写一个排序算法的话,我只能说我所写的肯定是很糟糕。一直以来,我所用的任何数据结构都是内建于编程语言当中。至于它们在背后是如何运作,对此我一概不清楚。此外,以前的我并不需要对内存进行管理,最多就只是在一个正在执行的进程抛出了“内存不足”的错误后,才会去找解决方法。在我的编程生涯中,虽然我有用过多维数组,也用过关联数组成千上万次,但我从来没有自己实现过数据结构。 +如果你想在一家大公司担任软件工程师,这些是你必须了解的事情。 + +如果你错过了计算机科学的学位,就像我一样,这将帮助你迎头赶上,并节省四年的时间。 + +当我开始这个项目时,我对堆栈和堆没有任何了解, +也不知道大O表示法或者关于树的任何东西,也不知道如何遍历图形。 +如果让我编写一个排序算法,相信我它会很糟糕。 +我曾经使用过的每种数据结构都是内置在语言中的,并且我完全不知道它们在底层是如何工作的。 +除非运行中的进程出现“内存不足”错误,否则我从来没有管理过内存,并且那时候就需要找到一种解决方法。 +在我的生活中,我使用过一些多维数组和成千上万个关联数组,但从未从头开始创建数据结构。 这是一个漫长的计划,以至于花费了我数月的时间。若你早已熟悉大部分的知识,那么也许能节省大量的时间。 @@ -159,7 +181,6 @@ 下面所有的东西都只是一个概述。因此,你需要由上而下逐一地去处理它。 在学习过程中,我使用 GitHub 特殊语法的 Markdown 去检查计划的进展,包括使用包含任务进度的任务列表。 - - [更多关于 Github-flavored Markdown 的详情](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) ### 如果你不想使用 Git @@ -172,28 +193,28 @@ ### 如果你不介意 Git -1. 通过单击 Fork 按钮来 fork GitHub 仓库:`https://github.com/jwasham/coding-interview-university` +创建一个新的分支,这样你就可以检查类似这样的项目了,只需在方括号中放入一个x:[x] + +1. 在 GitHub 上 Fork 该仓库: 点击 Fork 按钮,将 `https://github.com/jwasham/coding-interview-university` 仓库复制到你的 GitHub 账号中。 ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) 2. 克隆项目到本地: - ```sh + ``` git clone git@github.com:/coding-interview-university.git cd coding-interview-university - git checkout -b progress - git remote add jwasham https://github.com/jwasham/coding-interview-university - git fetch --all + git remote add upstream https://github.com/jwasham/coding-interview-university + git remote set-url --push upstream DISABLE # 这样你就不会将个人进展推回到原始仓库了。 ``` 3. 在你完成了一些修改后,在框框中打 x: - ```sh - git add . - git commit -m "Marked x" - git rebase jwasham/main - git push --set-upstream origin progress - git push --force + ``` + git commit -am "Marked personal progress" + git pull upstream main # 将您的分支与原始仓库中的更改保持最新 + + git push # just pushes to your fork ``` ## 不要觉得自己不够聪明 @@ -205,36 +226,44 @@ ## 相关视频资源 -部分视频只能通过在 Coursera 或者 Edx 课程上注册登录才能观看。这些视频被称为网络公开课程(MOOC)。有时候某些课程需要等待好几个月才能获取,这期间你无法观看这些课程的影片。 - -很感谢你能帮我把网络公开课程的视频链接转换成公开的,可持续访问的视频源,比如 YouTube 视频,以代替那些在线课程的视频。此外,一些大学的讲座视频也是我所青睐的。 - -## 面试过程 & 通用的面试准备 - -- [ ] [ABC:不要停止编程(Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [白板编程(Whiteboarding)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [揭秘技术招聘](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] 如何在科技四强企业中获得一份工作: - - [ ] [“如何在科技四强企业中获得一份工作 —— Amazon、Facebook、Google 和 Microsoft”(视频)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] 解密开发类面试第一集: - - [ ] [Gayle L McDowell —— 解密开发类面试(视频)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [解密开发类面试 —— 作者 Gayle Laakmann McDowell(视频)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] 解密 Facebook 编码面试: - - [方法](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [问题演练](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- [ ] 准备课程: - - [ ] [软件工程师面试发布(收费课程)](https://www.udemy.com/software-engineer-interview-unleashed): - - 从前 Google 面试官身上学习如何准备自己,让自己能够应付软件工程师的面试。 - - [ ] [Python 数据结构,算法和面试(收费课程)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - Python 面试准备课程,内容涉及数据结构,算法,模拟面试等。 - - [ ] [Python 的数据结构和算法简介(Udacity 免费课程)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - 免费的 Python 数据结构和算法课程。 - - [ ] [数据结构和算法纳米学位!(Udacity 收费纳米学位)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - 获得超过100种数据结构和算法练习以及指导的动手练习,专门导师帮助你在面试和职场中做好准备。 - - [ ] [探究行为面试(Educative 免费课程)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - 很多时候,不是你的技术能力会阻碍你获得理想的工作,而是你在行为面试中的表现。 - -## 为你的面试选择一种语言 +部分视频只能通过在 Coursera 或者 Edx 课程上注册登录才能观看。 +这些视频被称为网络公开课程(MOOC)。有时候某些课程需要等待好几个月才能获取,这期间你无法观看这些课程的影片。 + +很感谢你能帮我把网络公开课程的视频链接转换成公开的,可持续访问的视频源, +比如 YouTube 视频,以代替那些在线课程的视频。 +此外,一些大学的讲座视频也是我所青睐的。 + +## 选择编程语言 + +你需要为你做的编程面试选择一种编程语言, +但你也需要找到一种可以用来学习计算机科学概念的语言。 + +最好是同一种语言,这样你只需精通其中一种。 + +### 对于这个学习计划 + +在这个学习计划中,我主要使用了两种编程语言:C和Python。 + +* C: 非常底层。它允许你处理指针和内存的分配与释放,因此你能够深入理解数据结构和算法。 + 在像Python或Java这样的高级语言中,这些细节被隐藏起来。在日常工作中,这是很好的, + 但当你学习这些底层数据结构时,感受它们与计算机硬件的联系也是非常有益的。 + - C 语言无处不在。在你学习的过程中,你会在书籍、讲座、视频以及**任何地方**看到C语言的例子。 + - [《C程序设计语言(第2版)》](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - 这是一本简短的书,但它会让你很好地掌握C语言,只要稍微练习一下, + 你很快就能熟练使用。理解C语言有助于你了解程序和内存是如何工作的。 + - 你不需要深入研究这本书(甚至不用读完它)。只要阅读到你感觉舒服,并能写一些C语言的代码就可以了。 + - [书中问题的答案](https://github.com/lekkas/c-algorithms) +* 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/) + +### 对于你的编程面试 你可以在编程这一环节,使用一种自己用起来较为舒适的语言去完成编程,但对于大公司,你只有三种固定的选择: @@ -247,221 +276,271 @@ - JavaScript - Ruby -我之前写过一篇关于在面试时选择编程语言的文章:[为编程面试选择一种语言](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)。 +这是我写的一篇关于选择面试语言的文章: +[为编程面试选择一种语言](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/)。 +这是我发布帖子所基于的原始文章: [Choosing a Programming Language for Interviews](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/ -- 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) -由于我正在学习C、C++ 和 Python,因此在下面你会看到部分关于它们的学习资料。相关书籍请看文章的底部。 - -## 书单 - -为了节省你的时间,以下是比我使用过的更缩减的书单。 +## 数据结构和算法的书籍 -### 面试准备 +这本书将为你的计算机科学打下基础。 -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - 附有 C++ 和 Java 解答 - - 这是在练习 Cracking the Coding Interview 之前一个很好的热身 - - 不太困难,大多数问题可能比你在面试中看到的要容易(根据我的阅读) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - 附有 Java 答案 +只需选择一种你感到舒适的语言。你将会进行大量阅读和编码工作。 -### 如果你有额外的时间: +### C -选择以下之一: +- [C语言中的算法,第1-5部分(捆绑包),第3版](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - 基础知识,数据结构,排序,搜索和图算法 -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [ ] Elements of Programming Interviews (Java version) - - [书](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [配套项目──书中每个问题的方法和测试用例](https://github.com/gardncl/elements-of-programming-interviews) - -### 编程语言精选 +### Python -**你需要选择面试语言(请参见上文)。** +- [ ] [Python数据结构和算法](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - 作者:Goodrich、Tamassia、Goldwasser + - 我非常喜爱这本书,它包含了所有东西 + - 很 Python 的代码 + - 我的读书报告:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -这是我按语言给出的建议。我没有所有语言的资源,欢迎贡献。 +### Java -如果你通读其中之一,你应该具备了开始解决编程问题所需的所有数据结构和算法知识。除非你需要复习,否则**你可以跳过此项目中的所有视频讲座**。 +你的选择: -[额外编程语言的精选资源](https://github.com/jwasham/coding-interview-university/blob/main/programming-language-resources.md) +- Goodrich, Tamassia, Goldwasser + - [Java数据结构与算法](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - [算法(第4版)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - 免费Coursera课程,涵盖该书内容(由作者授课!): + - [算法I](https://www.coursera.org/learn/algorithms-part1) + - [算法II](https://www.coursera.org/learn/algorithms-part2) ### C++ -我没有读过这两本书,但是它们颇受好评,作者是 Sedgewick,他非常厉害。 +你的选择: -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -- [ ] [Open Data Structures in C++](https://opendatastructures.org/ods-cpp.pdf) - - 丰富而详细的数据结构和算法集合 - - 非常适合初学者 +- Goodrich, Tamassia, and Mount + - [C++数据结构与算法(第2版)](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [C++算法(第1-4部分):基础知识,数据结构,排序,搜索](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [C++算法第5部分:图算法](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -如果你有更好的 C++ 书籍,请告诉我。我正在搜集全面的资源。 +## 面试准备书籍 -### Java +你不需要买一堆这些。老实说,《破解编程面试》可能已经足够了, +但我买了更多来给自己更多的练习。但我总是做得太多。 -- [ ] [算法(Sedgewick 和 Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - 包含课程内容(和Sedgewick!)的视频 - - [第一部分](https://www.coursera.org/learn/algorithms-part1) - - [第二部分](https://www.coursera.org/learn/algorithms-part2) +这两个都是我买的,他们给了我大量的练习。 -或者: +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - 提供C++和Java语言的答案 + - 这本书是准备《Cracking the Coding Interview》的很好热身书 + - 难度适中。大多数问题可能比实际面试中遇到的问题要简单(根据我所读的内容) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - 提供Java语言的答案 -- [ ] [Java 数据结构和算法](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - 作者:Goodrich、Tamassia、Goldwasser - - 用作 UC Berkeley 的 CS 入门课程的可选教材 - - 请参阅下面有关 Python 版本的我的读书报告,这本书涵盖了相同的主题 +### 如果你有很多额外的时间: -### Python +选择一个: -- [ ] [Python数据结构和算法](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - 作者:Goodrich、Tamassia、Goldwasser - - 我非常喜爱这本书,它包含了所有东西 - - 很 Python 的代码 - - 我的读书报告:[startupnextdoor.com/book-report-data-structures-and-algorithms-in-python](https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/) -- [ ] [Open Data Structures in Python](https://opendatastructures.org/ods-python.pdf) +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [配套项目-本书中每个问题的方法存根和测试用例](https://github.com/gardncl/elements-of-programming-interviews) -## 在你开始之前 +## 不要犯我的错误 -该列表已经持续更新了很长的一段时间,所以,我们的确很容易会对其失去控制。 +这个列表在很多个月里不断增长,是的,它变得失控了。 -这里列出了一些我所犯过的错误,希望你不要重滔覆辙。 +以下是我犯过的一些错误,这样你就能有更好的体验。而且你将节省数月时间。 ### 1. 你不可能把所有的东西都记住 -就算我观看了数小时的视频,并记录了大量的笔记,几个月后的我,仍然会忘却其中大部分的东西。所以,我花了3天翻阅我的笔记,并制作成抽认卡(flashcard)帮助我复习: +我看了数小时的视频并做了大量笔记,几个月后有很多东西我都不记得了。 +我花了三天时间浏览我的笔记并制作闪卡,以便进行复习。其实,并不需要那么多知识。 请阅读以下的文章以免重蹈覆辙: [记住计算机科学知识](https://startupnextdoor.com/retaining-computer-science-knowledge/)。 -有人推荐给我的课程(但我还沒看过):[学习如何学习](https://www.coursera.org/learn/learning-how-to-learn)。 - ### 2. 使用抽认卡 为了解决善忘的问题,我制作了一个抽认卡的网页,用于添加两种抽认卡:一般的及带有代码的。每种卡都会有不同的格式设计。 - 而且,我还以移动设备为先去设计这些网页,以使得在任何地方,我都能通过我的手机及平板去回顾知识。 你也可以免费制作属于你自己的抽认卡网站: - [抽认卡页面的代码仓库](https://github.com/jwasham/computer-science-flash-cards) + +**我不建议使用我的闪卡**。它们太多了,而且大部分都是你不需要的琐事。 + +但是如果你不想听我的话,那就随你吧: - [我的抽认卡数据库 ── 旧 1200 张](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db) - [我的抽认卡数据库 ── 新 1800 张](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db) -有一点需要记住的是,我做事有点过头,以至于卡片都覆盖到所有的东西上,从汇编语言和 Python 的细枝末节,到机器学习和统计都被覆盖到卡片上。而这种做法,对于要求来说是多余的。 +有一点需要记住的是,我做事有点过头,以至于卡片都覆盖到所有的东西上,从汇编语言和 Python 的细枝末节,到机器学习和统计都被覆盖到卡片上。 +而这种做法,对于要求来说是多余的。 + +**在抽认卡上做笔记:** 若你第一次发现你知道问题的答案时,先不要急着把其标注成“已知”。 +反复复习这张抽认卡,直到每次都能答对后才是真正学会了这个问题。 +反复地问答可帮助你深刻记住该知识点。 + +这里有个替代我抽认卡的网站 [Anki](http://ankisrs.net/),很多人向我推荐过它。 +这个网站用同一个字卡重复出现的方式让你牢牢地记住知识。 +这个网站非常容易使用,支持多平台,并且有云端同步功能。在 iOS 平台上收费25美金,其他平台免费。 + +这是我用 Anki 这个网站里的格式所储存的抽认卡资料库: https://ankiweb.net/shared/info/25173560 (感谢 [@xiewenya](https://github.com/xiewenya))。 -**在抽认卡上做笔记:** 若你第一次发现你知道问题的答案时,先不要急着把其标注成“已知”。反复复习这张抽认卡,直到每次都能答对后才是真正学会了这个问题。反复地问答可帮助你深刻记住该知识点。 +一些学生提到了关于空白间距的格式问题,可以通过以下方法进行修复:打开卡片组,编辑卡片,点击"卡片"选项,选择"样式"单选按钮,在卡片类中添加成员 "white-space: pre;"。 -这里有个替代我抽认卡的网站 [Anki](http://ankisrs.net/),很多人向我推荐过它。这个网站用同一个字卡重复出现的方式让你牢牢地记住知识。这个网站非常容易使用,支持多平台,并且有云端同步功能。在 iOS 平台上收费25美金,其他平台免费。 +### 3. 在学习过程中做编程面试题 -这是我用 Anki 这个网站里的格式所储存的抽认卡资料库: ankiweb.net/shared/info/25173560 (感谢 [@xiewenya](https://github.com/xiewenya)) +**这非常重要。** -### 3. 复习,复习,再复习 +在学习数据结构和算法的同时,开始做编程面试题。 -我留有一组 ASCII 码表、OSI 堆栈、Big-O 记号及更多的抽认卡,以便在空余的时候可以学习。 +你需要将所学知识应用于解决问题,否则你会忘记。我曾经犯过这个错误。 -编程累了就休息半个小时,并去复习你的抽认卡。 +一旦你学完一个主题,并且对它有了一定的掌握,比如 **链表(linked lists)**: +1. 打开其中一本[编程面试书籍](#interview-prep-books)(或下方列出的编程问题网站之一)。 +1. 关于链表的问题,请提出2或3个。 +1. 继续学习下一个主题。 +1. 稍后,回来再做另外2或3个链表问题。 +1. 使用这种方法来学习每个新主题。 + +**在学习这些内容的过程中不断做问题,而不是之后。** + +你被雇佣的不是因为你的知识,而是因为你如何应用这些知识。 + +下面列出了许多资源供你参考。继续前进吧。 ### 4. 专注 -在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。因此,专注和集中注意力是非常困难的。放点纯音乐能帮上一些忙。 +在学习的过程中,往往会有许多令人分心的事占据着我们宝贵的时间。 +因此,专注和集中注意力是非常困难的。放点纯音乐能帮上一些忙。 ## 没有包含的内容 有一些熟悉且普遍的技术在此未被谈及到: -- SQL - Javascript -- HTML、CSS 和其他前端技术 +- HTML,CSS和其他前端技术 +- SQL ## 日常计划 -部分问题可能会花费一天的时间去学习,而有些则会花费多天。当然,有些学习并不需要我们懂得如何实现。 +这门课涵盖了很多主题。每个主题可能需要你几天的时间,甚至可能需要一周或更长时间。这取决于你的日程安排。 -因此,每一天我都会在下面所列出的列表中选择一项,并观看相关的视频。然后,使用以下的一种语言去实现: +每天,按照列表中的下一个主题,观看一些关于该主题的视频, +然后用你选择的语言为这门课程编写该数据结构或算法的实现。 -- C —— 使用结构体和函数,该函数会接受一个结构体指针 * 及其他数据作为参数。 -- C++ —— 不使用内建的数据类型。 -- C++ —— 使用内建的数据类型,如使用 STL 的 std::list 来作为链表。 -- Python —— 使用内建的数据类型(为了持续练习 Python),并编写一些测试去保证自己代码的正确性。有时,只需要使用断言函数 assert() 即可。 -- 此外,你也可以使用 Java 或其他语言。以上只是我的个人偏好而已。 +在这里你可以查看到我的代码: +- [C](https://github.com/jwasham/practice-c) +- [C++](https://github.com/jwasham/practice-cpp) +- [Python](https://github.com/jwasham/practice-python) -你不需要学会所有的编程语言,你只需要专注在[一种编程语言](##为你的面试选择一种语言)上。 +你不需要记住每个算法。你只需要能够理解它,以便能够编写自己的实现即可。 -为何要在这些语言上分别实现一次? +## 编程问题练习 -- 练习,练习,练习,直至我厌倦它,并正确无误地实现出来。(若有部分边缘条件没想到时,我会用书写的形式记录下来并去记忆) -- 在纯原生的条件下工作(不需垃圾回收机制的帮助下,手动分配/释放内存(除了 Python)) -- 利用语言内建的数据类型,之后在实际工作的时候才能得心应手(在生产环境中,我不会去实现自己的链表) + 这是为什么?我还没有准备好面试。 -就算我没有时间去每一项都这么做,但我也会尽我所能。 +[那就回去阅读这部分。](#3-do-coding-interview-questions-while-youre-learning) -在这里你可以查看到我的代码: +为什么你需要练习编程问题: +- 识别问题,并确定合适的数据结构和算法 +- 收集问题的要求 +- 像在面试中那样口头表达解决问题的过程 +- 在白板或纸上编写代码,而不是在计算机上 +- 为您的解决方案确定时间和空间复杂度(参见下文中的大O表示法)。 +- 对你的解决方案进行测试 -- [C](https://github.com/jwasham/practice-c) -- [C++](https://github.com/jwasham/practice-cpp) -- [Python](https://github.com/jwasham/practice-python) +在面试中,有一种方法论的、有交流的问题解决方法。你可以从编程面试书籍中了解这些, +但我发现下面这个网站也非常出色: +[算法设计画布](http://www.hiredintech.com/algorithm-design/) + +在白板或纸上写代码,而不是在计算机上。使用一些样例输入进行测试。然后在计算机上键入并进行测试。 -你不需要记住每一个算法的内部原理。 +如果家里没有白板,请从艺术用品店购买一个大型的绘图本。 +你可以坐在沙发上练习。这就是我的"沙发白板"。照片中我加了一支笔来衡量尺寸。如果你使用钢笔,你会希望能擦除。 +会很快变得凌乱, **我用铅笔和橡皮擦。** -在一个白板上写代码,而不要直接在计算机上编写。在测试完部分简单的输入后,到计算机上再测试一遍。 +![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -## 必备知识 +**编程问题练习并不是为了记住解决编程问题的答案。** -- [ ] **学习C语言** - - C 语言无处不在。在学习的过程中,你会在书籍,讲座,视频等任何地方看到它的身影 - - [ ] [C程序设计语言,第二版](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - 这是一本简短的书,但是它将使你更好地使用 C 语言,并且如果你稍加练习,就会很快熟练。理解 C 可帮助你了解程序和内存的工作方式 - - 问题答案 +## 编程问题 -- [ ] **计算机是如何处理一段程序:** - - [ ] [CPU 是如何执行代码(视频)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [计算机如何计算(视频)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [寄存器和内存(视频)](https://youtu.be/fpnE6UAfbtU) - - [ ] [中央处理单元(视频)](https://youtu.be/FZGugFqdr60) - - [ ] [指令和程序(视频)](https://youtu.be/zltgXvg6r3k) +别忘了参考你的主要编程面试书籍[这里](#interview-prep-books). + +解决问题: +- [如何找到解决方案](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [如何分析Topcoder问题陈述](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +编程面试问题视频: +- [IDeserve(88个视频)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [Tushar Roy(5个播放列表)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - 非常适合问题解决方案的演示 +- [Nick White - LeetCode解答(187个视频)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - 解释解决方案和代码的很好 + - 你可以在短时间内观看多个视频 +- [FisherCoder - LeetCode解答](https://youtube.com/FisherCoder) + +挑战/练习网站: +- [LeetCode](https://leetcode.com/) + - 我最喜欢的编程问题网站。对于你准备的1-2个月时间,订阅会费是值得的。 + - 观看上面提到的Nick White和FisherCoder的视频,可以帮助你理解代码解决方案。 +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [AlgoExpert](https://www.algoexpert.io/product) + - 由谷歌工程师创建,也是提高你技能的优秀资源。 +- [Project Euler](https://projecteuler.net/) + - 主要关注数学问题,并不完全适合编程面试。 + +## 让我们开始吧 + +好了,说得够多了,让我们学习吧! + +但在学习的同时,不要忘记做上面的编码问题! ## 算法复杂度 / Big-O / 渐进分析法 -- 并不需要实现 -- 这里有很多视频,看到你真正了解它为止。你随时可以回来复习。 -- 如果这些课程太过数学的话,你可以去看看最下面离散数学的视频,它能让你更了解这些数学背后的来源以及原理。 -- [ ] [Harvard CS50 —— 渐进表示(视频)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [Big O 记号(通用快速教程)(视频)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] [Big O 记号(以及 Omega 和 Theta)—— 最佳数学解释(视频)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena 算法: - - [视频](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [幻灯片](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [对于算法复杂度分析的一次详细介绍](http://discrete.gr/complexity/) -- [ ] [增长阶数(Orders of Growth)(视频)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [渐进性(Asymptotics)(视频)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O(视频)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega(视频)](https://youtu.be/ca3e7UVmeUc) -- [ ] [平摊分析法(Amortized Analysis)(视频)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [举证“Big O”(视频)](https://class.coursera.org/algorithmicthink1-004/lecture/63) +- 这里没有什么需要实施的,你只是在观看视频并记笔记!耶! +- 这里有很多视频,只要看到你理解为止就好了,你随时可以回来复习。 +- 如果你不理解背后的所有数学,不要担心。 +- 你只需要理解如何用大O表示法来表达算法的复杂度。 +- [ ] [哈佛大学CS50 - 渐进符号(视频)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [大O符号(通用快速教程)(视频)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [大O符号(以及Ω和Θ)- 最佳数学解释(视频)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [Skiena(视频)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [加州大学伯克利分校关于大O符号(视频)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [摊还分析(视频)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] TopCoder(包括递归关系和主定理): - - [计算性复杂度:第一部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [计算性复杂度:第二部](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [速查表(Cheat sheet)](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) + - [计算复杂性:第1部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [计算复杂性:第2部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [速查表](http://bigocheatsheet.com/) +- [ ] [[复习] 5分钟内了解大O符号(视频)](https://youtu.be/__vX2sjlpXU) + +好吧,差不多就到这里了。 + +当你阅读《破解编程面试》时,有一个章节专门讲述此事,并在最后进行了一次测验, +以测试你是否能够确定不同算法的运行时间复杂度。这是一个非常全面的复习和测试。 ## 数据结构 - ### 数组(Arrays) - - 实现一个可自动调整大小的动态数组。 - [ ] 介绍: - - [数组(视频)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UC Berkeley CS61B - 线性数组和多维数组(视频)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE)(从15分32秒开始) - - [动态数组(视频)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [不规则数组(视频)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [数组 CS50 哈佛大学](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [数组(视频)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [加州大学伯克利分校CS61B - 线性和多维数组(视频)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE)(从15分32秒开始) + - [动态数组(视频)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [嵌套数组(视频)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] 实现一个动态数组(可自动调整大小的可变数组): - [ ] 练习使用数组和指针去编码,并且指针是通过计算去跳转而不是使用索引 - [ ] 通过分配内存来新建一个原生数据型数组 @@ -490,16 +569,20 @@ - ### 链表(Linked Lists) - [ ] 介绍: - - [ ] [单向链表(视频)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B —— 链表(一)(视频)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - - [ ] [CS 61B —— 链表(二)(视频)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - - [ ] [C 代码(视频)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) ── 并非看完整个视频,只需要看关于节点结构和内存分配那一部分即可 + - [ ] [链表 CS50 哈佛大学](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - 这样建立了直观感。 + - [ ] [单链表(视频)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [CS 61B - 链表1(视频)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [CS 61B - 链表 2(视频)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[复习] 4分钟了解链表(视频)](https://youtu.be/F8AbOfQwl1c) + - [ ] [C代码(视频)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - 不是整个视频,只是关于Node结构和内存分配的部分。 - [ ] 链表 vs 数组: - - [基本链表 Vs 数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [在现实中,链表 Vs 数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [核心链表与数组(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [在现实世界中,链表与数组的比较(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [为什么你需要避免使用链表(视频)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] 的确:你需要关于“指向指针的指针”的相关知识:(因为当你传递一个指针到一个函数时,该函数可能会改变指针所指向的地址)该页只是为了让你了解“指向指针的指针”这一概念。但我并不推荐这种链式遍历的风格。因为,这种风格的代码,其可读性和可维护性太低。 + - [ ] 的确:你需要关于“指向指针的指针”的相关知识:(因为当你传递一个指针到一个函数时, + 该函数可能会改变指针所指向的地址)该页只是为了让你了解“指向指针的指针”这一概念。 + 但我并不推荐这种链式遍历的风格。因为,这种风格的代码,其可读性和可维护性太低。 - [指向指针的指针](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] 实现(我实现了使用尾指针以及没有使用尾指针这两种情况): - [ ] size() —— 返回链表中数据元素的个数 @@ -539,7 +622,8 @@ - empty() - full() - [ ] 花销: - - 在糟糕的实现情况下,使用链表所实现的队列,其入列和出列的时间复杂度将会是 O(n)。因为,你需要找到下一个元素,以致循环整个队列 + - 在糟糕的实现情况下,使用链表所实现的队列,其入列和出列的时间复杂度将会是 O(n)。 + 因为,你需要找到下一个元素,以致循环整个队列 - enqueue:O(1)(平摊(amortized)、链表和数组 [探测(probing)]) - dequeue:O(1)(链表和数组) - empty:O(1)(链表和数组) @@ -549,25 +633,26 @@ - [ ] [链式哈希表(视频)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - [ ] [Table Doubling 和 Karp-Rabin(视频)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing 和密码型哈希(Cryptographic Hashing)(视频)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010:The Mighty Dictionary(视频)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(进阶)随机取样(Randomization):全域哈希(Universal Hashing)& 完美哈希(Perfect Hashing)(视频)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(进阶)完美哈希(Perfect hashing)(视频)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) + - [ ] [PyCon 2010:强大的字典(视频)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017:字典更强大(视频)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(高级) 随机化:通用和完美哈希(视频)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(进阶)完美哈希(Perfect hashing)(视频)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[复习]4分钟了解哈希表(视频)](https://youtu.be/knV86FlSXJ8) - [ ] 在线课程: - - [ ] [基本哈希表(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [数据结构(视频)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [电话薄问题(Phone Book Problem)(视频)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [核心哈希表(视频)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [数据结构(视频)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [电话簿问题(视频)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - [ ] 分布式哈希表: - - [Dropbox 中的瞬时上传及存储优化(视频)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [分布式哈希表(视频)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Dropbox中的即时上传和存储优化(视频)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [分布式哈希表(视频)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - [ ] 使用线性探测的数组去实现 - - hash(k, m) —— m 是哈希表的大小 - - add(key, value) —— 如果 key 已存在则更新值 - - exists(key) - - get(key) - - remove(key) + - [ ] 使用线性探测法的数组实现 + - hash(k, m) - m是哈希表的大小 + - add(key, value) - 如果键已存在,则更新值 + - exists(key) - 检查键是否存在 + - get(key) - 获取给定键的值 + - remove(key) - 删除给定键的值 ## 更多的知识 @@ -575,7 +660,8 @@ - [ ] [二分查找(视频)](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [二分查找(视频)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [详情](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) + - [ ] [蓝图](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [【复习】四分钟二分查找(视频)](https://youtu.be/fDKIpRe8GW4) - [ ] 实现: - 二分查找(在一个已排序好的整型数组中查找) - 迭代式二分查找 @@ -1186,19 +1272,6 @@ --- -## 终面 - - 这一部分有一些短视频,你可以快速的观看和复习大多数重要概念。 - 这对经常性的巩固很有帮助。 - -- [ ] 2-3分钟的简短主题视频系列(23个视频) - - [视频](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分钟的简短主题视频系列──Michael Sambol (46个视频): - - [视频](https://www.youtube.com/@MichaelSambol) - - [Code Examples](https://github.com/msambol/dsa) -- [ ] [Sedgewick 视频 ── 算法I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick 视频 ── 算法II](https://www.coursera.org/learn/algorithms-part2) - ## 编程问题练习 现在你已经了解了上面所有的计算机科学主题,是时候练习回答编程问题了。 @@ -1341,10 +1414,10 @@ ***************************************************************************************************** ***************************************************************************************************** - + 下面的内容都是可选的。 通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。你将会成为一个更全面的软件工程师。 - + ***************************************************************************************************** ***************************************************************************************************** @@ -1716,7 +1789,7 @@ -- ## 一些主题的额外内容 - + 我为前面提到的某些主题增加了一些额外的内容,之所以没有直接添加到前面,是因为这样很容易导致某个主题内容过多。毕竟你想在本世纪找到一份工作,对吧? - SOLID From 47c35464cc2747ba9b0441277f4e18c2b3923eac Mon Sep 17 00:00:00 2001 From: hashcookie Date: Tue, 8 Aug 2023 17:32:27 +0800 Subject: [PATCH 768/857] Update the latest and most complete Readme-cn.md --- translations/README-cn.md | 808 +++++++++++++++++--------------------- 1 file changed, 369 insertions(+), 439 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index f0048defb4..150cb9acb7 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -45,14 +45,14 @@ - [如何使用它](#如何使用它) - [不要觉得自己不够聪明](#不要觉得自己不够聪明) - [相关视频资源](#相关视频资源) -- [选择编程语言](#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) +- [选择编程语言](#选择编程语言) +- [数据结构和算法的书籍](#数据结构和算法的书籍) +- [面试准备书籍](#面试准备书籍) +- [不要犯我的错误](#不要犯我的错误) +- [没有包含的内容](#没有包含的内容) +- [日常计划](#日常计划) +- [编程问题练习](#编程问题练习) +- [编程问题](#编程问题) ### 学习的主题 @@ -67,10 +67,10 @@ - [二分查找(Binary search)](#二分查找binary-search) - [按位运算(Bitwise operations)](#按位运算bitwise-operations) - [树(Trees)](#树trees) - - [树 —— 简介](#树--简介) + - [树-介绍](#树-介绍) - [二叉查找树(Binary search trees):BSTs](#二叉查找树binary-search-treesbsts) - [堆(Heap) / 优先级队列(Priority Queue) / 二叉堆(Binary Heap)](#堆heap--优先级队列priority-queue--二叉堆binary-heap) - - [平衡查找树(Balanced search trees)(基本概念,非细节)](#平衡查找树balanced-search-trees) + - 平衡搜索树 (总体概念,不涉及细节) - 遍历:前序、中序、后序、BFS、DFS - [排序](#排序sorting) - 选择排序(selection) @@ -100,23 +100,23 @@ - [Unicode](#unicode) - [字节顺序](#字节序Endianness) - [网络](#网络视频) -- [终面](#终面) +- [最终复习](#最终复习) ### 获得工作机会 -- [更新你的简历](#update-your-resume) -- [找工作](#find-a-job) -- [面试流程和面试准备p](#interview-process--general-interview-prep) -- [面试前需要考虑的事项](#be-thinking-of-for-when-the-interview-comes) -- [准备一些问题以便问面试官](#have-questions-for-the-interviewer) -- [一旦你得到了工作](#once-youve-got-the-job) +- [更新你的简历](#更新你的简历) +- [找工作](#找工作) +- [面试流程与一般面试准备](#面试流程与一般面试准备) +- [当面试来临的时候](#当面试来临的时候) +- [问面试官的问题](#问面试官的问题) +- [当你获得了梦想的职位](#当你获得了梦想的职位) **---------------- 以下所有内容均为可选项 ----------------** ### 可选的额外主题和资源 - [额外书籍](#额外书籍) -- [系统设计、可扩展性、数据处理](#system-design-scalability-data-handling) (如果你有4年以上的工作经验) +- [系统设计、可扩展性和数据处理](#系统设计、可扩展性和数据处理) - [附加学习](#附加学习) - [编译器](#编译器) - [Emacs and vi(m)](#emacs-and-vim) @@ -130,10 +130,10 @@ - [垃圾回收](#垃圾回收) - [并行编程](#并行编程) - [消息传递,序列化和队列化的系统](#消息传递序列化和队列系统) - - [A*搜索算法](#A搜索算法) + - [A*搜索算法](#a*搜索算法) - [快速傅里叶变换](#快速傅里叶变换) - [布隆过滤器](#布隆过滤器) - - [HyperLogLog](#HyperLogLog) + - [HyperLogLog](#hyperloglog) - [局部敏感哈希](#局部敏感哈希) - [van Emde Boas 树](#van-emde-boas-树) - [增强数据结构](#增强数据结构) @@ -145,7 +145,7 @@ - 2-3-4 树(也称 2-4 树) - N-ary (K-ary, M-ary)树 - B 树 - - [k-D 树](#k-D树) + - [k-D 树](#k-d树) - [跳表](#跳表) - [网络流](#网络流) - [不相交集 & 联合查找](#不相交集--联合查找) @@ -695,18 +695,14 @@ ## 树(Trees) -- ### 树 —— 笔记 & 背景 - - [ ] [系列:树(视频)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - 基本的树形结构 - - 遍历 - - 操作算法 - - [ ] [BFS(广度优先检索,breadth-first search)和 DFS(深度优先检索,depth-first search)](https://www.youtube.com/watch?v=uWL6FJhq5fM) +- ### 树-介绍 + - [ ] [树的介绍(视频)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [树遍历(视频)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] [BFS(广度优先搜索)和DFS(深度优先搜索)(视频)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS 笔记 - - 层序遍历(使用队列的 BFS 算法) + - 层次遍历(BFS,使用队列) - 时间复杂度: O(n) - - 空间复杂度: - - 最好情况:O(1) - - 最坏情况:O(n/2)=O(n) + - 空间复杂度:最佳情况:O(1),最坏情况:O(n/2)=O(n) - DFS 笔记: - 时间复杂度:O(n) - 空间复杂度: @@ -715,14 +711,12 @@ - 中序遍历(DFS:左、节点本身、右) - 后序遍历(DFS:左、右、节点本身) - 先序遍历(DFS:节点本身、左、右) - - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + - [ ] [[复习]4分钟内的广度优先搜索(视频)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[复习] 4分钟内的深度优先搜索(视频)](https://youtu.be/Urx87-NMm6c) + - [ ] [[复习]11分钟内的树遍历(播放列表)(视频)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 二叉查找树(Binary search trees):BSTs - - [ ] [二叉查找树概览(视频)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [系列(视频)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - 从符号表开始到 BST 程序 + - [ ] [二叉搜索树复习(视频)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [介绍(视频)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT(视频)](https://www.youtube.com/watch?v=9Jry5-82I68) - C/C++: @@ -737,12 +731,12 @@ - [ ] [从二叉查找树中删除一个节点(视频)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [二叉查找树中序遍历的后继者(视频)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] 实现: - - [ ] insert // 往树上插值 + - [ ] [insert // 将值插入树中](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) - [ ] get_node_count // 查找树上的节点数 - [ ] print_values // 从小到大打印树中节点的值 - [ ] delete_tree - [ ] is_in_tree // 如果值存在于树中则返回 true - - [ ] get_height // 返回节点所在的高度(如果只有一个节点,那么高度则为1) + - [ ] [get_height // 以节点为单位返回高度(单个节点的高度为1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) - [ ] get_min // 返回树上的最小值 - [ ] get_max // 返回树上的最大值 - [ ] is_binary_search_tree @@ -750,22 +744,21 @@ - [ ] get_successor // 返回给定值的后继者,若没有则返回-1 - ### 堆(Heap) / 优先级队列(Priority Queue) / 二叉堆(Binary Heap) - - 可视化是一棵树,但通常是以线性的形式存储(数组、链表) - - [ ] [堆](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [介绍(视频)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [简单的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - 以树形结构可视化,但通常在存储上是线性的(数组、链表) + - [ ] [堆(Heap)](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] [堆简介(视频)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - [ ] [二叉树(视频)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [关于树高的讨论(视频)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [树高度备注(视频)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [基本操作(视频)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - [ ] [完全二叉树(视频)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [伪代码(视频)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [堆排序 —— 跳到起点(视频)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [堆排序(视频)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [构建一个堆(视频)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT:堆与堆排序(视频)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24:优先级队列(视频)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [构建线性时间复杂度的堆(大顶堆)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] [堆排序 - 跳转到开始部分(视频)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [堆排序(视频)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [构建堆(视频)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT:堆和堆排序(视频)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24:优先队列(视频)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [线性时间构建堆(大顶堆)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[复习] 13分钟了解堆(视频)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 实现一个大顶堆: - [ ] insert - [ ] sift_up —— 用于插入元素 @@ -793,17 +786,27 @@ - [链表的归并排序](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - 关于堆排序,请查看前文堆的数据结构部分。堆排序很强大,不过是非稳定排序。 + - [ ] [Sedgewick ── 归并排序(5个视频)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] 1. 归并排序 - - [ ] 2. 自下而上的归并排序 - - [ ] 3. 排序复杂度 - - [ ] 4. 比较器 - - [ ] 5. 稳定性 + - [ ] [1. 归并排序(Mergesort)](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. 自底向上的归并排序(Bottom up Mergesort)](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. 排序复杂性(Sorting Complexity)](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. 比较器(Comparators)](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. 稳定性(Stability)](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + - [ ] [Sedgewick ── 快速排序(4个视频)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] 1. 快速排序 - - [ ] 2. 选择 - - [ ] 3. 重复键值 - - [ ] 4. 系统排序 + - [ ] [1. 快速排序(Quicksort)](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] [2. 选择排序(Selection)](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. 重复键(Duplicate Keys)](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. 系统排序(System Sorts)](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] 加州大学伯克利分校: + - [ ] [CS 61B Lecture 29:排序 I(视频)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30:排序 II(视频)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32:排序 III(视频)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33:排序 V(视频)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21:基数排序(视频)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) + - [ ] [冒泡排序(视频)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [冒泡排序分析(视频)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [插入排序 & 归并排序(视频)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -849,11 +852,12 @@ - [ ] [随机算法: 矩阵相乘, 快排, Freivalds' 算法(视频)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [线性时间内的排序(视频)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -总结一下,这是[15种排序算法](https://www.youtube.com/watch?v=kPRA0W1kECg)的可视化表示。如果你需要有关此主题的更多详细信息,请参阅“[一些主题的额外内容](#一些主题的额外内容)”中的“排序”部分。 +总结一下,这是[15种排序算法](https://www.youtube.com/watch?v=kPRA0W1kECg)的可视化表示。 +如果你需要有关此主题的更多详细信息,请参阅“[一些主题的额外内容](#一些主题的额外内容)”中的“排序”部分。 ## 图(Graphs) -图论能解决计算机科学里的很多问题,所以这一节会比较长,像树和排序的部分一样。 +图表可以用来表示计算机科学中的许多问题,所以这一部分很长,就像树和排序一样。 - 笔记: - 有4种基本方式在内存里表示一个图: @@ -880,19 +884,18 @@ - [ ] 图 (复习和其他): - [ ] [6.006 单源最短路径问题(视频)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra 算法(视频)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford 算法(视频)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Dijkstra 效率优化(视频)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: 图的算法 I - 拓扑排序,最小生成树,Prim 算法 - 第六课(视频)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: 图的算法 II - 深度优先搜索, 广度优先搜索, Kruskal 算法, 并查集数据结构 - 第七课(视频)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: 图的算法 III: 最短路径 - 第八课(视频)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: 图的算法. IV: 几何算法介绍 - 第九课(视频)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (从 58:09 开始)(视频)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: 加权图(视频)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [贪心算法: 最小生成树(视频)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [图的算法之强连通分量 Kosaraju 算法(视频)](https://www.youtube.com/watch?v=RpgcYiky7uw) - - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + - [ ] [6.006 Dijkstra算法(视频)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford算法(视频)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 加速Dijkstra算法(视频)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni:图算法 I - 拓扑排序,最小生成树,Prim算法 - 讲座6(视频)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni:图算法 II - DFS,BFS,Kruskal算法,Union Find数据结构 - 讲座7(视频)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni:图算法 III:最短路径 - 讲座8(视频)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni:图算法 IV:几何算法入门 - 讲座9(视频)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014:加权图(视频)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [贪婪算法:最小生成树(视频)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [强连通分量Kosaraju算法图算法(视频)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[复习] 最短路径算法(播放列表)16分钟(视频)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[复习] 最小生成树(播放列表)4分钟(视频)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - 完整的 Coursera 课程: - [ ] [图的算法(视频)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) @@ -913,8 +916,6 @@ - [ ] 列出强连通分量 - [ ] 检查双向图 -可以从 Skiena 的书(参考下面的书推荐小节)和面试书籍中学习更多关于图的实践。 - ## 更多知识 - ### 递归(Recursion) @@ -927,21 +928,26 @@ - 尾递归会更好么? - [ ] [什么是尾递归以及为什么它如此糟糕?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [尾递归(视频)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [解决任何递归问题的5个简单步骤(视频)](https://youtu.be/ngCos392W4w) + 回溯蓝图: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### 动态规划(Dynamic Programming) - - 在你的面试中或许没有任何动态规划的问题,但能够知道一个题目可以使用动态规划来解决是很重要的。 + - 在你的面试中或许没有任何动态规划的问题, + 但能够知道一个题目可以使用动态规划来解决是很重要的。 - 这一部分会有点困难,每个可以用动态规划解决的问题都必须先定义出递推关系,要推导出来可能会有点棘手。 - 我建议先阅读和学习足够多的动态规划的例子,以便对解决 DP 问题的一般模式有个扎实的理解。 - [ ] 视频: - - Skiena 的视频可能会有点难跟上,有时候他用白板写的字会比较小,难看清楚。 - - [ ] [Skiena: CSE373 2012 - 课程 19 - 动态规划介绍(视频)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - 课程 20 - 编辑距离(视频)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - 课程 21 - 动态规划举例(视频)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - 课程 22 - 动态规划应用(视频)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: 动态规划 0 (starts at 59:18)(视频)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: 动态规划 I - 课程 11(视频)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: 动态规划 II - 课程 12(视频)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] 单独的 DP 问题 (每一个视频都很短):[动态规划(视频)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] [Skiena:CSE373 2020 - 讲座19 - 动态规划简介(视频)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena:CSE373 2020 - 讲座20 - 编辑距离(视频)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena:CSE373 2020 - 讲座20 - 编辑距离(续)(视频)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena:CSE373 2020 - 讲座21 - 动态规划(视频)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena:CSE373 2020 - 讲座22 - 动态规划和复习(视频)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) + - [ ] [Simonson:动态规划 0(从59:18开始)(视频)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson:动态规划 I - 第11讲(视频)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson:动态规划 II - 第12讲(视频)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] 单独的动态规划问题列表(每个都很短): + [动态规划(视频)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] 耶鲁课程笔记: - [ ] [动态规划](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera 课程: @@ -953,10 +959,6 @@ - [ ] [全局成对序列排列(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [本地成对序列排列(视频)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### 面向对象编程 - - 可选:[UML 2.0系列(视频)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - SOLID 面向对象编程原则:[SOLID 原则(视频)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - ### 设计模式 - [ ] [UML 统一建模语言概览 (视频)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] 主要有如下的设计模式: @@ -977,14 +979,10 @@ - [ ] 迭代器模式(iterator) - [ ] 组合模式(composite) - [ ] 享元模式(flyweight) - - [ ] [第六章 (第 1 部分 ) - 设计模式 (视频)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [第六章 (第 2 部分 ) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (视频)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [第六章 (第 3 部分 ) - Adapter, Facade, Immutable, Read-Only Interface, Proxy(视频)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [系列视频(27个)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First 设计模型](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - 尽管《设计模式:可复用面向对象软件的基础》才是这方面的经典,但是我还是认为Head First对于新手更加友好。 - - [ ] [实际操作:设计模式和对入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + - [ ] [书籍:《Head First设计模式》](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. + - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - ### 组合(Combinatorics) (n 中选 k 个) & 概率(Probability) - [ ] [数据技巧: 如何找出阶乘、排列和组合(选择)(视频)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) @@ -996,19 +994,21 @@ - 只有视频 - 41 (每一个都短小精悍): - [ ] [概率解释(视频)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-完全和近似算法 - - 知道最经典的一些 NP 完全问题,比如旅行商问题和背包问题,而且能在面试官试图忽悠你的时候识别出他们。 - - 知道 NP 完全是什么意思. +- ### NP, NP-Completeness和近似算法 + - 知道最经典的一些 NP-Completeness 问题,比如旅行商问题和背包问题, + 而且能在面试官试图忽悠你的时候识别出他们。 + - 知道 NP-Completeness 是什么意思. - [ ] [计算复杂度(视频)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [贪心算法. II & 介绍 NP-完全性(视频)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP-完全性 II & 归约(视频)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP-完全性 III(视频)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP-完全性 IV(视频)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [贪心算法. II & 介绍 NP-Completeness(视频)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP-Completeness II & 归约(视频)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-Completeness III(视频)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP-Completeness IV(视频)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - 课程 23 - 介绍 NP-完全性 IV(视频)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - 课程 24 - NP-完全性证明(视频)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 课程 25 - NP-完全性挑战(视频)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 23 - 介绍 NP-Completeness IV(视频)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - 课程 24 - NP-Completeness证明(视频)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 课程 25 - NP-Completeness挑战(视频)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020年 - 第26讲 - NP-Completeness挑战(视频)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - [ ] [复杂度: P, NP, NP-完全性, 规约(视频)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [复杂度: 近视算法 Algorithms(视频)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [复杂度: 固定参数算法(视频)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) @@ -1016,6 +1016,13 @@ - [Jupyter 笔记本](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - 《算法导论》(CLRS)的第 1048 - 1140 页。 +- ### 计算机如何处理程序 + + - [ ] [CPU如何执行程序(视频)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [计算机如何进行计算 - 算术逻辑单元(视频)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [寄存器和RAM(视频)](https://youtu.be/fpnE6UAfbtU) + - [ ] [中央处理器(CPU)(视频)](https://youtu.be/FZGugFqdr60) + - [ ] [指示和程序(视频)](https://youtu.be/zltgXvg6r3k) - ### 缓存(Cache) - [ ] LRU 缓存: - [ ] [LRU 的魔力 (100 Days of Google Dev)(视频)](https://www.youtube.com/watch?v=R5ON3iwx78M) @@ -1050,8 +1057,9 @@ - 线程资源需要(在同一个进程内和其他线程共享以上(除了栈)的资源,但是每个线程都有独立的程序计数器、栈计数器、寄存器和栈) - Fork 操作是真正的写时复制(只读),直到新的进程写到内存中,才会生成一份新的拷贝。 - 上下文切换 - - 操作系统和底层硬件是如何初始化上下文切换的? + - [操作系统和底层硬件如何启动上下文切换?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) - [ ] [C++ 的线程 (系列 - 10 个视频)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 春季'14:马萨诸塞大学的操作系统](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] Python 的并发 (视频): - [ ] [线程系列](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Python 线程](https://www.youtube.com/watch?v=Bs7vPNbB9JM) @@ -1071,16 +1079,11 @@ - [ ] [James Bach 软件测试公开课(视频)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - 测试驱动的开发(视频)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [Python:测试驱动的 Web 开发](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] 依赖注入: - [ ] [视频](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [测试之道](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [如何编写测试](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### 调度 - - 在操作系统中是如何运作的 - - 在操作系统部分的视频里有很多资料 - - ### 字符串搜索和操作 - [ ] [Sedgewick──后缀数组(Suffix Arrays)(视频)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [ ] [Sedgewick──子字符串搜寻(视频)](https://www.coursera.org/learn/algorithms-part2/home/week/4) @@ -1112,9 +1115,7 @@ - [ ] [MIT,高阶数据结构,字符串(视频中间有点困难)(视频)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### 浮点数 - - - [ ] 简单8位:[浮点数的表示形式-1(视频──计算中存在错误,请参见视频说明)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32位:[IEEE754 32位浮点二进制(视频)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] 简单的8位: [浮点数的表示 - 1(视频 - 计算中有错误 - 请查看视频描述)](https://www.youtube.com/watch?v=ji3SfClm8TU) - ### Unicode - [ ] [每一个软件开发者的绝对最低限度,必须要知道的关于 Unicode 和字符集知识](http://www.joelonsoftware.com/articles/Unicode.html) @@ -1144,235 +1145,66 @@ - [Java──套接字──介绍(视频)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - [套接字编程(视频)](https://www.youtube.com/watch?v=G75vN2mnJeQ) -## 系统设计、可伸缩性、数据处理 - -**如果你已经拥有了4年以上的编程经验,那你可以来看看有关系统设计的问题** - -- 系统设计以及可伸缩性,要把软硬件的伸缩性设计的足够好有很多的东西要考虑,所以这是个包含非常多内容和资源的大主题。要花费相当多的时间在这个主题上。 -- 考量: - - 伸缩性 - - 把大数据集提取为单一值 - - 大数据集转换 - - 处理大量的数据集 - - 系统 - - 功能集 - - 接口 - - 类层次结构 - - 在特定的约束下设计系统 - - 轻量和健壮性 - - 权衡和折衷 - - 性能分析和优化 -- [ ] **从这里开始**:[系统设计入门](https://github.com/donnemartin/system-design-primer) -- [ ] [HiredInTech:系统设计](http://www.hiredintech.com/system-design/) -- [ ] [该如何为技术面试里设计方面的问题做准备?](https://www.quora.comHow-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [在系统设计面试前必须知道的 8 件事](http://blog.gainlo.co/index.php/2015/10/228-things-you-need-to-know-before-system-design-interviews/) -- [ ] [算法设计](http://www.hiredintech.com/algorithm-design/) -- [ ] [数据库范式 - 1NF, 2NF, 3NF and 4NF(视频)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [系统设计面试](https://github.com/checkcheckzz/system-design-interview) - 这一部分有很多的资源浏览一下我放在下面的文章和例子。 -- [ ] [如何在系统设计面试中脱颖而出](http://www.palantir.com/2011/10how-to-rock-a-systems-design-interview/) -- [ ] [每个人都该知道的一些数字](http://everythingisdata.wordpress.com/2009/10/17numbers-everyone-should-know/) -- [ ] [上下文切换操作会耗费多少时间?](http://blog.tsunanet.net/2010/11how-long-does-it-take-to-make-context.html) -- [ ] [跨数据中心的事务(视频)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [简明 CAP 理论介绍](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] 共识算法: - - [ ] Paxos:[Paxos协议──Computerphile(视频)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft: [Raft 分布式共识算法简介(视频)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [易于阅读的论文](https://raft.github.io/) - - [ ] [信息图] -- [ ] [一致性哈希](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL 模式](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] 可伸缩性: - - 你不需要知道所有这些。只需挑选一些你感兴趣的东西即可。 - - [ ] [很棒的概述(视频)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] 简短系列: - - [克隆](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) - - [ ] [可伸缩的 Web 架构和分布式系统](http://www.aosabook.org/en/distsys.html) - - [ ] [错误的分布式系统解释](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [实用编程技术](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra: Google Pregel 图形处理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - 在 Goolge 构建软件系统(视频)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [可伸缩系统架构设计介绍](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [使用 App Engine 和云存储扩展面向全球用户的手机游戏架构实践(视频)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra(视频)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [算法的重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [分片(Sharding)](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Facebook 系统规模扩展实践 (2012), "为 10 亿用户构建"(视频)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Long Game 工程实践 - Astrid Atkinson Keynote(视频)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [30 分钟看完 YouTuBe 7 年系统扩展经验](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [视频](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [PayPal 如何用 8 台虚拟机扛住 10 亿日交易量系统](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [如何对大数据集去重](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [Etsy 的扩展和工程文化探究 Jon Cowie(视频)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [是什么造就了 Amazon 自己的微服务架构](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [压缩还是不压缩,是 Uber 面临的问题](https://eng.uber.com/trip-data-squeeze/) - - [ ] [异步 I/O Tarantool 队列](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [什么时候应该用近似查询处理?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google 从单数据中心到故障转移, 到本地多宿主架构的演变](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyte: 构建和扩展 PB 级分布式系统架构的经验教训](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [机器学习驱动的编程: 新世界的新编程方式](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [日服务数百万请求的图像优化技术](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [Patreon 架构](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: 推荐引擎是如何决定下一个你将会看到谁的?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [现代缓存设计](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Facebook 实时视频流扩展](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [在 Amazon AWS 上把服务扩展到 1100 万量级的新手教程](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [对延时敏感的应用是否应该使用 Docker?](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [360 度解读 Netflix 技术栈](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [延迟无处不在 - 如何搞定它?](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [无服务器架构](http://martinfowler.com/articles/serverless.html) - - [ ] [是什么驱动着 Instagram: 上百个实例、几十种技术](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Cinchcast 架构 - 每天处理 1500 小时的音频](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tv 实时视频播放架构](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfish's 社交游戏架构 - 每月五千万用户增长](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [猫途鹰架构 - 40 万访客, 200 万动态页面访问, 30TB 数据](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [PlentyOfFish 架构](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforce 架构 - 如何扛住 13 亿日交易量](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's 架构扩展](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] 下面“消息传递,序列化和队列系统”部分的内容会提到什么样的技术能把各种服务整合到一起 - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter"(视频)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [时间线的扩展](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - 更多内容可以查看[视频系列部分](#视频系列)的“大规模数据挖掘”视频系列。 -- [ ] 系统设计问题练习:下面有一些指导原则,每一个都有相关文档以及在现实中该如何处理。 - - 复习: [系统设计入门](https://github.com/donnemartin/system-design-primer) - - [HiredInTech 的系统设计](http://www.hiredintech.com/system-design/) - - [备忘单](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - 流程: - 1. 理解问题和范围: - - 在面试官的帮助下定义用例 - - 提出附加功能的建议 - - 去掉面试官认定范围以外的内容 - - 假定高可用是必须的,而且要作为一个用例 - 2. 考虑约束: - - 问一下每月请求量 - - 问一下每秒请求量 (他们可能会主动提到或者让你算一下) - - 评估读写所占的百分比 - - 评估的时候牢记 2/8 原则 - - 每秒写多少数据 - - 总的数据存储量要考虑超过 5 年的情况 - - 每秒读多少数据 - 3. 抽象设计: - - 分层 (服务, 数据, 缓存) - - 基础设施: 负载均衡, 消息 - - 粗略的概括任何驱动整个服务的关键算法 - - 考虑瓶颈并指出解决方案 - - 练习: - - [设计一个 CDN 网络](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [设计一个随机唯一 ID 生成系统](https://blog.twitter.com/2010/announcing-snowflake) - - [设计一个在线多人卡牌游戏](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [设计一个键值数据库](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [设计一个图片分享系统](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [设计一个推荐系统](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [设计一个短域名生成系统](http://www.hiredintech.com/system-design/the-system-design-process/) - - [设计一个缓存系统](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - --- -## 编程问题练习 - -现在你已经了解了上面所有的计算机科学主题,是时候练习回答编程问题了。 - -**编程问题的实践并不是要记住编程问题的答案**。 - -为什么需要练习编程问题: - -- 快速识别问题,以及如何应用正确的数据结构及算法 -- 收集问题的要求 -- 像在面试中一样谈论问题 -- 在白板或纸上而非计算机上编码 -- 计算解决方案的时间和空间的复杂性 -- 测试你的解决方案 - -这里有个很棒的入门教学,内容是如何在面试中有条不紊,并且有互动沟通地解决问题。这种能力可以从面试书籍中获得,但我觉得这个也很棒:[算法设计画布](http://www.hiredintech.com/algorithm-design/)。 - -家里没有白板?那讲得通。我是一个怪人,有一个很大的白板。从白板商店买了一个大的绘图板,而不是白板。你可以坐在沙发上练习。这是我的“沙发白板”。我在照片中添加了笔以便进行缩放。如果你使用笔,则希望可以擦除。快速变得凌乱。我用铅笔和橡皮擦。 - -![我的沙发白板](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) +## 最终复习 -补充: + 本节将包含一系列短视频,您可以迅速观看,以便复习大部分重要概念。 + 如果您经常需要温习知识,这会很有帮助。 -- [Topcoder的数学](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) -- [动态编程──从新手到高级](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT 面试材料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) +- [ ] 一系列2-3分钟的短主题视频(共23个视频) + - [视频链接](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 一系列2-5分钟的短主题视频 - Michael Sambol(共46个视频): + - [视频链接](https://www.youtube.com/@MichaelSambol) + - [代码示例](https://github.com/msambol/dsa) +- [ ] [Sedgewick的算法课程视频 - 算法I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick的算法课程视频 - 算法II](https://www.coursera.org/learn/algorithms-part2) -**阅读并练习编程问题(按此顺序)**: - -- [ ] [编程面试公开:下一份工作的秘密,第二版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - C,C ++ 和 Java 的答案 -- [ ] [破解编码面试,第六版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Java 答案 - -请参阅上方的[书单](#书单)。 - -## 编程练习和挑战 - -一旦你学会了理论基础,就应该把它们拿出来练练。 -尽量坚持每天做编码练习,越多越好。 - -- [如何找到解决方案](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) -- [如何剖析 Topcoder 题目描述](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) - -编码面试问题视频: - -- [IDeserve(88个视频)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy(5个播放列表)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - - 超级解决问题的方法 -- [Nick White──LeetCode 解题(187个视频)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - - 良好的解决方案和代码解释 - - 你可以在短时间内看好几个 -- [FisherCoder──LeetCode 解题](https://youtube.com/FisherCoder) - -编码练习平台: - -- [LeetCode](https://leetcode.com/) - - 我最喜欢的编码问题网站,值得你准备的1-2个月的订阅费用 - - [FisherCoder 的 LeetCode 解题](https://github.com/fishercoder1534/Leetcode) - - 请参阅上面的 Nick White 视频,以获得简短的代码 -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [InterviewCake](https://www.interviewcake.com/) -- [http://www.geeksforgeeks.org/](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com) -- [Project Euler (数学方向为主)](https://projecteuler.net/index.php?section=problems) -- [Code Exercises](https://code-exercises.com/) -- [Scaler Topics](https://www.scaler.com/topics/) - -语言学习网站,附带编码挑战: - -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) - -编码挑战项目: +--- -- [Python 交互式编码面试挑战](https://github.com/donnemartin/interactive-coding-challenges) +## 更新你的简历 + +- 在书籍《Cracking The Coding Interview》和《Programming Interviews Exposed》中查看简历准备信息。 +- [“这就是一个优秀简历的样子” by Gayle McDowell(《Cracking the Coding Interview》的作者)](https://www.careercup.com/resume), + - 作者备注:“这是针对美国的简历。印度和其他国家的简历有不同的期望,尽管许多要点是相同的。” +- [“逐步简历指南” by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - 详细指南,教您如何从零开始设置您的简历,编写有效的简历内容,优化它,并测试您的简历。 + +## 面试流程与一般面试准备 + +- [ ] [如何在2021年通过工程师面试](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [揭秘技术招聘过程](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] 如何在四大科技巨头公司中找到工作: + - [ ] [如何在四大科技巨头公司中找到工作 - 亚马逊、Facebook、谷歌和微软(视频)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [如何在四大科技巨头公司中找到工作1(后续视频)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] 《破解编程面试》第一集: + - [ ] [Gayle L McDowell - Cracking The Coding Interview(视频)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [与作者Gayle Laakmann McDowell一起破解编程面试(视频)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] 破解Facebook编程面试: + - [ ] [方法论](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [问题演示](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- 面试准备课程: + - [数据结构、算法和面试的Python课程(付费课程):](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - 以Python为中心的面试准备课程,涵盖数据结构、算法、模拟面试等内容。 + - [使用Python的数据结构和算法简介(Udacity免费课程):](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - 一个免费的以Python为中心的数据结构和算法课程。 + - [数据结构和算法纳米学位!(Udacity付费纳米学位):](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - 提供超过100个数据结构和算法练习的实际操作体验,并得到专属导师的指导,以帮助您为面试和实际工作做准备。 + - [Grokking行为面试(Educative免费课程):](https://www.educative.io/courses/grokking-the-behavioral-interview): + - 很多时候,阻碍您获得梦想工作的不是您的技术能力,而是您在行为面试中的表现。 + - [AlgoMonster(付费课程,提供免费内容):)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - LeetCode的速成课程。涵盖了从成千上万的问题中提炼出的所有模式。 模拟面试: - -- [Gainlo.co:来自大公司的模拟面试官](http://www.gainlo.co/#!/)──我使用了它,它帮助我减轻了电话屏幕和现场面试的压力 -- [Pramp:模拟来自/与同行的面试](https://www.pramp.com/)──点对点方式练习面试 -- [Refdash:模拟面试和加急面试](https://refdash.com/)──跳过与科技公司的多次面试,帮助求职者快速追踪 -- [interviewing.io:与高级工程师进行模拟面试](https://interviewing.io/)──与来自 FAANG(译者注:Facebook, Amazon, Apple, Netflix and Google) 的高级工程师进行匿名算法/系统设计面试。 - -## 当你临近面试时 - -- 搞定代码面试──第二集 (视频): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - 全栈系列](https://www.youtube.com/watch?v=Eg5-tdAwclo) - -## 你的简历 - -- 请参阅“破解编码面试”和“编程面试的背面”中的建立准备项。 - +- [Gainlo.co:来自大公司的模拟面试官](http://www.gainlo.co/#!/) - 我用过这个,帮助我放松进行电话和现场面试。 +- [Pramp:与同行进行模拟面试](https://www.pramp.com/) - 同行模式的实践面试。 +- [interviewing.io:与资深工程师进行模拟面试 ](https://interviewing.io) - 匿名算法/系统设计面试,与FAANG公司的资深工程师进行。 +- [Meetapro:与顶级FAANG面试官进行模拟面试 ](https://meetapro.com/?utm_source=ciu) - 类似Airbnb的模拟面试/指导平台。 + ## 当面试来临的时候 -随着下面列举的问题思考下你可能会遇到的 20 个面试问题,每个问题准备 2-3 种回答。准备点故事,不要只是摆一些你完成的事情的数据,相信我,人人都喜欢听故事。 +随着下面列举的问题思考下你可能会遇到的 20 个面试问题,每个问题准备 2-3 种回答。 +准备点故事,不要只是摆一些你完成的事情的数据,相信我,人人都喜欢听故事。 - 你为什么想得到这份工作? - 你解决过的最有难度的问题是什么? @@ -1389,7 +1221,7 @@ ## 问面试官的问题 - 我会问的一些:(可能我已经知道了答案但我想听听面试官的看法或者了解团队的前景): +我会问的一些:(可能我已经知道了答案但我想听听面试官的看法或者了解团队的前景): - 团队多大规模? - 开发周期是怎样的? 会使用瀑布流/极限编程/敏捷开发么? @@ -1416,7 +1248,8 @@ ***************************************************************************************************** 下面的内容都是可选的。 - 通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。你将会成为一个更全面的软件工程师。 + 通过学习这些内容,你将会得到更多的有关 CS 的概念,并将为所有的软件工程工作做更好的准备。 + 你将会成为一个更全面的软件工程师。 ***************************************************************************************************** ***************************************************************************************************** @@ -1437,7 +1270,6 @@ - [设计模式:可复用面向对象软件的基础](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - 也被称为“四人帮”(Gang of Four(GOF)) - 经典设计模式书籍 -- [Linux 和 UNIX 系统管理技术手册(第五版)](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - [算法设计手冊(Skiena)](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) - 作为复习以及问题辨别 - 这本书中算法的部分难度已经超过面试会出现的 @@ -1456,12 +1288,10 @@ - 我即将着手进行这部分,一旦完成这部分我会再更新上来 - 可以在 kindle 上租 - 解答: - - [解答](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [解答](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [解答](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [勘误表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - +- [算法](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) - [编程卓越之道(第一卷):深入理解计算机](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - 该书于2004年出版,虽然有些过时,但是对于简单了解计算机而言,这是一个了不起的资源 - 作者发明了[高阶组合语言 HLA](https://en.wikipedia.org/wiki/High_Level_Assembly),所以提到,并且举了一些HLA的例子。里面没有用到很多,但都是很棒的组合语言的例子。 - 这些章节值得阅读,为你提供良好的基础: @@ -1474,22 +1304,130 @@ - 第9章──CPU体系结构 - 第10章──指令集架构 - 第11章──内存体系结构和组织 - -- [算法导论](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) +- [算法导论](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) - **重要提示**:读这本书的价值有限。本书很好地回顾了算法和数据结构,但不会教你如何编写良好的代码。你必须能够有效地编写一个不错的解决方案 - 又称 CLR,有时是 CLRS,因为 Stein 最后才加入 +- [计算机体系结构,第六版:定量方法](https://www.amazon.com/dp/0128119055) + - 对于更丰富、更时新(2017年)但较长的处理方式 + +## 系统设计、可扩展性和数据处理 + +**如果您有4年以上的工作经验,可以预期会遇到系统设计问题。** + +- 可扩展性和系统设计是一个非常广泛的主题,涵盖了许多内容和资源, +因为在设计一个可以扩展的软件/硬件系统时需要考虑很多因素。 +预计需要花费相当多的时间来学习这方面的知识。 +- 考虑要点: + - 可扩展性 + - 将大数据集归纳为单一值 + - 将一个数据集转换为另一个数据集 + - 处理海量数据 + - 系统设计 + - 功能集 + - 接口 + - 类层次结构 + - 在特定约束下设计系统 + - 简单性和鲁棒性 + - 权衡 + - 性能分析和优化 +- [ ] **从这里开始**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [HiredInTech的系统设计](http://www.hiredintech.com/system-design/) +- [ ] [如何准备回答技术面试中的设计问题?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [通过8个步骤掌握系统设计面试](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) +- [ ] [数据库规范化 - 第一范式、第二范式、第三范式和第四范式(视频)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [系统设计面试 ](https://github.com/checkcheckzz/system-design-interview) - 这个资源有很多内容。浏览文章和示例。我列出了一些示例在下面。 +- [ ] [如何在系统设计面试中脱颖而出](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [每个人都应该了解的数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [进行上下文切换需要多长时间?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [跨数据中心的事务(视频)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [CAP定理的简明英文介绍](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824:分布式系统,2020年春季(20个视频)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] 共识算法: + - [ ] Paxos - [Paxos协议 - Computerphile(视频)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [Raft分布式共识算法简介(视频)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [易于理解的论文](https://raft.github.io/) + - [ ] [信息图](http://thesecretlivesofdata.com/raft/) +- [ ] [一致性哈希](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL模式](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] 可扩展性: + - 您不需要掌握所有这些内容,只需选择一些您感兴趣的。 + - [ ] [优秀的概述(视频)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] 短系列: + - [克隆](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) + - [ ] [可扩展的Web架构和分布式系统](http://www.aosabook.org/en/distsys.html) + - [ ] [分布式计算的谬误解释](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - 在Google构建软件系统以及吸取的教训(视频)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [架构师为规模而设计的介绍](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [缩放移动游戏以面向全球受众使用App Engine和Cloud Datastore(视频)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [谷歌是如何进行面向全球基础设施的大规模工程的(视频)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [算法的重要性](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [分片](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [针对长期目标的工程 - Astrid Atkinson主题演讲(视频)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [在30分钟内了解YouTube 7年的可扩展性经验](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [视频](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [PayPal如何使用仅8台VM每天处理数十亿次交易](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [如何在大型数据集中去重](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [通过Jon Cowie深入了解Etsy的规模和工程文化(视频)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Amazon是如何转向自己的微服务架构的](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [压缩还是不压缩,这是Uber面临的问题](https://eng.uber.com/trip-data-squeeze/) + - [ ] [何时应使用近似查询处理?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [谷歌从单一数据中心到故障转移再到本地多家数据中心架构的转变]( 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.html) + - [ ] [Patreon架构简介](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [如何在Instagram庞大的推荐引擎中决定您将看到谁?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [现代缓存设计](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [在Facebook规模下进行直播视频流](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [在亚马逊AWS上如何扩展到1100万以上的用户](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [全面了解Netflix整个堆栈](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [延迟无处不在,而且它会让您丧失销售机会 - 如何应对](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Instagram的动力:数百个实例,几十种技术](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce架构 - 如何处理每天13亿次交易](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN规模上的架构 - 每秒操作10万次“嘟嘟噜嘟嘟噜”](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] 在下面的“消息、序列化和队列系统”部分查看一些将服务连接在一起的技术信息 + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (视频)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [时间轴扩展](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - 欲知更多信息,请参阅[Video Series](#video-series) 部分中的“Mining Massive Datasets”视频系列 +- [ ] 练习系统设计过程:以下是一些建议您在纸上尝试的想法,每个想法都有一些关于如何在现实世界中处理的文档: + - 复习: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [HiredInTech的系统设计](http://www.hiredintech.com/system-design/) + - [速查表](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - 流程: + 1. 理解问题和范围: + - 定义用例,与面试官的帮助 + - 提出额外的功能 + - 移除面试官认为超出范围的项目 + - 假设需要高可用性,并将其添加为用例 + 2. 考虑限制: + - 询问每月有多少个请求 + - 询问每秒有多少个请求(他们可能会主动提供或让您计算) + - 估计读取与写入的百分比 + - 保持估计时考虑80/20法则 + - 每秒写入多少数据 + - 在5年内所需的总存储量 + - 每秒读取多少数据 + 3. 抽象设计: + - 层(服务、数据、缓存) + - 基础架构:负载均衡、消息传递 + - 驱动服务的任何关键算法的粗略概述 + - 考虑瓶颈并确定解决方案 + - 练习: + - [设计一个随机唯一ID生成系统](https://blog.twitter.com/2010/announcing-snowflake) + - [设计一个键值数据库](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [设计一个图片分享系统](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [设计一个推荐系统](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [设计一个URL缩短系统:来自上面的复制](http://www.hiredintech.com/system-design/the-system-design-process/) + - [设计一个缓存系统](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) -- [计算机体系结构:量化研究方法(第6版)](https://www.amazon.com/dp/0128119055) - - 更丰富、更新(2017年),但篇幅较长 -- [编程珠矶](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - 前几章介绍了解决编程问题(非常古老,甚至还用数据磁带)的巧妙解决方案,但这只是一个介绍。这是关于程序设计和体系结构的指南 ## 附加学习 我把它们加进来是为了让你成为更全方位的软件工程师,并且留意一些技术以及算法,让你拥有更大的工具箱。 - ### 编译器 - - [编译器的工作方式,约1分钟(视频)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [Harvard CS50-编译器(视频)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [C ++(视频)](https://www.youtube.com/watch?v=twodd1KFfGk) @@ -1514,7 +1452,8 @@ - [Emacs 教程 (初学者 -第 3 部分- 表达式, 声明, ~/.emacs 文件和包机制](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil 模式: 或许, 我是怎样对 Emacs 路人转粉的 (视频)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [使用 Emacs 开发 C 程序](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(或许) 深度组织模式:管理结构 (视频)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [Emacs 绝对初学者指南(David Wilson的视频)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [Emacs 绝对初学者指南(David Wilson 批注)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Unix 命令行工具 - 下列内容包含优秀工具 @@ -1617,9 +1556,7 @@ - [Avro](https://avro.apache.org/) - ### A*搜索算法 - - [A 搜索算法](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* 路径搜索教程(教程)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [A* 路径搜索(E01:算法解释)(视频)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### 快速傅里叶变换 @@ -1653,15 +1590,25 @@ - ### 平衡查找树(Balanced search trees) - 掌握至少一种平衡查找树(并懂得如何实现): - - “在各种平衡查找树当中,AVL 树和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。这种令人特别感兴趣的数据结构,亦称伸展树(splay tree)。它可以自我管理,且会使用轮换来移除任何访问过根节点的键。” —— Skiena - - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。虽然,通过我的阅读,我发现在面试中并不会被要求实现一棵平衡查找树。但是,为了胜人一筹,我们还是应该看看如何去实现。在阅读了大量关于红黑树的代码后,我才发现伸展树的实现确实会使得各方面更为高效。 + - “在各种平衡查找树当中,AVL 树和2-3树已经成为了过去,而红黑树(red-black trees)看似变得越来越受人青睐。 + 这种令人特别感兴趣的数据结构,亦称伸展树(splay tree)。 + 它可以自我管理,且会使用轮换来移除任何访问过根节点的键。” —— Skiena + - 因此,在各种各样的平衡查找树当中,我选择了伸展树来实现。 + 虽然,通过我的阅读,我发现在面试中并不会被要求实现一棵平衡查找树。 + 但是,为了胜人一筹,我们还是应该看看如何去实现。在阅读了大量关于红黑树的代码后, + 我才发现伸展树的实现确实会使得各方面更为高效。 - 伸展树:插入、查找、删除函数的实现,而如果你最终实现了红黑树,那么请尝试一下: - 跳过删除函数,直接实现搜索和插入功能 - 我希望能阅读到更多关于 B 树的资料,因为它也被广泛地应用到大型的数据集当中。 - [自平衡二叉查找树](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - **AVL 树** - - 实际中:我能告诉你的是,该种树并无太多的用途,但我能看到有用的地方在哪里:AVL 树是另一种平衡查找树结构。其可支持时间复杂度为 O(log n) 的查询、插入及删除。它比红黑树严格意义上更为平衡,从而导致插入和删除更慢,但遍历却更快。正因如此,才彰显其结构的魅力。只需要构建一次,就可以在不重新构造的情况下读取,适合于实现诸如语言字典(或程序字典,如一个汇编程序或解释程序的操作码)。 + - 实际中: + 我能告诉你的是,该种树并无太多的用途,但我能看到有用的地方在哪里: + AVL 树是另一种平衡查找树结构。其可支持时间复杂度为 O(log n) 的查询、插入及删除。 + 它比红黑树严格意义上更为平衡,从而导致插入和删除更慢,但遍历却更快。正因如此,才彰显其结构的魅力。 + 只需要构建一次,就可以在不重新构造的情况下读取, + 适合于实现诸如语言字典(或程序字典,如一个汇编程序或解释程序的操作码)。 - [MIT AVL 树 / AVL 树的排序(视频)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - [AVL 树(视频)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - [AVL 树的实现(视频)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) @@ -1669,7 +1616,10 @@ - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - **伸展树** - - 实际中:伸展树一般用于缓存、内存分配者、路由器、垃圾回收者、数据压缩、ropes(字符串的一种替代品,用于存储长串的文本字符)、Windows NT(虚拟内存、网络及文件系统)等的实现。 + - 实际中: + 伸展树一般用于缓存、内存分配者、路由器、垃圾回收者、数据压缩、ropes + (字符串的一种替代品,用于存储长串的文本字符)、 + Windows NT(虚拟内存、网络及文件系统)等的实现。 - [CS 61B:伸展树(Splay trees)(视频)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - MIT 教程:伸展树(Splay trees): - 该教程会过于学术,但请观看到最后的10分钟以确保掌握。 @@ -1677,7 +1627,14 @@ - **红黑树** - 这些是2-3棵树的翻译(请参见下文)。 - - 实际中:红黑树提供了在最坏情况下插入操作、删除操作和查找操作的时间保证。这些时间值的保障不仅对时间敏感型应用有用,例如实时应用,还对在其他数据结构中块的构建非常有用,而这些数据结构都提供了最坏情况下的保障;例如,许多用于计算几何学的数据结构都可以基于红黑树,而目前 Linux 内核所采用的完全公平调度器(the Completely Fair Scheduler)也使用到了该种树。在 Java 8中,Collection HashMap也从原本用Linked List实现,储存特定元素的哈希码,改为用红黑树实现。 + - 实际中:红黑树提供了在最坏情况下插入操作、删除操作和查找操作的时间保证。 + 这些时间值的保障不仅对时间敏感型应用有用,例如实时应用, + 还对在其他数据结构中块的构建非常有用, + 而这些数据结构都提供了最坏情况下的保障; + 例如,许多用于计算几何学的数据结构都可以基于红黑树, + 而目前 Linux 内核所采用的完全公平调度器(the Completely Fair Scheduler)也使用到了该种树。 + 在 Java 8中,Collection HashMap也从原本用Linked List实现, + 储存特定元素的哈希码,改为用红黑树实现。 - [Aduni —— 算法 —— 课程4(该链接直接跳到开始部分)(视频)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni —— 算法 —— 课程5(视频)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [黑树(Black Tree)](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) @@ -1685,14 +1642,19 @@ - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - **2-3查找树** - - 实际中:2-3树的元素插入非常快速,但却有着查询慢的代价(因为相比较 AVL 树来说,其高度更高)。 + - 实际中: + 2-3树的元素插入非常快速,但却有着查询慢的代价(因为相比较 AVL 树来说,其高度更高)。 - 你会很少用到2-3树。这是因为,其实现过程中涉及到不同类型的节点。因此,人们更多地会选择红黑树。 - [2-3树的直感与定义(视频)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [2-3树的二元观点](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [2-3树(学生叙述)(视频)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4树 (亦称2-4树)** - - 实际中:对于每一棵2-4树,都有着对应的红黑树来存储同样顺序的数据元素。在2-4树上进行插入及删除操作等同于在红黑树上进行颜色翻转及轮换。这使得2-4树成为一种用于掌握红黑树背后逻辑的重要工具。这就是为什么许多算法引导文章都会在介绍红黑树之前,先介绍2-4树,尽管**2-4树在实际中并不经常使用**。 + - 实际中: + 对于每一棵2-4树,都有着对应的红黑树来存储同样顺序的数据元素。 + 在2-4树上进行插入及删除操作等同于在红黑树上进行颜色翻转及轮换。 + 这使得2-4树成为一种用于掌握红黑树背后逻辑的重要工具。 + 这就是为什么许多算法引导文章都会在介绍红黑树之前,先介绍2-4树,尽管**2-4树在实际中并不经常使用**。 - [CS 61B Lecture 26:平衡查找树(视频)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - [自底向上的2-4树(视频)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [自顶向下的2-4树(视频)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) @@ -1705,7 +1667,11 @@ - **B 树** - 有趣的是:为啥叫 B 仍然是一个神秘。因为 B 可代表波音(Boeing)、平衡(Balanced)或 Bayer(联合创造者) - - 实际中:B 树会被广泛适用于数据库中,而现代大多数的文件系统都会使用到这种树(或变种)。除了运用在数据库中,B 树也会被用于文件系统以快速访问一个文件的任意块。但存在着一个基本的问题,那就是如何将文件块 i 转换成一个硬盘块(或一个柱面-磁头-扇区)上的地址。 + - 实际中: + B 树会被广泛适用于数据库中,而现代大多数的文件系统都会使用到这种树(或变种)。 + 除了运用在数据库中,B 树也会被用于文件系统以快速访问一个文件的任意块。 + 但存在着一个基本的问题, + 那就是如何将文件块 i 转换成一个硬盘块(或一个柱面-磁头-扇区)上的地址。 - [B 树](https://en.wikipedia.org/wiki/B-tree) - [B 树数据结构](http://btechsmartclass.com/data_structures/b-trees.html) - [B 树的介绍(视频)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1716,10 +1682,10 @@ - 头37分钟讲述的很专业,或许可以跳过(B 指块的大小、即缓存行的大小) - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) + - ### k-D树 - 非常适合在矩形或更高维度的对象中查找点数 - 最适合k近邻 - - [Kd树(视频)](https://www.youtube.com/watch?v=W94M9D_yXKk) - [kNN K-d树算法(视频)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### 跳表 @@ -1758,57 +1724,35 @@ - [分而治之: 凸包, 中值查找](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### 离散数学 - - 查看下面的视频 - -- ### 机器学习(Machine Learning) - - 为什么学习机器学习? - - [谷歌如何将自己改造成一家「机器学习优先」公司?](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [智能计算机系统的大规模深度学习 (视频)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Peter Norvig:深度学习和理解与软件工程和验证的对比](https://www.youtube.com/watch?v=X769cyzBNVw) - - [谷歌云机器学习工具(视频)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [谷歌开发者机器学习清单 (Scikit Learn 和 Tensorflow) (视频)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (视频)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow 教程](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Python 实现神经网络实例教程(使用 Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - 课程: - - [很棒的初级课程:机器学习](https://www.coursera.org/learn/machine-learning) - - [视频教程](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - 看第 12-18 集复习线性代数(第 14 集和第 15 集是重复的) - - [机器学习中的神经网络](https://www.coursera.org/learn/neural-networks) - - [Google 深度学习微学位](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle 机器学习工程师微学位](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [无人驾驶工程师微学位](https://www.udacity.com/drive) - - 资源: - - 书籍: - - [Python 机器学习](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Python 机器学习简介](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [软件工程师的机器学习](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School:http://www.dataschool.io/ - --- + - [计算机科学70,001 - 2015年春季 - 离散数学与概率论](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [离散数学由Shai Simonson(19个视频)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [离散数学由印度理工学院罗帕尔分校NPTEL提供](https://nptel.ac.in/courses/106/106/106106183/) + +--- ## 一些主题的额外内容 - 我为前面提到的某些主题增加了一些额外的内容,之所以没有直接添加到前面,是因为这样很容易导致某个主题内容过多。毕竟你想在本世纪找到一份工作,对吧? - -- SOLID - - - [ ] [Bob Martin SOLID面向对象和敏捷设计的原理(视频)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] S ── [单一责任原则](http://www.oodesign.com/single-responsibility-principle.html) | [对每个对象的单一责任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [更多](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O ── [开放/封闭原则](http://www.oodesign.com/open-close-principle.html) | [在生产级别上,可以扩展对象,但不能修改对象](https://en.wikipedia.org/wiki/Open/closed_principle) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L ── [Liskov 替换原则](http://www.oodesign.com/liskov-s-substitution-principle.html) | [基本类别和派生类别遵循“IS A”原则](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I ── [接口隔离原理](http://www.oodesign.com/interface-segregation-principle.html) | 不应强迫客户端实现不使用的接口 - - [5分钟了解接口隔离原理(视频)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D ── [依赖倒置原理](http://www.oodesign.com/dependency-inversion-principle.html) | 减少对象组合中的依赖性。 - - [依赖倒置原理为何如此重要?](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [更多](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - -- Union-Find + 我添加了这些内容来加强上面已经提出的一些观点,但是不想把它们放在上面,因为那样会太多。 + 对于一个主题来说,过度处理很容易。 + 你希望在本世纪被雇佣吗? + +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (视频)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [单一职责原则 | 每个对象负责一个单一职责](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [更多解释](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [开闭原则](http://www.oodesign.com/open-close-principle.html) | [在生产级别上,对象应准备好进行扩展,但不进行修改](https://en.wikipedia.org/wiki/Open/closed_principle) + - [更多解释](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [里氏替换原则](http://www.oodesign.com/liskov-s-substitution-principle.html) | [基类和派生类遵循‘是一个’原则](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [更多解释](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [接口隔离原则](http://www.oodesign.com/interface-segregation-principle.html) | 客户端不应被强制实现不使用的接口 + - [5分钟内的接口隔离原则(视频)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [更多解释](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[依赖反转原则](http://www.oodesign.com/dependency-inversion-principle.html) | 在对象的组合中减少依赖 + - [为何依赖反转原则如此重要](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [更多解释](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** - [概览](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - [初级实践](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - [树状结构](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) @@ -1842,7 +1786,6 @@ - [Simonson: 近似算法 (视频)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **字符串匹配** - - Rabin-Karp(视频) - [Rabin Karps 算法](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [预计算](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) @@ -1864,20 +1807,18 @@ - 斯坦福大学关于排序算法的视频: - [课程 15 | 编程抽象(视频)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - [课程 16 | 编程抽象(视频)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - Shai Simonson 视频,[Aduni.org](http://www.aduni.org/): - [算法 - 排序 - 第二讲(视频)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [算法 - 排序2 - 第三讲(视频)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena 关于排序的视频: - - [课程从 26:46 开始(视频)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [课程从 27:40 开始(视频)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [课程从 35:00 开始(视频)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [课程从 23:50 开始(视频)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [CSE373 2020 - 归并排序/快速排序(视频)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - 线性排序(视频)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +- NAND 到 Tetris: [从第一原理构建现代计算机](https://www.coursera.org/learn/build-a-computer) ## 视频系列 - 坐下来享受一下吧。"netflix 和技能" :P +坐下来,尽情享受。 - [个人的动态规划问题列表 (都是短视频)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) @@ -1887,14 +1828,7 @@ - [绝妙的 MIT 微积分:单变量微积分](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [计算机科学 70, 001 - 2015 年春季 - 离散数学和概率理论](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) - -- [离散数学 (19 个视频)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - -- [离散数学(第一部分),Sarada Herke (5个视频)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - -- CSE373 - 算法分析 (25 个视频) - - [Skiena 的算法设计手册讲座](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [Skiena讲座来自《算法设计手册》- CSE373 2020 - 算法分析(26个视频)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) - [UC Berkeley 61B (2014 年春季): 数据结构 (25 个视频)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -1904,8 +1838,6 @@ - [OOSE:使用 UML 和 Java 进行软件开发 (21 个视频)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [UC Berkeley CS 152: 计算机结构和工程 (20 个视频)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) - - [MIT 6.004: 计算结构 (49 视频)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - [卡內基梅隆大学 - 计算机架构讲座 (39 个视频)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) @@ -1944,6 +1876,11 @@ - [在线 CS 课程目录](https://github.com/open-source-society/computer-science) - [CS 课程目录 (一些是在线讲座)](https://github.com/prakhar1989/awesome-courses) +## 算法实现 + +- [普林斯顿大学的多算法实现](https://algs4.cs.princeton.edu/code) + + ## 论文 - [喜欢经典的论文?](https://www.cs.cmu.edu/~crary/819-f09/) @@ -1954,27 +1891,20 @@ - [2004: MapReduce: Simplified Data Processing on Large Clusters](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - 大多被云数据流取代了? - [2006年:Bigtable:结构化数据的分布式存储系统](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [深入了解Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [2006年:针对松散耦合的分布式系统的Chubby Lock服务](https://research.google.com/archive/chubby-osdi06.pdf) - [2007年:Dynamo:亚马逊的高可用键值存储](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - Dynamo论文启动了NoSQL革命 - [2007: 每个程序员都应该知道的内存知识 (非常长,作者建议跳过某些章节来阅读)](https://www.akkadia.org/drepper/cpumemory.pdf) -- [2010年:Dapper,一个大型分布式系统跟踪基础结构](https://research.google.com/pubs/archive/36356.pdf) -- [2010年:Dremel:Web规模数据集的交互式分析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) -- [2012: Google 的 Colossus](https://www.wired.com/2012/07/google-colossus/) - - 没有论文 - 2012: AddressSanitizer: 快速的内存访问检查器: - [论文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [视频](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - 2013: Spanner: Google 的分布式数据库: - [论文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [视频](https://www.usenix.org/node/170855) -- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) -- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: 大规模高可用: 构建 Google Ads 的数据基础设施](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: TensorFlow: 异构分布式系统上的大规模机器学习](http://download.tensorflow.org/paper/whitepaper2015.pdf ) -- [2015: 开发者应该如何搜索代码:用例学习](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) +- [2015: Google的持续流水线](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: 大规模高可用性:构建Google广告数据基础设施](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: 开发人员如何搜索代码:一个案例研究](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- 更多论文: [1,000篇论文](https://github.com/0voice/computer_expert_paper) ## LICENSE From d0bec91d0030f603a573fcba4626d6277b6d186d Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 29 Aug 2023 11:34:13 +0200 Subject: [PATCH 769/857] Fix typo in line --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index a53b284234..e2b517431d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -534,7 +534,7 @@ pобхождам графи. Ако трябваше да напиша сорт - [LeetCode](https://leetcode.com/) - Любимият ми сайт със задачи. Струва си парите за абонамент за времето, в което ще се подготвяте. - - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки със някои задачи. + - Вижте клиповете на Nick White и FisherCoder Videos по-горе за насоки с някои задачи. - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) From 9e8b0ddea7576784fb5b135ae906e31591c043a8 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Tue, 29 Aug 2023 11:35:07 +0200 Subject: [PATCH 770/857] Fix indentation --- translations/README-bg.md | 124 +++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index e2b517431d..dd7c1b17c1 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -335,7 +335,7 @@ pобхождам графи. Ако трябваше да напиша сорт Повече за вариантите: -- [Изберете правилния език за вашето интервю по програмиране](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) +- [Изберете правилния език за вашето интервю по програмиране](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) [Вижте ресурси за специфични езици тук](programming-language-resources.md) @@ -374,11 +374,11 @@ pобхождам графи. Ако трябваше да напиша сорт Изборът е ваш: -- Goodrich, Tamassia, and Mount - - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- Sedgewick and Wayne - - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) ## Книги за подготовка за интервю @@ -386,12 +386,12 @@ pобхождам графи. Ако трябваше да напиша сорт Купих тези двете, дадоха ми предостатъчно упражнение. -- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - Отговори в C++ и Java - - Това е добра подготовка за "Cracking the Coding Interview" - - Не е прекалено сложна. Повечето проблеми са по-лесни от тези, които ще срещнете на интервю (от това, което аз съм прочел) -- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - отговори в Java +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Отговори в C++ и Java + - Това е добра подготовка за "Cracking the Coding Interview" + - Не е прекалено сложна. Повечето проблеми са по-лесни от тези, които ще срещнете на интервю (от това, което аз съм прочел) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - отговори в Java ### Ако имате изобилие от време: @@ -728,57 +728,55 @@ pобхождам графи. Ако трябваше да напиша сорт ## Дървета -- ### Дървета - бележки & основи - - - [ ] [Серия: Дървета (клип)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - основна структура на дървото - - обхождане - - алгоритми за манипулиране - - [ ] [BFS(обхождане в ширина) and DFS(обхождане в дълбочина) (клип)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - бележки за BFS: - - level order (BFS, using queue) - - времева сложност O(n) - - пространствена сложност: в най-добрия случай: O(1), в най-лошия случай: O(n/2)=O(n) - - бележки за DFS: - - времева сложност: O(n) - - пространствена сложност: - в най-добрия случай: O(log n) - средна височина на дървото - в най-добрия случай: O(n) - - inorder (DFS: ляво, self, дясно) - - postorder (DFS: ляво, дясно, self) - - preorder (DFS: self, ляво, дясно) - - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - -- ### Дървета за двоично търсене: BSTs - - - [ ] [Преговор над двоични дървета за търсене (клип)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Въведение (клип)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (клип)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [Двоично дърво за търсене - имплементация в C/C++ (клип)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST имплементация - memory allocation in stack and heap (клип)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Намиране на мин. и макс. елемент в двоично дърво за търсенея (клип)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Намиране на височината на двоично дърво (клип)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Обхождане на двоично дърво - стратегии за обхождане по ширина и по дълбочина (клип)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Двоично дърво: преминаване на порядъка на ниво (клип)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Обхождане на двоично дърво: Preorder, Inorder, Postorder (клип)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Проверка дали двоично дърво е двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Изтриване на възел от двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Редовен наследник в двоично дърво (клип)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Имплементирайте: - - [ ] insert // вкарване на стойност в дървото - - [ ] get_node_count // вземане на бройката на запазените стойности - - [ ] print_values // принтира стойностите в дървото от най-малкия до най-големия - - [ ] delete_tree - - [ ] is_in_tree // връща true ако дадената стойност съществува в дървото - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // връща най-малката стойност, съхранявана в дървото - - [ ] get_max // връща най-голямата стойност, съхранявана в дървото - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // връща следващата най-голяма стойност след дадената, -1 ако такава не съществува +- ### Дървета - бележки & основи + - [ ] [Серия: Дървета (клип)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - основна структура на дървото + - обхождане + - алгоритми за манипулиране + - [ ] [BFS(обхождане в ширина) and DFS(обхождане в дълбочина) (клип)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - бележки за BFS: + - level order (BFS, using queue) + - времева сложност O(n) + - пространствена сложност: в най-добрия случай: O(1), в най-лошия случай: O(n/2)=O(n) + - бележки за DFS: + - времева сложност: O(n) + - пространствена сложност: + в най-добрия случай: O(log n) - средна височина на дървото + в най-добрия случай: O(n) + - inorder (DFS: ляво, self, дясно) + - postorder (DFS: ляво, дясно, self) + - preorder (DFS: self, ляво, дясно) + - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + +- ### Дървета за двоично търсене: BSTs + - [ ] [Преговор над двоични дървета за търсене (клип)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Въведение (клип)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (клип)](https://www.youtube.com/watch?v=9Jry5-82I68) + - C/C++: + - [ ] [Двоично дърво за търсене - имплементация в C/C++ (клип)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST имплементация - memory allocation in stack and heap (клип)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [Намиране на мин. и макс. елемент в двоично дърво за търсенея (клип)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Намиране на височината на двоично дърво (клип)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Обхождане на двоично дърво - стратегии за обхождане по ширина и по дълбочина (клип)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [Двоично дърво: преминаване на порядъка на ниво (клип)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Обхождане на двоично дърво: Preorder, Inorder, Postorder (клип)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Проверка дали двоично дърво е двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Изтриване на възел от двоично дърво за търсене (клип)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [Редовен наследник в двоично дърво (клип)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Имплементирайте: + - [ ] insert // вкарване на стойност в дървото + - [ ] get_node_count // вземане на бройката на запазените стойности + - [ ] print_values // принтира стойностите в дървото от най-малкия до най-големия + - [ ] delete_tree + - [ ] is_in_tree // връща true ако дадената стойност съществува в дървото + - [ ] get_height // returns the height in nodes (single node's height is 1) + - [ ] get_min // връща най-малката стойност, съхранявана в дървото + - [ ] get_max // връща най-голямата стойност, съхранявана в дървото + - [ ] is_binary_search_tree + - [ ] delete_value + - [ ] get_successor // връща следващата най-голяма стойност след дадената, -1 ако такава не съществува - ### Heap / Priority Queue / Binary Heap - визуализира се като дърво, но обикновенно е линейна структура (масив, свързан списък) From f3adef8efde6b1be0dfc2ae0599b79c6e9d32164 Mon Sep 17 00:00:00 2001 From: omahs <73983677+omahs@users.noreply.github.com> Date: Sun, 3 Sep 2023 23:08:53 +0200 Subject: [PATCH 771/857] fix typos --- translations/README-fr.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index a7debf35ed..f80444c633 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -23,13 +23,13 @@ Cette longue liste a été extraite et étendue de **Google's coaching notes**, En bas, j'ai rajouté des unités supplémentaires qui peuvent être soulevées pendant l'entretien, ou qui peuvent être utiles pour résoudre des problèmes. Plusieurs unités proviennent de "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" par Steve Yegge, et sont parfois reflétées mot pour mot dans les notes de coaching de google. -J'ai épuré ce que vous devez savoir de ce qui est recommendé par Yegge. J'ai modifié les prérequis de Yegge. -D'après les informations reçues de la part des contact travaillant à Google. Ceci est destiné aux **new software engineers** ou aux developpeur logiciel/web qui souhaitent devenir des ingénieurs en génie logiciel (où la science de l'informatique est requise). Si vous avez plusieurs années d'expérience et vous déclarez plusieurs années d'éxperience en génie logiciel attendez vous à un entretien plus dur. +J'ai épuré ce que vous devez savoir de ce qui est recommandé par Yegge. J'ai modifié les prérequis de Yegge. +D'après les informations reçues de la part des contacts travaillant à Google. Ceci est destiné aux **new software engineers** ou aux développeurs logiciel/web qui souhaitent devenir des ingénieurs en génie logiciel (où la science de l'informatique est requise). Si vous avez plusieurs années d'expérience et vous déclarez plusieurs années d'expérience en génie logiciel attendez vous à un entretien plus dur. [Read more here](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). -Si vous avez plusieurs années d'experience en development web/logiciel, notez que google font une distinction entre le développement logiciel et l'ingénieurie en génie civil. +Si vous avez plusieurs années d'expérience en développement web/logiciel, notez que google font une distinction entre le développement logiciel et l'ingénierie en génie civil. -Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, suivez plus de cours de la liste optionelle (Réseau, sécurité) +Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, suivez plus de cours de la liste optionnelle (Réseau, sécurité) --- ## Table of Contents @@ -99,7 +99,7 @@ Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, sui - [Votre CV](#your-resume) - [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Ayez les questions pour l'entretien](#have-questions-for-the-interviewer) -- [Quand vous aurez eu le travial:](#once-youve-got-the-job) +- [Quand vous aurez eu le travail:](#once-youve-got-the-job) ---------------- Everything below this point is optional ---------------- @@ -265,7 +265,7 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo - [ ] Cours pour préparer: - [ ] [Comment réussir dans une interview d'ingénieur logiciel (besoin de payer)](https://www.udemy.com/software-engineer-interview-unleashed): - - Apprends comment être pret pour l'entrevue de quelqu'un qui était responsable de l'embauche pour Google. + - Apprends comment être prêt pour l'entrevue de quelqu'un qui était responsable de l'embauche pour Google. - [ ] Supplémentaires (ne sont pas suggéré par Google, mais je l'ai ajouté): - [ ] [Toujours en train de faire le codage (Anglais ABC: Always Be Coding)](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) @@ -283,7 +283,7 @@ Parfois, les cours ne sont pas en session, alors vous devez attendre quelques mo Je l'ai écrit cet article à propos de cela : [Important: Choisis une langue pour l'entrevue Google](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/) -Tu peux choisir une langue avec laquelle vos êtes comftortable pour fair la partie de codage, mais pour Google, celles-ci sont les bons choix: +Tu peux choisir une langue avec laquelle vous êtes confortable pour faire la partie de codage, mais pour Google, celles-ci sont les bons choix: - C++ - Java @@ -303,7 +303,7 @@ Lis à propos vos choix: [Regarde les ressources pour chaque langue ici](programming-language-resources.md) -Vous voyiez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui va t'aider, regarde en dessous. +Vous voyez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui vont t'aider, regarde en dessous. ## Liste de livres @@ -315,12 +315,12 @@ Voici une liste que j'ai réduite afin de vous faire gagner du temps. - réponses en c++ et java - recommandé par un candidat en coaching de Google - this is a good warm-up for Cracking the Coding Interview - - c'est un bon échuaffement pour cracker l'entretien de développement - - pas trop difficule, la plupart des problèmes seront plus faciles que ceux que vous arez dans l'entretien (de ce que j'ai lu) + - c'est un bon échauffement pour cracker l'entretien de développement + - pas trop difficile, la plupart des problèmes seront plus faciles que ceux que vous aurez dans l'entretien (de ce que j'ai lu) - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - réponses en java - recommandé sur le [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - Si vous voyez des personnes faire référence à "The Google Resume", c'était le livre remplacé par "Craking the Coding Interview" + - Si vous voyez des personnes faire référence à "The Google Resume", c'était le livre remplacé par "Cracking the Coding Interview" Si vous avez beaucoup de temps libre: @@ -334,9 +334,9 @@ Si vous n'avez pas beaucoup de temps : - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - Le livre est un peu dépassé car il a été publié en 2004, mais il reste intéressant pour comprendre brièvement comment marche un ordinateur. - - L''ateur a inventé HLA, prenez donc ses remarques et ses exemples sur le HLA avec scpetisme. Il n'est pas souvent cité mais propose de nombreux exemples sur ce à quoi un assembleur ressemble + - L'auteur a inventé HLA, prenez donc ses remarques et ses exemples sur le HLA avec scepticisme. Il n'est pas souvent cité mais propose de nombreux exemples sur ce à quoi un assembleur ressemble - Ces chapitres vous donneront des fondations : - - Chapitre 2 - Réprésentation numérique + - Chapitre 2 - Représentation numérique - Chapitre 3 - Arithmétique binaire et les opérations bit à bit - Chapitre 4 - Floating-Point Representation - Chapitre 4 - La représentation de la virgule flottante @@ -354,9 +354,9 @@ Si vous avez plus de temps (Je veux ce livre): ### Sur les langages -**Vous avez besoin de choisir un langage pour l'entretien (voir au-dessus).** Voici mes recommendations sur les différents langages. Je n'ai pas des ressources pour tous les langages alors n'hésitez pas à en rajouter. +**Vous avez besoin de choisir un langage pour l'entretien (voir au-dessus).** Voici mes recommandations sur les différents langages. Je n'ai pas de ressources pour tous les langages alors n'hésitez pas à en rajouter. -Si vous lisez un d'eux, vous devez d'abord avoir toutes des connaissances sur les structures de données et les algorithmes pour pouvoir faire des problèmes de codage. +Si vous lisez un d'eux, vous devez d'abord avoir toutes les connaissances sur les structures de données et les algorithmes pour pouvoir résoudre des problèmes de codage. **Vous pouvez passer toutes les vidéos de cours de ce projet**, à moins que vous voulez un avis. [Additional language-specific resources here.](programming-language-resources.md) @@ -368,7 +368,7 @@ Je n'ai pas lu ces deux-là mais ils sont bien notées et écrit par Sedgewick. - [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -Si vous avez une meilleure recommendation pour le C++, dites le moi. Je recherche des ressources plus compréhensive. +Si vous avez une meilleure recommandation pour le C++, dites le moi. Je recherche des ressources plus compréhensives. ### Java @@ -382,7 +382,7 @@ OU: - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - par Goodrich, Tamassia, Goldwasser - utilisé pour du texte optionnel dans les cours d'introduction à l'informatique à l'UC Berkeley - - allez voir le raport que j'ai fait sur le Python proposé en-dessous. Ce livre couvre les mêmes sujets. + - allez voir le rapport que j'ai fait sur le Python proposé en-dessous. Ce livre couvre les mêmes sujets. ### Python @@ -396,7 +396,7 @@ OU: ### Livres optionnels -**Plusieurs personnes les recommandes, cependant je pense qu'ils vont trop loin, à moins que vous ayez plusieurs années dans le dévleoppement logiciel and que vous vous attendez à un entretien bien plus difficile** +**Plusieurs personnes les recommandes, cependant je pense qu'ils vont trop loin, à moins que vous ayez plusieurs années dans le développement logiciel and que vous vous attendez à un entretien bien plus difficile** - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - En tant qu'examen et reconnaissance de problème @@ -405,7 +405,7 @@ OU: - class textbook on data structures and algorithms - pour: - est une bonne critique comme n'importe quel manuel le serait - - des histoires intéressantes venant de son expérience dans la résolutionde problèmes dans l'industriel et l'académique + - des histoires intéressantes venant de son expérience dans la résolution de problèmes dans l'industriel et l'académique - des exemples de code en C - contre: - peut être aussi dense ou impénétrable que CLRS, et dans plusieurs cas, CLRS peut être une meilleure alternative sur certains sujets From 0c8eec70131ae59129f00c504a7f5a7d75dbcd9c Mon Sep 17 00:00:00 2001 From: xixi <32609689+arsentiii@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:46:12 +0800 Subject: [PATCH 772/857] =?UTF-8?q?Update=20README-cn.md=20'is=20trivial'?= =?UTF-8?q?=20=3D>=20=E5=BE=AE=E4=B8=8D=E8=B6=B3=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update README-cn.md 'is trivial' => 微不足道 --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 150cb9acb7..04502cee43 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -606,7 +606,7 @@ - ### 堆栈(Stack) - [ ] [堆栈(视频)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] 可以不实现,因为使用数组来实现并不重要 + - [ ] 可以不实现,因为使用数组来实现是微不足道的事 - ### 队列(Queue) - [ ] [队列(视频)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) From 108b126a05be8c6b9f243d367f89ac06c924ae9c Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 27 Sep 2023 08:59:24 -0700 Subject: [PATCH 773/857] Removes period that breaks link. --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index 04502cee43..764596baf5 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -32,7 +32,7 @@ 这些职业路径有很多详细的路线图和课程资料可以在其他地方找到(请参阅 https://roadmap.sh/ 获取更多信息)。 在大学计算机科学专业中,有很多知识需要学习,但是只掌握大约75%的内容就足够应对面试了,这也是我在这里涵盖的内容。 -如果你想进行完整的自学计算机科学项目,可以参考Kamran Ahmed的计算机科学路线图:https://roadmap.sh/computer-science。 +如果你想进行完整的自学计算机科学项目,可以参考Kamran Ahmed的计算机科学路线图:https://roadmap.sh/computer-science --- From 2b2e529315b735b7cc8d5b424d8fd1a666abed61 Mon Sep 17 00:00:00 2001 From: HuseyinBE <146175484+HuseyinBE@users.noreply.github.com> Date: Thu, 28 Sep 2023 23:07:14 +0200 Subject: [PATCH 774/857] Update README-tr.md --- translations/README-tr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-tr.md b/translations/README-tr.md index 0b784ea1ba..cb240fc9a7 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1,6 +1,6 @@ # Kodlama Mülakatı Üniversitesi -> Aslında bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, +> Başlangıçta bunu yazılım mühendisi olabilmek için kısa bir yapılacaklar listesi olarak hazırladım, > ama bugün gördüğünüz büyük listeye dönüştü. Bu çalışma planını tamamladıktan sonra, [Amazon tarafından > Yazılım Geliştirme Mühendisi olarak işe alındım.](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > Muhtemelen yaptığım kadar çok çalışmanıza gerek kalmayacaktır. Her neyse, ihtiyaç duyabileceğiniz her şey burada. From 015a74d4a320c4b1ff498c7ef0e8b13eb1caeaf6 Mon Sep 17 00:00:00 2001 From: Stefan Mai Date: Fri, 29 Sep 2023 17:11:31 -0700 Subject: [PATCH 775/857] Add Hello Interview to mock interview resources --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7f9b94d678..cf3e30d6fc 100644 --- a/README.md +++ b/README.md @@ -1245,6 +1245,7 @@ Mock Interviews: - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously - [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. +- [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers. ## Be thinking of for when the interview comes From 68652085b6c8eced00a0cc4199606ceb29b317e9 Mon Sep 17 00:00:00 2001 From: hashcookie Date: Sun, 15 Oct 2023 11:46:05 +0800 Subject: [PATCH 776/857] update README-cn.md --- translations/README-cn.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-cn.md b/translations/README-cn.md index 764596baf5..2e6beed115 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1200,6 +1200,7 @@ - [Pramp:与同行进行模拟面试](https://www.pramp.com/) - 同行模式的实践面试。 - [interviewing.io:与资深工程师进行模拟面试 ](https://interviewing.io) - 匿名算法/系统设计面试,与FAANG公司的资深工程师进行。 - [Meetapro:与顶级FAANG面试官进行模拟面试 ](https://meetapro.com/?utm_source=ciu) - 类似Airbnb的模拟面试/指导平台。 +- [Hello Interview:与专家教练和人工智能模拟面试](https://www.hellointerview.com/?utm_source=ciu) - 直接与人工智能或 FAANG 员工工程师和经理面试。 ## 当面试来临的时候 From 31d062eae310b46510c2d21e6eb9462723da4cd2 Mon Sep 17 00:00:00 2001 From: Samuel Rigaud <46346622+s-rigaud@users.noreply.github.com> Date: Thu, 19 Oct 2023 12:59:52 +0000 Subject: [PATCH 777/857] Fix french typos --- translations/README-fr.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-fr.md b/translations/README-fr.md index f80444c633..85902de35c 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -60,11 +60,11 @@ Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, sui - [More Knowledge](#more-knowledge) - [Recherche dichotomique](#binary-search) - [Opérations bit à bit](#bitwise-operations) -- [Arbes](#trees) +- [Arbres](#trees) - [Arbres - Notes & Background](#trees---notes--background) - [Arbres binaires de recherche: BSTs](#binary-search-trees-bsts) - [Tas / File de Priorité / Tas binaire](#heap--priority-queue--binary-heap) - - Arbre de recherche equilibré (general concept, not details) + - Arbre de recherche équilibré (general concept, not details) - Parcours : Préfixe, infixe, postfixe, BFS, DFS - [Tri](#sorting) - sélection @@ -303,7 +303,7 @@ Lis à propos vos choix: [Regarde les ressources pour chaque langue ici](programming-language-resources.md) -Vous voyez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui vont t'aider, regarde en dessous. +Vous voyez C, C++ et Python en dessous, parce que j'apprends. Il y a quelques livres qui vont t'aider, regarde en dessous. ## Liste de livres @@ -340,7 +340,7 @@ Si vous n'avez pas beaucoup de temps : - Chapitre 3 - Arithmétique binaire et les opérations bit à bit - Chapitre 4 - Floating-Point Representation - Chapitre 4 - La représentation de la virgule flottante - - Chapitre 5 - Représentation characterielle + - Chapitre 5 - Représentation caractérielle - Chapitre 6 - Organisation et accès de la mémoire - Chapitre 7 - Type de données composites et les objets de mémoire - Chapitre 9 - Architecture CPU @@ -410,7 +410,7 @@ OU: - contre: - peut être aussi dense ou impénétrable que CLRS, et dans plusieurs cas, CLRS peut être une meilleure alternative sur certains sujets - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - les chapitres 7, 8, 9 peuvent être difficiles à suivre, comme certains points ne sont pas bien expliqués ou requiert une plus grande concentration pour comprendre + - les chapitres 7, 8, 9 peuvent être difficiles à suivre, comme certains points ne sont pas bien expliqués ou requiert une plus grande concentration pour comprendre - ne vous méprenez pas, J'aime bien Skiena, sa pédagogie et ses manières mais je ne suis pas fais pas Stony Brook - algorithm catalog: - this is the real reason you buy this book. From 9fd5b7ee5b1cab2f70657d84e8ac3e67ecc699cb Mon Sep 17 00:00:00 2001 From: Tomas Achaval <134091945+achaval-tomas@users.noreply.github.com> Date: Mon, 23 Oct 2023 20:34:41 -0300 Subject: [PATCH 778/857] Correct translation for Graphs is "Grafos" instead of "Graficos". Fixed that! --- translations/README-es.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index a85a5f7826..15e35fb731 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -110,7 +110,7 @@ Si desea ser un Ingeniero de Escalabilidad/Seguridad o un Ingeniero de Sistemas, - Por montículos (heapsort) - Rápido (quicksort) - Por mezcla (merge sort) -- [Gráficos](#graficos) +- [Grafos](#grafos) - Dirigidos - No dirigidos - Matriz de adyacencia @@ -827,9 +827,9 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co Como resumen aquí esta una representación visual de [15 algoritmos de ordenamiento](https://www.youtube.com/watch?v=kPRA0W1kECg) Si necesita más detalle de este tema vea “Ordenamientos” en [Detalles adicionales de ciertos temas](#detalles-adicionales-de-ciertos-temas) -## Gráficos +## Grafos -Los gráficos pueden ser usados para representar muchos problemas en las Ciencias de la Computación, así que es una sección larga, como lo son los árboles y ordenamientos. +Los grafos pueden ser usados para representar muchos problemas en las Ciencias de la Computación, así que es una sección larga, como lo son los árboles y ordenamientos. - Notas: - Hay cuatro formas básicas de representar un grafo en memoria: @@ -849,7 +849,7 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) -- [ ] Gráficos (revisión y más): +- [ ] Grafos (revisión y más): - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) @@ -885,7 +885,7 @@ Los gráficos pueden ser usados para representar muchos problemas en las Ciencia - [ ] Verificación de grafo bipartito. -||| Obtendrá más prácticas de gráficos en el libro de Skiena (vea Sección de libros debajo) y en los libros de entrevistas. +||| Obtendrá más prácticas de grafos en el libro de Skiena (vea Sección de libros debajo) y en los libros de entrevistas. ## Más información adicional - ### Recursión From 98906a1bf78fa29ebabc6360fbefbd977edfec70 Mon Sep 17 00:00:00 2001 From: S A G A R <110724849+tmsagarofficial@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:17:23 +0530 Subject: [PATCH 779/857] Update README.md --- README.md | 188 +++++++++++++++++++++++++++--------------------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index cf3e30d6fc..e06ed59dc7 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that is below. I'll help you get there without wasting your precious time. > > The items listed here will prepare you well for a technical interview at just about any software company, > including the giants: Amazon, Facebook, Google, and Microsoft. @@ -73,7 +73,7 @@ This is my multi-month study plan for becoming a software engineer for a large c * Patience * Time -Note this is a study plan for **software engineering**, not frontend engineering or fullstack development. There are really +Note this is a study plan for **software engineering**, not frontend engineering or full-stack development. There are really super roadmaps and coursework for those career paths elsewhere (see https://roadmap.sh/ for more info). There is a lot to learn in a university Computer Science program, but only knowing about 75% is good enough for an interview, so that's what I cover here. @@ -265,7 +265,7 @@ Create a new branch so you can check items like this, just put an x in the brack ## Don't feel you aren't smart enough - Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- Following videos may help you overcome this insecurity: +- The following videos may help you overcome this insecurity: - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) @@ -290,7 +290,7 @@ Preferably the language would be the same, so that you only need to be proficien When I did the study plan, I used 2 languages for most of it: C and Python * C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, + and algorithms in your bones. In higher-level languages like Python or Java, these are hidden from you. In day-to-day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - [The C Programming Language, 2nd Edition](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) @@ -413,8 +413,8 @@ Please, read so you won't make my mistakes: ### 2. Use Flashcards -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. +To solve the problem, I made a little flashcard site where I could add flashcards of 2 types: general and code. +Each card has a different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. Make your own for free: @@ -434,12 +434,12 @@ same card and answer it several times correctly before you really know it. Repet your brain. An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. -It uses a repetition system to help you remember. It's user-friendly, available on all platforms and has a cloud sync system. +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. My flashcard database in Anki format: 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. +Some students have mentioned formatting issues with white space that can be fixed by doing the following: open the deck, edit the card, click cards, select the "styling" radio button, and add the member "white-space: pre;" to the card class. ### 3. Do Coding Interview Questions While You're Learning @@ -447,7 +447,7 @@ 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. +You need to apply what you're learning to solve 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) @@ -503,7 +503,7 @@ Why you need to practice doing programming problems: - Coming up with time and space complexity for your solutions (see Big-O below) - Testing your solutions -There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming +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/) @@ -511,7 +511,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input 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.** +Gets messy quickly. **I use a pencil and eraser.** ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -530,7 +530,7 @@ Coding Interview Question Videos: - [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-) - - Good explanations of solution and the code + - Good explanations of the solution and the code - You can watch several in a short time - [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) @@ -546,7 +546,7 @@ Challenge/Practice sites: - [AlgoExpert](https://www.algoexpert.io/product) - Created by Google engineers, this is also an excellent resource to hone your skills. - [Project Euler](https://projecteuler.net/) - - very math focused, and not really suited for coding interviews + - very math-focused, and not really suited for coding interviews ## Let's Get Started @@ -590,11 +590,11 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] 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 - 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 the starting number is greater, use power of 2 - 16, 32, 64, 128 - [ ] size() - number of items - [ ] capacity() - number of items it can hold - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds + - [ ] at(index) - returns the item at a given index, blows up if index out of bounds - [ ] push(item) - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - [ ] prepend(item) - can use insert above at index 0 @@ -604,7 +604,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - [ ] resize(new_capacity) // private function - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half + - when popping an item, if the size is 1/4 of capacity, resize to half - [ ] Time - O(1) to add/remove at end (amortized for allocations for more space), index, or update - O(n) to insert/remove elsewhere @@ -630,18 +630,18 @@ if you can identify the runtime complexity of different algorithms. It's a super This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] Implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list + - [ ] size() - returns the number of data elements in the list - [ ] empty() - bool returns true if empty - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value + - [ ] pop_front() - remove the front item and return its value - [ ] push_back(value) - adds an item at the end - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index + - [ ] front() - get the value of the front item + - [ ] back() - get the value of the end item + - [ ] insert(index, value) - insert value at index, so the current item at that index is pointed to by the new item at the index - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - [ ] value_n_from_end(n) - returns the value of the node at the nth position from the end of the list - [ ] reverse() - reverses the list - [ ] remove_value(value) - removes the first item in the list with this value - [ ] Doubly-linked List @@ -651,24 +651,24 @@ if you can identify the runtime complexity of different algorithms. It's a super - ### Stack - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] Will not implement. Implementing with array is trivial + - [ ] Will not implement. Implementing with the array is trivial - ### Queue - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail + - enqueue(value) - adds value at a position at the tail - dequeue() - returns value and removes least recently added element (front) - empty() - - [ ] Implement using fixed-sized array: + - [ ] Implement using a fixed-sized array: - enqueue(value) - adds item at end of available storage - dequeue() - returns value and removes least recently added element - empty() - full() - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue + - a bad implementation using a linked list where you enqueue at the head and dequeue at the tail would be O(n) + because you'd need the next to last element, causing a full traversal of each dequeue - enqueue: O(1) (amortized, linked list and array [probing]) - dequeue: O(1) (linked list and array) - empty: O(1) (linked list and array) @@ -693,8 +693,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - [ ] Implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - hash(k, m) - m is the size of the hash table + - add(key, value) - if the key already exists, update value - exists(key) - get(key) - remove(key) @@ -708,7 +708,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Implement: - - binary search (on sorted array of integers) + - binary search (on a sorted array of integers) - binary search using recursion - ### Bitwise operations @@ -768,11 +768,11 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [Find the height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [Check if a binary tree is a binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Implement: @@ -780,13 +780,13 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] get_node_count // get count of values stored - [ ] print_values // prints the values in the tree, from min to max - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree + - [ ] is_in_tree // returns true if a given value exists in the tree - [ ] [get_height // returns the height in nodes (single node's height is 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) - [ ] get_min // returns the minimum value stored in the tree - [ ] get_max // returns the maximum value stored in the tree - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none + - [ ] get_successor // returns the next-highest value in the tree after given value, -1 if none - ### Heap / Priority Queue / Binary Heap - visualized as a tree, but is usually linear in storage (array, linked list) @@ -809,12 +809,12 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] sift_up - needed for insert - [ ] get_max - returns the max item, without removing it - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements + - [ ] is_empty() - returns true if the heap contains no elements - [ ] extract_max - returns the max item, removing it - [ ] sift_down - needed for extract_max - [ ] remove(x) - removes item at index x - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap + - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in place using a max heap or min heap ## Sorting @@ -826,15 +826,15 @@ if you can identify the runtime complexity of different algorithms. It's a super - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? + - [ ] Which algorithms can be used on linked lists? Which on arrays? Which of both? - I wouldn't recommend sorting a linked list, but merge sort is doable. - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- For heapsort, see Heap data structure above. Heap sort is great, but not stable +- For heapsort, see the Heap data structure above. Heap sort is great, but not stable - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) @@ -880,7 +880,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Implement: - [ ] Mergesort: O(n log n) average and worst case - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case + - Selection sort and insertion sort are both O(n^2) average and worst-case - For heapsort, see Heap data structure above - [ ] Not required, but I recommended them: @@ -898,11 +898,11 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +If you need more detail on this subject, see the "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) ## Graphs -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting. - Notes: - There are 4 basic ways to represent a graph in memory: @@ -911,7 +911,7 @@ Graphs can be used to represent many problems in computer science, so this secti - adjacency list - adjacency map - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code + - BFS and DFS - know their computational complexity, their trade-offs, and how to implement them in real code - When asked a question, look for a graph-based solution first, then move on if none - [ ] MIT(videos): @@ -955,7 +955,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] single-source shortest path (Dijkstra) - [ ] minimum spanning tree - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) + - [ ] check for a cycle (needed for topological sort, since we'll check for the cycle before starting) - [ ] topological sort - [ ] count connected components in a graph - [ ] list strongly connected components @@ -1030,7 +1030,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Math Skills: How to find Factorial, Permutation, and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: @@ -1040,12 +1040,12 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, + - Know about the most famous classes of NP-complete problems, such as the traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [Greedy Algs. II & Intro to NP-Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) @@ -1057,7 +1057,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: + - Peter Norvig discusses near-optimal solutions to the traveling salesman problem: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Pages 1048 - 1140 in CLRS if you have it. @@ -1091,15 +1091,15 @@ Graphs can be used to represent many problems in computer science, so this secti - Mutexes - Semaphores - Monitors - - How they work? + - How do they work? - Deadlock - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Paging, segmentation, and virtual memory (video)](https://youtu.be/O4nwUqQodAg) - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) + - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own PC, stack counter, registers, and stack) - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - Context switching - [How context switching is initiated by the operating system and underlying hardware?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) @@ -1110,7 +1110,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [David Beazley - Python Concurrency From the Ground Up LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) @@ -1137,14 +1137,14 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [Search pattern in a text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). + If you need more detail on this subject, see the "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits + - Note there are different kinds of tries. Some have prefixes, some don't, and some use strings instead of bits to track the path - - I read through code, but will not implement + - I read through the code, but will not implement - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1156,7 +1156,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [Stanford Lecture (real-world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Floating Point Numbers @@ -1230,9 +1230,9 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) - Prep Courses: - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. + - A Python-centric interview prep course that covers data structures, algorithms, mock interviews, and much more. - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. + - A free Python-centric data structures and algorithms course. - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): @@ -1242,7 +1242,7 @@ Graphs can be used to represent many problems in computer science, so this secti Mock Interviews: - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - a peer-to-peer model to practice interviews - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously - [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. - [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers. @@ -1294,7 +1294,7 @@ You're never really done. ***************************************************************************************************** Everything below this point is optional. It is NOT needed for an entry-level interview. - However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for + However, by studying these, you'll get greater exposure to more CS concepts and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. ***************************************************************************************************** @@ -1313,11 +1313,11 @@ You're never really done. - [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) - [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - A gentle introduction to design patterns -- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - AKA the "Gang Of Four" book, or GOF +- [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book or GOF - The canonical design patterns book - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition + - As a review and problem-recognition - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview - This book has 2 parts: - Class textbook on data structures and algorithms @@ -1327,7 +1327,7 @@ You're never really done. - Code examples in C - Cons: - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Chapters 7, 8, and 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - Algorithm catalog: - This is the real reason you buy this book. @@ -1420,7 +1420,7 @@ You're never really done. - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Google's Transition From Single Datacenter To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) @@ -1436,23 +1436,23 @@ You're never really done. - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section + - For even more, see the "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - flow: 1. Understand the problem and scope: - - Define the use cases, with interviewer's help + - Define the use cases, with the interviewer's help - Suggest additional features - - Remove items that interviewer deems out of scope + - Remove items that the interviewer deems out of scope - Assume high availability is required, add as a use case 2. Think about constraints: - Ask how many requests per month - Ask how many requests per second (they may volunteer it or make you do the math) - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second + - Keep the 80/20 rule in mind when estimating + - How much data is written per second - Total storage required over 5 years - How much data read per second 3. Abstract design: @@ -1470,7 +1470,7 @@ You're never really done. ## Additional Learning - I added them to help you become a well-rounded software engineer, and to be aware of certain + I added them to help you become a well-rounded software engineer and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers @@ -1480,9 +1480,9 @@ You're never really done. - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor + - Familiarize yourself with a UNIX-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With Vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - set of 4 videos: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) @@ -1495,7 +1495,7 @@ You're never really done. - set of 3 (videos): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file, and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) @@ -1521,7 +1521,7 @@ You're never really done. - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below + - See more in the MIT 6.050J Information and Entropy series below - ### Parity & Hamming Code (videos) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) @@ -1532,12 +1532,12 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see videos below + - Also see the videos below - Make sure to watch information theory videos first - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see videos below + - Also see the videos below - Make sure to watch information theory videos first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) @@ -1577,7 +1577,7 @@ You're never really done. - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High-Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) @@ -1636,14 +1636,14 @@ You're never really done. - ### Balanced search trees - Know at least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. + - "Among balanced search trees, AVL and 2/3 trees are now passé and red-black trees seem to be more popular. A particularly interesting self-organizing data structure is the splay tree, which uses rotations to move any accessed key to the root." - Skiena - Of these, I chose to implement a splay tree. From what I've read, you won't implement a balanced search tree in your interview. But I wanted exposure to coding one up and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code - Splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: + If you end up implementing a red/black tree try just these: - Search and insertion functions, skipping delete - I want to learn more about B-Tree since it's used so widely with very large data sets - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) @@ -1676,12 +1676,12 @@ You're never really done. - In practice: Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, + but it makes them valuable building blocks in other data structures that provide worst-case guarantees; + for example, many data structures used in computational geometry can be based on red-black trees, and + the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 4 (link jumps to the starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) @@ -1690,16 +1690,16 @@ You're never really done. - **2-3 search trees** - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. + - You would use 2-3 trees very rarely because its implementation involves different types of nodes. Instead, people use Red-Black trees. - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion + For every 2-4 trees, there are corresponding red–black trees with data elements in the same order. The insertion and deletion operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce + important tool for understanding the logic behind red-black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) @@ -1714,10 +1714,10 @@ You're never really done. - **B-Trees** - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to + B-trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address + block in a particular file. The basic problem is turning the file block address into a disk block + (or perhaps to a cylinder head sector) address - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) @@ -1725,12 +1725,12 @@ You're never really done. - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) + - the first 37 minutes are very technical, and may be skipped (B is block size, cache line size) - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object + - Great for finding a number of points in a rectangle or higher-dimensional object - A good fit for k-nearest neighbors - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) @@ -1790,7 +1790,7 @@ You're never really done. - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Clients should not be forced to implement interfaces they don't use - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. From 7f9642fd21decae50e4b441131754ec1dc83a3ea Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 25 Oct 2023 17:22:29 -0700 Subject: [PATCH 780/857] Removes C book link --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e06ed59dc7..d13a8ba890 100644 --- a/README.md +++ b/README.md @@ -297,7 +297,6 @@ When I did the study plan, I used 2 languages for most of it: C and Python - This is a short book, but it will give you a great handle on the C language and if you practice it a little you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. - - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) * Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. This is my preference. You do what you like, of course. From 577630e8664544c03dbdbc4f477a7db3db66425b Mon Sep 17 00:00:00 2001 From: kamegoro Date: Sun, 29 Oct 2023 13:49:49 +0900 Subject: [PATCH 781/857] Corrected and updated Japanese translation --- translations/README-ja.md | 90 ++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 38 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 18e0a40f1e..30f39bfbe2 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -43,32 +43,33 @@
## これは何? + ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) これは、大企業のソフトウェア エンジニアになるための私の数か月にわたる学習計画です。 -必須: +**必須:** -コーディングの経験 (変数、ループ、メソッド/関数など) -忍耐 -時間 +- コーディングの経験 (変数、ループ、メソッド/関数など) +- 忍耐 +- 時間 -これは**ソフトウェアエンジニアリング**の学習計画であり、Web 開発の学習計画ではありません。 Google、Amazon、Facebook、Microsoft などの大手ソフトウェア企業は、ソフトウェアエンジニアリングを Web 開発とは異なるものと見なしています。 たとえば、Amazon にはフロントエンドエンジニア (FEE) とソフトウェア開発エンジニア (SDE) がいます。 これらは2つの別個の役割であり、それぞれに独自の能力があるため、面接は同じではありません。これらの企業は、ソフトウェア開発/エンジニアリングの役割のためにコンピューターサイエンスの知識を必要とします。 +これは**ソフトウェア エンジニアリング**の学習計画であり、フロントエンド エンジニアリングやフルスタック開発ではないことに注意してください。 +他の場所でのキャリア パスのスーパー ロードマップとコースワーク (詳細については https://roadmap.sh/ を参照)。 -大学のコンピューターサイエンスプログラムで学ぶことはたくさんありますが、75%程度の知識があれば面接に十分なので、ここではそれについて説明します。 完全な CS 独学プログラムについては、私の学習計画のリソースがカムラン アーメドのコンピューターサイエンスロードマップに含まれています: https://roadmap.sh/computer-science +大学のコンピューター サイエンス プログラムでは学ぶべきことがたくさんありますが、面接には 75% 程度知っていれば十分なので、ここではそれについて説明します。 +完全な CS 独学プログラムについては、私の学習計画のリソースがカムラン アーメッドのコンピューター サイエンス ロードマップに含まれています: https://roadmap.sh/computer-science --- ## 目次 - - - [コーディング面接の大学](#コーディング面接の大学) - [これは何?](#これは何) - [目次](#目次) - [なぜこれを使用するのか](#なぜこれを使用するのか) - - [それの使い方](#それの使い方) - - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) + - [使い方](#使い方) + - [自信を無くさないでください](#自信を無くさないでください) - [ビデオリソースについて](#ビデオリソースについて) - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) @@ -111,54 +112,67 @@ ## なぜこれを使用するのか -大企業でソフトウェアエンジニアとして働きたい場合は、次のことを知っておく必要があります。 +大企業でソフトウェア エンジニアとして働きたいのであれば、これらのことを知っておく必要があります。 + +私のようにコンピューター サイエンスの学位を取得できなかった場合は、これで人生の 4 年間取り戻すことができます。 + +このプロジェクトを始めたとき、私はヒープからのスタックのことも、Big-O のことも、木についても、何も知りませんでした。 +グラフを横断します。もし私が並べ替えアルゴリズムをコーディングしなければならなかったとしたら、それは酷いことになるでしょう。 +私がこれまで使用してきたデータ構造はすべて言語に組み込まれており、それがどのように機能するのかわかりませんでした。 +ボンネットの下にはまったくありません。実行しているプロセスで「不足」が発生しない限り、メモリを管理する必要はありませんでした。 +「memory」エラーが発生した場合は、回避策を見つける必要があります。私は人生でいくつかの多次元配列を使用しましたが、 +何千もの連想配列を作成しましたが、データ構造を最初から作成したことはありません。 -私のようにコンピューターサイエンスの学位を取得していない場合、これで追いつき、人生の4年間を救うことができます。 +長い計画ですね。何か月もかかるかもしれません。しかし、すでにこの内容の多くに精通している場合は、時間ははるかに短くなります。 -私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-O とは何か、木構造に関すること、グラフをたどる方法を知らなかったのです。 -ソートアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 -これまで使用してきたすべてのデータ構造は言語に組み込まれていて、どのようにしてそれらがどのようにして動作するのか分かりませんでした。 -私が実行していたプロセスが "メモリ不足"エラーを出さない限り、メモリを管理する必要はありませんでしたが、回避策を見つけなければなりません。 -私は人生で数多くの多次元配列を使用していましたが、何千もの連想配列を使用しましたが、データ構造を一から作成したことはありません。 +## 使い方 +以下はすべて概要であり、順に項目に取り組む必要があります。 -それは長い計画です。あなたに数ヶ月かかるかもしれません。 -すでに多くのことに慣れていれば、それほど時間がかかりません。 +私は進捗状況を追跡するためのタスク リストを含む、GitHub 風マークダウン を使用しています。 -## それの使い方 +- [GitHub 風マークダウンの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -下のすべてがアウトラインです。 -アイテムを上から下に順番に取り組まなければなりません。 +### git を使用したくない場合 -私はGithubの特別なマークダウンフレーバーを使用しています。 +このページで、上部近くの「Code」ボタンをクリックし、「Download ZIP」をクリックします。ファイルを解凍すると、テキスト ファイルを操作できるようになります。 -**新しいブランチを作成して、このような項目をチェックできるようにしてください.xを角かっこに入れてください:[x]** +マークダウンを理解できるコード エディターで開いている場合は、すべてが適切にフォーマットされていることを確認できます。 +![リポジトリを zip ファイルとしてダウンロードする方法](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) -    ブランチをフォークし、以下のコマンドに従ってください。 +### git に慣れている場合 -`git checkout -b progress` +新しいブランチを作成して、次のような項目を確認できるようにします。括弧内に x を入力するだけです: [x] -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +1. **_GitHub リポジトリ:_** `https://github.com/jwasham/coding-interview-university` をフォーク ボタンをクリックしてフォークします。 -`git fetch --all` + ![GitHub リポジトリをフォークする](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -    変更を完了した後にXですべてのボックスにマークを付ける +1. ローカル リポジトリにクローンを作成します。 -`git add . ` + ``` + git clone https://github.com//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 # 個人の進捗を元のレポにプッシュバックしないようにするため + ``` -`git commit -m "マークされたx"` +1. 変更を完了したら、すべてのボックスに X を付けます。 -`git rebase jwasham/main` + ``` + git commit -am "Marked personal progress" + git pull upstream main # 元のレポからの変更でフォークを最新に保つ -`git push --force` + git push # just pushes to your fork + ``` -[Github風マークダウンの詳細](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +## 自信を無くさないでください -## あなたは十分にスマートではないと感じないでください -- 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 -- [天才プログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [一人で行くのは危険だ:テクノロジーの見えない魔物と戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) +- 成功した多くのソフトウェア エンジニアは自分が十分に賢くないのではないかという不安を抱えています。 +- 次のビデオは、この不安を解消するのに役立ちます。 + - [天才プログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [一人で行動するのは危険です: テクノロジーにおける目に見えないモンスターとの戦い](https://www.youtube.com/watch?v=1i8ylq4j_EY) --- From 1ecd6e2befb80b1abb3efb67bc0d26ca1a01b987 Mon Sep 17 00:00:00 2001 From: kamegoro Date: Sun, 29 Oct 2023 13:53:48 +0900 Subject: [PATCH 782/857] fix indent --- translations/README-ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 30f39bfbe2..80a71e1b92 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -68,7 +68,7 @@ - [これは何?](#これは何) - [目次](#目次) - [なぜこれを使用するのか](#なぜこれを使用するのか) - - [使い方](#使い方) + - [使い方](#使い方) - [自信を無くさないでください](#自信を無くさないでください) - [ビデオリソースについて](#ビデオリソースについて) - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) From 67c35099ec22190cccc7d1c708429cf6811def44 Mon Sep 17 00:00:00 2001 From: kamegoro Date: Mon, 30 Oct 2023 12:45:40 +0900 Subject: [PATCH 783/857] Additions, translations and updates to sectional groupings of study plans --- translations/README-ja.md | 436 ++++++++++++++++++++------------------ 1 file changed, 227 insertions(+), 209 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 80a71e1b92..54d16c9976 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -64,51 +64,44 @@ ## 目次 -- [コーディング面接の大学](#コーディング面接の大学) - - [これは何?](#これは何) - - [目次](#目次) - - [なぜこれを使用するのか](#なぜこれを使用するのか) - - [使い方](#使い方) - - [自信を無くさないでください](#自信を無くさないでください) - - [ビデオリソースについて](#ビデオリソースについて) - - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) - - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) - - [ブックリスト](#ブックリスト) - - [面接の準備](#面接の準備) - - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) - - [言語固有](#言語固有) - - [C++](#c) - - [Java](#java) - - [Python](#python) - - [始める前に](#始める前に) - - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) - - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) - - [3.レビュー、レビュー、評価](#3レビューレビュー評価) - - [4.フォーカス](#4フォーカス) - - [カバーされていないもの](#カバーされていないもの) - - [日々の計画](#日々の計画) - - [前提知識](#前提知識) - - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) - - [データ構造](#データ構造) - - [その他の知識](#その他の知識) - - [木](#木) - - [ソート](#ソート) - - [グラフ](#グラフ) - - [さらに多くの知識](#さらに多くの知識) - - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) - - [最終レビュー](#最終レビュー) - - [コーディングの質問練習](#コーディングの質問練習) - - [コード演習/挑戦](#コード演習挑戦) - - [面接に近づいたら](#面接に近づいたら) - - [あなたの履歴書](#あなたの履歴書) - - [面接が来たときに考えてください](#面接が来たときに考えてください) - - [面接官に質問があります](#面接官に質問があります) - - [一度あなたは仕事を得た](#一度あなたは仕事を得た) - - [その他の書籍](#その他の書籍) - - [その他の学習](#その他の学習) - - [追加科目の詳細](#追加科目の詳細) - - [ビデオシリーズ](#ビデオシリーズ) - - [コンピュータサイエンスコース](#コンピュータサイエンスコース) +### 学習計画 + +- [なぜこれを使用するのか](#なぜこれを使用するのか) +- [使い方](#使い方) +- [自信を無くさないでください](#自信を無くさないでください) +- [ビデオリソースに関する注意](#ビデオリソースに関する注意) +- [プログラミング言語を選択してください](#プログラミング言語を選択してください) +- [データ構造とアルゴリズムに関する書籍](#データ構造とアルゴリズムに関する書籍) +- [面接対策本](#面接対策本) +- [私と同じ間違いを犯さないでください](#私と同じ間違いを犯さないでください) +- [取り上げられていないもの](#取り上げられていないもの) +- [日次計画](#日次計画) +- [コーディングに関する質問の練習](#コーディングに関する質問の練習) +- [コーディングの問題](#コーディングの問題) + +### 研究のテーマ + +- [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) +- [データ構造](#データ構造) +- [その他の知識](#その他の知識) +- [木](#木) +- [ソート](#ソート) +- [グラフ](#グラフ) +- [さらに多くの知識](#さらに多くの知識) +- [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) +- [最終レビュー](#最終レビュー) +- [コーディングの質問練習](#コーディングの質問練習) +- [コード演習/挑戦](#コード演習挑戦) +- [面接に近づいたら](#面接に近づいたら) +- [あなたの履歴書](#あなたの履歴書) +- [面接が来たときに考えてください](#面接が来たときに考えてください) +- [面接官に質問があります](#面接官に質問があります) +- [一度あなたは仕事を得た](#一度あなたは仕事を得た) +- [その他の書籍](#その他の書籍) +- [その他の学習](#その他の学習) +- [追加科目の詳細](#追加科目の詳細) +- [ビデオシリーズ](#ビデオシリーズ) +- [コンピュータサイエンスコース](#コンピュータサイエンスコース) ## なぜこれを使用するのか @@ -164,7 +157,7 @@ git commit -am "Marked personal progress" git pull upstream main # 元のレポからの変更でフォークを最新に保つ - git push # just pushes to your fork + git push # フォークにプッシュするだけ ``` ## 自信を無くさないでください @@ -176,252 +169,277 @@ --- -## ビデオリソースについて +## ビデオリソースに関する注意 -一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 -これらはMOOCと呼ばれています。 -時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 -Lynda.comコースは有料です。 +一部のビデオは、Coursera または EdX クラスに登録することによってのみ視聴できます。 +これらは MOOC と呼ばれます。 +場合によっては、クラスが開催されていないため、数か月待たなければならず、アクセスできないこともあります。 -オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 -私は大学の講義を使うのが好きです。 +オンラインコースのリソースを、YouTube ビデオ (できれば大学の講義) など、いつでも利用できる無料の公開ソースに置き換えて、特定のオンラインコースの開催中だけでなく、いつでも学習できるようにするのは素晴らしいことです。 +## プログラミング言語を選択してください -## 面接のプロセスと一般的な面接の準備 +コーディング面接に使用するプログラミング言語を選択する必要がありますが、コンピューターサイエンスの概念を学習するために使用できる言語も見つける必要があります。 -- [ ] [ABC:常にコーディングする](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [技術職募集での謎解き](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] クラッキングコーディング面接セット1: - - [ ] [Gayle L McDowell - コーディング面接(ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Gayle Laakmann McDowell(ビデオ)](https://www.youtube.com/watch?v=aClxtDcdpsQ)とのコーディング面接をクラッキング -- [ ] ビッグ4で仕事を得る方法: - - [ ] [Amazon、Facebook、Google、Microsoftで仕事を手に入れる方法(ビデオ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] 準備コース: - - [ ] [Software Engineer Interview Unleashed(有料コース)](https://www.udemy.com/software-engineer-interview-unleashed): - - 以前のGoogle面接官からソフトウェアエンジニアの面接準備をする方法を学びます。 - - [ ] [データ構造、アルゴリズム、面接のためのPython! (有料コース)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - データ構造、アルゴリズム、模擬面接などを扱うPython中心の面接の準備コース。 +できれば、どちらか 1 つの言語に習熟するだけで済むように、言語が同じであることが望ましいです。 -## 面接のための1つの言語を選ぶ +### この学習計画について -面接のコーディングの部分に慣れ親しんだ言語を使用することはできますが、大企業にとってはこれらの選択肢が確実です。 +学習計画を立てたとき、そのほとんどで C と Python の 2 つの言語を使用しました。 -- C ++ +* C: 非常に低いレベル。ポインタとメモリの割り当て / 割り当て解除を処理できるため、データ構造を実感できます。 + そしてアルゴリズムが骨の中に組み込まれています。Python や Java などの高水準言語では、これらは表示されません。日々の仕事ではそれは素晴らしいことですが、これらの低レベルのデータ構造がどのように構築されるかを学んでいるときは、実際に近いと感じるのは素晴らしいことです。 + - C はどこにでもあります。勉強していると、書籍、講義、ビデオなど、*あらゆる場所*で例を見ることができます。 + - [C プログラミング言語 第 2 版](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - これは短い本ですが、少し練習すれば C 言語をうまく扱えるようになります。 + すぐに上達します。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 -あなたは言語に非常に慣れて知識が必要です。 +面接の言語の選択について私が書いた記事は次のとおりです: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -選択肢についてもっと読む: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ +これは私の投稿の元の記事です: +[Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -[言語リソースはこちら](programming-language-resources.md) +言語に非常に慣れており、知識が豊富である必要があります。 -私は学習しているので、以下に含まれるC、C ++、Pythonの学習を見ることができます。 -いくつかの本があります、下を参照してください。 +選択肢について詳しくは、次を参照してください。 +- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -## ブックリスト +[ここで言語固有のリソースを参照してください](programming-language-resources.md) -これは私が使ったものよりも短いリストです。これは時間を節約するために省略されています。 +## データ構造とアルゴリズムに関する書籍 -### 面接の準備 +### C -- [ ] [プログラミング面接の公開:あなたの次の仕事への秘密、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - C ++とJavaの回答 - - コーディング面接をクラッキングするためのウォームアップが良い - - あまりにも難しくない、ほとんどの問題はあなたが面接で(私が読んだことから)見ることよりも簡単かもしれない -- [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) -- [ ] [日本語版(世界で闘うプログラミング力を鍛える本)](https://www.amazon.co.jp/dp/4839960100/ref=cm_sw_r_tw_dp_6TFC3Y2R6TQTDEFFFPKZ) - - Javaでの回答 +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - 基礎、データ構造、並べ替え、検索、およびグラフのアルゴリズム + +### Python -もし余分な時間があれば: +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - グッドリッチ、タマッシア、ゴールドワッサー著 + - この本が大好きでした。それはすべてを網羅し、それ以上のものでした。 + - Python コード + - 私の素晴らしい本のレポート: https://startupnextdoor.com/book-report-data-structions-and-algorithms-in-python/ -- [ ] [プログラミング面接の要素(C ++版)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] プログラミング面接の要素(Java版) - - [本](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [コンパニオンプロジェクト - 本のすべての問題のメソッドスタブとテストケース](https://github.com/gardncl/elements-of-programming-interviews) +### Java -### コンピュータアーキテクチャ +- Goodrich、Tamassia、Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- セッジウィックとウェイン: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - この本をカバーする無料の Coursera コース (著者が教えます!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -短期: +### C++ -- [ ] [グレートコードの作成:第1巻:マシンの理解](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) -- [ ] [日本語版:Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く](https://www.amazon.co.jp/dp/4839918201/ref=cm_sw_r_tw_dp_69724M3EHRJ8E7A14JNC) - - この本は2004年に出版され、幾分古いですが、コンピュータを簡単に理解するには素晴らしいリソースです。 - - 作者はHLAを発明したので、塩の穀物でHLAの言及と例を取り上げます。広く使われているわけではありませんが、どのようなアセンブリのように見えますか? - - これらの章はあなたに素敵な基礎を与えるために読む価値があります: - - 第2章 - 数値表現 - - 第3章 - 2進算術とビット演算 - - 第4章 - 浮動小数点表現 - - 第5章 - キャラクター表現 - - 第6章 - メモリ構成とアクセス - - 第7章 - 複合データ型とメモリオブジェクト - - 第9章 - CPUアーキテクチャ - - 第10章 - 命令セットのアーキテクチャ - - 第11章 - メモリのアーキテクチャと構成 +- Goodrich、Tamassia、および Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick と Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -もっと時間があれば(私はこの本が欲しい): +## 面接対策本 -- [ ] [Computer Architecture、第5版:定量的アプローチ](https://www.amazon.com/dp/012383872X/) -- [ ] [日本語最新版:コンピュータアーキテクチャ[第6版]定量的アプローチ](https://www.amazon.co.jp/dp/4434264001/) - - お金がある人向け、より最新(2017(日本語版は2019))かつ歴史も長い +たくさん買う必要はありません。正直なところ、「コーディング面接の攻略」で十分だと思いますが、さらに練習するためにさらに購入しました。しかし、私はいつもやりすぎます。 -### 言語固有 +これを両方購入しました。彼らは私にたくさんの練習をさせてくれました。 -**面接の言語を選択する必要があります(上記参照)。** ここで私の推奨する言語です。私はすべての言語のためのリソースがありません。私は追加を歓迎する。 +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ および Java での回答 + - これコーディング面接を突破するための良いウォーミングアップです + - それほど難しいことではありません。ほとんどの問題は、インタビューで見られるものよりも簡単かもしれません (私が読んだ内容によると) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java での回答 -これらのうちの1つを読んだら、コーディングの問題を開始するために必要なすべてのデータ構造とアルゴリズムの知識が必要です。 -**あなたがレビューをしたくない場合は、このプロジェクト**のビデオ講義をすべてスキップすることができます。 +### 時間がたくさんある場合: -[ここに言語固有の追加リソースがあります](programming-language-resources.md) +1 つ選択してください: -### C++ +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) -私はこれらの2つを読んだことはありませんが、Sedgewickによって高く評価され書かれています。彼は素晴らしいです。 +## 私と同じ間違いを犯さないでください -- [ ] [C++でのアルゴリズム、パート1-4:基礎、データ構造、ソート、検索](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [C++でのアルゴリズム第5部:グラフアルゴリズム](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +このリストは何か月もかけて大きくなり、はい、手に負えなくなりました。 -C++の推奨事項がある場合は、私に知らせてください。包括的なリソースを探しています。 +より良い経験をしていただくために、私が犯したいくつかの間違いを以下に示します。そして、何か月も時間を節約できます。 -### Java +### 1. すべてを覚えているわけではない -- [ ] [アルゴリズム(Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - 書籍コンテンツの動画(とSedgewick!): - - [アルゴリズム1](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [アルゴリズムII](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) +時間もビデオを見て大量のメモを取りましたが、数か月後には覚えていないことがたくさんありました。 +3日間かけてメモを見直し、フラッシュカードを作成して復習しましたが、そんな知識は必要ありませんでした。 -OR: +私と同じ間違いを犯さないように、 -- [ ] [Javaにおけるデータ構造とアルゴリズム](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - Goodrich、Tamassia、Goldwasserによる - - UCバークレーのCSイントロコースのオプションテキストとして使用 - - 下のPython版の私の本のレポートを見てください。この本は同じトピックを扱っています。 +[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) を読んでください。 -### Python +### 2. フラッシュカードを使用する -- [ ] [Pythonのデータ構造とアルゴリズム](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - Goodrich、Tamassia、Goldwasserによる - - 私はこの本が好きだった。それはすべてをカバーしました。 - - Pythonコード - - 私の輝く本のレポート:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +この問題を解決するために、一般とコードの 2 種類のフラッシュカードを追加できる小さなフラッシュカード サイトを作成しました。 +各カードには異なる形式があります。どこにいても携帯電話やタブレットでレビューできるように、モバイルファーストのウェブサイトを作成しました。 +無料で独自に作成します。 +- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -## 始める前に +**フラッシュカードの使用はお勧めしません。** フラッシュカードが多すぎて、ほとんどがトリビアです。必要ありません。 -このリストは何ヶ月にもわたって成長しました。 +しかし、私の言うことを聞きたくない場合は、ここからどうぞ: +- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -ここで私が作ったいくつかの間違いがあります。 -あなたはより良い経験をするでしょう。 +やりすぎて、アセンブリ言語や Python のトリビアから機械学習や統計まで、あらゆるものをカバーするカードがあることに注意してください。 +必要なものが多すぎます。 -### 1.あなたはそれをすべて覚えていない +**フラッシュカードに関する注意:** 初めて答えを知っていると気づいたときは、その答えを既知としてマークしないでください。 +本当に理解するには、同じカードを見て何度か正しく答える必要があります。 +繰り返すことで知識が脳に深く定着します。 -私は数時間のビデオを見て、豊富なメモを取りました。 -そして数ヶ月後に私は覚えていないほどでした。 -私はメモを書き、フラッシュカードを作って見直すことができるように3日間過ごしました。 +私のフラッシュカード サイトを使用する代わりに、[Anki](http://ankisrs.net/) が私に何度も勧められてきました。 +繰り返しシステムを使用しているので、覚えやすくなります。ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウド同期システムを備えています。 +iOS では 25 ドルかかりますが、他のプラットフォームでは無料です。 -あなたが私と同じ間違いをしないように読んでください: +Anki 形式のフラッシュカード データベース: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). -[コンピュータ科学知識の保持](https://startupnextdoor.com/retaining-computer-science-knowledge/) +一部の学生は、空白に関する書式の問題について次の手順を実行することで修正できると述べています。デッキを開いて、カードを編集し、カードをクリックし、「スタイル」ラジオ ボタンを選択して、メンバー「white-space: pre;」を追加します。カードクラスへ。 -### 2.フラッシュカードを使用する +### 3. 学習中にコーディング面接の質問をする -この問題を解決するために、私は2種類のフラッシュカード、一般とコードを追加できる小さなフラッシュカードサイトを作った。 -各カードのフォーマットは異なります。 +これは非常に重要です。 -私はモバイル先のウェブサイトを作ったので、どこにいても電話とタブレットを見直すことができました。 +データ構造とアルゴリズムを学習しながら、コーディング面接の質問に答え始めます。 -あなた自身を無料で作る: +問題を解決するには、学んだことを応用する必要があります。そうしないと忘れてしまいます。私はこの間違いを犯しました。 -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [マイフラッシュカードデータベース(旧1200カード)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [マイフラッシュカードデータベース(新1800カード)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +トピックを学習し、**リンク リスト** などにある程度慣れたら: +1. [コーディング インタビュー ブック](#interview-prep-books)のいずれかを開きます(または、以下にリストされているコーディングに関する問題の Web サイト) +1. 次の学習トピックに進みます。 +1. その後、戻って別の 2 つまたは 3 つのリンク リストの問題を解きます。 +1. 新しいトピックを学ぶたびにこれを行います。 + +**学習後ではなく、学習している間も問題を解き続けてください。** -覚えておいてほしいのですが,私はやりすぎてしまい、アセンブリ言語,機械学習のためのPythonのトリビア,統計に至るまですべてのカードをカバーしています。 -何が必要なのかはあまりにも大変です。 +あなたは知識のために雇われているのではなく、その知識をどのように応用するかによって雇われているのです。 -**フラッシュカードについての注意:** 最初に答えを知っているときは、それを既知のものとしてマークしないでください。 -あなたは本当にそれを知る前に、同じカードを見て、それを正しく数回答えなければなりません。 -繰り返すことで、その知識があなたの脳に深く浸透します。 +以下に示すように、これに関する多くのリソースがあります。続けて。 +### 4. 集中する -私のフラッシュカードサイトを使用する代わりに[Anki](http://ankisrs.net/)が何度も私に勧められています。 -繰り返しシステムを使用して覚えやすくなります。 -ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウド同期システムを備えています。 -iOSでは25ドル、他のプラットフォームでは無料です。 +気を散らすものがたくさんあり、貴重な時間が奪われてしまう可能性があります。集中力と集中力は難しいです。歌詞のない音楽をかける +と、かなり集中できるようになります。 -Anki形式の私のフラッシュカードデータベース:https://ankiweb.net/shared/info/25173560(thanks [@xiewenya](https://github.com/xiewenya)) +## 取り上げられていないもの +以下は一般的なテクノロジですが、この学習計画には含まれていません: -### 3.レビュー、レビュー、評価 +- Javascript +- HTML、CSS、およびその他のフロントエンドテクノロジ +- SQL -私は、ASCII、OSI参照モデル、Big-O記法などのチートシートを用意しています。私は余裕があるときに勉強します。 +## 日次計画 -プログラミングの問題から30分ほど休み、フラッシュカードを通過してください。 +このコースでは多くの主題について説明します。おそらくそれぞれに数日、場合によっては 1 週間以上かかる場合があります。それはあなたのスケジュール次第です。 -### 4.フォーカス +毎日、リストの次の主題を取り上げ、その主題に関するビデオをいくつか見てから、 +このコース用に選択した言語でそのデータ構造またはアルゴリズムの実装を作成します。 -貴重な時間を費やす可能性のある注意散漫がたくさんあります。集中と集中が難しい。 +私のコードはここで見ることができます: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python]( https://github.com/jwasham/practice-python) -## カバーされていないもの +すべてのアルゴリズムを覚える必要はありません。独自の実装を作成できる程度に理解できれば十分です。 -これらは一般的な技術ですが、この調査計画の一部ではありません: +## コーディングに関する質問の練習 -- [SQL](https://www.scaler.com/topics/sql/) -- Javascript -- HTML、CSS、およびその他のフロントエンド技術 + なぜこれがここにあるのでしょうか? 面接する準備ができていません。 + +[その後、戻ってこれを読んでください。](#3-do-coding-interview-questions-while-youre-learning) -## 日々の計画 +プログラミングの問題を練習する必要がある理由: +- 問題の認識、および適切なデータ構造とアルゴリズムがどこに適合するか +- 問題の要件を収集する +- 面接で行うのと同じように、問題について自分なりに説明する +- コンピューターではなく、ホワイトボードまたは紙にコーディングする +- 解決策のための時間と空間の複雑さを考え出す (下記の Big-O を参照) +- テストあなたの解決策 -一部の科目は1日を要し、いくつかは複数日を要する。 -いくつかは、何も実装することなく学習しているだけです。 +面接で体系的かつコミュニケーション的に問題を解決するための素晴らしい入門書があります。これはプログラミングのインタビュー本からもわかります +が、私はこれが素晴らしいと思いました: +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -毎日私は以下のリストから1つのテーマを取り上げ、そのテーマに関するビデオを見て、以下の実装を書いています: -- C - struct*と何か他のものをargsとする構造体と関数を使用する。 -- C++ - 組み込み型を使用しない -- C++ - 連結リストのSTLのstd :: listのような組込み型の使用 -- Python - 組み込み型を使用する(Pythonの練習を続ける) -- 簡単なassert()文を使って、時には正しく動作することを保証するテストを書く -- あなたはJavaや他の何かをするかもしれませんが、これは私のことです。 +コードを紙ではなく、ホワイトボードまたは紙に書きます。コンピューター。いくつかのサンプル入力を使用してテストします。次に、それを入力してコンピュータでテストします。 -あなたはこれらのすべてを必要としません。[面接のために必要な言語は1つだけです](面接のための1つの言語を選択します)。 +家にホワイトボードがない場合は、画材店で大きな描画パッドを購入してください。ソファに座って練習することもできます。 +こちらは私の「ソファホワイトボード」です。写真ではスケールを調整するためにペンを追加しました。ペンを使っていると、消せたらいいのにと思うでしょう。 +すぐに散らかります。**鉛筆と消しゴムを使用します。** -なぜこれらすべてのコード? -- 私はそれが病気になるまで練習、練習、練習をし、何の問題もありません(忘れてはいけないことがいくつかあります) -- 生の制約内で作業する(ガベージコレクションの助けを借りずにメモリを割り当てる/解放する(Pythonを除く)) -- 組み込みの型を利用して、実際の使用のために組み込みのツールを使用した経験を持ちます(本番環境で自分のリンクされたリストの実装を書くつもりはありません) +![my sofa whiteboar](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -私はすべてのテーマでこれらのすべてをやる時間がないかもしれませんが、私は試してみます。 +**コーディングの問題の練習は、プログラミングの問題の答えを覚えることではありません。** -あなたは私のコードをここに見ることができます: -- [C](https://github.com/jwasham/practice-c) -- [C ++](https://github.com/jwasham/practice-cpp) -- [Python](https://github.com/jwasham/practice-python) +## コーディングの問題 -あなたはすべてのアルゴリズムの内容を暗記する必要はありません。 +[ここ](#interview-prep-books) の主要なコーディング インタビュー ブックを忘れないでください。 -コンピューターではなく、ホワイトボードや紙にコードを書く。いくつかのサンプル入力でテストします。次に、コンピュータでテストします。 +問題の解決: +- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +コーディング インタビューの質問ビデオ: +- [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) + - 問題解決策のウォークスルーに最適 +- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - ソリューションとコードの適切な説明 + - 短時間で何本も視聴できる +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +チャレンジ/練習サイト: +- [LeetCode](https://leetcode.com/) + - 私のお気に入りのコーディングの問題サイト。おそらく準備する 1 ~ 2 か月分の購読料を払う価値があります。 + - コードのウォークスルーについては、上記の Nick White と FisherCoder のビデオを参照してください。 +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [AlgoExpert](https://www.algoexpert.io/product) + - Google のエンジニアによって作成されたこれは、スキルを磨くための優れたリソースでもあります。 +- [Project Euler](https://projecteuler.net/) + - 非常に数学に重点が置かれており、コーディング面接にはあまり適していません -## 前提知識 +## 始めましょう -- [ ] **Cを学ぶ** - - Cはどこにでもあります。あなたは勉強している間、書籍、講義、ビデオ、*どこにでも*見ることができます。 - - [ ] [Cプログラミング言語、Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - これは短い本ですが、それはC言語の優れた処理方法を提供します。 - 少しでも練習すれば、すばやく習得できます。 Cを理解すると、プログラムやメモリの仕組みを理解するのに役立ちます。 - - [質問への回答](https://github.com/lekkas/c-algorithms) +さて、話は十分です、学びましょう! -- [ ] **コンピュータがプログラムをどのように処理するか:** - - [ ] [CPUがプログラム(ビデオ)をどのように実行するか](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [マシンコード命令(ビデオ)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +ただし、学習中に上記のコーディング問題に取り組むことを忘れないでください。 ## アルゴリズムの複雑さ/ Big-O / Asymptotic解析 - 実装するものは何もない From d2889ce1623e8d8ac6165b92cec1f970fa634f9f Mon Sep 17 00:00:00 2001 From: kamegoro Date: Mon, 30 Oct 2023 21:44:18 +0900 Subject: [PATCH 784/857] Conduit organization within ja.README --- translations/README-ja.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 54d16c9976..6e99b56d4d 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -338,7 +338,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s 問題を解決するには、学んだことを応用する必要があります。そうしないと忘れてしまいます。私はこの間違いを犯しました。 トピックを学習し、**リンク リスト** などにある程度慣れたら: -1. [コーディング インタビュー ブック](#interview-prep-books)のいずれかを開きます(または、以下にリストされているコーディングに関する問題の Web サイト) +1. [面接対策本](#面接対策本)のいずれかを開きます(または、以下にリストされているコーディングに関する問題の Web サイト) 1. 次の学習トピックに進みます。 1. その後、戻って別の 2 つまたは 3 つのリンク リストの問題を解きます。 1. 新しいトピックを学ぶたびにこれを行います。 @@ -380,7 +380,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s なぜこれがここにあるのでしょうか? 面接する準備ができていません。 -[その後、戻ってこれを読んでください。](#3-do-coding-interview-questions-while-youre-learning) +[その後、戻ってこれを読んでください。](#学習中にコーディング面接の質問をする) プログラミングの問題を練習する必要がある理由: - 問題の認識、および適切なデータ構造とアルゴリズムがどこに適合するか @@ -406,7 +406,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## コーディングの問題 -[ここ](#interview-prep-books) の主要なコーディング インタビュー ブックを忘れないでください。 +[ここ](#面接対策本) の主要なコーディング インタビュー ブックを忘れないでください。 問題の解決: - [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) From 9d3761c369d291377565d3d92500162b96e11c35 Mon Sep 17 00:00:00 2001 From: kamegoro Date: Mon, 30 Oct 2023 21:51:46 +0900 Subject: [PATCH 785/857] Remove trailing spaces at end of text --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index d13a8ba890..4d39afad57 100644 --- a/README.md +++ b/README.md @@ -66,17 +66,17 @@ ![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -This is my multi-month study plan for becoming a software engineer for a large company. +This is my multi-month study plan for becoming a software engineer for a large company. -**Required:** +**Required:** * A little experience with coding (variables, loops, methods/functions, etc) * Patience * Time -Note this is a study plan for **software engineering**, not frontend engineering or full-stack development. There are really +Note this is a study plan for **software engineering**, not frontend engineering or full-stack development. There are really super roadmaps and coursework for those career paths elsewhere (see https://roadmap.sh/ for more info). -There is a lot to learn in a university Computer Science program, but only knowing about 75% is good enough for an interview, so that's what I cover here. +There is a lot to learn in a university Computer Science program, but only knowing about 75% is good enough for an interview, so that's what I cover here. For a complete CS self-taught program, the resources for my study plan have been included in Kamran Ahmed's Computer Science Roadmap: https://roadmap.sh/computer-science --- @@ -258,7 +258,7 @@ Create a new branch so you can check items like this, just put an x in the brack ``` git commit -am "Marked personal progress" git pull upstream main # keep your fork up-to-date with changes from the original repo - + git push # just pushes to your fork ``` @@ -274,13 +274,13 @@ Create a new branch so you can check items like this, just put an x in the brack Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. -It would be great to replace the online course resources with free and always-available public sources, -such as YouTube videos (preferably university lectures), so that you people can study these anytime, +It would be great to replace the online course resources with free and always-available public sources, +such as YouTube videos (preferably university lectures), so that you people can study these anytime, not just when a specific online course is in session. ## Choose a Programming Language -You'll need to choose a programming language for the coding interviews you do, +You'll need to choose a programming language for the coding interviews you do, but you'll also need to find a language that you can use to study computer science concepts. Preferably the language would be the same, so that you only need to be proficient in one. @@ -289,7 +289,7 @@ Preferably the language would be the same, so that you only need to be proficien When I did the study plan, I used 2 languages for most of it: C and Python -* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures +* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures and algorithms in your bones. In higher-level languages like Python or Java, these are hidden from you. In day-to-day work, that's terrific, but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. @@ -320,13 +320,13 @@ You could also use these, but read around first. There may be caveats: - JavaScript - Ruby -Here is an article I wrote about choosing a language for the interview: +Here is an article I wrote about choosing a language for the interview: [Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). This is the original article my post was based on: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) You need to be very comfortable in the language and be knowledgeable. -Read more about choices: +Read more about choices: - [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) [See language-specific resources here](programming-language-resources.md) @@ -340,7 +340,7 @@ Just choose one, in a language that you will be comfortable with. You'll be doin ### C - [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms + - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms ### Python @@ -374,7 +374,7 @@ Your choice: ## Interview Prep Books -You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, +You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, but I bought more to give myself more practice. But I always do too much. I bought both of these. They gave me plenty of practice. @@ -425,15 +425,15 @@ But if you don't want to listen to me, here you go: - [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): - [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. +Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. **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. -It uses a repetition system to help you remember. It's user-friendly, available on all platforms, and has a cloud sync system. +An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. +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. My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)). @@ -446,14 +446,14 @@ 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 solve problems, or you'll forget. I made this mistake. +You need to apply what you're learning to solve 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. Do 2 or 3 questions regarding linked lists. +1. Open one of the [coding interview books](#interview-prep-books) (or coding problem websites, listed below) +1. Do 2 or 3 questions regarding linked lists. 1. Move on to the next learning topic. 1. Later, go back and do another 2 or 3 linked list problems. -1. Do this with each new topic you learn. +1. Do this with each new topic you learn. **Keep doing problems while you're learning all this stuff, not after.** @@ -478,7 +478,7 @@ These are prevalent technologies but not part of this study 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 +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: @@ -508,8 +508,8 @@ interview books, too, but I found this outstanding: 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. +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 quickly. **I use a pencil and eraser.** ![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -571,9 +571,9 @@ But don't forget to do coding problems from above while you learn! - [ ] [Cheat sheet](http://bigocheatsheet.com/) - [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) -Well, that's about enough of that. +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 +When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end there is a quiz to see if you can identify the runtime complexity of different algorithms. It's a super review and test. ## Data Structures @@ -760,7 +760,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: @@ -973,11 +973,11 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) - + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a + - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for dynamic programming. - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. @@ -1209,7 +1209,7 @@ Graphs can be used to represent many problems in computer science, so this secti ## Update Your Resume - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." - ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume @@ -1295,7 +1295,7 @@ You're never really done. Everything below this point is optional. It is NOT needed for an entry-level interview. However, by studying these, you'll get greater exposure to more CS concepts and will be better prepared for any software engineering job. You'll be a much more well-rounded software engineer. - + ***************************************************************************************************** ***************************************************************************************************** @@ -1781,7 +1781,7 @@ You're never really done. above because it's just too much. It's easy to overdo it on a subject. You want to get hired in this century, right? -- **SOLID** +- **SOLID** - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) From 411c02767602e648ecff1c88b2d4dbb542bc437d Mon Sep 17 00:00:00 2001 From: kamegoro Date: Wed, 1 Nov 2023 22:01:06 +0900 Subject: [PATCH 786/857] Translated to other knowledge items in the research themes section --- translations/README-ja.md | 521 +++++++++++++++++++------------------- 1 file changed, 255 insertions(+), 266 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 6e99b56d4d..8067716de9 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -442,84 +442,76 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ただし、学習中に上記のコーディング問題に取り組むことを忘れないでください。 ## アルゴリズムの複雑さ/ Big-O / Asymptotic解析 -- 実装するものは何もない -- [ ] [Harvard CS50 - 漸近表記(video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) -- [ ] [BigO記法(一般的なクイックチュートリアル)(ビデオ)](https://www.youtube.com/watch?v=V6mKVRU1evU) -- [ ] [BigO表記(とオメガとシータ) - 最良の数学的説明(ビデオ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [動画](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [スライド](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [アルゴリズム複雑さ分析への穏やかな紹介](http://discrete.gr/complexity/) -- [ ] [成長の命令(ビデオ)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [漸近線(Asymptotics)(video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UCバークレー BigO(ビデオ)](https://youtu.be/VIS4YDpuP98) -- [ ] [UCバークレー Big オメガ(ビデオ)](https://youtu.be/ca3e7UVmeUc) -- [ ] [償却分析(ビデオ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [「Big Oを描く」(ビデオ)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] TopCoder(漸化関係とマスター定理を含む): - - [計算の複雑さ:セクション1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [計算の複雑さ:セクション2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) + +- ここでは何も実装する必要はありません。ビデオを見てメモを取るだけです。わーい! +- ここにはたくさんのビデオがあります。理解できるまで十分に見てください。いつでも戻ってレビューすることができます。 +- 背後にある数学がすべて理解できなくても心配する必要はありません。 +- Big-O の観点からアルゴリズムの複雑さを表現する方法を理解する必要があるだけです。 +- [ ] [ハーバード CS50 - 漸近記法 (動画)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [Big O Notations (一般的なクイック チュートリアル) (動画)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [Big O Notation (およびオメガとシータ) - 最良の数学的説明 (動画)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [スキエナ](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [カリフォルニア大学バークレー校ビッグオー (動画)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [償却分析 (動画)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (漸化式とマスター定理を含む): + - [計算の複雑さ: セクション 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [計算の複雑さ: セクション 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [チートシート](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [【復習】5分でわかるBig-O記譜法(動画)](https://youtu.be/__vX2sjlpXU) + +まあ、それだけで十分です。 -    講義の中には数学的にも余裕がある場合は、下にジャンプして -    離散数学ビデオを見て、背景知識を得る。 +「コーディング インタビューの解読」を進めると、これに関する章があり、最後に、さまざまなアルゴリズムの実行時の複雑さを特定できるかどうかを確認するクイズがあります。それはスーパーレビューとテストです。 ## データ構造 - ### 配列 - - 自動的にサイズ変更ベクトルを実装する。 - - [ ] 説明: - - [配列(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - 線形および多次元配列(ビデオ)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [基本的な配列(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html) - - [多次元(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html) - - [動的配列(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [ジャグ配列(動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ジャグ配列(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html) - - [配列のサイズ変更(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html) - - [ ] ベクトルを実装する(自動サイズ変更可能な可変配列): - - [ ] 配列とポインタを使用してコーディングを実践し、インデックスを使用する代わりにインデックスにジャンプするポインタ演算 - - [ ] 割り当てられたメモリを持つ新しい生データ配列 - - 内部で配列を割り当てることができますが、その機能は使用しません。 - - 16で開始するか、開始番号が大きい場合は、2 - 16,32,64,128の出力を使用します - - [ ] size() - 項目数 - - [ ] capacity() - 保持できるアイテムの数 - - [ ] is_empty() - - [ ] at(index) - 指定されたインデックスでitemを返し、インデックスが範囲外であれば吹き飛ばす - - [ ] push(item) - - [ ] insert(index,item) - itemをindexに挿入し、そのインデックスの値と末尾の要素を右側にシフトする - - [ ] prepend(item) - インデックス0に上記の挿入を使用できます - - [ ] pop() - 最後から削除し、値を返す - - [ ] delete(index) - インデックスの項目を削除し、すべての末尾の要素を左にシフトする - - [ ] remove(item) - 値を探し、それを保持するインデックスを削除します(複数の場所であっても) - - [ ] find(item) - valueを検索し、その値を持つ最初のインデックスを返します。見つからなければ-1を返します。 - - [ ] resize(new_capacity)//プライベート関数 - - 容量に達すると、サイズを2倍に変更します - - アイテムをポップするとき、サイズが容量の1/4である場合、サイズを半分に変更 - - [ ] 時間 - - 最後に追加/削除するO(1)(スペースを増やすために償却される)、索引、または更新 - - 他の場所に挿入/削除するO(n) - - [ ] 空間 - - メモリ内で連続しているため、プロキシミティはパフォーマンスに役立ちます - - 必要なスペース=(配列の容量, > = n)*アイテムのサイズですが、2nでもO(n) + - [ ] 配列について: + - [アレイ CS50 ハーバード大学](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [配列 (動画)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (動画) (15 分 32 秒から視聴開始)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [動的配列 (動画)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [ギザギザ配列 (動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] ベクトルを実装します (自動サイズ変更を備えた可変配列): + - [ ] 配列とポインターを使用したコーディングと、インデックスを使用する代わりにインデックスにジャンプするポインターの計算を練習します。 + - [ ] メモリが割り当てられた新しい生データ配列 + - 内部で int 配列を割り当てることができますが、その機能は使用できません + - 16 から開始するか、開始番号がそれより大きい場合は、2 のべき乗 - 16、32、64、128 を使用します。 + - [ ] size() - アイテムの数 + - [ ] Capacity() - 保持できるアイテムの数 + - [ ] is_empty() + - [ ] at(index) - 指定されたインデックスにある項目を返します。インデックスが範囲外の場合は爆発します。 + - [ ] プッシュ(アイテム) + - [ ] insert(index, item) - インデックスに項目を挿入し、そのインデックスの値と末尾の要素を右にシフトします + - [ ] prepend(item) - インデックス 0 の上に挿入を使用できます + - [ ] Pop() - 末尾から削除し、値を返します + - [ ] delete(index) - インデックスにある項目を削除し、末尾の要素をすべて左にシフトします + - [ ]remove(item) - 値を検索し、それを保持するインデックスを削除します (複数の場所にある場合でも) + - [ ] find(item) - 値を検索し、その値を持つ最初のインデックスを返します。見つからない場合は -1 を返します。 + - [ ]size(new_capacity) // プライベート関数 + - 容量に達したら、サイズを 2 倍に変更します + - アイテムをポップするとき、サイズが容量の 1/4 の場合、サイズを半分に変更します + - [ ] 時間 + - O(1) は、最後に追加/削除 (より多くの領域の割り当てのために償却)、インデックス付け、または更新を行います。 + - O(n) は他の場所に挿入/削除します + - [ ] 空間 + - メモリ内で連続しているため、近接性によりパフォーマンスが向上します + - 必要なスペース = (配列の容量、>= n) * 項目のサイズ、ただし 2n であっても O(n) - ### 連結リスト - [ ] 説明: - - [ ] [単独連結されたリスト(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) + - [ ] [単独連結されたリスト(動画)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - [ ] [CS 61B - 連結リスト1(動画)](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7) - [ ] [CS 61B - 連結リスト2(動画)](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C) - - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) + - [ ] [[レビュー] 4 分でわかるリンクリスト (動画)](https://youtu.be/F8AbOfQwl1c) - [ ] [Cコード(動画)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) -            ビデオ全体ではなく、ノード構造体とメモリ割り当てに関する部分だけです。 - - [ ] 連結リスト Vs 配列: - - [コア連結リストs Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [実世界の連結リスト Vs 配列(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs) - - [ ] [連結リスト(ビデオ)を避けるべき理由](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] 分かったぞ!:ポインタの知識へのポインタが必要です: -        (そのポインタが指すアドレスを変更する可能性のある関数へのポインタを渡すとき) -        このページはptrからptrまでを把握するためのものです。このリストトラバーサルスタイルはお勧めしません。読みやすさと保守性は巧みさのために苦しんでいます。 + - ビデオ全体ではなく、ノード構造とメモリ割り当てに関する部分のみ + - [ ] 連結リストと配列: + - [コア連結リストと配列 (動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) + - [現実世界の連結リストと配列 (動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs) + - [ ] [連結リスト(動画)を避けるべき理由](https://www.youtube.com/watch?v=YQs6IC-vgmo) + - [ ] 注意事項: ポインタからポインタへの知識が必要です: (ポインタが指すアドレスを変更する可能性のある関数にポインタを渡すときのため) このページは、ptr から ptr への理解だけを目的としています。このリスト走査スタイルはお勧めしません。賢いため、可読性と保守性が低下します。 - [ポインターへのポインター](https://www.eskimo.com/~scs/cclass/int/sx8.html) - [ ] 実装する(私はテールポインタ&なしで行った): - [ ] size() - リスト内のデータ要素の数を返す @@ -537,21 +529,18 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] reverse() - リストを反転する - [ ] remove_value(value) - この値を持つリストの最初の項目を削除します。 - [ ] 二重連結リスト - - [説明(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) + - [説明(動画)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - 実装する必要はありません - ### スタック - - [ ] [Stacks(video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [スタックの使用 Last-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html) - - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] 実装されません。配列で実装するのは簡単です。 + - [ ] [スタック (動画)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [【復讐】3分でわかるスタック(動画)](https://youtu.be/KcT3aVgrrpU) + - [ ] 実装しません。配列を使った実装は簡単です - ### キュー - - [ ] [キューの使用 First-In First-Out(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html) - - [ ] [キュー(video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [キュー(動画)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - [ ] [環状バッファ/ FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [優先度つきキュー(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html) - - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) + - [ ] [【復習】3分でわかるキュー(動画)](https://youtu.be/D6gu-_tmEpQ) - [ ] テールポインタ付き連結リストを使って実装する: - enqueue(value) - テールの位置に値を追加する - dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面) @@ -562,33 +551,29 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - empty() - full() - [ ] コスト: - - 最後の要素の次の要素が必要になるため、先頭にエンキューし、末尾をデキューするリンクリストを使用する悪い実装はO(n)になり、デキューごとに完全なトラバーサルが発生します + - 先頭でエンキューし、末尾でデキューするリンク リストを使用した悪い実装では、最後から 2 番目の要素が必要になるため、O(n) となり、各デキューの完全な走査が発生します。 - enqueue:O(1)(償却、連結リストと配列[プロービング]) - dequeue:O(1)(連結リストと配列) - empty:O(1)(連結リストと配列) - ### ハッシュテーブル - [ ] 動画: - - [ ] [連鎖によるハッシング(動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [ダブリング、ラビン-カープ(ビデオ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [チェーンを使用したハッシュ (動画)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [テーブルダブリング、Karp-Rabin (動画)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [公開アドレス指定、暗号化ハッシング(動画)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary(video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier(video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(上級)Randomization:ユニバーサル&完全 ハッシング(ビデオ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [PyCon 2010: 強力な辞書 (動画)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: 辞書がさらに強力に (動画))](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(上級)Randomization:ユニバーサル&完全 ハッシング(動画)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(高度)完全ハッシング(動画)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] [[Review] Hash tables in 4 minutes (video)](https://www.youtube.com/watch?v=knV86FlSXJ8) + - [ ] [【復習】4分でわかるハッシュテーブル(動画)](https://www.youtube.com/watch?v=knV86FlSXJ8) - [ ] オンラインコース: - - [ ] [ハッシュ関数について(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html) - - [ ] [ハッシュテーブルの使用(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html) - - [ ] [ハッシングをサポートする(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html) - - [ ] [言語サポートハッシュテーブル(ビデオ)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html) - - [ ] [コアハッシュテーブル(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [データ構造(ビデオ)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [電話帳の問題(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] [コアハッシュテーブル(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] [データ構造(動画)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] [電話帳の問題(動画)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - [ ] 分散ハッシュテーブル: - - [Dropbox(ビデオ)でインスタントアップロードとストレージの最適化](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [分散ハッシュテーブル(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [Dropbox でのインスタント アップロードとストレージの最適化 (動画)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - [分散ハッシュテーブル(動画)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - [ ] 線形プロービングを使用して配列で実装する - hash(k、m) - mはハッシュテーブルのサイズです @@ -601,34 +586,38 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - ### 二分探索 - [ ] [二分探索(動画)](https://www.youtube.com/watch?v=D5SrAga1pno) - - [ ] [二分探索(ビデオ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [二分探索(動画)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [ ] [詳細](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) + - [ ] [ブループリント](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [【復習】4分でわかる二分探索(動画)](https://youtu.be/fDKIpRe8GW4) - [ ] 実装: - 二分探索(ソートされた整数の配列) - 再帰を利用した二分探索 - ### ビット演算 - - [ ] [ビットチートシート- 2 ^ 1から2 ^ 16および2 ^ 32までの2の累乗の多くを知るべきです](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-cheet.pdf) + - [ ] [ビットチートシート](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - (2^1 から 2^16 および 2^32) までの 2 のべき乗の多くを知っておく必要があります - [ ] &、|、^、〜、>>、<<を使ってビットを操作することについての本当の理解を得る - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] [言語](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ]  [良いイントロ:ビット操作(動画)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [Cプログラミングチュートリアル2-10:ビット演算子(ビデオ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Cプログラミングチュートリアル2-10:ビット演算子(動画)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - [ ] [ビット操作](https://en.wikipedia.org/wiki/Bit_manipulation) - [ ] [ビット演算](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - [ ] [インタラクティブなBit Twiddler](http://bits.stephan-brumme.com/interactive.html) - [ ] 2と1の補数 - - [バイナリ:Plusses&Minuses(なぜ2の補数を使うのか)(ビデオ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [バイナリ:Plusses&Minuses(なぜ2の補数を使うのか)(動画)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1の補数](https://en.wikipedia.org/wiki/Ones%27_complement) - [2の補数](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] カウントセットビット - - [1バイトのビットを数える4つの方法(ビデオ)](https://youtu.be/Hzuzo9NJrlc) + - [1バイトのビットを数える4つの方法(動画)](https://youtu.be/Hzuzo9NJrlc) - [カウントビット](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [セットビットの数を32ビット整数で数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数) - - [ ] 2の次の累乗に丸めます: - - [2つの次のパワーに回す](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [ ] カウントセットビット: + - [バイト内のビットを数える 4 つの方法 (動画)](https://youtu.be/Hzuzo9NJrlc) + - [ビットをカウントする](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [32 ビット整数のセットビット数を数える方法](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] スワップ値: - [スワップ](http://bits.stephan-brumme.com/swap.html) - [ ] 絶対値: @@ -637,8 +626,8 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## 木 - ### 木 - メモと背景 - - [ ] [シリーズ:Core Trees(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [シリーズ:木々(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) + - [ ] [シリーズ:Core Trees(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) + - [ ] [シリーズ:木々(動画)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - 基本的な木の構築 - トラバーサル - 操作アルゴリズム @@ -662,21 +651,21 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - ### 二分探索木:BST - [ ] [二分探索木レビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [シリーズ(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) + - [ ] [シリーズ(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - シンボルテーブルから始まり、BSTアプリケーションを経由します - - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - [ ] [MIT(動画)](https://www.youtube.com/watch?v=9Jry5-82I68) - C / C ++: - - [ ] [二分探索木 - C / C ++での実装(ビデオ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(ビデオ)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [二分探索木(ビデオ)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [二分木の高さを見つける(ビデオ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [二分木トラバース - 幅優先戦略(ビデオ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [二分探索木 - C / C ++での実装(動画)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(動画)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [二分探索木(動画)の最小要素と最大要素を検索](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分木の高さを見つける(動画)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [二分木トラバース - 幅優先戦略(動画)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - [ ] [二分木:レベルオーダートラバーサル(動画)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] [二分木トラバーサル:Preorder、Inorder、Postorder(video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [二分木が二分探索木かどうかを確認する(ビデオ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [二分探索木(ビデオ)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [二分探索木(ビデオ)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分木が二分探索木かどうかを確認する(動画)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [二分探索木(動画)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [二分探索木(動画)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] 実装: - [ ] insert //木に値を挿入する - [ ] get_node_count //格納された値の数を取得する @@ -693,18 +682,18 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - ### ヒープ/優先度つきキュー/二分ヒープ - 木として可視化されますが、通常はストレージ内で線形です(配列、連結リスト) - [ ] [ヒープ](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [はじめに(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) + - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - [ ] [ナイーブな実装(video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [二分木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [木の高さ備考(ビデオ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [基本的な操作(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [完全な二分木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [疑似コード(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [ヒープソート - ジャンプして開始(ビデオ)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [ヒープソート(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [ヒープを作る(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT:ヒープとヒープソート(ビデオ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B講義24:優先度つきキュー(ビデオ)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [二分木(動画)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [木の高さ備考(動画)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [基本的な操作(動画)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [完全な二分木(動画)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [疑似コード(動画)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [ヒープソート - ジャンプして開始(動画)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [ヒープソート(動画)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) + - [ ] [ヒープを作る(動画)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) + - [ ] [MIT:ヒープとヒープソート(動画)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B講義24:優先度つきキュー(動画)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - [ ] [線形時間BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 最大ヒープを実装する: @@ -777,9 +766,9 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] [6。接尾辞配列](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - [ ] [基数ソート(動画)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [基数ソート、ソート(線形時間指定の制約)(ビデオ)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [ランダム化:行列乗算、クイックソート、Freivaldsのアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [線形時間で並べ替える(ビデオ)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + - [ ] [基数ソート、ソート(線形時間指定の制約)(動画)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ランダム化:行列乗算、クイックソート、Freivaldsのアルゴリズム(動画)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [線形時間で並べ替える(動画)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) まとめとして、ここには[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現があります。 このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects) @@ -799,32 +788,32 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - 質問が表示されたら、まずグラフベースのソリューションを探し、それがなければ進んでください。 - [ ] Skiena Lectures - 素晴らしいイントロ: - - [ ] [CSE373 2012 - 講義11 - グラフデータ構造(ビデオ)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - 講義12 - 幅優先検索(ビデオ)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(1)(ビデオ)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(2)(動画)(ビデオ)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(3)(ビデオ)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義11 - グラフデータ構造(動画)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) + - [ ] [CSE373 2012 - 講義12 - 幅優先検索(動画)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) + - [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(動画)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) + - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(1)(動画)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(2)(動画)(動画)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(3)(動画)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] グラフ(レビューなど): - - [ ] [6.006単一始点最短経路問題(ビデオ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 ダイクストラ(ビデオ)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 ベルマン-フォード法(ビデオ)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 ダイクストラ法のスピードアップ(ビデオ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni:グラフアルゴリズムI - トポロジカルソート、最小スパニング木、プリムのアルゴリズム - 講演6(ビデオ)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Aduni:グラフアルゴリズムII - DFS、BFS、クラスカル法のアルゴリズム、連合探索データ構造 - 講義7(ビデオ)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) - - [Aduni:グラフアルゴリズムIII:最短経路 - レクチャー8(ビデオ)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni:グラフアルゴリズムIV:幾何学アルゴリズムの紹介 - 第9講(ビデオ)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014(58:09から開始)(ビデオ)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014:加重グラフ(ビデオ)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [欲張りアルゴリズム:最小スパニング木(ビデオ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [6.006単一始点最短経路問題(動画)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 ダイクストラ(動画)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 ベルマン-フォード法(動画)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 ダイクストラ法のスピードアップ(動画)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni:グラフアルゴリズムI - トポロジカルソート、最小スパニング木、プリムのアルゴリズム - 講演6(動画)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Aduni:グラフアルゴリズムII - DFS、BFS、クラスカル法のアルゴリズム、連合探索データ構造 - 講義7(動画)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) + - [Aduni:グラフアルゴリズムIII:最短経路 - レクチャー8(動画)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni:グラフアルゴリズムIV:幾何学アルゴリズムの紹介 - 第9講(動画)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014(58:09から開始)(動画)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) + - [ ] [CS 61B 2014:加重グラフ(動画)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [欲張りアルゴリズム:最小スパニング木(動画)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(動画)](https://www.youtube.com/watch?v=RpgcYiky7uw) - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - フルcourseraコース: - - [ ] [グラフのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + - [ ] [グラフのアルゴリズム(動画)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - 私は実装します: - [ ] 隣接リストを持つDFS(再帰的) @@ -848,14 +837,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### 再帰 - [ ] 再帰とバックトラックに関するスタンフォードの講義: - - [ ] [講義8 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [講義9 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [講義10 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [講義11 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - [ ] [講義8 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [講義9 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [講義10 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [講義11 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - それを使用するのが適切なとき - 尾の再帰はどのように優れていないのですか? - [ ] [テール再帰とは何かなぜそれが悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [テール再帰(ビデオ)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [テール再帰(動画)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - ### 動的プログラミング - 面接で動的プログラミングの問題が見られることはおそらくないでしょうが、問題が動的プログラミングの候補であると認識できることは価値があります。 @@ -863,25 +852,25 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 - [ ] 動画: - Skienaのビデオは、時には見ることができないほど小さすぎるホワイトボードを使用することがあるため、フォローするのが難しい場合があります - - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(ビデオ)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena:CSE373 2012 - 講義20 - 編集距離(ビデオ)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena:CSE373 2012 - 講義21 - 動的プログラミング例(ビデオ)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミングのアプリケーション(ビデオ)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson:動的プログラミング0(59:18から開始)(ビデオ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson:動的プログラミングI - 講義11(ビデオ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson:動的プログラミングII - 講演12(ビデオ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(動画)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) + - [ ] [Skiena:CSE373 2012 - 講義20 - 編集距離(動画)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) + - [ ] [Skiena:CSE373 2012 - 講義21 - 動的プログラミング例(動画)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) + - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミングのアプリケーション(動画)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Simonson:動的プログラミング0(59:18から開始)(動画)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson:動的プログラミングI - 講義11(動画)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson:動的プログラミングII - 講演12(動画)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - [ ] 個々のDP問題のリスト(それぞれ短い):             [動的プログラミング(動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] イェール講義ノート: - [ ] [動的プログラミング](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング) - [ ] Coursera: - - [ ] [RNA二次構造の問題(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [動的プログラミングのアルゴリズム(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [DPアルゴリズムの説明(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [DPアルゴリズムの実行時間(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP Vs 再帰的実装(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [グローバル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [ローカル対配列アライメント(ビデオ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + - [ ] [RNA二次構造の問題(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [動的プログラミングのアルゴリズム(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) + - [ ] [DPアルゴリズムの説明(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [DPアルゴリズムの実行時間(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP Vs 再帰的実装(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [グローバル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [ローカル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### オブジェクト指向プログラミング - [ ] [オプション:UML 2.0シリーズ(動画)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) @@ -889,8 +878,8 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - OOとOOの設計方法を十分に理解している場合は、これをスキップできます。 - [OOSE:UMLとJavaを使用したソフトウェア開発](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] SOLID OOP原則: - - [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(ビデオ)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID原則(ビデオ)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) + - [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(動画)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [SOLID原則(動画)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - [ ] S - [単一責任の原則](http://www.oodesign.com/single-responsibility-principle.html)| [各オブジェクトへの単一責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - [もっと味](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - [ ] O - [オープン/クローズの原則l](http://www.oodesign.com/open-close-principle.html)| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません](https://en.wikipedia.org/wiki/Open/closed_principle) @@ -898,14 +887,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] L - [リスコフの置換原則](http://www.oodesign.com/liskov-s-substitution-principle.html)| [基本クラスと派生クラスは `IS A`プリンシパルに従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=ja) - [ ] I - [インタフェース分離の原則](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません - - [インタフェース分離の原則5分(ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [インタフェース分離の原則5分(動画)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) - [ ] D - [依存性逆転の原則](http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 - [なぜ依存関係の逆転の原則とそれが重要なのか](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja) - ### デザインパターン - - [ ] [クイックUMLレビュー(ビデオ)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [クイックUMLレビュー(動画)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] これらのパターンを学ぶ: - [ ] Strategy(戦略) - [ ] Singleton(単一要素) @@ -924,9 +913,9 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] Iterator(イテレータ) - [ ] Composite(合成) - [ ] Flyweight(フライ級) - - [ ] [第6章(パート1) - パターン(ビデオ)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [第6章(パート2) - 抽象化 - 発生、一般階層、プレーヤーロール、シングルトン、オブザーバー、代表団(ビデオ)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(ビデオ)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [第6章(パート1) - パターン(動画)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] [第6章(パート2) - 抽象化 - 発生、一般階層、プレーヤーロール、シングルトン、オブザーバー、代表団(動画)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(動画)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [ビデオシリーズ(27ビデオ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - 正式な本は「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」であることは分かっていますが、ヘッドファーストはOOの初心者には最適です。 @@ -935,31 +924,31 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### 組み合わせ(nCk)と確率 - - [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(ビデオ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [学校を作る:確率(ビデオ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [学校を作る:確率とマルコフ連鎖(ビデオ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(動画)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [学校を作る:確率(動画)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [学校を作る:確率とマルコフ連鎖(動画)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - [ ] Khan Academy: - コースのレイアウト: - [ ] [基本理論的確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - ちょうどビデオ - 41(それぞれ単純で、それぞれ短いです): - - [ ] [確率の説明(ビデオ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [確率の説明(動画)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP、NP-完全/近似アルゴリズム - 巡回セールスマン問題やナップザック問題など、NP完全問題の最も有名なクラスについて知りましょう。        そうすれば面接官がこれらについて偽装して尋ねるとき、それらを認識することができます。 - NP完全の意味を知る。 - - [ ] [計算上の複雑さ(ビデオ)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] [計算上の複雑さ(動画)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - - [ ] [貪欲アルゴリズム。 II&NP完全性へのイントロ(ビデオ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP完全性II&リダクション(ビデオ)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP完全性III(ビデオ)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP完全性IV(ビデオ)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] [貪欲アルゴリズム。 II&NP完全性へのイントロ(動画)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP完全性II&リダクション(動画)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP完全性III(動画)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP完全性IV(動画)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] スキナ: - - [ ] [CSE373 2012 - 講義23 - NP完全性の紹介(ビデオ)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - 講義24 - NP完全性の証明(ビデオ)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講演25 - NP完全性への挑戦(ビデオ)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [複雑さ:P、NP、NP完全性、削減(ビデオ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [複雑さ:近似アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [複雑さ:固定パラメータアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [CSE373 2012 - 講義23 - NP完全性の紹介(動画)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] [CSE373 2012 - 講義24 - NP完全性の証明(動画)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2012 - 講演25 - NP完全性への挑戦(動画)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [複雑さ:P、NP、NP完全性、削減(動画)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [複雑さ:近似アルゴリズム(動画)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [複雑さ:固定パラメータアルゴリズム(動画)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するための最適なソリューションについて説明しています。 - [JupyterNotebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - あなたが持っているなら、CLRSの1048 - 1140ページ。 @@ -973,17 +962,17 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### キャッシュ - [ ] LRUキャッシュ: - - [ ] [LRUキャッシュの魔法(Google Devの100日間)(ビデオ)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [LRU(ビデオ)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LRUキャッシュの魔法(Google Devの100日間)(動画)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRU(動画)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) - [ ] [LeetCode - 146 LRU Cache(C ++)(video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - [ ] CPUキャッシュ: - - [ ] [MIT 6.004 L15:メモリ階層(ビデオ)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L15:メモリ階層(動画)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16:キャッシュの問題(動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### プロセスとスレッド - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): - プロセスとスレッドのためのビデオ表示1-11 - - [オペレーティングシステムとシステムプログラミング(ビデオ)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [オペレーティングシステムとシステムプログラミング(動画)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [プロセスとスレッドの違いは何ですか?](https://www.quora.com/What-is-the-difference-between-a-process-and-thread) - カバー: - プロセス、スレッド、並行性の問題 @@ -1008,7 +997,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - コンテキストスイッチ - オペレーティングシステムとその基盤となるハードウェアによってコンテキスト切り替えが開始される仕組み - [ ] [C++のスレッド(シリーズ - 10ビデオ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] Pythonでの並行性(ビデオ): + - [ ] Pythonでの並行性(動画): - [ ] [スレッドに関する短いシリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [ ] [Pythonスレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Python GIL(2010)について理解する](https://www.youtube.com/watch?v=Obt-vMVdM8s) @@ -1055,13 +1044,13 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - モックオブジェクトとは何ですか? - 統合テストとは - 依存性注入とは - - [ ] [James Bachによるアジャイルソフトウェアテスト(ビデオ)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [ジェイムス・バッハによるソフトウェアテストの公開講座(ビデオ)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - テスト駆動開発(これは私たちが意味するものではありません)(ビデオ)](https://vimeo.com/83960706) + - [ ] [James Bachによるアジャイルソフトウェアテスト(動画)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [ジェイムス・バッハによるソフトウェアテストの公開講座(動画)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - テスト駆動開発(これは私たちが意味するものではありません)(動画)](https://vimeo.com/83960706) - [スライド](http://goocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] [TDDは死んでいます。長いライブテスト。](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [TDDは死んでいますか? (ビデオ)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [ビデオシリーズ(152ビデオ) - すべてではない(ビデオ)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) + - [ ] [TDDは死んでいますか? (動画)](https://www.youtube.com/watch?v=z9quxZsLcfo) + - [ ] [ビデオシリーズ(152ビデオ) - すべてではない(動画)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - [ ] [Pythonでテスト駆動型Web開発](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] 依存性注入: - [ ] [動画](https://www.youtube.com/watch?v=IKD2-MAkXyQ) @@ -1077,14 +1066,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍     あなたはそれらを実装できますか? - ### 文字列の検索と操作 - - [ ] [Sedgewick - 接尾辞配列(ビデオ)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] [Sedgewick - 接尾辞配列(動画)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - [ ] [Sedgewick - サブストリング(文字列の一部)検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - [ ] [1. サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - [ ] [2. ブルートフォースサブストリング検索](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - [ ] [3. クヌース・モーリス・プラット法](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - [ ] [4. ボイヤー-ムーア文字列検索アルゴリズム](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - [ ] [5. ラビン-カープ文字列検索アルゴリズム](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [テキストの検索パターン(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + - [ ] [テキストの検索パターン(動画)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)     このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects) @@ -1097,17 +1086,17 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [3. キャラクターベースの操作](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - [ ] [データ構造とプログラミング手法に関する注記](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - [ ] 短期コースビデオ: - - [ ] [トライ木の紹介(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [トライ木のパフォーマンス(ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [トライ木の紹介(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [トライ木のパフォーマンス(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [トライ木の実装ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [Trie:無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - トライ木の使用](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [スタンフォード講演(現実世界のユースケース)(ビデオ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [スタンフォード講演(現実世界のユースケース)(動画)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### 浮動小数点数 - [ ] 単純な8ビット:[浮動小数点数の表現 - 1(ビデオ - 計算にエラーがあります - ビデオの説明を参照)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32ビット:[IEEE754 32ビット浮動小数点バイナリ(ビデオ)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] 32ビット:[IEEE754 32ビット浮動小数点バイナリ(動画)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること](http://www.joelonsoftware.com/articles/Unicode.html) @@ -1115,8 +1104,8 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### バイト順(エンディアン) - [ ] [ビッグエンディアンとリトルエンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [ビッグエンディアン Vs リトルエンディアン(ビデオ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(ビデオ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [ ] [ビッグエンディアン Vs リトルエンディアン(動画)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(動画)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。 - 前半で十分です。 @@ -1135,7 +1124,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [詳解サブネット化 - 第5部CIDR表記](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] ソケット: - [ ] [Java - Sockets - Introduction(video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [ソケットプログラミング(ビデオ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [ ] [ソケットプログラミング(動画)](https://www.youtube.com/watch?v=G75vN2mnJeQ) ## システム設計、スケーラビリティ、データ処理 - **4年以上の経験があれば、システム設計の質問を期待できます。** @@ -1161,7 +1150,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [技術面接で設計質問に答えるための準備方法](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [システムデザイン面接の前に知っておくべき8つの事柄](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) - [ ] [アルゴリズム設計](http://www.hiredintech.com/algorithm-design/) -- [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(ビデオ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(動画)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [システム設計の面接](https://github.com/checkcheckzz/system-design-interview) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。 - [ ] [システム設計面接の方法](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [誰もが知っておくべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) @@ -1186,20 +1175,20 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [分散コンピューティングの説明の誤り](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - [ ] [実用的なプログラミングテクニック](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - [extra:Google Pregel グラフ処理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Googleのソフトウェアシステム構築と教訓(ビデオ)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Jeff Dean - Googleのソフトウェアシステム構築と教訓(動画)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [スケールのための設計システムの紹介](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [App EngineとCloud Datastoreを使用してモバイルゲームを世界中の視聴者に拡大(ビデオ)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [App EngineとCloud Datastoreを使用してモバイルゲームを世界中の視聴者に拡大(動画)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [Googleがプラネットスケールのインフラのプラネットスケールエンジニアリングを行う仕組み](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [アルゴリズムの重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - [ ] [シャーディング](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - [ ] [Facebook(2009)でスケール](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Facebook(2012年)、「10億ユーザー向けビルド(ビデオ)」](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(ビデオ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [Facebook(2012年)、「10億ユーザー向けビルド(動画)」](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(動画)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [7年間のYouTubeスケーラビリティレッスン30分](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) - [動画](https://www.youtube.com/watch?v=G-lGCC4KKok) - [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用)](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - [ ] [大きなデータセットで重複を削除する方法](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [Jon CowieによるEtsyのスケールとエンジニアリング文化の中の一見(ビデオ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Jon CowieによるEtsyのスケールとエンジニアリング文化の中の一見(動画)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [Amazonは独自のマイクロサービスアーキテクチャをどのように導いたか](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [圧縮するか圧縮しないか、それはUberの質問でした](https://eng.uber.com/trip-data-squeeze/) - [ ] [Tarantoolの非同期キュー、キューに入れる](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) @@ -1230,7 +1219,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 - [ ] Twitter: - - [O`Reilly MySQL CE 2011:Jeremy Cole、「@Twitterの大小データ」(ビデオ)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [O`Reilly MySQL CE 2011:Jeremy Cole、「@Twitterの大小データ」(動画)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [スケール時のタイムライン](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - さらに詳しくは、[ビデオシリーズ](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。 @@ -1355,7 +1344,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 ## 面接に近づいたら -- [ ] クラッキングコーディング面接セット2(ビデオ): +- [ ] クラッキングコーディング面接セット2(動画): - [コード面接をクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) - [コード面接をクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) @@ -1481,15 +1470,15 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### コンパイラ - - [ ] [1分でコンパイラがどのように動作するか(ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - コンパイラ(ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [ ] [1分でコンパイラがどのように動作するか(動画)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ ] [Harvard CS50 - コンパイラ(動画)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - [ ] [C ++(video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [コンパイラの最適化について(C ++)(ビデオ)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [ ] [コンパイラの最適化について(C ++)(動画)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacsとvi(m) - UNIXベースのコードエディタに慣れましょう - vi(m): - - [vim 01での編集 - インストール、設定、およびモード(ビデオ)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [vim 01での編集 - インストール、設定、およびモード(動画)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - 4ビデオのセット: - [vi / vimエディタ - レッスン1](https://www.youtube.com/watch?v=SI8TeVMX8pk) @@ -1498,14 +1487,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [vi / vimエディタ - レッスン4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - [Emacsの代わりにViを使う](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [基本Emacsチュートリアル(ビデオ)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - 3つのセット(ビデオ): + - [基本Emacsチュートリアル(動画)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3つのセット(動画): - [Emacsチュートリアル(初心者向け) - 第1部 - ファイルコマンド、カット/コピー/ペースト、カーソルコマンド](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacsチュートリアル(初心者向け) - パート2 - バッファ管理、検索、M-grep、rgrepモード](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacsチュートリアル(初心者) - 第3章式、ステートメント、〜/ .emacsファイルとパッケージ](https://www.youtube.com/watch?v=paSgzPso-yc) - [邪悪なモード:または、私がEmacsを気絶させ、愛する方法(動画)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [EmacsでCプログラムを書く](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(多分)組織モードの詳細:構造の管理(ビデオ)](https://www.youtube.com/watch?v=nsGYet02bEk) + - [(多分)組織モードの詳細:構造の管理(動画)](https://www.youtube.com/watch?v=nsGYet02bEk) - ### Unixコマンドラインツール - 私は良いツールから下のリストに記入しました。 @@ -1521,7 +1510,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### 情報理論(ビデオ) +- ### 情報理論(動画) - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - [ ] Markovプロセスの詳細: - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) @@ -1529,7 +1518,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [プロジェクト=マルコフテキスト生成ウォークスルー](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs) - 下記のMIT 6.050J Information and Entropyシリーズを参照してください。 -- ### パリティ&ハミングコード(ビデオ) +- ### パリティ&ハミングコード(動画) - [ ] [イントロ](https://www.youtube.com/watch?v=q-3BctoUpHE) - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - [ ] ハミングコード: @@ -1540,7 +1529,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### エントロピー - 下記の動画もご覧ください - 最初に情報理論ビデオを見てください - - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) + - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(動画)](https://youtu.be/JnJq3Py0dyM?t=176) - ### 暗号化 - 下記の動画もご覧ください @@ -1551,7 +1540,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### 圧縮 - 最初に情報理論ビデオを見てください - - [ ] Computerphile(ビデオ): + - [ ] Computerphile(動画): - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [ ] [上向きの木(ハフマン木)](https://www.youtube.com/watch?v=umTbivyJoiI) @@ -1578,14 +1567,14 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### ガベージコレクション - [ ] [ガベージコレクション(Java);データの拡張(動画)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) - - [ ] [コンパイラ(ビデオ)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) + - [ ] [コンパイラ(動画)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - [ ] [GC in Python(video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [ ] [ディープダイブJava:ガーベッジコレクションは良いです!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python:CPythonでのガベージコレクション(ビデオ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [ ] [Deep Dive Python:CPythonでのガベージコレクション(動画)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### パラレルプログラミング - [ ] [Coursera(Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [高性能並列計算のための効率的なPython(ビデオ)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [ ] [高性能並列計算のための効率的なPython(動画)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### メッセージング、シリアライゼーション、およびキューイングシステム - [ ] [Thrift](https://thrift.apache.org/) @@ -1612,13 +1601,13 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### A * - [ ] [検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm) - [ ] [A * Pathfinding Tutorial(video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A *経路探索(E01:アルゴリズムの説明)(ビデオ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [ ] [A *経路探索(E01:アルゴリズムの説明)(動画)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### 高速フーリエ変換 - [ ] [フーリエ変換のインタラクティブガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [ ] [フーリエ変換とは何ですか?それは何のために使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [フーリエ変換とは何ですか? (ビデオ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide&Conquer:FFT(ビデオ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ ] [フーリエ変換とは何ですか? (動画)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [ ] [Divide&Conquer:FFT(動画)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [ ] [FFTの理解](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### ブルームフィルター @@ -1637,7 +1626,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Simhashing(うまくいけば)シンプルに](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### ヴァンEmde Boasの木 - - [Divide&Conquer:van Emde Boas Trees(ビデオ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [Divide&Conquer:van Emde Boas Trees(動画)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [ ] [MIT講義ノート](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) - ### 拡張データ構造 @@ -1664,9 +1653,9 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍             赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより             一度構築され、再構成なしでロードされる、例えば言語             辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。 - - [ ] [MIT AVL Trees / AVL Sort(ビデオ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL木(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL木実装(ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [ ] [MIT AVL Trees / AVL Sort(動画)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [ ] [AVL木(動画)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [ ] [AVL木実装(動画)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) @@ -1690,8 +1679,8 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍             現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒の木を使用します。 Javaのバージョン8では、             Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに             ハッシュコードでは、赤黒の木が使用されます。 - - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(ビデオ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - アルゴリズム - 講義5(ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(動画)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - アルゴリズム - 講義5(動画)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) @@ -1700,9 +1689,9 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - 実際には:             2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。 - 2-3の木は非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 - - [ ] [23木の直感と定義(ビデオ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [ ] [23木の直感と定義(動画)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [ ] [23-Treeのバイナリビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3木(学生の暗唱)(ビデオ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [2-3木(学生の暗唱)(動画)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] **2-3-4木(別名2-4木)**         - 実際には: @@ -1710,8 +1699,8 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍             2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を             赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、             2〜4本の木は実用的ではありません**。 - - [ ] [CS 61B講義26:バランスの取れた検索木(ビデオ)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [ボトムアップ234-Trees(ビデオ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [CS 61B講義26:バランスの取れた検索木(動画)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) + - [ ] [ボトムアップ234-Trees(動画)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [トップダウン234木(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] **N-ary(K-ary、M-ary)木** @@ -1728,10 +1717,10 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍             特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです             (またはおそらくシリンダーヘッドセクターへの)アドレスである。 - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [B木(ビデオ)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B木の定義と挿入(ビデオ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [B木(動画)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [ ] [B木の定義と挿入(動画)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [ ] [B木削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - メモリ階層モデル(ビデオ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [MIT 6.851 - メモリ階層モデル(動画)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - キャッシュに気付かないB木、非常に興味深いデータ構造 - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) @@ -1740,22 +1729,22 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### k-D木 - 矩形または高次元のオブジェクトの点数を見つけるのに最適 - k最近接の隣人に適している - - [ ] [Kd Trees(ビデオ)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d木アルゴリズム(ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [ ] [Kd Trees(動画)](https://www.youtube.com/watch?v=W94M9D_yXKk) + - [ ] [kNN K-d木アルゴリズム(動画)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### リストをスキップする - 「これは多少のカルトデータ構造です」 - Skiena - - [ ] [ランダム化:リストをスキップ(ビデオ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [ランダム化:リストをスキップ(動画)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [アニメーションともう少し詳しく](https://en.wikipedia.org/wiki/Skip_list) - ### ネットワークの流れ - - [ ] [Ford-Fulkerson(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkersonアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Ford-Fulkerson(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ ] [Ford-Fulkersonアルゴリズム(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### 高速処理のための数学 - - [ ] [整数演算、Karatsuba倍数(ビデオ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [中国の剰余定理(暗号で使用)(ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [ ] [整数演算、Karatsuba倍数(動画)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [中国の剰余定理(暗号で使用)(動画)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - 二分探索木とヒープの組み合わせ @@ -1763,13 +1752,13 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### リニアプログラミング(ビデオ) +- ### リニアプログラミング(動画) - [ ] [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [ ] [最小費用の見積もり](https://www.youtube.com/watch?v=2ACJ9EWUC6U) - [ ] [最大値の検索](https://www.youtube.com/watch?v=8AA_81xI3ik) - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### 幾何学、凸包(ビデオ) +- ### 幾何学、凸包(動画) - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) @@ -1780,10 +1769,10 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ### 機械学習 - [ ] なぜMLですか? - [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [知的コンピュータシステムのための大規模な深い学習(ビデオ)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [ ] [知的コンピュータシステムのための大規模な深い学習(動画)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [ ] [深い学習と理解度対ソフトウェア工学と検証、Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - [ ] [Googleのクラウドマシン学習ツール(動画)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers `Machine Learning Recipes(Scikit Learn&Tensorflow)(ビデオ)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [ ] [Google Developers `Machine Learning Recipes(Scikit Learn&Tensorflow)(動画)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - [ ] [Tensorflow(video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [ ] [Tensorflowチュートリアル](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - [ ] [Pythonでニューラルネットワークを実装する実践ガイド(Theanoを使用)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) @@ -1819,7 +1808,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - [ ] [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- [ ] **もっとダイナミックなプログラミング**(ビデオ) +- [ ] **もっとダイナミックなプログラミング**(動画) - [ ] [6.006:動的プログラミングI:フィボナッチ、最短経路](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - [ ] [6.006:ダイナミックプログラミングII:テキストジャスティフィケーション、ブラックジャック](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - [ ] [6.006:DP III:かっこ、編集距離、ナップザック](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -1828,11 +1817,11 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [6.046:ダイナミックプログラミング:オールペア最短パス](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [ ] [6.046:ダイナミックプログラミング(学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- [ ] **高度なグラフ処理**(ビデオ) +- [ ] **高度なグラフ処理**(動画) - [ ] [同期分散アルゴリズム:対称性を破る。木にまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [ ] [非同期分散アルゴリズム:木にまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(ビデオ): +- [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(動画): - [ ] [MIT 6.042J - 確率の紹介](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [ ] [MIT 6.042J - 条件付き確率](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [ ] [MIT 6.042J - 独立性](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1845,7 +1834,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [Simonson:Approximation Algorithms(video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - [ ] **文字列マッチング** - - [ ] Rabin-Karp(ビデオ): + - [ ] Rabin-Karp(動画): - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [最適化:実装と分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) @@ -1855,7 +1844,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [Knuth-Morris-Pratt(KMP)文字列マッチングアルゴリズム](https://www.youtube.com/watch?v=5i7oKodCRJo) - [ ] Boyer-Moore文字列検索アルゴリズム - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(ビデオ)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(動画)](https://www.youtube.com/watch?v=QDZpzctPf10) - [ ] [Coursera:文字列のアルゴリズム](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - すごく始まりますが、KMPを過ぎるまでには、必要以上に複雑になります - 試行の良い説明 @@ -1864,16 +1853,16 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] **ソート** - [ ] スタンフォードのソーティングに関する講義: - - [ ] [講義15 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [講義16 |プログラミングの抽象化(ビデオ)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - [ ] [講義15 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [ ] [講義16 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - [ ] Shai Simonson、[Aduni.org](http://www.aduni.org/): - - [ ] [アルゴリズム - ソート - 講義2(ビデオ)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [アルゴリズム - ソートII - レクチャー3(ビデオ)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - [ ] [アルゴリズム - ソート - 講義2(動画)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [ ] [アルゴリズム - ソートII - レクチャー3(動画)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - [ ] Steven Skienaのソーティングに関する講義: - - [ ] [講義は26:46に始まります(ビデオ)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [講義は27:40(ビデオ)から開始](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [講演は35:00(ビデオ)から開始](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [講演は23:50から始まります(ビデオ)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - [ ] [講義は26:46に始まります(動画)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) + - [ ] [講義は27:40(動画)から開始](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [講演は35:00(動画)から開始](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [講演は23:50から始まります(動画)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) ## ビデオシリーズ From 362be56d68558b4e3e12845e2cd1ace05e9e9c11 Mon Sep 17 00:00:00 2001 From: kamegoro Date: Wed, 1 Nov 2023 22:14:51 +0900 Subject: [PATCH 787/857] Fixes where listings are not valid. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4d39afad57..e9d5f68471 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ For a complete CS self-taught program, the resources for my study plan have been - insertion - heapsort - quicksort - - merge sort + - mergesort - [Graphs](#graphs) - directed - undirected @@ -711,7 +711,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - binary search using recursion - ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) + - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - [ ] Good intro: From 67e4c080d1da12e097db1060a8dd2f41e9ad987e Mon Sep 17 00:00:00 2001 From: kamegoro Date: Thu, 2 Nov 2023 19:52:48 +0900 Subject: [PATCH 788/857] Japanese translation of tree and sorting section --- translations/README-ja.md | 178 +++++++++++++++++++++----------------- 1 file changed, 98 insertions(+), 80 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 8067716de9..ef2403f33a 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -84,7 +84,7 @@ - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) - [データ構造](#データ構造) - [その他の知識](#その他の知識) -- [木](#木) +- [ツリー](#ツリー) - [ソート](#ソート) - [グラフ](#グラフ) - [さらに多くの知識](#さらに多くの知識) @@ -623,38 +623,34 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] 絶対値: - [絶対整数](http://bits.stephan-brumme.com/absInteger.html) -## 木 - -- ### 木 - メモと背景 - - [ ] [シリーズ:Core Trees(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees) - - [ ] [シリーズ:木々(動画)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - 基本的な木の構築 - - トラバーサル - - 操作アルゴリズム - - BFS(幅優先検索) - - [MIT(動画)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - メモ: - - レベルオーダー(BFS、キューを使用) - - 時間複雑度:O(n) - - 空間の複雑さ:最適:O(1)、最悪:O(n / 2)= O(n) - - DFS(深さ優先探索) - - [MIT(動画)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - メモ: - - 時間複雑度:O(n) - - 空間の複雑さ:最良:O(log n) - 平均。木の高さ 最悪:O(n) - - inorder(DFS:left、self、right) - - postorder(DFS:left、right、self) - - preorder(DFS:自己、左、右) - - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) +## ツリー + +- ### ツリー - メモと背景 + - [ ] [ツリーの紹介 (動画)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [ツリートラバーサル (動画)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] [BFS (幅優先検索) および DFS (深さ優先検索) (動画)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS のメモ: + - レベル順序 (BFS、キューを使用) + - 時間計算量: O(n) + - 空間の複雑さ: 最良: O(1)、最悪: O(n/2)=O(n) + - DFS のメモ: + - 時間計算量: O(n) + - 空間複雑さ: 最良: O(log n) + - 平均 最高の木の高さ: O(n) + best: O(log n) + - 平均 最低の木の高さ: O(n) + worst: O(n) + - 順序 (DFS: 左、自分、右) + - 事後順序 (DFS: 左、右、自己) + - 予約注文 (DFS: 自分、左、右) + - [ ] [【復習】4分でわかる幅優先検索(動画)](https://youtu.be/HZ5YTanv5QE) + - [ ] [【復習】4分で深さ優先検索(動画)](https://youtu.be/Urx87-NMm6c) + - [ ] [【復習】11 分でわかるツリー トラバーサル (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - ### 二分探索木:BST - - [ ] [二分探索木レビュー(動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [シリーズ(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - シンボルテーブルから始まり、BSTアプリケーションを経由します - - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT(動画)](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [二分探索木の復習 (動画)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (動画)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C / C ++: - [ ] [二分探索木 - C / C ++での実装(動画)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(動画)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) @@ -667,15 +663,15 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] [二分探索木(動画)からノードを削除](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - [ ] [二分探索木(動画)のInorder Successor](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] 実装: - - [ ] insert //木に値を挿入する + - [ ] [insert // ツリーに値を挿入します](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) - [ ] get_node_count //格納された値の数を取得する - [ ] print_values //最小値から最大値まで木の値を出力します - [ ] delete_tree - [ ] is_in_tree //与えられた値が木に存在する場合はtrueを返します - - [ ] get_height //ノードの高さを返します(単一ノードの高さは1です) + - [ ] [get_height // ノード単位の高さを返します (単一ノードの高さは 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) - [ ] get_min //木に格納されている最小値を返します - [ ] get_max //木に格納されている最大値を返します - - [ ] is_binary_search_tree + - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) - [ ] delete_value - [ ] get_successor //指定された値の後に木の次に高い値を返し、存在しなければ-1を返します @@ -683,7 +679,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - 木として可視化されますが、通常はストレージ内で線形です(配列、連結リスト) - [ ] [ヒープ](https://en.wikipedia.org/wiki/Heap_(data_structure)) - [ ] [はじめに(動画)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [ナイーブな実装(video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) + - [ ] [ナイーブな実装(動画)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - [ ] [二分木(動画)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - [ ] [木の高さ備考(動画)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - [ ] [基本的な操作(動画)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) @@ -694,8 +690,8 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] [ヒープを作る(動画)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - [ ] [MIT:ヒープとヒープソート(動画)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B講義24:優先度つきキュー(動画)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) - - [ ] [線形時間BuildHeap(max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] [線形時間ビルドヒープ (最大ヒープ)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [【復習】13分でヒープ(プレイリスト)(動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] 最大ヒープを実装する: - [ ] insert - [ ] sift_up - 挿入に必要 @@ -706,14 +702,13 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] sift_down - extract_maxに必要です - [ ] remove(x) - インデックスxのアイテムを削除する - [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する - - [ ] heap_sort() - ソートされていない配列を取り出し、最大ヒープを使用してソート済みの配列に変換します - - 注意:代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります([in-place](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)では実行できません)。 + - [ ] heap_sort() - ソートされていない配列を取得し、最大ヒープまたは最小ヒープを使用してその場でソートされた配列に変換します。 ## ソート -- [ ] note: +- [ ] ノート: - ソートを実装し、最良のケース/最悪のケース、それぞれの平均的な複雑さを知る: - - バブルソートなし - ひどい - O(n ^ 2)、ただしn <= 16の場合を除く + - バブルソートなし - ひどいです - O(n^2) (n <= 16 の場合を除く) - ソートアルゴリズムの安定性( "Quicksortは安定していますか?") - [ソートアルゴリズムの安定性](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - [ソートアルゴリズムの安定性](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) @@ -725,6 +720,26 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。 +- [ ] [セッジウィック - マージソート (5動画)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. マージソート](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. ボトムアップ マージソート](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. 並べ替えの複雑さ](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. コンパレーター](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. 安定性](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [セッジウィック - クイックソート (4動画)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. クイックソート](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] [2. セレクション](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. 重複キー](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. システムソート](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] カリフォルニア大学バークレー校: + - [ ] [CS 61B 講義 29: 並べ替え I (動画)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B 講義 30: 並べ替え II (動画)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B 講義 32: 分類 III (動画)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B レクチャー 33: 並べ替え V (動画)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21: 基数ソート (動画)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) + - [ ] [バブルソート(動画)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [バブルソートの分析(動画)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) - [ ] [挿入ソート、マージソート(動画)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -733,45 +748,48 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] [クイックソート(動画)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [選択ソート(動画)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) -- [ ] マージソートコード: - - [ ] [出力配列(C)の使用](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [出力配列(Python)の使用](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [インプレース(C ++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] クイックソートコード: - - [ ] [Implementation(C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [実装(C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [実装(Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) - - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) - - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) - - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) - - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) - - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) - - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) - -- [ ] 実装: - - [ ] Mergesort:O(n log n)平均と最悪の場合 - - [ ] Quicksort O(n log n)平均の場合 - - 選択ソートと挿入ソートは両方ともO(n ^ 2)の平均と最悪の場合です - - ヒープソートについては、上記のヒープデータ構造を参照してください。 - -- [ ] 必須ではありませんが、私はそれらをお勧めしました: - - [ ] [Sedgewick - 基数ソート(6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Javaの文字列](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. キーインデックスのカウント](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. 最下位桁の最初の文字列の基数ソート](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. 最も重要な数字の最初の文字列の基数ソート](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 基数ソートの3つの方法](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6。接尾辞配列](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [基数ソート(動画)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [基数ソート、ソート(線形時間指定の制約)(動画)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [ランダム化:行列乗算、クイックソート、Freivaldsのアルゴリズム(動画)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [線形時間で並べ替える(動画)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -まとめとして、ここには[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現があります。 -このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects) +- [ ] ソート コードを結合: + - [ ] [出力配列 (C) の使用](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] [出力配列の使用 (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] [インプレース (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] クイックソートコード: + - [ ] [実装 (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] [実装 (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] [実装 (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + + +- [ ] [【復習】18分で分かるソート(プレイリスト](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] [4 分で簡単ソート (動画)](https://youtu.be/Hoixgm4-P4M) + - [ ] [4 分でヒープソート (動画)](https://youtu.be/2DmK_H7IdTo) + - [ ] [3 分で並べ替えをマージする (動画)](https://youtu.be/4VqmGXwpLqc) + - [ ] [2 分でわかるバブルソート (動画)](https://youtu.be/xli_FI7CuzA) + - [ ] [3分でわかる選択ソート(動画)](https://youtu.be/g-PGLbMth_g) + - [ ] [2分で挿入ソート(動画)](https://youtu.be/JU767SDMDvA) + + +- [ ] 実装 + - [ ] マージソート: O(n log n) 平均および最悪の場合 + - [ ] クイックソート O(n log n) の平均ケース + - 選択ソートと挿入ソートは両方とも O(n^2) 平均および最悪の場合です + - ヒープソートについては、上記のヒープ データ構造を参照してください。 + +- [ ] 必須ではありませんが、お勧めします: + - [ ] [Sedgewick - 基数ソート (6動画)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Java の文字列](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. キーのインデックス付きカウント](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. 最下位桁の最初の文字列基数ソート](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. 最上位桁の最初の文字列基数ソート](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3 ウェイ基数クイックソート](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. サフィックス配列](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [基数ソート](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [基数ソート (動画)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [基数ソート、カウンティング ソート (線形時間指定制約) (動画)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ランダム化: 行列乗算、クイックソート、フライヴァルドのアルゴリズム (動画)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [線形時間でのソート (動画)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +概要として、[15のソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg) を視覚的に表したものを次に示します。 +この主題についてさらに詳細が必要な場合は、[一部の主題に関する追加の詳細](#一部の主題に関する追加の詳細) の「並べ替え」セクションを参照してください。 + ## グラフ From 733fdd6632bcd97f93f3f3f05933538ff7cb109c Mon Sep 17 00:00:00 2001 From: kamegoro Date: Sat, 4 Nov 2023 02:23:44 +0900 Subject: [PATCH 789/857] end of Japanese translation of topic of study --- translations/README-ja.md | 769 +++++++++++++++----------------------- 1 file changed, 299 insertions(+), 470 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index ef2403f33a..386d907d75 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -81,27 +81,51 @@ ### 研究のテーマ -- [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) +- [アルゴリズムの複雑さ / Big-O / 漸近分析](#アルゴリズムの複雑さ/Big-O/漸近分析) - [データ構造](#データ構造) + - [配列](#配列) + - [連結リスト](#連結リスト) + - [スタック](#スタック) + - [キュー](#キュー) + - [ハッシュテーブル](#ハッシュテーブル) - [その他の知識](#その他の知識) + - [二分探索](#二分探索) + - [ビット演算](#ビット演算) - [ツリー](#ツリー) + - [ツリーとは](#ツリーとは) + - [二分探索木:BST](#二分探索木:BST) + - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ/優先度つきキュー/二分ヒープ) + - バランスの取れた検索ツリー (詳細ではなく一般的な概念) + - トラバーサル: プレオーダー、インオーダー、 postorder、BFS、DFS - [ソート](#ソート) + - 選択 + - 挿入 + - ヒープソート + - クイック + ソート - マージソート - [グラフ](#グラフ) + - 有向 + - 無向 + - 隣接行列 + - 隣接リスト + - 走査: BFS、DFS - [さらに多くの知識](#さらに多くの知識) -- [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) + - [再帰](#再帰) + - [動的プログラミング](#動的プログラミング) + - [デザインパターン](#デザインパターン) + - [組み合わせ論(nからkを選択)と確率](#組み合わせ論(nからkを選択)と確率) + - [NP、NP-完全/近似アルゴリズム](#NP、NP-完全/近似アルゴリズム) + - [コンピューターがプログラムを処理する仕組み](#コンピューターがプログラムを処理する仕組み) + - [キャッシュ](#キャッシュ) + - [プロセスとスレッド](#プロセスとスレッド) + - [テスト](#テスト) + - [文字列の検索と操作](#文字列の検索と操作) + - [トライ](#トライ) + - [浮動小数点数](#浮動小数点数) + - [Unicode](#unicode) + - [エンディアン](#エンディアン) + - [ネットワーキング](#ネットワーキング) - [最終レビュー](#最終レビュー) -- [コーディングの質問練習](#コーディングの質問練習) -- [コード演習/挑戦](#コード演習挑戦) -- [面接に近づいたら](#面接に近づいたら) -- [あなたの履歴書](#あなたの履歴書) -- [面接が来たときに考えてください](#面接が来たときに考えてください) -- [面接官に質問があります](#面接官に質問があります) -- [一度あなたは仕事を得た](#一度あなたは仕事を得た) -- [その他の書籍](#その他の書籍) -- [その他の学習](#その他の学習) -- [追加科目の詳細](#追加科目の詳細) -- [ビデオシリーズ](#ビデオシリーズ) -- [コンピュータサイエンスコース](#コンピュータサイエンスコース) ## なぜこれを使用するのか @@ -140,11 +164,11 @@ 1. **_GitHub リポジトリ:_** `https://github.com/jwasham/coding-interview-university` をフォーク ボタンをクリックしてフォークします。 - ![GitHub リポジトリをフォークする](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + ![GitHub リポジトリをフォークする](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) 1. ローカル リポジトリにクローンを作成します。 - ``` + ```bash git clone https://github.com//coding-interview-university.git cd coding-interview-university git remote add upstream https://github.com/jwasham/coding-interview-university.git @@ -153,7 +177,7 @@ 1. 変更を完了したら、すべてのボックスに X を付けます。 - ``` + ```bash git commit -am "Marked personal progress" git pull upstream main # 元のレポからの変更でフォークを最新に保つ @@ -378,7 +402,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## コーディングに関する質問の練習 - なぜこれがここにあるのでしょうか? 面接する準備ができていません。 + なぜこれがここにあるのでしょうか? 面接する準備ができていません。 [その後、戻ってこれを読んでください。](#学習中にコーディング面接の質問をする) @@ -441,7 +465,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ただし、学習中に上記のコーディング問題に取り組むことを忘れないでください。 -## アルゴリズムの複雑さ/ Big-O / Asymptotic解析 +## アルゴリズムの複雑さ/Big-O/漸近分析 - ここでは何も実装する必要はありません。ビデオを見てメモを取るだけです。わーい! - ここにはたくさんのビデオがあります。理解できるまで十分に見てください。いつでも戻ってレビューすることができます。 @@ -454,8 +478,8 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] [カリフォルニア大学バークレー校ビッグオー (動画)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [ ] [償却分析 (動画)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) - [ ] TopCoder (漸化式とマスター定理を含む): - - [計算の複雑さ: セクション 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - - [計算の複雑さ: セクション 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) + - [計算の複雑さ: セクション 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [計算の複雑さ: セクション 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [チートシート](http://bigocheatsheet.com/) - [ ] [【復習】5分でわかるBig-O記譜法(動画)](https://youtu.be/__vX2sjlpXU) @@ -467,37 +491,37 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## データ構造 - ### 配列 - - [ ] 配列について: - - [アレイ CS50 ハーバード大学](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) - - [配列 (動画)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) - - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (動画) (15 分 32 秒から視聴開始)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) - - [動的配列 (動画)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - - [ギザギザ配列 (動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] ベクトルを実装します (自動サイズ変更を備えた可変配列): - - [ ] 配列とポインターを使用したコーディングと、インデックスを使用する代わりにインデックスにジャンプするポインターの計算を練習します。 - - [ ] メモリが割り当てられた新しい生データ配列 - - 内部で int 配列を割り当てることができますが、その機能は使用できません - - 16 から開始するか、開始番号がそれより大きい場合は、2 のべき乗 - 16、32、64、128 を使用します。 - - [ ] size() - アイテムの数 - - [ ] Capacity() - 保持できるアイテムの数 - - [ ] is_empty() - - [ ] at(index) - 指定されたインデックスにある項目を返します。インデックスが範囲外の場合は爆発します。 - - [ ] プッシュ(アイテム) - - [ ] insert(index, item) - インデックスに項目を挿入し、そのインデックスの値と末尾の要素を右にシフトします - - [ ] prepend(item) - インデックス 0 の上に挿入を使用できます - - [ ] Pop() - 末尾から削除し、値を返します - - [ ] delete(index) - インデックスにある項目を削除し、末尾の要素をすべて左にシフトします - - [ ]remove(item) - 値を検索し、それを保持するインデックスを削除します (複数の場所にある場合でも) - - [ ] find(item) - 値を検索し、その値を持つ最初のインデックスを返します。見つからない場合は -1 を返します。 - - [ ]size(new_capacity) // プライベート関数 - - 容量に達したら、サイズを 2 倍に変更します - - アイテムをポップするとき、サイズが容量の 1/4 の場合、サイズを半分に変更します - - [ ] 時間 - - O(1) は、最後に追加/削除 (より多くの領域の割り当てのために償却)、インデックス付け、または更新を行います。 - - O(n) は他の場所に挿入/削除します - - [ ] 空間 - - メモリ内で連続しているため、近接性によりパフォーマンスが向上します - - 必要なスペース = (配列の容量、>= n) * 項目のサイズ、ただし 2n であっても O(n) + - [ ] 配列について: + - [アレイ CS50 ハーバード大学](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [配列 (動画)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays (動画) (15 分 32 秒から視聴開始)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [動的配列 (動画)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [ギザギザ配列 (動画)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] ベクトルを実装します (自動サイズ変更を備えた可変配列): + - [ ] 配列とポインターを使用したコーディングと、インデックスを使用する代わりにインデックスにジャンプするポインターの計算を練習します。 + - [ ] メモリが割り当てられた新しい生データ配列 + - 内部で int 配列を割り当てることができますが、その機能は使用できません + - 16 から開始するか、開始番号がそれより大きい場合は、2 のべき乗 - 16、32、64、128 を使用します。 + - [ ] size() - アイテムの数 + - [ ] Capacity() - 保持できるアイテムの数 + - [ ] is_empty() + - [ ] at(index) - 指定されたインデックスにある項目を返します。インデックスが範囲外の場合は爆発します。 + - [ ] プッシュ(アイテム) + - [ ] insert(index, item) - インデックスに項目を挿入し、そのインデックスの値と末尾の要素を右にシフトします + - [ ] prepend(item) - インデックス 0 の上に挿入を使用できます + - [ ] Pop() - 末尾から削除し、値を返します + - [ ] delete(index) - インデックスにある項目を削除し、末尾の要素をすべて左にシフトします + - [ ]remove(item) - 値を検索し、それを保持するインデックスを削除します (複数の場所にある場合でも) + - [ ] find(item) - 値を検索し、その値を持つ最初のインデックスを返します。見つからない場合は -1 を返します。 + - [ ]size(new_capacity) // プライベート関数 + - 容量に達したら、サイズを 2 倍に変更します + - アイテムをポップするとき、サイズが容量の 1/4 の場合、サイズを半分に変更します + - [ ] 時間 + - O(1) は、最後に追加/削除 (より多くの領域の割り当てのために償却)、インデックス付け、または更新を行います。 + - O(n) は他の場所に挿入/削除します + - [ ] 空間 + - メモリ内で連続しているため、近接性によりパフォーマンスが向上します + - 必要なスペース = (配列の容量、>= n) * 項目のサイズ、ただし 2n であっても O(n) - ### 連結リスト - [ ] 説明: @@ -625,24 +649,24 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## ツリー -- ### ツリー - メモと背景 +- ### ツリーとは - [ ] [ツリーの紹介 (動画)](https://www.coursera.org/lecture/data-structures/trees-95qda) - [ ] [ツリートラバーサル (動画)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) - [ ] [BFS (幅優先検索) および DFS (深さ優先検索) (動画)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - BFS のメモ: - - レベル順序 (BFS、キューを使用) - - 時間計算量: O(n) - - 空間の複雑さ: 最良: O(1)、最悪: O(n/2)=O(n) + - レベル順序 (BFS、キューを使用) + - 時間計算量: O(n) + - 空間の複雑さ: 最良: O(1)、最悪: O(n/2)=O(n) - DFS のメモ: - - 時間計算量: O(n) - - 空間複雑さ: 最良: O(log n) - - 平均 最高の木の高さ: O(n) - best: O(log n) - - 平均 最低の木の高さ: O(n) - worst: O(n) - - 順序 (DFS: 左、自分、右) - - 事後順序 (DFS: 左、右、自己) - - 予約注文 (DFS: 自分、左、右) + - 時間計算量: O(n) + - 空間複雑さ: 最良: O(log n) + - 平均 最高の木の高さ: O(n) + best: O(log n) + - 平均 最低の木の高さ: O(n) + worst: O(n) + - 順序 (DFS: 左、自分、右) + - 事後順序 (DFS: 左、右、自己) + - 予約注文 (DFS: 自分、左、右) - [ ] [【復習】4分でわかる幅優先検索(動画)](https://youtu.be/HZ5YTanv5QE) - [ ] [【復習】4分で深さ優先検索(動画)](https://youtu.be/Urx87-NMm6c) - [ ] [【復習】11 分でわかるツリー トラバーサル (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) @@ -793,55 +817,57 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## グラフ -グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。 +グラフはコンピューター サイエンスの多くの問題を表すために使用できるため、このセクションはツリーや並べ替えと同様に長くなります。 -- メモ: - - メモリにグラフを表示するには4つの基本的な方法があります: +- ノート: + - メモリ内でグラフを表現するには 4 つの基本的な方法があります。 - オブジェクトとポインタ - 隣接行列 - 隣接リスト - 隣接マップ - - それぞれの表現とその長所と短所を熟知してください - - BFSとDFS - 計算の複雑さとそのトレードオフ、そしてそれらを実際のコードに実装する方法を知っている - - 質問が表示されたら、まずグラフベースのソリューションを探し、それがなければ進んでください。 - -- [ ] Skiena Lectures - 素晴らしいイントロ: - - [ ] [CSE373 2012 - 講義11 - グラフデータ構造(動画)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - 講義12 - 幅優先検索(動画)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(動画)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(1)(動画)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(2)(動画)(動画)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(3)(動画)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] グラフ(レビューなど): - - - [ ] [6.006単一始点最短経路問題(動画)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 ダイクストラ(動画)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 ベルマン-フォード法(動画)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 ダイクストラ法のスピードアップ(動画)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni:グラフアルゴリズムI - トポロジカルソート、最小スパニング木、プリムのアルゴリズム - 講演6(動画)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Aduni:グラフアルゴリズムII - DFS、BFS、クラスカル法のアルゴリズム、連合探索データ構造 - 講義7(動画)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) - - [Aduni:グラフアルゴリズムIII:最短経路 - レクチャー8(動画)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni:グラフアルゴリズムIV:幾何学アルゴリズムの紹介 - 第9講(動画)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014(58:09から開始)(動画)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014:加重グラフ(動画)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [欲張りアルゴリズム:最小スパニング木(動画)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(動画)](https://www.youtube.com/watch?v=RpgcYiky7uw) - - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + - それぞれの表現とその長所と短所をよく理解する + - BFS と DFS - 計算の複雑さ、トレードオフ、および実際のコードでの実装方法を理解しています。 + - 質問されたら、まずグラフベースの解決策を探し、見つからない場合は次に進みます。 + +- [ ] MIT(ビデオ): + - [ ] [幅優先検索](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [深さ優先検索](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] スキエナ講義 - 素晴らしい導入部: + - [ ] [CSE373 2020 - レクチャー 10 - グラフ データ構造 (動画)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - レクチャー 11 - グラフ トラバーサル (動画)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - レクチャー 12 - 深さ優先検索 (動画)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - レクチャー 13 - 最小スパニング ツリー (動画)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - レクチャー 14 - 最小スパニング ツリー (続き) (動画)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - レクチャー 15 - グラフ アルゴリズム (続き 2) (動画)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] グラフ (レビューなど): + - [ ] [6.006 単一ソース最短パス問題 (動画)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 ダイクストラ (動画)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 ベルマン-フォード (動画)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 ディクストラの高速化 (動画)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: グラフ アルゴリズム I - トポロジカル ソート、最小スパニング ツリー、プリムのアルゴリズム - 講義 6 (動画)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: グラフ アルゴリズム II - DFS、BFS、クラスカルのアルゴリズム、Union Find データ構造 - 講義 7 (動画)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 ) + - [ ] [Aduni: グラフ アルゴリズム III: 最短パス - レクチャー 8 (動画)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: グラフ Alg. IV: 幾何学的アルゴリズムの概要 - レクチャー 9 (動画)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: 加重グラフ (動画)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [貪欲なアルゴリズム: 最小スパニング ツリー (動画)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [強結合コンポーネント コサラジュのアルゴリズム グラフ アルゴリズム (動画)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[復習] 16 分でわかる最短経路アルゴリズム (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[復習] 4 分でわかる最小スパニング ツリー (プレイリスト) (動画)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - フルcourseraコース: - [ ] [グラフのアルゴリズム(動画)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- 私は実装します: - - [ ] 隣接リストを持つDFS(再帰的) - - [ ] 隣接リストを持つDFS(スタックで反復) - - [ ] 隣接行列を持つDFS(再帰的) - - [ ] 隣接行列を持つDFS(スタックで反復) - - [ ] 隣接リストを持つBFS - - [ ] 隣接行列を持つBFS - - [ ] 単一始点の最短経路(ダイクストラ) - - [ ] 最小スパニング木 +- 次のことを実装します。 + - [ ] 隣接リストを含む DFS (再帰的) + - [ ] 隣接リストを使用した DFS (スタックによる反復) + - [ ] 隣接行列を使用した DFS (再帰的) + - [ ] 隣接行列を使用した DFS (スタックによる反復) + - [ ] 隣接リストを含む BFS + - [ ] 隣接マトリックスを使用した BFS + - [ ] 単一ソースの最短パス (ダイクストラ) + - [ ] 最小スパニングツリー - DFSベースのアルゴリズム(上記のAduniの動画を参照): - [ ] サイクルをチェックする(トポロジカルソートに必要.開始前にサイクルをチェックする) - [ ] トポロジカルソート @@ -849,36 +875,36 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] 強く接続されたコンポーネントを一覧表示する - [ ] 二部グラフをチェックする -Skienaの本(下記の書籍の節を参照)と面接の書籍 - ## さらに多くの知識 - ### 再帰 - - [ ] 再帰とバックトラックに関するスタンフォードの講義: - - [ ] [講義8 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [講義9 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [講義10 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [講義11 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - それを使用するのが適切なとき - - 尾の再帰はどのように優れていないのですか? - - [ ] [テール再帰とは何かなぜそれが悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [テール再帰(動画)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] 再帰とバックトラッキングに関するスタンフォードの講義: + - [ ] [講義 8 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [講義 9 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [講義 10 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [講義 11 | プログラミングの抽象化 (動画)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - いつ使用するのが適切ですか? + - 末尾再帰をしない場合と比べて、どのような点が優れているのでしょうか? + - [ ] [末尾再帰とは何ですか、なぜそれほど悪いのですか?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [末尾再帰 (動画)](https://www.coursera.org/lecture/programming-langages/tail-recursion-YZic1) + - [ ] [再帰的問題を解決するための 5 つの簡単なステップ (動画)](https://youtu.be/ngCos392W4w) + バックトラッキング ブループリント: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-回文分割)) [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### 動的プログラミング - - 面接で動的プログラミングの問題が見られることはおそらくないでしょうが、問題が動的プログラミングの候補であると認識できることは価値があります。 - - この問題はかなり難しいかもしれません。なぜなら、それぞれのDP可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。 - - DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。 + - おそらく面接では動的プログラミングの問題は見られないでしょうが、問題を認識できるようにしておくことは価値があります。 + 動的計画法の候補としての問題。 + - それぞれの DP 解決問題は再帰関係として定義する必要があり、それを思いつくのは難しい場合があるため、このテーマはかなり難しい場合があります。 + - 関連するパターンをしっかりと理解するまで、DP 問題の多くの例を検討することをお勧めします。 - [ ] 動画: - - Skienaのビデオは、時には見ることができないほど小さすぎるホワイトボードを使用することがあるため、フォローするのが難しい場合があります - - [ ] [Skiena:CSE373 2012 - 講義19 - 動的プログラミング入門(動画)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena:CSE373 2012 - 講義20 - 編集距離(動画)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena:CSE373 2012 - 講義21 - 動的プログラミング例(動画)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena:CSE373 2012 - 講義22 - 動的プログラミングのアプリケーション(動画)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson:動的プログラミング0(59:18から開始)(動画)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson:動的プログラミングI - 講義11(動画)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson:動的プログラミングII - 講演12(動画)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] 個々のDP問題のリスト(それぞれ短い): -            [動的プログラミング(動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] [Skiena: CSE373 2020 - レクチャー 19 - 動的プログラミング入門 (動画)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - レクチャー 20 - 距離の編集 (動画)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - レクチャー 20 - 距離の編集 (続き) (動画)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - レクチャー 21 - 動的プログラミング (動画)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - レクチャー 22 - 動的プログラミングとレビュー (動画)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) + - [ ] [Simonson: 動的プログラミング 0 (59:18 から開始) (動画)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: 動的プログラミング I - 講義 11 (動画)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [サイモンソン: 動的プログラミング II - 講義 12 (動画)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] 個々の DP 問題のリスト (それぞれ短い): [ダイナミック プログラミング (動画)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - [ ] イェール講義ノート: - [ ] [動的プログラミング](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング) - [ ] Coursera: @@ -886,33 +912,12 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] [動的プログラミングのアルゴリズム(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - [ ] [DPアルゴリズムの説明(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - [ ] [DPアルゴリズムの実行時間(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP Vs 再帰的実装(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [DPと再帰的実装(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - [ ] [グローバル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [ ] [ローカル対配列アライメント(動画)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) -- ### オブジェクト指向プログラミング - - [ ] [オプション:UML 2.0シリーズ(動画)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] オブジェクト指向ソフトウェアエンジニアリング:UMLとJavaを使ったソフトウェア開発(21ビデオ): - - OOとOOの設計方法を十分に理解している場合は、これをスキップできます。 - - [OOSE:UMLとJavaを使用したソフトウェア開発](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP原則: - - [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(動画)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID原則(動画)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [単一責任の原則](http://www.oodesign.com/single-responsibility-principle.html)| [各オブジェクトへの単一責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [もっと味](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [オープン/クローズの原則l](http://www.oodesign.com/open-close-principle.html)| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません](https://en.wikipedia.org/wiki/Open/closed_principle) - - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [リスコフの置換原則](http://www.oodesign.com/liskov-s-substitution-principle.html)| [基本クラスと派生クラスは `IS A`プリンシパルに従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [もっと風味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=ja) - - [ ] I - [インタフェース分離の原則](http://www.oodesign.com/interface-segregation-principle.html)|クライアントは、使用しないインタフェースを強制的に実装するべきではありません - - [インタフェース分離の原則5分(動画)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) - - [ ] D - [依存性逆転の原則](http://www.oodesign.com/dependency-inversion-principle.html)|オブジェクトの構成における依存関係を減らす。 - - [なぜ依存関係の逆転の原則とそれが重要なのか](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [もっと味](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja) - - ### デザインパターン - - [ ] [クイックUMLレビュー(動画)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] [UMLの簡単なレビュー(動画)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] これらのパターンを学ぶ: - [ ] Strategy(戦略) - [ ] Singleton(単一要素) @@ -931,61 +936,58 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - [ ] Iterator(イテレータ) - [ ] Composite(合成) - [ ] Flyweight(フライ級) - - [ ] [第6章(パート1) - パターン(動画)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [第6章(パート2) - 抽象化 - 発生、一般階層、プレーヤーロール、シングルトン、オブザーバー、代表団(動画)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(動画)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [ビデオシリーズ(27ビデオ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - 正式な本は「デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素」であることは分かっていますが、ヘッドファーストはOOの初心者には最適です。 - - [ ] [参考:開発者のための101のデザインパターンとヒント](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [人間のデザインパターン](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - - -- ### 組み合わせ(nCk)と確率 - - [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(動画)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [学校を作る:確率(動画)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [学校を作る:確率とマルコフ連鎖(動画)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] Khan Academy: - - コースのレイアウト: - - [ ] [基本理論的確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - ちょうどビデオ - 41(それぞれ単純で、それぞれ短いです): - - [ ] [確率の説明(動画)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] [一連の動画 (27 本)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [書籍: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - 正規の本は「デザインパターン: 再利用可能なオブジェクト指向ソフトウェアの要素」であることは知っていますが、「Head First」は OO の初心者に最適です。 + - [便利なリファレンス: 開発者のための 101 のデザインパターンとヒント](https://sourcemaking.com/design-patterns-and-tips) + +- ### 組み合わせ論(nからkを選択)と確率 + - [ ] [数学スキル: 階乗、順列、組み合わせの求め方 (選択) (動画)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: 確率 (動画)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: さらなる確率とマルコフ連鎖 (動画)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] カーンアカデミー: + - コースレイアウト: + - [ ] [基本理論確率](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - ビデオのみ - 41 (それぞれがシンプルで短い): + - [ ] [確率の説明 (動画)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - ### NP、NP-完全/近似アルゴリズム - - 巡回セールスマン問題やナップザック問題など、NP完全問題の最も有名なクラスについて知りましょう。 -       そうすれば面接官がこれらについて偽装して尋ねるとき、それらを認識することができます。 - - NP完全の意味を知る。 - - [ ] [計算上の複雑さ(動画)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [貪欲アルゴリズム。 II&NP完全性へのイントロ(動画)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP完全性II&リダクション(動画)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP完全性III(動画)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP完全性IV(動画)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] スキナ: - - [ ] [CSE373 2012 - 講義23 - NP完全性の紹介(動画)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - 講義24 - NP完全性の証明(動画)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - 講演25 - NP完全性への挑戦(動画)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [複雑さ:P、NP、NP完全性、削減(動画)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [複雑さ:近似アルゴリズム(動画)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [複雑さ:固定パラメータアルゴリズム(動画)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するための最適なソリューションについて説明しています。 - - [JupyterNotebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - あなたが持っているなら、CLRSの1048 - 1140ページ。 - -- ### コンピューターはどのようにプログラムを実行するか - - [ ] [CPU がどのようにプログラムを実行するか (動画)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [コンピューターがどのように計算するか - ALU (動画)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [レジスタと RAM (動画)](https://youtu.be/fpnE6UAfbtU) - - [ ] [中央処理装置 (CPU) (動画)](https://youtu.be/FZGugFqdr60) - - [ ] [命令とプログラム (動画)](https://youtu.be/zltgXvg6r3k) + - 巡回セールスマンやナップザック問題など、NP 完全問題の最も有名なクラスについて知っています。 + インタビュアーが変装して質問したときに、それを見分けることができます。 + - NP 完全の意味を理解する。 + - [ ] [計算の複雑さ (動画)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] サイモンソン: + - [ ] [貪欲なアルグス。II および NP 完全性の紹介 (動画)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP 完全性 II と削減 (動画)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP 完全性 III (動画)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP 完全性 IV (動画)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ]スキエナ: + - [ ] [CSE373 2020 - レクチャー 23 - NP の完全性 (動画)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - レクチャー 24 - 満足度 (動画)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - レクチャー 25 - NP 完全性の詳細(動画)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - レクチャー 26 - NP 完全性チャレンジ (動画)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [複雑さ: P、NP、NP 完全性、削減 (動画)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [複雑さ: 近似アルゴリズム (ビ動画デオ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [複雑さ: 固定パラメーター アルゴリズム (動画)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Peter Norvig は、巡回セールスマンの問題に対する最適に近い解決策について説明します。 + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - CLRS のページ 1048 ~ 1140 (お持ちの場合)。 + +- ### コンピューターがプログラムを処理する仕組み + - [ ] [CPU がプログラムを実行する仕組み (動画)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [コンピューターの計算方法 - ALU (動画)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [レジスタとRAM (動画)](https://youtu.be/fpnE6UAfbtU) + - [ ] [中央処理装置 (CPU) (動画)](https://youtu.be/FZGugFqdr60) + - [ ] [説明書とプログラム (動画)](https://youtu.be/zltgXvg6r3k) - ### キャッシュ - - [ ] LRUキャッシュ: - - [ ] [LRUキャッシュの魔法(Google Devの100日間)(動画)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [LRU(動画)の実装](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache(C ++)(video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPUキャッシュ: - - [ ] [MIT 6.004 L15:メモリ階層(動画)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16:キャッシュの問題(動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + - [ ] LRU キャッシュ: + - [ ] [LRU キャッシュの魔法 (Google 開発の 100 日間) (動画)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRU の実装 (動画)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU キャッシュ (C++) (動画)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] CPU キャッシュ: + - [ ] [MIT 6.004 L15: メモリ階層 (動画)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: キャッシュの問題 (動画)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - ### プロセスとスレッド - [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ): @@ -1001,291 +1003,118 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 - ミューテックス - セマフォ - モニタ(同期) - - 彼らの動作の仕方 + - 動作の仕方 - デッドロック - ライブロック - - CPUの動作、割り込み、コンテキストの切り替え - - マルチコアプロセッサを使用した最新の並行構成 - - [ページング、セグメンテーション、仮想メモリ(動画)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [割り込み(動画)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [スケジューリング(動画)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - - プロセスリソースのニーズ(メモリ:コード、静的ストレージ、スタック、ヒープ、ファイル記述子、I/O) - - スレッドリソースの必要性(同じプロセス内の他のスレッドとの上の(マイナススタック)の共有、それぞれが独自のpc、スタックカウンタ、レジスタ、およびスタックを持つ) - - フォークは、新しいプロセスがメモリに書き込むまで、実際には書き込み時にコピー(読み取り専用)され、次に完全なコピーを行います。 - - コンテキストスイッチ - - オペレーティングシステムとその基盤となるハードウェアによってコンテキスト切り替えが開始される仕組み - - [ ] [C++のスレッド(シリーズ - 10ビデオ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] Pythonでの並行性(動画): - - [ ] [スレッドに関する短いシリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Pythonスレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Python GIL(2010)について理解する](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [参考文献](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - 地上からのPython並行処理:LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [基調講演David Beazley - 興味のあるトピック(Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Pythonのミューテックス](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### 論文 - - 完全に理解した上ですべてを読むことは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。 - - [古典的な論文を愛する?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [1978:順次プロセスの通信](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Goで実装](https://godoc.org/github.com/thomas11/csp) - - [ ] [2003:The Googleファイルシステム](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - 2012年に巨像に置き換えられました - - [ ] [2004:MapReduce:大規模クラスタでのデータ処理の簡略化](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - 主にCloud Dataflowに置き換えられましたか? - - [ ] [2006:Bigtable:構造化データ用分散ストレージシステム](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [Google BigQueryの内部を見る](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006:疎結合分散システムのChubby Lockサービス](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007:Dynamo:Amazonの高可用性 key valueストア](https://www.akkadia.org/drepper/cpumemory.pdf) - - Dynamo紙がNoSQL革命を開始 - - [すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する)](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2010:Dapper、大規模分散システム追跡基盤](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010:Dremel:Web-Scaleデータセットのインタラクティブ解析](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012:Googleの巨像](https://www.wired.com/2012/07/google-colossus/) - - 論文がありません - - [ ] 2012:AddressSanitizer:高速アドレス整合性チェッカー: - - [論文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [ビデオ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013:スパナ:Googleのグローバル分散データベース: - - [論文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [ビデオ](https://www.usenix.org/node/170855) - - [ ] [2014年:機械学習:技術的負債の高利貸しクレジットカード](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015:Googleの継続的なパイプライン](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015年:大規模な高可用性:Googleの広告用データ基盤の構築](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015:TensorFlow:異種分散システムの大規模機械学習](http://download.tensorflow.org/paper/whitepaper2015.pdf) - - [ ] [2015年:開発者がコードを検索する方法:ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016:Borg、Omega、Kubernetes](http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44843.pdf) + - CPU アクティビティ、割り込み、コンテキスト切り替え + - マルチコアプロセッサを使用した最新の同時実行構造 + - [ページング、セグメンテーション、仮想メモリ (動画)](https://youtu.be/O4nwUqQodAg) + - [中断(動画)](https://youtu.be/iKlAWIKEyuw) + - プロセス リソースのニーズ (メモリ: コード、静的ストレージ、スタック、ヒープ、およびファイル記述子、I/O) + - スレッド リソースのニーズ (同じプロセス内の他のスレッドと上記 (マイナススタック) を共有しますが、それぞれに独自の PC、スタック カウンター、レジスタ、およびスタックがあります) + - フォークは実際には、新しいプロセスがメモリに書き込むまではコピーオンライト (読み取り専用) であり、その後完全コピーが実行されます。 + - コンテキストの切り替え + - [オペレーティングシステムと基盤となるハードウェアによってコンテキストスイッチングがどのように開始されるか?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) + - [ ] [C++ のスレッド (シリーズ - 10 本の動画)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: マサチューセッツ大学のオペレーティングシステム](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - Python の同時実行性 (動画): + - [ ] [スレッドに関する短編シリーズ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Python スレッド](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Python GIL を理解する (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [参考](http://www.dabeaz.com/GIL) + - [ ] [David Beazley - Python 同時実行性を基礎からライブで解説します! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [基調講演 David Beazley - 注目のトピック (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [Python のミューテックス](https://www.youtube.com/watch?v=0zaPs8OtyKY) - ### テスト - - カバーするために: - - ユニット(単体)テストの仕組み - - モックオブジェクトとは何ですか? - - 統合テストとは - - 依存性注入とは - - [ ] [James Bachによるアジャイルソフトウェアテスト(動画)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [ジェイムス・バッハによるソフトウェアテストの公開講座(動画)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - テスト駆動開発(これは私たちが意味するものではありません)(動画)](https://vimeo.com/83960706) - - [スライド](http://goocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDDは死んでいます。長いライブテスト。](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [TDDは死んでいますか? (動画)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [ビデオシリーズ(152ビデオ) - すべてではない(動画)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Pythonでテスト駆動型Web開発](http://www.obeythetestinggoat.com/pages/book.html#toc) - - [ ] 依存性注入: - - [ ] [動画](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [テストのタオ](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - -- ### スケジューリング - - OSで、どのように動作するか - - オペレーティングシステムのビデオから収集できます - -- ### システムルーチンを実装する - - 使用するプログラミングAPIの下にあるものを理解する -    あなたはそれらを実装できますか? + - カバーするために: + - 単体テストの仕組み + - モックオブジェクトとは何ですか + - 統合テストとは何ですか + - 依存性注入とは何ですか + - [ ] [James Bach によるアジャイル ソフトウェア テスト (動画)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [ソフトウェア テストに関する James Bach による公開講義 (動画)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - テスト駆動開発 (それは私たちが言いたかったことではありません) (動画)](https://vimeo.com/83960706) + - [スライド](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] 依存性の注入: + - [ ] [動画](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [テストのTAO](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [テストの書き方](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### 文字列の検索と操作 - - [ ] [Sedgewick - 接尾辞配列(動画)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - サブストリング(文字列の一部)検索(動画)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. サブストリング検索の紹介](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. ブルートフォースサブストリング検索](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. クヌース・モーリス・プラット法](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. ボイヤー-ムーア文字列検索アルゴリズム](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. ラビン-カープ文字列検索アルゴリズム](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [テキストの検索パターン(動画)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - -    このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects) - -- ### トライ木 - - さまざまなトライ木があることに注意してください。いくつかは接頭辞を持ち、あるものはパスを追跡するビットの代わりに文字列を使用します。 - - 私はコードを読んだが、実装しないだろう。 - - [ ] [Sedgewick - 試してみる(3ビデオ)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way トライ木](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. 3分探索木](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. キャラクターベースの操作](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [データ構造とプログラミング手法に関する注記](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] 短期コースビデオ: - - [ ] [トライ木の紹介(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [トライ木のパフォーマンス(動画)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [トライ木の実装ビデオ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [Trie:無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - トライ木の使用](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [スタンフォード講演(現実世界のユースケース)(動画)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Sedgewick - サフィックス配列 (動画)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - 部分文字列検索 (動画)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. 部分文字列検索の概要](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. ブルートフォース部分文字列検索](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. クヌース・モリス・プラット](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. ボイヤー・ムーア](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. ラビン・カープ](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [テキスト内のパターンの検索 (動画)](https://www.coursera.org/learn/data-Structures/lecture/tAfHI/search-pattern-in-text) + + この件についてさらに詳細が必要な場合は、[一部の件名に関する追加の詳細](#Additional-detail-on-some-subjects) の「文字列マッチング」セクションを参照してください。 + +- ### トライ + - さまざまな種類のトライがあることに注意してください。プレフィックスを持つものと持たないもの、そしてビットの代わりに文字列を使用してパスを追跡するものもあります + - コードは一通り読みましたが、実装はしません + - [ ] [Sedgewick - Trys (3動画)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. 三項探索トライズ](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. 文字ベースの操作](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [データ構造とプログラミング技術に関するメモ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] ショートコースビデオ: + - [ ] [トライの概要 (動画)](https://www.coursera.org/learn/data-structions-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [トライのパフォーマンストライ (動画)](https://www.coursera.org/learn/data-Structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [トライの実装 (動画)]( https://www.coursera.org/learn/data-Structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [トライ: 無視されたデータ構造](https://www.toptal.com/java/the-trie-a-neglected-data-struction) + - [ ] [TopCoder - トライの使用](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [スタンフォード講義 (実際の使用例) (動画)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT、高度なデータ構造、文字列 (途中でかなりわかりにくくなる可能性があります) ) (動画)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### 浮動小数点数 - - [ ] 単純な8ビット:[浮動小数点数の表現 - 1(ビデオ - 計算にエラーがあります - ビデオの説明を参照)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32ビット:[IEEE754 32ビット浮動小数点バイナリ(動画)](https://www.youtube.com/watch?v=50ZYcZebIec) + - [ ] 単純な 8 ビット: [浮動小数点数の表現 - 1 (ビデオ - 計算に誤りがあります - ビデオの説明を参照してください)](https://www.youtube.com/watch?v=ji3SfClm8TU) - ### Unicode - - [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること](http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [すべてのプログラマーが、エンコーディングと文字セットについて知る必要があることは間違いない](http://kunststube.net/encoding/) + - [ ] [すべてのソフトウェア開発者の絶対最小値、絶対にUnicodeと文字セットについて必ず知っておくべきこと]( http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [すべてのプログラマがテキストを扱うためにエンコーディングと文字セットについて絶対に、必ず知っておくべきこと]( http://kunststube.net/encoding/) -- ### バイト順(エンディアン) - - [ ] [ビッグエンディアンとリトルエンディアン](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [ビッグエンディアン Vs リトルエンディアン(動画)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(動画)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。 - - 前半で十分です。 +- ### エンディアン + - [ ] [ビッグ エンディアンとリトル エンディアン](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [ビッグ エンディアンとリトル エンディアン (動画)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (動画)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - カーネル開発者向けの非常に技術的な話。ほとんどのことが頭から離れていても心配する必要はありません。 + - 前半だけで十分です。 - ### ネットワーキング - - **ネットワーク経験がある、またはシステムエンジニアになりたい場合は、質問を期待してください** - - そうでなければ、これは知っているだけでいいです - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDPとTCP:トランスポートプロトコルの比較](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [TCP / IPとOSIモデルの説明!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [インターネット経由のパケット伝送。ネットワーク&TCP / IPチュートリアル](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSLとHTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL / TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [ビデオシリーズ(21ビデオ)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IggfoqO4iPnPYQui46QqT0j) - - [ ] [詳解サブネット化 - 第5部CIDR表記](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] ソケット: - - [ ] [Java - Sockets - Introduction(video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [ソケットプログラミング(動画)](https://www.youtube.com/watch?v=G75vN2mnJeQ) - -## システム設計、スケーラビリティ、データ処理 -- **4年以上の経験があれば、システム設計の質問を期待できます。** -- スケーラビリティとシステム設計は、多くのトピックとリソースを持つ非常に大きなトピックです。 -      スケーラビリティ(拡張可能)なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。 -      これにかなりの時間を費やすことを期待してください。 -- 考慮事項: - - スケーラビリティ - - 大きなデータセットを単一の値に変換する - - あるデータセットを別のデータセットに変換する - - 莫大な量のデータを扱う - - システム設計 - - 機能セット - - インターフェース - - クラス階層 - - 一定の制約の下でシステムを設計する - - シンプルさと丈夫さ - - トレードオフ - - パフォーマンス分析と最適化 - -- [ ] **ここをクリック**:[システム設計入門](https://github.com/donnemartin/system-design-primer) -- [ ] [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) -- [ ] [技術面接で設計質問に答えるための準備方法](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [システムデザイン面接の前に知っておくべき8つの事柄](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [アルゴリズム設計](http://www.hiredintech.com/algorithm-design/) -- [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(動画)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [システム設計の面接](https://github.com/checkcheckzz/system-design-interview) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。 -- [ ] [システム設計面接の方法](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [誰もが知っておくべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [コンテキストスイッチを作るのにどれくらい時間がかかりますか?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [データセンター間の取引(動画)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [CAP定理の簡単な英語入門](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Paxosアルゴリズム: - - [短い動画](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ユースケースとマルチパクソスによる拡張動画](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [論文](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [コンシステントハッシュ法](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [NoSQLパターン](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - -- [ ] スケーラビリティ: - - [ ] [概要(動画)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] 短いシリーズ: - - [クローン](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) - - [ ] [スケーラブルなWebアーキテクチャと分散システム](http://www.aosabook.org/ja/distsys.html) - - [ ] [分散コンピューティングの説明の誤り](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [実用的なプログラミングテクニック](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [extra:Google Pregel グラフ処理](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Googleのソフトウェアシステム構築と教訓(動画)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [スケールのための設計システムの紹介](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [App EngineとCloud Datastoreを使用してモバイルゲームを世界中の視聴者に拡大(動画)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [Googleがプラネットスケールのインフラのプラネットスケールエンジニアリングを行う仕組み](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [アルゴリズムの重要性](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [シャーディング](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Facebook(2009)でスケール](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Facebook(2012年)、「10億ユーザー向けビルド(動画)」](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(動画)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7年間のYouTubeスケーラビリティレッスン30分](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) - - [動画](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用)](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [大きなデータセットで重複を削除する方法](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [Jon CowieによるEtsyのスケールとエンジニアリング文化の中の一見(動画)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [Amazonは独自のマイクロサービスアーキテクチャをどのように導いたか](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [圧縮するか圧縮しないか、それはUberの質問でした](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Tarantoolの非同期キュー、キューに入れる](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [おおよそのクエリ処理を使用するタイミング](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - - [ ] [単一のデータセンターからフェイルオーバーするための、Googleのネイティブマルチホームアーキテクチャへの移行](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [スパナ](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Egnyteアーキテクチャ:マルチペタバイト分散システムの構築とスケーリングの教訓](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [機械学習駆動プログラミング:新しい世界のための新しいプログラミング](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [1日あたり何百万ものリクエストを処理する画像最適化技術](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [Patreonのアーキテクチャの概要](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder:どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [現代のキャッシュのデザイン](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Facebookのスケールでライブビデオストリーミング](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [Dockerの効果待ち時間の使用方法](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [AMPはGoogleに存在する脅威に対抗していますか?](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [全Netflixスタックの360度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [サーバーレス(非常に長い、要点が必要](http://martinfowler.com/articles/serverless.html) - - [ ] [Instagramを動かすもの:何百ものインスタンス、数十のテクノロジ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [アーキテクチャ - 40Mビジター、200Mダイナミックページビュー、30TBデータ]() - - [ ] [PlentyOfFishアーキテクチャ](http://highscalability.com/plentyoffish-architecture) - - [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。 - - [ ] Twitter: - - [O`Reilly MySQL CE 2011:Jeremy Cole、「@Twitterの大小データ」(動画)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [スケール時のタイムライン](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - さらに詳しくは、[ビデオシリーズ](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。 - -- [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように処理されたかについてのいくつかの文書があります。 - - レビュー:[システム設計入門](https://github.com/donnemartin/system-design-primer) - - [HiredInTechのシステム設計](http://www.hiredintech.com/system-design/) - - [チートシート](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - 流れ: - 1. 問題と範囲を理解する: -            - 面接官の助けを借りてユースケースを定義する - - 追加の機能を提案する - - 面接官が範囲外とみなすアイテムを削除する - - 高可用性が必要と仮定し、ユースケースとして追加する - 2. 制約について考える: - - 毎月のリクエスト数を尋ねる - - 毎秒どれくらいのリクエストをするか(彼らはボランティアでもよいし、あなたに数学をさせるかもしれない) - - 読み込みと書き込みの割合を見積もります - - 推定時に80/20ルールを守って下さい - - 1秒あたりに書き込まれるデータの量 - - 5年間に必要な合計ストレージ - - 毎秒読み取られるデータの量 - 3. 抽象的なデザイン: - - レイヤー(サービス、データ、キャッシング) - - インフラストラクチャ:負荷分散、メッセージング - - サービスを駆動する主要なアルゴリズムの概要 - - ボトルネックを考慮し、解決策を決定する - - 演習: - - [CDNネットワークの設計:古い記事](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [ランダムなID生成システムの設計](https://blog.twitter.com/2010/announcing-snowflake) - - [オンラインマルチプレイヤーカードゲームのデザイン](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Key-Valueデータベースの設計](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [画像共有システムの設計](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [推薦システムの設計](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [URL短縮システムの設計:上からコピー](http://www.hiredintech.com/system-design/the-system-design-process/) - - [キャッシュシステムの設計](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) + - **ネットワーキングの経験がある場合、または信頼性エンジニアまたは運用エンジニアになりたい場合は、質問をお待ちください** - + それ以外の場合、これは知っておくと良いでしょう + - [ ] [カーン アカデミー](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP と TCP: トランスポート プロトコルの比較 (動画)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP と OSI モデルについて説明します! (動画)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [インターネットを介したパケット送信。ネットワークと TCP/IP のチュートリアル。(動画)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (動画)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL および HTTPS (動画)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (動画)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (動画)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [ビデオ シリーズ (21 動画) (動画)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [サブネットの謎を解く - パート 5 CIDR表記法 (動画)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] ソケット: + - [ ] [Java - ソケット - 概要 (動画)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [ソケット プログラミング (動画)](https://www.youtube.com/watch?v=G75vN2mnJeQ) --- ## 最終レビュー -    このセクションでは、重要な概念のほとんどを見直すためにかなり短いビデオを見ることができます。 -    あなたが頻繁に再学習をしたいならいいですね。 + このセクションには短いビデオが含まれます。非常にすぐに見て、重要な概念のほとんどを確認できます。 + 頻繁にリフレッシュしたい場合に便利です。 -- [ ] 2〜3分短編ビデオシリーズ(23ビデオ) - - [動画](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(46ビデオ) - - [動画](https://www.youtube.com/@MichaelSambol) - - [Code Examples](https://github.com/msambol/dsa) +- [ ] 2 ~ 3 分の短い主題ビデオ シリーズ (23 動画) + - [ビデオ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2 ~ 5 分のシリーズ短い主題のビデオ - Michael Sambol (動画 46 件): + - [ビデオ](https://www.youtube.com/@MichaelSambol) + - [コード例](https://github.com/msambol/dsa) +- [ ] [セッジウィック ビデオ - アルゴリズム I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [セッジウィック ビデオ - アルゴリズム II](https://www.coursera.org/learn/algorithms-part2) ) --- From 55332c6c6e69c656589eae08ff78d2cb248539bb Mon Sep 17 00:00:00 2001 From: kamegoro Date: Sat, 4 Nov 2023 02:24:33 +0900 Subject: [PATCH 790/857] Specify the language of the command --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e9d5f68471..6c53a3d243 100644 --- a/README.md +++ b/README.md @@ -246,7 +246,7 @@ Create a new branch so you can check items like this, just put an x in the brack 1. Clone to your local repo: - ``` + ```bash git clone https://github.com//coding-interview-university.git cd coding-interview-university git remote add upstream https://github.com/jwasham/coding-interview-university.git @@ -255,7 +255,7 @@ Create a new branch so you can check items like this, just put an x in the brack 1. Mark all boxes with X after you completed your changes: - ``` + ```bash git commit -am "Marked personal progress" git pull upstream main # keep your fork up-to-date with changes from the original repo From c218bfcc44a399c3eaa6d0cdc42f6b70e2139e67 Mon Sep 17 00:00:00 2001 From: ducdongmg Date: Fri, 10 Nov 2023 10:48:48 +0900 Subject: [PATCH 791/857] update Table of Contents --- translations/README-vi.md | 283 ++++++++++++++++++++++++++++++++------ 1 file changed, 244 insertions(+), 39 deletions(-) diff --git a/translations/README-vi.md b/translations/README-vi.md index 2424de0db0..1f53e8016e 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -12,6 +12,7 @@ Tác giả gốc: [John Washam](https://github.com/jwasham) * [Trương Đức Duy](https://github.com/duytruong) - [@dauruy](https://twitter.com/dauruy) * [Lương Đăng Hải](https://github.com/jarvisluong) - [@jarvisluong](https://twitter.com/jarvisluong) * [Hiền Vương](https://github.com/hienvd) - [@duchienvuong](https://twitter.com/duchienvuong) +* [Nguyễn Đức Đông](https://github.com/ducdongmg) Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt: @@ -23,7 +24,13 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt --- -> Ban đầu, đây chỉ là một danh sách to-do (danh sách các việc cần làm) ngắn về các chủ đề phải ôn tập của tôi, để trở thành một kỹ sư phần mềm. Nhưng rôi nó lớn dần nên như ngày nay. Sau khi đi hết con đường này, [tôi đã được tuyển vào vị trí Software Development Engineer ở Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Bạn có lẽ không cần phải học nhiều như tôi đã học. Nhưng dù sao, mọi thứ bạn cần ở đây. +> Ban đầu, đây chỉ là một danh sách to-do (danh sách các việc cần làm) ngắn về các chủ đề phải ôn tập của tôi, để trở thành một kỹ sư phần mềm. +> Nhưng rôi nó lớn dần nên như ngày nay. Sau khi đi hết con đường này, [tôi đã được tuyển vào vị trí Software Development Engineer ở Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Bạn có lẽ không cần phải học nhiều như tôi đã học. Nhưng dù sao, mọi thứ bạn cần ở đây. +> +> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> +> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that is below. I'll help you get there without wasting your precious time. > > Những chủ đề này sẽ chuẩn bị cho bạn nền tảng kiến thức vững vàng cho bất kỳ công ty phần mềm nào, bao gồm cả những gã khổng lồ như: Amazon, Facebook, Google hay Microsoft. > @@ -39,35 +46,42 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt ## Giới thiệu -Đây là kế hoạch học tập trong nhiều tháng của tôi, để từ một nhà phát triển web (tự học, không có bằng cấp về Khoa Học Máy Tính - KHMT) trở thành một kỹ sư phần mềm ở Google. - ![Viết code trên bảng - ảnh trích từ bộ phim Silicon Valley của HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Danh sách dài này được trích và mở rộng từ **Ghi chú huấn luyện của Google**, vậy nên đây là những gì bạn cần biết. -Một vài mục tôi thêm vào ở cuối danh sách có thể xuất hiện trong cuộc phỏng vấn hoặc hữu ích cho việc giải quyết các bài toán về lập trình. Nhiều mục đến từ bài viết [Lấy được việc ở Google (Get that job at Google)](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" của Steve Yegge. +Đây là kế hoạch học tập kéo dài nhiều tháng của tôi để trở thành một software engineer cho một công ty lớn. -Tôi lược bớt những gì bạn cần từ lời khuyên của Yegge. Tôi cũng chỉnh sửa lại các yêu cầu dựa trên thông tin tôi có được từ bạn bè ở Google. Danh sách này được thiết kế cho **Kỹ sư phần mềm** hoặc những ai chuyển từ phát triển web hoặc phần mềm sang _kỹ nghệ_ phần mềm (khi mà kiến thức về Khoa Học Máy Tính là bắt buộc). Nếu bạn có nhiều kinh nghiệm và muốn khẳng định nhiều năm trong đó bạn làm việc như một kỹ sư phần mềm, hãy sẵn sàng cho một buổi phỏng vấn khó hơn. [Xem thêm ở đây](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/). +**Yêu cầu:** +* Một chút kinh nghiệm về mã hóa (biến, vòng lặp, phương thức/hàm, v.v.) +* Tính kiên nhẫn +* Thời gian -Nếu bạn có kinh nghiệm trong phát triển web hoặc ứng dụng, hãy chú ý rằng Google xem việc xây dựng phần mềm khác với web và ứng dụng thông thường. Họ yêu cầu kiến thức về Khoa Học Máy Tính. +Lưu ý rằng đây là một kế hoạch dành cho **software engineering**, không phải frontend engineering hay full-stack. Thực sự có một siêu lộ trình và khóa học cho những career path đó ngoài kia (xem https://roadmap.sh/ để biết thêm chi tiết). -Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (System Engineer), hãy học thêm từ danh sách bổ sung (mạng máy tính, bảo mật,...) +Có rất nhiều điều để học trong một chương trình Khoa học Máy tính tại trường đại học, nhưng chỉ cần biết khoảng 75% là đủ tốt cho một cuộc phỏng vấn, vì vậy đó là những gì tôi đề cập ở đây. +Để có một chương trình tự học Khoa học Máy tính hoàn chỉnh, các tài nguyên cho kế hoạch học tập của tôi đã được đưa vào Lộ trình Khoa học Máy tính của Kamran Ahmed: https://roadmap.sh/computer-science --- ## Mục lục +### Kế hoạch học tập + - [Giới thiệu?](#giới-thiệu) - [Vì sao tôi cần tài liệu này?](#vì-sao-tôi-cần-tài-liệu-này) - [Sử dụng tài liệu này như thế nào?](#sử-dụng-tài-liệu-này-như-thế-nào) - [Đừng nghĩ rằng bạn không đủ thông minh](#đừng-nghĩ-rằng-bạn-không-đủ-thông-minh) - [Về nguồn video](#về-nguồn-video) -- [Quy trình phỏng vấn & các bước chuẩn bị tổng quát](#quy-trình-phỏng-vấn--các-bước-chuẩn-bị-tổng-quát) - [Chọn ngôn ngữ lập trình cho cuộc phỏng vấn](#chọn-ngôn-ngữ-lập-trình-cho-cuộc-phỏng-vấn) - [Danh mục sách](#danh-mục-sách) -- [Trước khi bắt đầu](#trước-khi-bắt-đầu) +- [Đừng phạm sai lầm của tôi](#đừng-phạm-sai-lầm-của-tôi) - [Những phần không được đề cập](#những-phần-không-được-đề-cập) - [Kiến thức tiên quyết](#kiến-thức-tiên-quyết) - [Kế hoạch hằng ngày](#Kế-hoạch-hàng-ngày) +- [Coding Question Practice](#coding-question-practice) +- [Coding Problems](#coding-problems) + +### Topics of Study + - [Độ phức tạp của thuật toán / Big-O / Phân tích tiệm cận](#độ-phức-tạp-của-thuật-toán--big-o--phân-tích-tiệm-cận) - [Cấu trúc dữ liệu](#cấu-trúc-dữ-liệu) - [Arrays](#arrays) @@ -119,15 +133,22 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy - [Tống kết](#tổng-kết) - [Thực hành các câu hỏi về lập trình](#thực-hành-các-câu-hỏi-về-lập-trình) - [Giải bài tập lập trình](#giải-bài-tập-lập-trình) -- [Khi bạn tiến gần đến kỳ phỏng vấn](#khi-bạn-tiến-gần-đến-kỳ-phỏng-vấn) + +### Getting the Job + - [Lý lịch (Resume) của bạn](#lý-lịch-resume-của-bạn) +- [Khi bạn tiến gần đến kỳ phỏng vấn](#khi-bạn-tiến-gần-đến-kỳ-phỏng-vấn) +- [Quy trình phỏng vấn & các bước chuẩn bị tổng quát](#quy-trình-phỏng-vấn--các-bước-chuẩn-bị-tổng-quát) - [Hãy nghĩ đến những thứ bạn sẽ được hỏi](#hãy-nghĩ-đến-những-thứ-bạn-sẽ-được-hỏi) - [Chuẩn bị câu hỏi dành cho phỏng vấn viên](#chuẩn-bị-câu-hỏi-dành-cho-phỏng-vấn-viên) - [Khi bạn được nhận việc](#khi-bạn-được-nhận-việc) ----------------- Những mục dưới đây là tuỳ chọn ---------------- +**---------------- Những mục dưới đây là tuỳ chọn ----------------** + +### Optional Extra Topics & Resources - [Sách bổ sung](#sách-bổ-sung) +- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) - [Học thêm](#học-thêm) - [Trình biên dịch](#trình-biên-dịch) - [Emacs và vi(m)](#emacs-và-vim) @@ -160,6 +181,7 @@ Thêm vào đó, nếu bạn muốn trở thành một kỹ sư hệ thống (Sy - [k-D Trees](#k-d-trees) - [Skip lists](#skip-lists) - [Network Flows](#network-flows) + - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - [Math for Fast Processing](#math-for-fast-processing) - [Treap](#treap) - [Linear Programming](#linear-programming) @@ -235,20 +257,6 @@ Lynda.com thì không miễn phí. Tôi cũng rất thích xem các bài giảng của các trường đại học. -## Quy trình phỏng vấn & các bước chuẩn bị tổng quát - -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [4 bước đến Google dù không có bằng cấp](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) -- [ ] [Whiteboarding (Giải toán lập trình trên bảng trắng)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Google nghĩ thế nào về Tuyển dụng, Quản lý và Văn hóa](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Làm thế nào để lấy được công việc ở Big 4: - - [ ] [Làm sao để lấy được công việc ở Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] [Thất bại trong cuộc phỏng vấn với Google](http://alexbowe.com/failing-at-google-interviews/) - - ## Chọn ngôn ngữ lập trình cho cuộc phỏng vấn Bạn có thể chọn ngôn ngữ mà bạn quen thuộc để thực hiện phần viết mã trong lúc phỏng vấn, nhưng với Google, những ngôn ngữ sau đây là thích hợp nhất: @@ -411,7 +419,7 @@ hoặc: - Sách tạm được, nhưng sau khi làm việc với các bài toán trong vài trang, tôi thấy nhức đầu với ngôn ngữ Pascal, do-while loop, mảng bắt đầu với số 1 (thay vì 0 như Java, C, C++, ...), và một vài thông tin không rõ ràng. - Lẽ ra nên dành thời gian để giải toán từ các quyển sách khác hoặc làm toán lập trình online. -## Trước khi bắt đầu +## Đừng phạm sai lầm của tôi Danh sách này ngày càng dài theo năm tháng và tôi phải thừa nhận là nó ngoài tầm kiểm soát. @@ -466,6 +474,19 @@ Danh sách lớn này bắt đầu như một bản To-do lược trích từ Hu - HTML, CSS, và các công nghệ thiết kế giao diện người dùng ("front-end"). +## Kiến thức tiên quyết + +- [ ] **Học C** + - C có ở khắp nơi. Bạn sẽ thấy các ví dụ trong sách, bài giảng, video, bất kỳ đâu mà bạn học. + - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Sách ngắn, nhưng nó sẽ cho bạn một nền tảng tốt về C, và nếu bạn luyện tập nhiều hơn, bạn sẽ nhanh chóng thành thạo nó. Hiểu về C giúp bạn hiểu cách các chương trình và bộ nhớ hoạt động. + - [Lời giải cho các câu hỏi](https://github.com/lekkas/c-algorithms) + +- [ ] **Máy tính thực thi một chương trình như thế nào?** + - [ ] [CPU thực thi chương trình thế nào (How does CPU execute program) - video](https://www.youtube.com/watch?v=42KTvGYQYnA) + - [ ] [Tập lệnh mã máy (Machine Code Instructions) - video](https://www.youtube.com/watch?v=Mv2XQgpbTNE) + + ## Kế hoạch hàng ngày Một vài môn học chỉ mất một ngày, vài môn khác có thể mất nhiều ngày. Có vài môn chỉ có thể học thôi chứ không cài đặt được gì. @@ -499,17 +520,70 @@ Bạn không cần phải ghi nhớ cặn kẽ từ giải thuật. Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy tính. Chạy thử trên giấy với vài bộ dữ liệu mẫu, sau đó chạy thử thuật toán của bạn trên một máy tính. -## Kiến thức tiên quyết +## Coding Question Practice -- [ ] **Học C** - - C có ở khắp nơi. Bạn sẽ thấy các ví dụ trong sách, bài giảng, video, bất kỳ đâu mà bạn học. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Sách ngắn, nhưng nó sẽ cho bạn một nền tảng tốt về C, và nếu bạn luyện tập nhiều hơn, bạn sẽ nhanh chóng thành thạo nó. Hiểu về C giúp bạn hiểu cách các chương trình và bộ nhớ hoạt động. - - [Lời giải cho các câu hỏi](https://github.com/lekkas/c-algorithms) + Why is this here? I'm not ready to interview. -- [ ] **Máy tính thực thi một chương trình như thế nào?** - - [ ] [CPU thực thi chương trình thế nào (How does CPU execute program) - video](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Tập lệnh mã máy (Machine Code Instructions) - video](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +[Then go back and read this.](#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 +- Gathering requirements for the problem +- Talking your way through the problem like you will in the interview +- Coding on a whiteboard or paper, not a computer +- Coming up with time and space complexity for your solutions (see Big-O below) +- 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/) + +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 quickly. **I use a pencil and eraser.** + +![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). + +Solving Problems: +- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +Coding Interview Question Videos: +- [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) + - Super for walkthroughs of problem solutions +- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Good explanations of the solution and the code + - You can watch several in a short time +- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) + +Challenge/Practice sites: +- [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. + - See Nick White and FisherCoder Videos above for code walk-throughs. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [AlgoExpert](https://www.algoexpert.io/product) + - Created by Google engineers, this is also an excellent resource to hone your skills. +- [Project Euler](https://projecteuler.net/) + - very math-focused, and not really suited for coding interviews + +## Let's Get Started + +Alright, enough talk, let's learn! + +But don't forget to do coding problems from above while you learn! ## Độ phức tạp của thuật toán / Big-O / Phân tích tiệm cận - Link được giữ nguyên theo bản tiếng Anh @@ -1387,6 +1461,12 @@ Các trang giải toán lập trình: Xem thêm: - [Phỏng vấn thử nghiệm](http://www.gainlo.co/#!/) +## Lý lịch (Resume) của bạn + +- [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) +- Xem các phần về chuẩn bị Resume trong [Cracking The Coding Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/) và [Programming Interviews Exposed](https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364) + + ## Khi bạn tiến gần đến kỳ phỏng vấn @@ -1395,10 +1475,18 @@ Xem thêm: - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) -## Lý lịch (Resume) của bạn +## Quy trình phỏng vấn & các bước chuẩn bị tổng quát -- [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- Xem các phần về chuẩn bị Resume trong [Cracking The Coding Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/) và [Programming Interviews Exposed](https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364) +- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) +- [ ] [4 bước đến Google dù không có bằng cấp](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) +- [ ] [Whiteboarding (Giải toán lập trình trên bảng trắng)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) +- [ ] [Google nghĩ thế nào về Tuyển dụng, Quản lý và Văn hóa](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Làm thế nào để lấy được công việc ở Big 4: + - [ ] [Làm sao để lấy được công việc ở Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +- [ ] [Thất bại trong cuộc phỏng vấn với Google](http://alexbowe.com/failing-at-google-interviews/) ## Hãy nghĩ đến những thứ bạn sẽ được hỏi @@ -1472,6 +1560,119 @@ Bạn không bao giờ thực sự học xong! - [Site Reliability Engineering: Google chạy các hệ thống của họ như thế nào](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) +## System Design, Scalability, Data Handling + +**You can expect system design questions if you have 4+ years of experience.** + +- Scalability and System Design are very large topics with many topics and resources, since + there is a lot to consider when designing a software/hardware system that can scale. + Expect to spend quite a bit of time on this +- Considerations: + - Scalability + - Distill large data sets to single values + - Transform one data set to another + - Handling obscenely large amounts of data + - System design + - features sets + - interfaces + - class hierarchies + - designing a system under certain constraints + - simplicity and robustness + - tradeoffs + - performance analysis and optimization +- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 steps guide to ace your system design interview](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below +- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Consensus Algorithms: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] Scalability: + - You don't need all of these. Just pick a few that interest you. + - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Short series: + - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) + - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) + - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) + - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] Twitter: + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - For even more, see the "Mining Massive Datasets" video series in the [Video Series](#video-series) section +- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - flow: + 1. Understand the problem and scope: + - Define the use cases, with the interviewer's help + - Suggest additional features + - Remove items that the interviewer deems out of scope + - Assume high availability is required, add as a use case + 2. Think about constraints: + - Ask how many requests per month + - Ask how many requests per second (they may volunteer it or make you do the math) + - Estimate reads vs. writes percentage + - Keep the 80/20 rule in mind when estimating + - How much data is written per second + - Total storage required over 5 years + - How much data read per second + 3. Abstract design: + - Layers (service, data, caching) + - Infrastructure: load balancing, messaging + - Rough overview of any key algorithm that drives the service + - Consider bottlenecks and determine solutions + - Exercises: + - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) + - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + + ## Học thêm > Tiêu đề của các video, các thuật ngữ cao cấp xin được giữ nguyên. Một số thuật ngữ có thể dịch được, nhưng người dịch không đủ vốn từ đề diễn đạt chúng một cách ngắn gọn như trong tiếng Anh, nên cũng xin phép cho qua. @@ -1721,6 +1922,10 @@ Bạn không bao giờ thực sự học xong! - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) +- ### Disjoint Sets & Union Find + - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - ### Math for Fast Processing - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) From 38c7a379563813706dcbb1da84e3603a182cfe3d Mon Sep 17 00:00:00 2001 From: ducdongmg Date: Tue, 14 Nov 2023 15:15:27 +0900 Subject: [PATCH 792/857] Coding Question Practice --- translations/README-vi.md | 97 +++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/translations/README-vi.md b/translations/README-vi.md index 1f53e8016e..227ab1650d 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -77,7 +77,7 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má - [Những phần không được đề cập](#những-phần-không-được-đề-cập) - [Kiến thức tiên quyết](#kiến-thức-tiên-quyết) - [Kế hoạch hằng ngày](#Kế-hoạch-hàng-ngày) -- [Coding Question Practice](#coding-question-practice) +- [Luyện tập các câu hỏi coding](#luyện-tập-các-câu-hỏi-coding) - [Coding Problems](#coding-problems) ### Topics of Study @@ -453,12 +453,31 @@ Có thể thay thế thẻ ghi nhớ với [Anki](http://ankisrs.net/), đây l Cơ sở dữ liệu thẻ ghi nhớ của tôi tuân theo chuẩn định dạng của Anki: https://ankiweb.net/shared/info/25173560 (cảm ơn [@xiewenya](https://github.com/xiewenya)) -### 3. Xem đi xem lại và xem lại nữa - Tôi giữ một danh sách xem nhanh các mã của ASCII, OSI stack, định nghĩa về Big-O, và nhiều hơn nữa. Tôi đọc bất cứ khi nào rảnh rỗi. Khi gặp vấn đề trong lúc code, nghỉ ngơi chừng nửa giờ và đọc lại các thẻ ghi nhớ. +### 3. Làm Câu Hỏi Phỏng Vấn Lập Trình Trong Khi Bạn Đang Học + +ĐIỀU NÀY RẤT QUAN TRỌNG. + +Bắt đầu làm câu hỏi phỏng vấn lập trình trong khi bạn đang học cấu trúc dữ liệu và thuật toán. + +Bạn cần áp dụng những gì bạn đang học để giải quyết vấn đề, nếu không bạn sẽ quên. Tôi đã mắc phải lỗi này. + +Một khi bạn đã học một chủ đề, và cảm thấy khá thoải mái với nó, ví dụ, **danh sách liên kết**: +1. Mở một trong những [sách phỏng vấn lập trình](#danh-mục-sách) (hoặc trang web về vấn đề lập trình, được liệt kê dưới đây) +1. Làm 2 hoặc 3 câu hỏi liên quan đến danh sách liên kết. +1. Chuyển sang chủ đề học tiếp theo. +1. Sau đó, quay lại và làm thêm 2 hoặc 3 vấn đề về danh sách liên kết. +1. Làm như vậy với mỗi chủ đề mới bạn học. + +**Tiếp tục làm các vấn đề trong khi bạn đang học tất cả những điều này, không phải sau này.** + +Bạn không được tuyển dụng vì kiến thức, mà là cách bạn áp dụng kiến thức. + +Có rất nhiều nguồn lực cho điều này, được liệt kê dưới đây. Hãy tiếp tục. + ### 4. Tập trung Có rất nhiều thứ lấy đi sự tập trung của ta, việc này tốn rất nhiều thời gian. Tập trung và toàn tâm toàn ý rất khó. @@ -520,70 +539,70 @@ Bạn không cần phải ghi nhớ cặn kẽ từ giải thuật. Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy tính. Chạy thử trên giấy với vài bộ dữ liệu mẫu, sau đó chạy thử thuật toán của bạn trên một máy tính. -## Coding Question Practice +## Luyện tập các câu hỏi coding - Why is this here? I'm not ready to interview. + Tại sao cái này lại ở đây? Tôi chưa sẵn sàng để phỏng vấn. [Then go back and read this.](#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 -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for your solutions (see Big-O below) -- Testing your solutions +Lý do bạn cần thực hành giải các bài toán lập trình: +- Nhận biết vấn đề, và xác định cấu trúc dữ liệu và thuật toán phù hợp +- Thu thập yêu cầu cho vấn đề +- Trình bày quá trình giải quyết vấn đề như bạn sẽ làm trong buổi phỏng vấn +- Lập trình trên bảng trắng hoặc giấy, không phải máy tính +- Đưa ra độ phức tạp về thời gian và không gian cho các giải pháp của bạn (xem Big-O dưới đây) +- Kiểm tra các giải pháp của bạn -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/) +Có một lời giới thiệu tuyệt vời về việc giải quyết vấn đề một cách có phương pháp và giao tiếp trong một cuộc phỏng vấn. +Bạn cũng sẽ nhận được điều này từ các sách phỏng vấn lập trình, nhưng tôi thấy điều này xuất sắc:: +[Thuật toán thiết kế 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. +Viết mã trên bảng trắng hoặc giấy, không phải máy tính. Kiểm tra với một số đầu vào mẫu. Sau đó gõ nó và kiểm tra nó trên máy tính. -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 quickly. **I use a pencil and eraser.** +Nếu bạn không có bảng trắng ở nhà, hãy mua một tờ giấy vẽ lớn từ cửa hàng mỹ thuật. Bạn có thể ngồi trên ghế sofa và thực hành. +Đây là "bảng trắng sofa" của tôi. Tôi đã thêm bút vào ảnh chỉ để đo lường. Nếu bạn sử dụng bút, bạn sẽ ước gì mình có thể tẩy. +Nhanh chóng trở nên lộn xộn. **Tôi sử dụng 1 chiếc bút chì và 1 cục gôm.** -![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) +![bảng trắng sofa của tôi](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -**Coding question practice is not about memorizing answers to programming problems.** +**Việc luyện tập giải các bài toán lập trình không phải là việc học thuộc lòng các câu trả lời cho các vấn đề lập trình.** -## Coding Problems +## Các Bài Toán Lập Trình -Don't forget your key coding interview books [here](#interview-prep-books). +Đừng quên các sách phỏng vấn lập trình quan trọng của bạn [ở đây](#interview-prep-books). -Solving Problems: -- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) -- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) +iải quyết vấn đề: +- [Cách tìm ra một giải pháp](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [Cách phân tích một bài toán Topcoder](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) -Coding Interview Question Videos: +Video Câu Hỏi Phỏng Vấn Lập Trình: - [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) - Super for walkthroughs of problem solutions -- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) - - Good explanations of the solution and the code - - You can watch several in a short time -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) +- [Nick White - Giải pháp LeetCode (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Giải thích tốt về giải pháp và code + - Bạn có thể xem nhiều video trong một thời gian ngắn +- [FisherCoder - Giải pháp LeetCode](https://youtube.com/FisherCoder) -Challenge/Practice sites: +Trang web Thử thách/Thực hành: - [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. - - See Nick White and FisherCoder Videos above for code walk-throughs. + - Trang web bài toán lập trình yêu thích của tôi. Đáng giá số tiền đăng ký cho 1-2 tháng bạn có thể chuẩn bị. + - Xem video của Nick White và FisherCoder ở trên để xem hướng dẫn code. - [HackerRank](https://www.hackerrank.com/) - [TopCoder](https://www.topcoder.com/) - [Codeforces](https://codeforces.com/) - [Codility](https://codility.com/programmers/) - [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) - [AlgoExpert](https://www.algoexpert.io/product) - - Created by Google engineers, this is also an excellent resource to hone your skills. + - Được tạo bởi các kỹ sư của Google, đây cũng là một nguồn tài nguyên tuyệt vời để trau dồi kỹ năng của bạn. - [Project Euler](https://projecteuler.net/) - - very math-focused, and not really suited for coding interviews + - Rất tập trung vào toán học và không thực sự phù hợp với các cuộc phỏng vấn viết mã -## Let's Get Started +## Bắt Đầu Nào -Alright, enough talk, let's learn! +Được rồi, nói đủ nhiều rồi, hãy cùng học nào! -But don't forget to do coding problems from above while you learn! +Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi bạn đang học! ## Độ phức tạp của thuật toán / Big-O / Phân tích tiệm cận - Link được giữ nguyên theo bản tiếng Anh From 44d1a598b640b63712dbc30e81a564dcddb74e49 Mon Sep 17 00:00:00 2001 From: ducdongmg Date: Wed, 15 Nov 2023 15:56:36 +0900 Subject: [PATCH 793/857] update for [The Study Plan] and [Topics of Study] section from En version --- translations/README-vi.md | 1283 +++++++++++++++++-------------------- 1 file changed, 585 insertions(+), 698 deletions(-) diff --git a/translations/README-vi.md b/translations/README-vi.md index 227ab1650d..e63310b1f8 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -30,16 +30,17 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt > > I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that is below. I'll help you get there without wasting your precious time. +> **Lưu ý:** Bạn sẽ không cần phải học nhiều như tôi đã làm. Tôi đã lãng phí rất nhiều thời gian vào những thứ mà tôi không cần biết. Thêm thông tin về điều này ở phía dưới. Tôi sẽ giúp bạn đạt được mục tiêu mà không lãng phí thời gian quý giá của bạn. > -> Những chủ đề này sẽ chuẩn bị cho bạn nền tảng kiến thức vững vàng cho bất kỳ công ty phần mềm nào, bao gồm cả những gã khổng lồ như: Amazon, Facebook, Google hay Microsoft. +> Những chủ đề này sẽ chuẩn bị cho bạn nền tảng kiến thức vững vàng cho cuộc phỏng vấn kỹ thuật tại bất kỳ công ty phần mềm nào, +> bao gồm cả những gã khổng lồ như: Amazon, Facebook, Google hay Microsoft. > > *Chúc may mắn!* @@ -72,15 +73,15 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má - [Đừng nghĩ rằng bạn không đủ thông minh](#đừng-nghĩ-rằng-bạn-không-đủ-thông-minh) - [Về nguồn video](#về-nguồn-video) - [Chọn ngôn ngữ lập trình cho cuộc phỏng vấn](#chọn-ngôn-ngữ-lập-trình-cho-cuộc-phỏng-vấn) -- [Danh mục sách](#danh-mục-sách) +- [Sách về Cấu Trúc Dữ Liệu và Thuật Toán](#sách-về-cấu-trúc-dữ-liệu-và-thuật-toán) +- [Sách Chuẩn Bị Phỏng Vấn](#sách-chuẩn-bị-phỏng-vấn) - [Đừng phạm sai lầm của tôi](#đừng-phạm-sai-lầm-của-tôi) - [Những phần không được đề cập](#những-phần-không-được-đề-cập) -- [Kiến thức tiên quyết](#kiến-thức-tiên-quyết) - [Kế hoạch hằng ngày](#Kế-hoạch-hàng-ngày) - [Luyện tập các câu hỏi coding](#luyện-tập-các-câu-hỏi-coding) -- [Coding Problems](#coding-problems) +- [Giải bài toán lập trình](#giải-bài-toán-lập-trình) -### Topics of Study +### Nội dung học tập - [Độ phức tạp của thuật toán / Big-O / Phân tích tiệm cận](#độ-phức-tạp-của-thuật-toán--big-o--phân-tích-tiệm-cận) - [Cấu trúc dữ liệu](#cấu-trúc-dữ-liệu) @@ -113,28 +114,23 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má - [Kiến thức bổ sung](#kiến-thức-bổ-sung) - [Đệ quy](#Đệ-quy) - [Quy hoạch động](#quy-hoạch-động) - - [Lập trình hướng đối tượng](#lập-trình-hướng-đối-tượng) - [Mẫu thiết kế](#mẫu-thiết-kế) - [Tổ hợp và Xác Suất](#tổ-hợp-và-xác-suất) - [NP, NP-Complete và thuật toán xấp xỉ gần đúng](#np-np-complete-và-thuật-toán-xấp-xỉ-gần-đúng) + - [Cách máy tính xử lý một chương trình](#Cách-máy-tính-xử-lý-một-chương-trình) - [Bộ nhớ cache](#bộ-nhớ-cache) - - [Tiến trình và tiểu trình](#tiến-trình-và-tiểu-trình) - - [Các công trình nghiên cứu](#các-công-trình-nghiên-cứu) + - [Process và Thread](#process-và-thread) - [Kiểm thử phần mềm](#kiểm-thử-phần-mềm) - - [Lập lịch](#lập-lịch) - - [Cài đặt các hàm hệ thống](#cài-đặt-các-hàm-hệ-thống) - [Tìm kiếm và xử lý chuỗi](#tìm-kiếm-và-xử-lý-chuỗi) - [Tries](#tries) - [Cách biểu diễn số thực](#cách-biểu-diễn-số-thực) - [Unicode](#unicode) - [Endianness](#endianness) -- [Mạng máy tính](#mạng-máy-tính) -- [Thiết kế hệ thống, Khả năng mở rộng, Xử lý dữ liệu](#thiết-kế-hệ-thống-khả-năng-mở-rộng-xử-lý-dữ-liệu) (Nếu bạn có hơn 4 năm kinh nghiệm) + - [Mạng máy tính](#mạng-máy-tính) - [Tống kết](#tổng-kết) -- [Thực hành các câu hỏi về lập trình](#thực-hành-các-câu-hỏi-về-lập-trình) -- [Giải bài tập lập trình](#giải-bài-tập-lập-trình) -### Getting the Job + +### Tìm việc - [Lý lịch (Resume) của bạn](#lý-lịch-resume-của-bạn) - [Khi bạn tiến gần đến kỳ phỏng vấn](#khi-bạn-tiến-gần-đến-kỳ-phỏng-vấn) @@ -148,7 +144,7 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má ### Optional Extra Topics & Resources - [Sách bổ sung](#sách-bổ-sung) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) +- [Thiết kế hệ thống, Khả năng mở rộng, Xử lý dữ liệu](#thiết-kế-hệ-thống-khả-năng-mở-rộng-xử-lý-dữ-liệu) (Nếu bạn có hơn 4 năm kinh nghiệm) - [Học thêm](#học-thêm) - [Trình biên dịch](#trình-biên-dịch) - [Emacs và vi(m)](#emacs-và-vim) @@ -189,7 +185,7 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má - [Discrete math](#discrete-math) - [Machine Learning](#machine-learning) - [Go](#go) -- [Đọc thêm về một số đề tài](đọc-thêm-về-một-số-đề-tài) +- [Đọc thêm về một số đề tài](#đọc-thêm-về-một-số-đề-tài) - [Các chuỗi Video](#các-chuỗi-video) - [Các khóa học khoa học máy tính](#các-khóa-học-khoa-học-máy-tính) @@ -197,16 +193,20 @@ Có rất nhiều điều để học trong một chương trình Khoa học Má ## Vì sao tôi cần tài liệu này? -Tôi đang chuẩn bị tham gia phỏng vấn ở Google. Tôi từng làm web, xây dựng các dịch vụ và lập các công ty khởi nghiệp từ năm 1997. Tôi có bằng Kinh Tế, nhưng không có bằng Khoa Học Máy Tính. Tôi thấy sự nghiệp của mình khá thành công, nhưng như thế chưa đủ. Tôi muốn làm việc ở Google, được tham gia xử lý một hệ thống lớn; thực sự hiểu rõ về máy tính, sự hiệu quả của các thuật toán và cấu trúc dữ liệu, các ngôn ngữ lập trình cấp thấp, và chúng hoạt động cùng nhau như thế nào. Và nếu bạn không biết về cái nào trong số đó, Google sẽ không tuyển bạn. +Nếu bạn muốn làm kỹ sư phần mềm cho một công ty lớn, đây là những điều bạn phải biết. + +Nếu bạn đã bỏ lỡ cơ hội để có được bằng cử nhân khoa học máy tính, giống như tôi, điều này sẽ giúp bạn bắt kịp và tiết kiệm bốn năm cuộc đời của bạn. Khi tôi bắt đầu dự án này, tôi không phân biệt được stack và heap, không biết về Big-O, không có khái niệm gì về cây (`tree`) hay việc duyệt đồ thị (`graph traversal`). Và nếu buộc phải viết code cho một thuật toán sắp xếp, tôi đảm bảo rằng nó sẽ không chạy tốt. -Tất cả các cấu trúc dữ liệu tôi từng sử dụng đều được cài đặt sẵn trong ngôn ngữ lập trình và tôi không nhất thiết phải biết chúng làm việc như thế nào. Tôi chưa từng phải tự quản lý vùng nhớ, trừ khi một tiến trình đang chạy ném lỗi "hết bộ nhớ" (`out of memory`), và sau đó tôi phải tìm một cách giải quyết khác. Tồi từng sử dụng mảng nhiều chiều vài lần trong đời, và hàng ngàn mảng kết hợp (`associate arrays`). Nhưng thực sự tôi chưa từng tự mình xây dựng một cấu trúc dữ liệu nào. +Tất cả các cấu trúc dữ liệu tôi từng sử dụng đều được cài đặt sẵn trong ngôn ngữ lập trình và tôi không nhất thiết phải biết chúng làm việc như thế nào. Tôi chưa từng phải tự quản lý vùng nhớ, trừ khi một Process đang chạy ném lỗi "hết bộ nhớ" (`out of memory`), và sau đó tôi phải tìm một cách giải quyết khác. Tồi từng sử dụng mảng nhiều chiều vài lần trong đời, và hàng ngàn mảng kết hợp (`associate arrays`). Nhưng thực sự tôi chưa từng tự mình xây dựng một cấu trúc dữ liệu nào. -Nhưng, sau khi trải qua dự án này, tôi rất tự tin rằng mình sẽ được tuyển. Đây là một dự án dài hơi, sẽ tốn của tôi hàng tháng. Nếu bạn đã quen với nhiều nội dung trong này, bạn sẽ mất ít thời gian hơn. +Đây là một kế hoạch dài hơi, sẽ tốn của bạn vài tháng. Nếu bạn đã quen với nhiều nội dung trong này, bạn sẽ mất ít thời gian hơn. ## Sử dụng tài liệu này như thế nào? +Tất cả những gì dưới đây là một bản phác thảo, và bạn nên tiếp cận các mục theo thứ tự từ trên xuống dưới. + > Phần này được viết lại khá nhiều để thuận tiện cho các bạn tiếp cận. Dựa theo bản gốc, tác giả có vẻ như cũng đang cố hướng dẫn cho người mới dùng git. Bạn có thể bỏ qua mục này nếu đã có kiến thức về Git, Github và [Github Flavored Markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) @@ -216,24 +216,39 @@ Nếu bạn chưa biết về [git](https://git-scm.com) thì vui lòng tham kh - Tiếng Anh: [git - the simple guide](http://rogerdudler.github.io/git-guide/) - Tiếng Việt: [Sổ tay git cho người mới bắt đầu](http://rogerdudler.github.io/git-guide/index.vi.html) (Việt hóa từ nội dung với link trên) +### Nếu bạn không muốn sử dụng git + +Trên trang này, nhấp vào nút Code gần phía trên, sau đó nhấp vào "Download ZIP". Giải nén file và bạn có thể làm việc với các file văn bản. + +Nếu bạn mở trong một trình soạn thảo code hiểu markdown, bạn sẽ thấy mọi thứ được định dạng đẹp mắt. + +![Cách tải repo dưới dạng tệp zip](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Nếu bạn muốn làm quen với git + Tiếp theo, bạn cần biết cách gắp (fork) một repo trên github: -- Tiếng Anh [Fork a repo](https://help.github.com/articles/fork-a-repo/) +1. ***Fork GitHub repo:*** `https://github.com/jwasham/coding-interview-university` bằng cách clicking vào nút Fork. + + ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + - Tiếng Việt: [Cách gắp (fork) một repo trên github](https://techynovice.wordpress.com/2017/03/19/cach-gap-fork-mot-repository-tren-github/) (Việt hoá từ nội dung với link trên) -Ok, bây giờ bạn có thể bắt đầu: +1. Clone bản fork của bạn về máy tính cá nhân. -- Fork repo này. -- Clone bản fork của bạn về máy tính cá nhân. - ``` - git clone https://github.com//coding-interview-university + ```bash + git clone https://github.com//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 # để bạn không đẩy Process cá nhân của mình trở lại repo gốc ``` + - Chạy các dòng lệnh sau - Tạo một branch mới để đánh dấu tiến độ của bạn: ``` git checkout -b progress ``` -- Check các phần đã hoàn thành bằng cách thêm `x` vào giữa cặp ngoặc vuông (`[ ]`), như thế này: `[x]`. +1. Check các phần đã hoàn thành bằng cách thêm `x` vào giữa cặp ngoặc vuông (`[ ]`), như thế này: `[x]`. - Chạy `git add .` để bắt đầu lưu lại các thay đổi. - Chạy `git commit -m "commit message" `. Thay `commit message` với ghi chú của bạn cho sự thay đổi đó. - Đồng bộ thay đổi với bản fork trên Github của bạn bằng `git push origin main`. @@ -241,10 +256,11 @@ Ok, bây giờ bạn có thể bắt đầu: ## Đừng nghĩ rằng bạn không đủ thông minh -- Các kỹ sư của Google là những người xuất sắc, nhưng nhiều người vẫn cho rằng họ không đủ thông minh, mặc dù họ đang làm việc tại Google. -- [Bí mật của của Thiên Tài Lập Trình (The myth of the Genius Programmer) - video](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [ulie Pagano: Đi một mình rất nguy hiểm - Cuộc chiến với con quái vật vô hình trong công nghệ](https://www.youtube.com/watch?v=1i8ylq4j_EY) -- [Hãy tin bạn có thể thay đổi](http://www.aaronsw.com/weblog/dweck) +- Các kỹ sư phần mềm thành công thì thông minh, nhưng nhiều người lại tự ti rằng họ không đủ thông minh. +- Những video sau đây có thể giúp bạn vượt qua nỗi tự ti này: + - [Bí mật của của Thiên Tài Lập Trình (The myth of the Genius Programmer) - video](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [ulie Pagano: Đi một mình rất nguy hiểm - Cuộc chiến với con quái vật vô hình trong công nghệ](https://www.youtube.com/watch?v=1i8ylq4j_EY) + - [Hãy tin bạn có thể thay đổi](http://www.aaronsw.com/weblog/dweck) ## Về nguồn video @@ -253,171 +269,130 @@ Một vài video chỉ xem được khi bạn tham gia vào các lớp học onl Đôi khi các lớp chưa mở, và bạn phải đợi một vài tháng đến khi chúng được mở lại, do đó bạn không thể truy cập vào video được. Lynda.com thì không miễn phí. - Tôi sẽ rất cảm kích sự hỗ trợ của các bạn trong việc thêm các nguồn video miễn phí và luôn sẵn có, ví dụ như Youtube, để hỗ trợ nguồn video từ các khóa học online. - Tôi cũng rất thích xem các bài giảng của các trường đại học. +Tôi sẽ rất cảm kích sự hỗ trợ của các bạn trong việc thêm các nguồn video miễn phí và luôn sẵn có, ví dụ như Youtube, để hỗ trợ nguồn video từ các khóa học online. +Tôi cũng rất thích xem các bài giảng của các trường đại học. ## Chọn ngôn ngữ lập trình cho cuộc phỏng vấn -Bạn có thể chọn ngôn ngữ mà bạn quen thuộc để thực hiện phần viết mã trong lúc phỏng vấn, nhưng với Google, những ngôn ngữ sau đây là thích hợp nhất: - -- C++ -- Java -- Python - -Bạn cũng có thể sử dụng các ngôn ngữ sau đây, nhưng hãy tìm hiểu thêm trước. Chúng có thể có bất lợi: - -- JavaScript -- Ruby - -Dù sao, bạn cũng cần phải rất quen thuộc với ngôn ngữ lập trình của mình. - -Xem thêm về các sự lựa chọn: - -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ -- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview - -[Xem tài liệu về các ngôn ngữ ở đây](/programming-language-resources.md) - -Bạn sẽ thấy vài tài liệu về C, C++ và Python bên dưới, vì tôi đang học chúng. Ngoài ra còn có một vài đầu sách nữa, xem ở cuối. - - -## Danh mục sách +Bạn sẽ cần phải chọn một ngôn ngữ lập trình cho các cuộc phỏng vấn lập trình mà bạn tham gia, +nhưng bạn cũng cần tìm một ngôn ngữ mà bạn có thể sử dụng để nghiên cứu các khái niệm khoa học máy tính. -Đây là danh sách rút gọn từ những gì mà tôi đọc, để tiết kiệm thời gian cho bạn. (xem bên dưới). +Ưu tiên là ngôn ngữ đó sẽ giống nhau, để bạn chỉ cần thành thạo một ngôn ngữ. +### Đối với Kế Hoạch Học Tập này -### Chuẩn bị phỏng vấn +Khi tôi thực hiện kế hoạch học tập, tôi đã sử dụng 2 ngôn ngữ cho hầu hết phần này: C và Python +* C: Ngôn ngữ bậc thấp. Cho phép bạn làm việc với con trỏ và cấp phát/giải phóng bộ nhớ, vì vậy bạn cảm nhận được cấu trúc dữ liệu + và thuật toán trong tâm can của mình. Trong các ngôn ngữ cấp cao hơn như Python hoặc Java, những điều này được ẩn đi. Trong công việc hàng ngày, điều đó thật khủng khiếp, + nhưng khi bạn đang học cách xây dựng những cấu trúc dữ liệu cấp thấp này, thật tuyệt vời khi cảm thấy gần với phần cứng. + - C có mặt ở khắp mọi nơi. Bạn sẽ thấy các ví dụ trong sách, bài giảng, video, *ở khắp mọi nơi* trong khi bạn đang học. + - [Ngôn ngữ lập trình C, Ấn bản thứ 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Đây là một cuốn sách ngắn, nhưng nó sẽ giúp bạn hiểu rõ về ngôn ngữ C và nếu bạn thực hành một chút + bạn sẽ nhanh chóng trở nên thành thạo. Hiểu C giúp bạn hiểu cách hoạt động của chương trình và bộ nhớ. + - Bạn không cần phải đi sâu quá vào cuốn sách (hoặc thậm chí hoàn thành nó). Chỉ cần học cho đến khi bạn cảm thấy thoải mái khi đọc và viết bằng C. +* Python: Hiện đại và rất biểu cảm, tôi học nó vì nó chỉ đơn giản là rất hữu ích và cũng cho phép tôi viết ít code hơn trong một cuộc phỏng vấn. -- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4nd Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - Có câu trả lời bằng C++ và Java - - Được khuyến khích bởi các khóa hướng dẫn của Google. - - Đây là một phần luyện tập tốt trước khi bắt đầu với quyển Cracking the Coding Interview - - Không quá khó, phần lớn các bài toán có lẽ dễ hơn nhiều so với những gì bạn thường thấy trong một buổi phỏng vấn (dựa theo những gì tôi đọc được) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Trả lời bằng Java - - Được khuyến nghị trên [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) - - Nếu bạn thấy mọi người trích dẫn "The Google Resume", đó là một cuốn sách được thay thế bởi "Cracking the Coding Interview". - -Nếu bạn có nhiều thời gian hơn nữa: - -- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) - - Code trên C++, rất tốt nếu bạn muốn sử dụng C++ làm ngôn ngữ chính cho cuộc phỏng vấn. - - Một quyển sách hay về giải quyết vấn đề nói chung. +Đây là các khuyến nghị của tôi. Tất nhiên bạn có thể làm những gì bạn thích. +Có thể bạn không cần, nhưng dưới đây là một số trang web để học một ngôn ngữ mới: +- [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/) -### Kiến trúc máy tính +### Cho Cuộc Phỏng Vấn Lập Trình của bạn -Nếu không có nhiều thời gian: +Bạn có thể sử dụng một ngôn ngữ mà bạn quen thuộc để làm phần lập trình trong cuộc phỏng vấn, nhưng đối với các công ty lớn, những ngôn ngữ sau đây là thích hợp nhất: -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - Quyển này được xuất bản năm 2004, phần nào đã lỗi thời, nhưng nó vẫn là một tài liệu tuyệt vời để tìm hiểu về máy tính một cách ngắn gọn. -   - Tác giả phát minh ra HLA (High Level Assembly), vậy nên hãy hãy chú ý một chút về các ví dụ và định nghĩa trong sách. Tuy không được sử dụng rộng rãi, nhưng đó là một ví dụ hiện đại về hợp ngữ. - - Những chương này rất đáng đọc để xây dựng cho bạn một nền tảng tốt (giữ nguyên gốc tiếng Anh): - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization +- C++ +- Java +- Python -Nếu bạn có nhiều thời gian (tôi đã muốn đọc quyển này): +Bạn cũng có thể sử dụng các ngôn ngữ sau đây, nhưng hãy tìm hiểu thêm trước. Chúng có thể có bất lợi: -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - Dành cho người có điều kiện hơn, sách được cập nhật gần hơn (2011), đồng thời đòi hỏi nhiều thời gian hơn để thấm. +- JavaScript +- Ruby +Dưới đây là một bài viết mà tôi đã viết về việc chọn ngôn ngữ cho cuộc phỏng vấn: +[Chọn Một Ngôn Ngữ cho Cuộc Phỏng Vấn Lập Trình](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Đây là bài viết gốc mà bài đăng của tôi dựa trên: [Chọn Một Ngôn Ngữ Lập Trình cho Cuộc Phỏng Vấn](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -### Từng ngôn ngữ riêng biệt +Bạn cần phải quen thuộc với ngôn ngữ và có kiến thức về nó. -**Bạn phải chọn một ngôn ngữ cho cuộc phỏng vấn (xem ở trên).** Đây là các khuyến nghị của tôi. Tôi không có tài liệu cho tất cả các ngôn ngữ lập trình, vậy nên, đóng góp từ bạn luôn được chào đón. -Nếu bạn muốn đọc xuyên suốt một trong những quyển sách này, bạn nên có kiến thức về cấu trúc dữ liệu và giải thuật. Bạn cũng nên luyện tập giải toán lập trình. +Xem thêm về các sự lựa chọn: -**Bạn có thể bỏ qua bài giảng video trong project này**, trừ khi bạn muốn tự đánh giá lại kiến thức của mình. +- [Chọn ngôn ngữ đúng cho cuộc phỏng vấn lập trình](http://www.byte-by-byte.com/)choose-the-right-language-for-your-coding-interview/ -[Đây là tài liệu ngôn ngữ lập trình bổ sung.](/programming-language-resources.md) +[Xem tài liệu về các ngôn ngữ ở đây](/programming-language-resources.md) +## Sách về Cấu Trúc Dữ Liệu và Thuật Toán -### C++ +Cuốn sách này sẽ tạo nền tảng cho khoa học máy tính của bạn. -Tôi chưa đọc 2 cuốn này, nhưng chúng được đánh giá cao, và được viết bởi Sedgewick. Giáo sư Sedgewick rất xuất sắc. +Chỉ cần chọn một cuốn, bằng một ngôn ngữ mà bạn quen thuộc. Bạn sẽ đọc và code rất nhiều. -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +### C +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Cơ bản, Cấu trúc dữ liệu, Sắp xếp, Tìm kiếm, và Thuật toán đồ thị -Nếu bạn có đề xuất nào tốt hơn cho C++, hãy cho tôi biết. Tôi đang tìm một tài liệu súc tích. +### Python +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - của Goodrich, Tamassia, Goldwasser + - Tôi thích cuốn này. Nó bao gồm mọi thứ cần thiết và hơn thế nữa. + - Pythonic code (code theo đúng phong cách Python) + - Cảm nhận của tôi: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ ### Java -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Video và mục lục của sách (và Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) +Lựa chọn ở bạn: -hoặc: +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick và Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Khóa học Coursera miễn phí bao gồm cuốn sách (do các tác giả giảng dạy!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - Bởi Goodrich, Tamassia, Goldwasser - - Được sử dụng làm tài liệu tham khảo cho khóa Dẫn nhập vào khoa học máy tính của UC Berkeley -   - Hãy xem mục sách của tôi bên dưới cho phiên bản Python. Cuốn sách này cũng bao phủ các chủ đề đó. - - -### Python +### C++ -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - Bởi Goodrich, Tamassia, Goldwasser - - Tôi thích cuốn này. Nó bao phủ mọi thứ cần thiết và hơn thế nữa. - - Pythonic code (code theo đúng phong cách Python) - - Báo cáo đọc sách mới toanh của tôi: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ +Lựa chọn ở bạn: +- Goodrich, Tamassia, and Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick và Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -### Sách tùy chọn +## Sách chuẩn bị phỏng vấn -**Một vài người đề xuất mấy quyển này, nhưng tôi nghĩ chúng là quá nặng, trừ khi bạn có nhiều kinh nghiệm với kỹ nghệ phần mềm và đang mong đợi một cuộc phỏng vấn khó hơn nhiều:** +Bạn không cần phải mua nhiều sách như thế này. Thực sự "Cracking the Coding Interview" có lẽ đã đủ, +nhưng tôi đã mua thêm để tạo thêm cơ hội thực hành cho bản thân. Nhưng tôi luôn luôn làm quá mức. +Tôi đã mua cả hai. Chúng đã cho tôi rất nhiều bài tập thực hành. -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - Như một tài liệu ôn tập và hỗ trợ nhận dạng vấn đề. - - Danh mục thuật toán thật sự vượt xa độ khó của một cuộc phỏng vấn. - - Cuốn sách có 2 phần: - - Giáo trình về cấu trúc dữ liệu và giải thuật: - - Ưu: - - Là một bài tổng quát tốt tương đương với các giáo trình khác. - - Nhiều câu chuyện thú vị từ kinh nghiệm của tác giả trong việc giải quyết các vấn đề thực tế và trong giới học thuật. - - Code mẫu bằng C. - - Nhược: - - Cô đặc và có thể khó hiểu ngang với CLRS, và trong một số chủ đề, CLRS có thể là một tài liệu tốt hơn để tham khảo. - - Các chương 7, 8, 9 có thể rất vất vả để theo được, vì một vài phần không được giải thích rõ, hoặc là yêu cầu nhiều não hơn những gì tôi có. - - Đừng hiểu lầm: Tôi thích Skiena, cách dạy học và phong các của ông ấy, nhưng tôi có lẽ không đủ khả năng để tốt nghiệp ở Stony Brook (nơi Skiena giảng dạy). - - Danh mục thuật toán: - - Đây là phần chính yếu mà bạn mua được từ quyển sách. - - Sắp đến được phần này rồi. Tôi sẽ cập nhật một khi tôi xong với nó. - - Trích dẫn từ Yegge: "Hơn hẳn những quyến sách khác, cuốn này giúp tôi hiểu rõ các bài toán về Graph phổ biến một cách đáng kinh ngạc và quan trọng như thế nào - chúng nên là một phần trong các công cụ của bất kỳ lập trình viên nào. Quyển sách đồng thời cũng bao phủ các cấu trúc dữ liệu cơ bản, các thuật toán sắp xếp. Đó là một điểm cộng. Nhưng phần quý giá thật sự nằm ở nửa sau, chính là bách khoa toàn thư ngắn gọn về hàng triệu bài toán hữu dụng và vô số cách để giải quyết chúng, trình bày sơ lược. Mỗi trang đều có một hình minh họa, giúp người đọc dễ ghi nhớ hơn. Đó là một cách tốt đề định dạng và phân loại các bài toán". - - Có thể thuê quyển sách này trên Kindle - - Half.com là một trang hữu dụng để tìm sách với giá tốt. - - Câu trả lời cho các bài tập trong sách: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Danh mục lỗi của sách](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [ ] [Programming Interviews Exposed: Coding Your Way Through the Interview, 4nd Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Có câu trả lời bằng C++ và Java + - Được khuyến khích bởi các khóa hướng dẫn của Google. + - Đây là một phần luyện tập tốt trước khi bắt đầu với quyển Cracking the Coding Interview + - Không quá khó, phần lớn các bài toán có lẽ dễ hơn nhiều so với những gì bạn thường thấy trong một buổi phỏng vấn (dựa theo những gì tôi đọc được) +- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Trả lời bằng Java + - Được khuyến nghị trên [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) + - Nếu bạn thấy mọi người trích dẫn "The Google Resume", đó là một cuốn sách được thay thế bởi "Cracking the Coding Interview". -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) -   - **Chú ý:** Đọc cuốn này chỉ có một ít giá trị. Đây là một tổng hợp xuất sắc về giải thuật và cấu trúc dữ liệu, nhưng nó không dạy cho bạn cách viết code xuất sắc. Để làm một lập trình viên giỏi, bạn đồng thời phải có khả năng phát triển một giải pháp một cách hiệu quả nữa. - - Trích lời Yegge: "Nhưng nếu bạn muốn đến với buổi phỏng vấn một cách có chuẩn bị, vậy hãy hoãn đơn xin ứng tuyển lại cho đến khi bạn hoàn tất quyển sách này" - - Half.com là một trang hữu dụng để tìm sách với giá tốt. - - Đôi được gọi là CLR, hoặc là CLRS (trích chữ cái đầu trong tên của các tác giả), vì Stein (một trong 4 tác giả, S trong CLRS) nhập cuộc trễ +### Nếu bạn có nhiều thời gian hơn nữa: -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - Vài chương đầu trình bày những giải pháp thông minh để giải quyết các vấn đề lập trình (một số đã rất cũ, từ thời người ta còn sử dụng băng từ). Nhưng, đó chỉ là phần mở đầu. đây là một quyển sách về thiết kế và cấu trúc phần mềm, giống như Code Complete, nhưng ngắn hơn nhiều. +Chọn 1: -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - Sách tạm được, nhưng sau khi làm việc với các bài toán trong vài trang, tôi thấy nhức đầu với ngôn ngữ Pascal, do-while loop, mảng bắt đầu với số 1 (thay vì 0 như Java, C, C++, ...), và một vài thông tin không rõ ràng. - - Lẽ ra nên dành thời gian để giải toán từ các quyển sách khác hoặc làm toán lập trình online. +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) ## Đừng phạm sai lầm của tôi @@ -433,19 +408,27 @@ Hãy đọc để tránh phạm phải sai lầm tương tự: [Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/) -### 2. Sử dụng thẻ ghi nhớ +### 2. Sử dụng flash card -Để giải quyết vấn đề, tôi đã viết 1 trang web nhỏ về thẻ ghi nhớ để thêm các thẻ mới với 2 dạng chính: kiến thức chung và code. +Để giải quyết vấn đề, tôi đã viết 1 trang web nhỏ về flash card để thêm các thẻ mới với 2 dạng chính: kiến thức chung và code. Mỗi loại có định dạng riêng. Tôi đã làm một trang mobile-first (lấy mobile là trọng tâm phát triển trang web) để có thể xem trên điện thoại và máy tính bảng, ở bất cứ đâu. Tự tạo cho mình hoàn toàn miễn phí: -- [Repo của trang thẻ ghi nhớ](https://github.com/jwasham/computer-science-flash-cards) -- [Cơ sở dữ liệu thẻ ghi nhớ của tôi](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): Lưu ý là tôi có đi hơi xa và các thẻ ghi nhớ có thể bao gồm cả hợp ngữ (ngôn ngữ máy) và Python cho đến cả máy học (machine learning) và thống kê. Như thế là quá nhiều cho các yêu cầu từ Google. +- [Repo của flash card site](https://github.com/jwasham/computer-science-flash-cards) + +**TÔI KHÔNG KHUYẾN NGHỊ sử dụng bộ flash card của tôi.** Có quá nhiều và hầu hết chúng là những thông tin vặt không cần thiết. + +Nhưng nếu bạn không muốn nghe lời tôi, đây là những gì bạn cần: +- [Cơ sở dữ liệu flash card của tôi (1200 thẻ)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Cơ sở dữ liệu flash card của tôi (quá nhiều - 1800 thẻ)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -**Ghi chú dành cho các thẻ ghi nhớ:** Lần đầu tiên bạn nhận ra bạn biết câu trả lời, đừng đánh dấu là đã biết.Bạn phải xem thẻ tương tự và đưa ra câu trả lời chính xác vài lần trước khi bạn thực sự khẳng định đã nắm được vấn đề. Lặp đi lặp lại việc này sẽ giúp kiến thức được khắc sâu vào não bạn. +Hãy nhớ rằng tôi đã làm quá mức và các flash card có thể bao gồm cả assembly (ngôn ngữ máy) và Python cho đến cả máy học (machine learning) và thống kê. +Như thế là quá nhiều so với những gì cần thiết. + +**Ghi chú dành cho các flash card:** Lần đầu tiên bạn nhận ra bạn biết câu trả lời, đừng đánh dấu là đã biết.Bạn phải xem thẻ tương tự và đưa ra câu trả lời chính xác vài lần trước khi bạn thực sự khẳng định đã nắm được vấn đề. Lặp đi lặp lại việc này sẽ giúp kiến thức được khắc sâu vào não bạn. Có thể thay thế thẻ ghi nhớ với [Anki](http://ankisrs.net/), đây là ứng dụng mà bạn sẽ thấy tôi khuyến khích sử dụng rất nhiều lần. Nó sử dụng một hệ thống lặp để giúp bạn có thể ghi nhớ được kiến thức. @@ -453,6 +436,8 @@ Có thể thay thế thẻ ghi nhớ với [Anki](http://ankisrs.net/), đây l Cơ sở dữ liệu thẻ ghi nhớ của tôi tuân theo chuẩn định dạng của Anki: https://ankiweb.net/shared/info/25173560 (cảm ơn [@xiewenya](https://github.com/xiewenya)) +Một số sinh viên đã đề cập đến vấn đề định dạng với khoảng trắng có thể được sửa bằng cách thực hiện như sau: mở bộ thẻ, chỉnh sửa thẻ, nhấp vào thẻ, chọn nút "styling", và thêm "white-space: pre;" vào class thẻ. + Tôi giữ một danh sách xem nhanh các mã của ASCII, OSI stack, định nghĩa về Big-O, và nhiều hơn nữa. Tôi đọc bất cứ khi nào rảnh rỗi. Khi gặp vấn đề trong lúc code, nghỉ ngơi chừng nửa giờ và đọc lại các thẻ ghi nhớ. @@ -465,8 +450,8 @@ Bắt đầu làm câu hỏi phỏng vấn lập trình trong khi bạn đang h Bạn cần áp dụng những gì bạn đang học để giải quyết vấn đề, nếu không bạn sẽ quên. Tôi đã mắc phải lỗi này. -Một khi bạn đã học một chủ đề, và cảm thấy khá thoải mái với nó, ví dụ, **danh sách liên kết**: -1. Mở một trong những [sách phỏng vấn lập trình](#danh-mục-sách) (hoặc trang web về vấn đề lập trình, được liệt kê dưới đây) +Một khi bạn đã học một chủ đề, và cảm thấy khá quen thuộc với nó, ví dụ, **danh sách liên kết**: +1. Mở một trong những [Sách chuẩn bị phỏng vấn](#sách-chuẩn-bị-phỏng-vấn) (hoặc trang web về vấn đề lập trình, được liệt kê dưới đây) 1. Làm 2 hoặc 3 câu hỏi liên quan đến danh sách liên kết. 1. Chuyển sang chủ đề học tiếp theo. 1. Sau đó, quay lại và làm thêm 2 hoặc 3 vấn đề về danh sách liên kết. @@ -480,84 +465,50 @@ Có rất nhiều nguồn lực cho điều này, được liệt kê dưới đ ### 4. Tập trung -Có rất nhiều thứ lấy đi sự tập trung của ta, việc này tốn rất nhiều thời gian. Tập trung và toàn tâm toàn ý rất khó. - +Có rất nhiều thứ lấy đi sự tập trung của ta, việc này tốn rất nhiều thời gian. Tập trung và toàn tâm toàn ý rất khó. Bật vài bản nhạc không lời và bạn có thể tập trung hơn. ## Những phần không được đề cập +Có vài công nghệ đang thịnh hành nhưng không được đề cập đến, ví dụ: -Danh sách lớn này bắt đầu như một bản To-do lược trích từ Huấn luyện phỏng vấn cho Google. Có vài công nghệ đang thịnh hành nhưng không được đề cập đến, ví dụ: - -- SQL - Javascript - HTML, CSS, và các công nghệ thiết kế giao diện người dùng ("front-end"). - - -## Kiến thức tiên quyết - -- [ ] **Học C** - - C có ở khắp nơi. Bạn sẽ thấy các ví dụ trong sách, bài giảng, video, bất kỳ đâu mà bạn học. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - Sách ngắn, nhưng nó sẽ cho bạn một nền tảng tốt về C, và nếu bạn luyện tập nhiều hơn, bạn sẽ nhanh chóng thành thạo nó. Hiểu về C giúp bạn hiểu cách các chương trình và bộ nhớ hoạt động. - - [Lời giải cho các câu hỏi](https://github.com/lekkas/c-algorithms) - -- [ ] **Máy tính thực thi một chương trình như thế nào?** - - [ ] [CPU thực thi chương trình thế nào (How does CPU execute program) - video](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Tập lệnh mã máy (Machine Code Instructions) - video](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +- SQL ## Kế hoạch hàng ngày -Một vài môn học chỉ mất một ngày, vài môn khác có thể mất nhiều ngày. Có vài môn chỉ có thể học thôi chứ không cài đặt được gì. - -Mỗi ngày tôi sẽ chọn một trong các thứ liệt kê bên dưới, xem video bải giảng về nó, và viết mã trên: -- C - luyện tập sử dụng `struct` và các hàm nhận các `struct` đó cùng với các tham số khác. -- C++ - không sử dụng các kiểu dữ liệu, cấu trúc sẵn có. -- C++ - sử dụng các kiểu, cấu trúc sẵn có, ví dụ như `std::list` cho danh sách liên kết. -- Python - sử dụng kiểu, cấu trúc sẵn có (để luyện tập Python). -- Viết test (thuật ngữ dành cho các đoạn mã chuyên để kiểm tra phần mềm, ở đây tác giả có lẽ muốn đề cập đến [unit test](https://en.wikipedia.org/wiki/Unit_testing)) để chắc rằng tôi làm đúng. Đôi khi có thể chỉ là vài hàm `assert()` đơn giản. -- Bạn có thể thực hành với Java hoặc ngôn ngữ khác. Đây chỉ là sự lựa chọn của tôi. - -Bạn không cần luyện tất cả các ngôn ngữ đó. Chỉ cần [một ngôn ngữ cho cuộc phỏng vấn là đủ](#chọn-ngôn-ngữ-lập-trình-cho-cuộc-phỏng-vấn). +Khóa học này bao gồm rất nhiều chủ đề. Mỗi chủ đề có thể mất của bạn vài ngày, hoặc thậm chí hơn một tuần. Điều này phụ thuộc vào lịch trình của bạn. -Tại sao lại viết mã với tất cả các ngôn ngữ đó? - -- Luyện tập, luyện tập, luyện tập, cho đến khi tôi phát bệnh với việc đó, và có thể giải các bài toán mà không gặp trục trặc gì (một vài bài toán có thể có nhiều trường hợp đặc biệt, hãy lưu lại các lần sai lầm đề ghi nhớ) -- Tôi muốn làm việc với các sức ép căn bản nhất (xin cấp phát/ giải phóng vùng nhớ, không sử dụng trợ giúp từ bộ dọn rác trong các ngôn ngữ câp cao, ngọai trừ Python) -- Học cách vận dụng kiểu dữ liệu sẵn có, nhờ đó, tôi có kinh nghiệm nhiều hơn và biết cách dùng chúng trong thực tế (sẽ không bao giờ bỏ thời gian ra tự thiết kế danh sách liên kết của riêng mình nữa). - -Tôi có lẽ không đủ thời gian để thử hết tất cả các bước trên với từng chủ đề, nhưng tôi sẽ cố. - -Bạn có thể xem code của tôi ở các trang sau: +Mỗi ngày, hãy chọn chủ đề tiếp theo trong danh sách, xem một số video về chủ đề đó, sau đó viết code về +cấu trúc dữ liệu hoặc thuật toán đó bằng ngôn ngữ bạn đã chọn cho khóa học này. +Bạn có thể xem code của tôi tại đây: - [C](https://github.com/jwasham/practice-c) - [C++](https://github.com/jwasham/practice-cpp) - [Python](https://github.com/jwasham/practice-python) -Bạn không cần phải ghi nhớ cặn kẽ từ giải thuật. - -Hãy viết code trên bảng đen hoặc trên giấy. Đừng sử dụng máy tính. Chạy thử trên giấy với vài bộ dữ liệu mẫu, sau đó chạy thử thuật toán của bạn trên một máy tính. - +Bạn không cần phải ghi nhớ mọi thuật toán. Bạn chỉ cần hiểu đủ để có thể viết cài đặt của riêng bạn. ## Luyện tập các câu hỏi coding Tại sao cái này lại ở đây? Tôi chưa sẵn sàng để phỏng vấn. -[Then go back and read this.](#3-do-coding-interview-questions-while-youre-learning) +[Then go back and read this.](#3-làm-câu-hỏi-phỏng-vấn-lập-trình-trong-khi-bạn-đang-học) Lý do bạn cần thực hành giải các bài toán lập trình: -- Nhận biết vấn đề, và xác định cấu trúc dữ liệu và thuật toán phù hợp -- Thu thập yêu cầu cho vấn đề -- Trình bày quá trình giải quyết vấn đề như bạn sẽ làm trong buổi phỏng vấn -- Lập trình trên bảng trắng hoặc giấy, không phải máy tính -- Đưa ra độ phức tạp về thời gian và không gian cho các giải pháp của bạn (xem Big-O dưới đây) -- Kiểm tra các giải pháp của bạn +- Nhận diện vấn đề, lựa chọn cấu trúc dữ liệu và thuật toán phù hợp +- Xác định các yêu cầu của vấn đề +- Trình bày cách suy nghĩ của bạn như thể bạn đang trong buổi phỏng vấn +- Lập trình trên bảng trắng hoặc trên giấy, không phải với máy tính +- Đưa ra được tính toán độ phức tạp về thời gian và không gian thực thi của giải pháp của bạn (xem Big-O phía dưới) +- Kiểm tra giải pháp của bạn Có một lời giới thiệu tuyệt vời về việc giải quyết vấn đề một cách có phương pháp và giao tiếp trong một cuộc phỏng vấn. Bạn cũng sẽ nhận được điều này từ các sách phỏng vấn lập trình, nhưng tôi thấy điều này xuất sắc:: [Thuật toán thiết kế canvas](http://www.hiredintech.com/algorithm-design/) -Viết mã trên bảng trắng hoặc giấy, không phải máy tính. Kiểm tra với một số đầu vào mẫu. Sau đó gõ nó và kiểm tra nó trên máy tính. +Viết code trên bảng trắng hoặc giấy, không phải máy tính. Kiểm tra với một số đầu vào mẫu. Sau đó gõ nó và kiểm tra nó trên máy tính. Nếu bạn không có bảng trắng ở nhà, hãy mua một tờ giấy vẽ lớn từ cửa hàng mỹ thuật. Bạn có thể ngồi trên ghế sofa và thực hành. Đây là "bảng trắng sofa" của tôi. Tôi đã thêm bút vào ảnh chỉ để đo lường. Nếu bạn sử dụng bút, bạn sẽ ước gì mình có thể tẩy. @@ -567,11 +518,11 @@ Nhanh chóng trở nên lộn xộn. **Tôi sử dụng 1 chiếc bút chì và **Việc luyện tập giải các bài toán lập trình không phải là việc học thuộc lòng các câu trả lời cho các vấn đề lập trình.** -## Các Bài Toán Lập Trình +## Giải bài toán lập trình -Đừng quên các sách phỏng vấn lập trình quan trọng của bạn [ở đây](#interview-prep-books). +Đừng quên các sách phỏng vấn lập trình quan trọng của bạn [ở đây](#sách-chuẩn-bị-phỏng-vấn). -iải quyết vấn đề: +Giải quyết vấn đề: - [Cách tìm ra một giải pháp](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) - [Cách phân tích một bài toán Topcoder](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) @@ -596,7 +547,7 @@ Trang web Thử thách/Thực hành: - [AlgoExpert](https://www.algoexpert.io/product) - Được tạo bởi các kỹ sư của Google, đây cũng là một nguồn tài nguyên tuyệt vời để trau dồi kỹ năng của bạn. - [Project Euler](https://projecteuler.net/) - - Rất tập trung vào toán học và không thực sự phù hợp với các cuộc phỏng vấn viết mã + - Rất tập trung vào toán học và không thực sự phù hợp với các cuộc phỏng vấn viết code ## Bắt Đầu Nào @@ -605,37 +556,36 @@ Trang web Thử thách/Thực hành: Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi bạn đang học! ## Độ phức tạp của thuật toán / Big-O / Phân tích tiệm cận -- Link được giữ nguyên theo bản tiếng Anh + +- Ở đây không có gì phải code, bạn chỉ xem video và ghi chép thôi! +- Có rất nhiều video. Chỉ cần xem đủ cho đến khi bạn hiểu nó. Bạn luôn có thể quay lại và kiểm tra kiến thức. +- Đừng lo lắng nếu bạn không hiểu hết phép toán đằng sau nó. +- Bạn chỉ cần hiểu cách thể hiện độ phức tạp của một thuật toán bằng Big-O. - [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) -- [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) +- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) - [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) + - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) - [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +Ồ, chắc cũng đủ rồi. - Nếu một vài bài học quá chuyên sâu về toán, bạn có thể nhảy cóc tới các bài toán riêng lẻ để có kiến thức toàn diện hơn. +Khi bạn đọc "Cracking the Coding Interview", có một chương về điều này, và cuối chương có một bài kiểm tra để xem +nếu bạn có thể xác định độ phức tạp thời gian chạy của các thuật toán khác nhau. Đó là một bài ôn tập và kiểm tra tuyệt vời. ## Cấu trúc dữ liệu - ### Arrays - - Cấp phát mảng vector tự động tùy biến kích cỡ. - - [ ] Miêu tả, tên gốc được giữ nguyên kèm với bản dịch sang tiếng Việt: - - [Arrays - Mảng (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays - Mảng tuyến tính và mảng đa chiều(video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Dynamic Arrays - Mảng tùy biến (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) + - [ ] Về Arrays: + - [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [Arrays (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC Berkeley CS61B - Linear and Multi-Dim Arrays - Mảng tuyến tính và mảng đa chiều(video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Start watching from 15m 32s) + - [Dynamic Arrays - Mảng tùy biến (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) - [Jagged Arrays - Mảng trong mảng (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Cấp phát vector (Mảng có thể thay đổi với khả năng tự điều chỉnh kích cỡ): - [ ] Tập sử dụng mảng và con trỏ, dùng phép toán con trỏ để nhảy tới một chỉ mục (index) thay vì sử dụng chỉ mục. @@ -663,16 +613,18 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - Liên tục trong bộ nhớ, giúp cải thiện hiệu suất - Không gian cần thiết = (Kích cỡ của mảng, thường >= n)* kích thước của 1 phần tử, cho dù là 2n, vẫn xem như O(n) -- ### Linked Lists +- ### Danh sách liên kết (Linked Lists) - [ ] Miêu tả: - - [ ] [Singly Linked Lists - Danh sách liên kết (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists - Danh sách liên kết (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) + - [ ] [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - this builds the intuition. + - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - Không cần xem toàn bộ video, chỉ phần cấu trúc Node và cấp phát vùng nhớ. - [ ] Danh sách liên kết so sánh với Mảng: - - [Core Linked Lists Vs Arrays - Danh sách liên kết Vs Mảng (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays - Trong thực tế, Danh sách liên kết Vs Mảng (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) + - [Core Linked Lists Vs Arrays - Danh sách liên kết Vs Mảng (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [In The Real World Linked Lists Vs Arrays - Trong thực tế, Danh sách liên kết Vs Mảng (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Why you should avoid linked lists - Tại sao bạn nên tránh danh sách liên kết(video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Ghi chú: Bạn cần kiến thức về con trỏ trỏ về con trỏ: (Khi bạn chuyển một con trỏ vào trong 1 thân hàm khiến thay đổi địa chỉ mà con trỏ trỏ về) @@ -698,12 +650,12 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - Không cần phải cài đặt - ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU)   - [ ] Sẽ không cài đặt. Cài đặt với mảng là điều hiển nhiên. - ### Queue - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - [ ] Cài đặt sử dụng danh sách liên kết, áp dụng con trỏ đuôi: @@ -727,16 +679,19 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) + - [ ] Các khóa học online: - - [ ] [Core Hash Tables - Cơ bản về bảng băm (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures - Cấu trúc dữ liệu (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem - Vấn đề sổ điện thoại (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] Phân phối bảng băm: - - [Instant Uploads And Storage Optimization In Dropbox - Tải nhanh và tối ưu lưu trữ trong Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables - Phân phối bảng băm(video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + - [ ] [Core Hash Tables - Cơ bản về bảng băm (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Data Structures - Cấu trúc dữ liệu (video)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Phone Book Problem - Vấn đề sổ điện thoại (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] distributed hash tables: + - [Instant Uploads And Storage Optimization In Dropbox - Tải nhanh và tối ưu lưu trữ trong Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Distributed Hash Tables - Phân phối bảng băm(video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + - [ ] Cài đặt với mảng sử dụng thăm dò tuyến tính: - hash(k, m) - m là kích thước của bảng băm - add(key, value) - nếu khóa đã tồn tại, cập nhật giá trị @@ -744,12 +699,12 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - get(key) - remove(key) - ## Kiến thức ngoài - ### Tìm kiếm nhị phân - [ ] [Tìm kiếm nhị phân (Binary Search) - video](https://www.youtube.com/watch?v=D5SrAga1pno) - [ ] [Tìm kiếm nhị phân - Khan Academy (Binary Search) - video](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - - [ ] [giải thích chi tiết](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [giải thích chi tiết](https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - [ ] Cài đặt: - Tìm kiếm nhị phân (trên mảng số nguyên đã sắp xếp) @@ -767,6 +722,7 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) + - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] Phần bù 2 và phần bù 1 (2s and 1s complement) - [Nhị phân: Cộng và trừ (Tại sao chúng ta sử dụng phần bù 2) - video](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [Phần bù 1 (1s Complement)](https://en.wikipedia.org/wiki/Ones%27_complement) @@ -775,48 +731,38 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [4 cách đê đếm các bit trong một byte - video](https://youtu.be/Hzuzo9NJrlc) - [Đếm bit](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [Làm thế nào để đếm số lượng các bit 1 trong một số 32 bit](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Làm tròn đến lũy thừa gần nhất của 2: - - [Làm tròn lên lũy thừa kế tiếp của 2](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - [ ] Đôi giá trị: - [Swap](http://bits.stephan-brumme.com/swap.html) - [ ] Giá trị tuyệt đối: - [Giá trị tuyết đối của số nguyên](http://bits.stephan-brumme.com/absInteger.html) - ## Cây - ### Cây - Ghi chú và kiến thức nền - - [ ] [Chuỗi bài giảng: Cây](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - Xây dựng cây cơ bản. - - Duyệt cây. - - Các thuật toán biến đổi. - - BFS - Tìm kiếm ưu tiên chiều rộng (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - Các thứ tự duyết (BFS, sử dụng `queue`) - Độ phức tạp thời gian: O(n) - Độ phức tạp không gian: tốt nhất: O(1), tệ nhất: O(n/2)=O(n) - - DFS - Tìm kiếm ưu tiên chiều sâu (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - Ghi chú: - Độ phức tạp thời gian: O(n) - Độ phức tạp không gian: + - [ ] [Chuỗi bài giảng: Cây](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Tree Traversal (video)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS - Tìm kiếm ưu tiên chiều rộng (breadth-first search): + - Các thứ tự duyệt (BFS, sử dụng queue) + - Độ phức tạp thời gian: O(n) + - Độ phức tạp không gian: tốt nhất: O(1), tệ nhất: O(n/2)=O(n) + - DFS - Tìm kiếm ưu tiên chiều sâu (depth-first search) + - Độ phức tạp thời gian: O(n) + - Độ phức tạp không gian: tốt nhất: O(log n) - trung bình: bằng chiều cao của cây tệ nhất: O(n) - - theo thứ tự (inorder) - (DFS: left, self, right) - - nhánh con trước (postorder) - (DFS: left, right, self) - - nhánh con sau (preorder) - (DFS: self, left, right) + - theo thứ tự (inorder) - (DFS: left, self, right) + - nhánh con trước (postorder) - (DFS: left, right, self) + - nhánh con sau (preorder) - (DFS: self, left, right) - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - -- ### Cây tìm kiếm nhị phân +- ### Cây tìm kiếm nhị phân: BST BST: Binary search tree - cây tìm kiếm nhị phân. - [ ] [Ôn lại cây tìm kiếm nhị phân - video](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Chuỗi video](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - Khởi đầu với bảng ký hiệu và đi xuyên suốt các ứng dụng của BST (Binary search tree). - [ ] [Dẫn nhập - video](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT - video](https://www.youtube.com/watch?v=9Jry5-82I68) + - [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Cây tìm kiếm nhị phân - Cài đặt trên C/C++ - video](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [ ] [Cài đặt BST - cấp phát bộ nhớ trên `stack` và `heap` - video](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) @@ -830,15 +776,15 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] [Xác định nút tiếp theo một nút cho trước khi duyệt cây inorder (Inorder Successor in a binary search tree) - video](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - [ ] Cài đặt: - - [ ] `insert` // thêm giá trị vào cây + - [ ] [`insert` // thêm giá trị vào cây](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) - [ ] `get_node_count` // lấy số lượng nút trong cây - [ ] `print_values` // In ra gíá trị trong cây, từ nhỏ nhất đến lớn nhất - [ ] `delete_tree` // Xóa cây - [ ] `is_in_tree` // cho biết giá trị cho trước có tồn tại trong cây hay không - - [ ] `get_height` // cho biết chiều cao của cây + - [ ] [ `get_height` // cho biết chiều cao của cây(chiều cao của node đơn là 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) - [ ] `get_min` // cho biết giá trị nhỏ nhất trong cây - [ ] `get_max` // cho biết giá trị lớn nhất trong cây - - [ ] `is_binary_search_tree` // kiểm tra xem cây cho trước có thỏa mãn điều kiện của một BST không. + - [ ] [`is_binary_search_tree` // kiểm tra xem cây cho trước có thỏa mãn điều kiện của một BST không](https://leetcode.com/problems/validate-binary-search-tree/) - [ ] `delete_value` // xóa một giá trị trong cây - [ ] `get_successor` // Trả về phần tử cao nhất trong cây liền sau một gíá trị cho trước hoặc -1 nếu không tìm được @@ -852,11 +798,11 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] [Các toán tử cơ bản - video](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - [ ] [Cây nhị phân đầy đủ - video](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - [ ] [Mã giả - video](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - video](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort - coursera - video](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Xây dựng một heap - video](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps và Heap Sort - video](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues - video](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] [Heap Sort - bắt đầu (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [Xây dựng một heap - video](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Xây dựng Heap với thời gian tuyến tính `O(n)`](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - [ ] Tự cài đặt max-heap: @@ -877,7 +823,7 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] Ghi chú: - Cài đặt các thuật toán sắp xếp và với mỗi thuật toán, nắm vững độ phức tạp trong các trường hợp tốt nhất, xấu nhất và trung bình: - - Bỏ qua sắp xếp nổi bọt (bubble sort) - thực thi thảm hại - O(n^2), trừ khi n <= 16 + - Bỏ qua sắp xếp nổi bọt (bubble sort) - nó rất tệ - O(n^2), trừ khi n <= 16 - [ ] Tính ổn định của các thuật toán sắp xếp ("Sắp xếp nhanh (Quicksort) có ổn định không?") - [Tính ổn định của các thuật toán sắp xếp](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) (wiki) - [Tính ổn định trong các thuật toán sắp xếp](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) (stackoverflow) @@ -887,7 +833,28 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - Tôi không khuyến khích sắp xếp một danh sách liên kết, nhưng sắp xếp trộn (Merge Sort) có vẻ hữu dụng trong trường hợp đó. - [Sắp xếp trộn trên danh sách liên kết](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) -- Với sắp xếp vun đống (Heapsort), xem lại see cấu trúc Heap ở trên. Sắp xếp vun đống tốt, nhưng không ổn định. +- Với sắp xếp vun đống (Heapsort), xem lại cấu trúc Heap ở trên. Sắp xếp vun đống tốt, nhưng không ổn định. + +- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Sắp xếp trộn (Merge Sort)](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] [1. Quicksort](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] UC Berkeley: + - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21: Radix Sort(video)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) + - [ ] [Sắp xếp nổi bọt (Bubble Sort) - video](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) - [ ] [Phân tích thuật toán sắp xếp nổi bọt (Analyzing Bubble Sort) - video](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) @@ -897,11 +864,11 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [ ] [Sắp xếp nhanh (Quicksort) - video](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) - [ ] [Sắp xếp chọn (Selection Sort) - video](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) -- [ ] Cài đặt cho sắp xếp trộn: +- [ ] Code cho sắp xếp trộn (Merge sort): - [ ] [Sử dụng mảng đệm (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - [ ] [Sử dụng mảng đệm (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - [ ] [Sắp xếp tại chỗ, không dùng mảng đệm (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Cài đặt cho sắp xếp nhanh: +- [ ] Cài đặt cho sắp xếp nhanh (Quick sor): - [ ] [C](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [ ] [Cài đặt khác dùng C](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - [ ] [Python](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) @@ -921,53 +888,59 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - Với sắp xếp vun đống, xem lại cấu trúc Heap ở trên. - [ ] Không nhất thiết, nhưng tôi khuyến khích xem các phần sau: - - [ ] [Sedgewick - Sắp xếp theo cơ số (Radix Sorts) (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Chuỗi trong Java (Strings in Java)](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Đếm các khóa đã được lập chỉ mục (Key Indexed Counting)](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Sắp xếp cơ số ưu tiên chữ số thấp nhất (Least Significant Digit First String Radix Sort)](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Sắp xếp cơ số ưu tiên chữ số cao nhất (Most Significant Digit First String Radix Sort)](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3-way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53): Sắp xếp cơ số kết hợp sắp xếp nhanh, trong đó, chỉ chia mảng ban đầu thành 3 nhóm (thay vì chia theo R nhóm trong sắp xếp cơ số thông thường). - - [ ] [6. Mảng hậu tố (Suffix Arrays)](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Sắp xếp cơ số](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Sắp xếp cơ số (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Sedgewick - Sắp xếp theo cơ số (Radix Sorts) (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Chuỗi trong Java (Strings in Java)](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. Đếm các khóa đã được lập chỉ mục (Key Indexed Counting)](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Sắp xếp cơ số ưu tiên chữ số thấp nhất (Least Significant Digit First String Radix Sort)](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. Sắp xếp cơ số ưu tiên chữ số cao nhất (Most Significant Digit First String Radix Sort)](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. 3-way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5): Sắp xếp cơ số kết hợp sắp xếp nhanh, trong đó, chỉ chia mảng ban đầu thành 3 nhóm (thay vì chia theo R nhóm trong sắp xếp cơ số thông thường). + - [ ] [6. Mảng hậu tố (Suffix Arrays)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sắp xếp cơ số (Radix Sort)](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [Sắp xếp cơ số (Radix Sort)(video)](https://www.youtube.com/watch?v=xhr26ia4k38) - [ ] [Sắp xếp cơ số, sắp xếp đếm (Counting Sort, thực thi thời gian tuyến tính, nhưng có nhiều giới hạn đối với dự liệu)- video](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [Sự ngẫu nhiên: Phép nhân ma trận, Sắp xếp nhanh và thuật toán của Freivalds - video](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Sắp xếp trong thời gian tuyến tính (Sorting in Linear Time) - video](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) -Nếu bạn muốn biết thêm chi tiết trong chủ đề này, xem qua phần "Sắp xếp" trong [Đọc thêm về một số đề tài](đọc-thêm-về-một-số-đề-tài) +Tóm lại, dưới đây là biểu đồ trực quan của [15 thuật toán sắp xếp](https://www.youtube.com/watch?v=kPRA0W1kECg). +Nếu bạn cần thêm chi tiết về chủ đề này, xem qua phần "Sắp xếp" trong [Đọc thêm về một số đề tài](#đọc-thêm-về-một-số-đề-tài) ## Đồ thị Đồ thị có thể được sử dụng để miêu tả nhiều bài toán trong khoa học máy tính, vậy nên phần này cũng khá dài, tương đương với [Cây](#cây) và [Sắp xếp](#sắp-xếp). -- Ghi chú từ Yegge: - - Có 3 cách cơ bản để thể hiện một đồ thị trong bộ nhớ: +- Ghi chú: + - Có 4 cách cơ bản để biểu diễn một đồ thị trong bộ nhớ: - Các đối tượng (objects) và con trỏ (pointers) - - Ma trận + - ma trận kề - Danh sách kề (adjacency list) + - bản đồ kề - Hãy làm quen với mỗi cách thể hiện và nắm vững ưu, nhược của nó. - BFS và DFS - biết về độ phức tạp tính toán của chúng, ước lượng những sự được và mất khi sử dụng, và cài đặt chúng như thế nào - Khi được trao cho một bài toán, hãy thử tìm một giải thuật sử dụng đồ thị trước khi nghĩ đến các hướng giải quyết khác. +- [ ] MIT(videos): + - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + - [ ] Các bài giảng của giáo sư Skiena, tốt để dẫn nhập: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) - [ ] Đồ thị (ôn tập và mở rộng) (tên video được giữ nguyên vì có quá nhiều thuật ngữ và viết tắt): + - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) + - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) + - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) @@ -983,7 +956,7 @@ Nếu bạn muốn biết thêm chi tiết trong chủ đề này, xem qua phầ - [ ] [Hướng dẫn cài đặt thuật toán tìm đường đi A* - video](https://www.youtube.com/watch?v=KNXfSOx4eEE) - [ ] [Thuật toán tìm đường A* (E01: giải thích thuật toán) - video](https://www.youtube.com/watch?v=-L-WgKMFuhE) -- Tôi sẽ viết mã cài đặt: +- Tôi sẽ viết code cài đặt: - [ ] DFS với danh sách kề (đệ quy) - [ ] DFS với danh sách kề (lặp với stack) - [ ] DFS với ma trận kề (adjacency matrix) (đệ quy) @@ -1014,17 +987,23 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - Đệ quy đuôi tốt hơn hay không như thế nào? - [ ] [Đệ quy đuôi là gì Tại sao nó không tốt(What Is Tail Recursion Why Is It So Bad)?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [ ] [Đệ quy đuôi (Tail Recursion) (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [5 bước đơn giản để giải quyết bất kỳ vấn đề đệ quy(video)](https://youtu.be/ngCos392W4w) + + Backtracking Blueprint: [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) - ### Quy hoạch động - - Chủ đề này có thể hơi khó, và các bài toán giải được bằng quy hoạch động (Dynamic Programming - DP) phải được định nghĩa ở dạng quan hệ hồi quy, và tìm ra giải pháp quy hoạch động cũng không đơn giản. - - Tôi nghĩ rằng nên xem qua nhiều bài toán mẫu về quy hoạch động cho đến khi bạn hiểu rõ các dạng mô hình của chúng. + - Có thể bạn sẽ không gặp bất kỳ vấn đề lập trình động nào trong cuộc phỏng vấn của mình, nhưng đáng giá để nhận biết một + vấn đề có thể là ứng cử viên cho lập trình động. + - Chủ đề này có thể khá khó khăn, vì mỗi vấn đề có thể giải quyết bằng DP (Dynamic Programming) phải được định rõ là một mối quan hệ đệ quy, và việc đưa ra nó có thể khá khó khăn. + - Tôi đề nghị xem nhiều ví dụ về các vấn đề DP cho đến khi bạn có sự hiểu biết vững chắc về mô hình liên quan. - [ ] Video: - - Video của giáo sư Skiena có thể hơi khó theo kịp vì ông ấy sử dụng bảng đen để giảng bài, và chữ hơi nhỏ - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) + - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lecture 22 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) @@ -1034,11 +1013,11 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) + - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) + - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - ### Lập trình hướng đối tượng @@ -1084,12 +1063,9 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Bắt đầu với thiết kế mẫu(Head First Design Patterns)](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - Tôi biết có một cuốn sách kinh điển là "Design Patterns: Elements of Reusable Object-Oriented Software" nhưng cuốn Bắt đầu với thiết kế mẫu(Head First Design Patterns là một lựa chọn tuyệt vời cho người mới bắt đầu với OO. + - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Tôi biết có một cuốn sách kinh điển là "Design Patterns: Elements of Reusable Object-Oriented Software" nhưng cuốn Bắt đầu với thiết kế mẫu(Head First Design Patterns) là một lựa chọn tuyệt vời cho người mới bắt đầu với OO. - [ ] [Ghi nhớ: 101 Thiết kế mẫu và lưu ý dành cho lập trình viên (Handy reference: 101 Design Patterns & Tips for Developers)](https://sourcemaking.com/design-patterns-and-tips) - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) @@ -1105,7 +1081,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - ### NP, NP-Complete và thuật toán xấp xỉ gần đúng - Cần biết về các trường hợp nổi tiếng của NP-complete như chuyên du hành doanh nhân hay vấn đề túi đựng đồ nghề (traveling salesman and the knapsack problem) để có thể trả lời khi người phỏng vấn hỏi một cách ẩn ý. - - Know what NP-complete means. + - Hiểu được NP-complete nghĩa là gì. - [ ] [Tính toán độ phức tạp (Computational Complexity) (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - [ ] Simonson: - [ ] [Thuật toán tham lam và giới thiệu NP-complete (Greedy Algs. II & Intro to NP Completeness) (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) @@ -1113,9 +1089,10 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Giới thiệu về NP-Completeness (Introduction to NP-Completeness) (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - Chứng mình NP-Completeness (NP-Completeness Proofs) (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - Thách thức với NP-Completeness (NP-Completeness Challenge) (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - [ ] [Độ phức tạp: P, NP, NP-completeness, giảm (Complexity: P, NP, NP-completeness, Reductions) (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [ ] [Độ phức tạp: Thuật toán gần đúng (Complexity: Approximation Algorithms) (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [ ] [Độ phức tạp: Thuật toán cố định tham số (Complexity: Fixed-Parameter Algorithms) (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) @@ -1123,6 +1100,14 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - Trang 1048 - 1140 trong CLRS nếu bạn có nó. +- ### Cách máy tính xử lý một chương trình + + - [ ] [Cách CPU thực thi một chương trình (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [Cách máy tính tính toán - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Các thanh ghi và RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] [Bộ xử lý trung tâm (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] [Hướng dẫn và Chương trình (video)](https://youtu.be/zltgXvg6r3k) + - ### Bộ nhớ cache - [ ] LRU cache: - [ ] [Điều kì diệu của LRU cache (100 ngày Google Dev) (The Magic of LRU Cache (100 Days of Google Dev)) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) @@ -1132,16 +1117,16 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] [MIT 6.004 L15: Phân cấp bộ nhớ (The Memory Hierarchy) (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [ ] [MIT 6.004 L16: Các vấn đề với bộ nhớ cache (Cache Issues) (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) -- ### Tiến trình và tiểu trình +- ### Process và Thread - [ ] Khóa học "Khoa học máy tính 162 - Hệ điều hành" (25 video): - - Về tiến trình và tiểu trình, xem video 1-11 - - [Hệ điều hành và lập trình hệ thống (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [Sự khác nhau giữa một tiến trình và một tiểu trình?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Về Process và Thread, xem video 1-11 + - [Hệ điều hành và lập trình hệ thống (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [Sự khác nhau giữa một Process và một Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - Học các chủ đề dưới đây: - - Các vấn đề của tiến trình, tiểu trình và xử lý đồng thời - - Sự khác nhau giữa tiến trình và tiểu trình - - Tiến trình - - Tiểu trình + - Các vấn đề của Process, Thread và xử lý đồng thời + - Sự khác nhau giữa Process và Thread + - Process + - Thread - Locks - Mutexes - Semaphores @@ -1151,47 +1136,24 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - Livelock - Hoạt động của CPU, ngắt, chuyển ngữ cảnh - Các kiến trúc xử lý đồng thời được sử dụng cùng với các bộ xử lý đa lõi - - Tài nguyên mà tiến trình cần: (bộ nhớ: các đoạn mã, bộ lưu trữ tĩnh, stack, heap cũng như các mô tả của tập tin, nhập/xuất) - - Tài nguyên mà tiểu trình cần: (chia sẻ các tài nguyên được liệt kê ở trên (trừ stack) với các tiểu trình khác trong cùng tiến trình nhưng mỗi tiểu trình có program counter, stack counter, thanh ghi (registers) và stack của riêng chúng) - - Forking thực ra là [copy on write](https://en.wikipedia.org/wiki/Copy-on-write) cho đến khi tiến trình mới ghi vào bộ nhớ, sau đó nó thực hiện hành đồng full copy. + - [Paging, segmentation, và virtual memory (video)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - Tài nguyên mà Process cần: (bộ nhớ: các đoạn code, bộ lưu trữ tĩnh, stack, heap cũng như các mô tả của tập tin, nhập/xuất) + - Tài nguyên mà Thread cần: (chia sẻ các tài nguyên được liệt kê ở trên (trừ stack) với các Thread khác trong cùng Process nhưng mỗi Thread có program counter, stack counter, thanh ghi (registers) và stack của riêng chúng) + - Forking thực ra là [copy on write](https://en.wikipedia.org/wiki/Copy-on-write) cho đến khi Process mới ghi vào bộ nhớ, sau đó nó thực hiện hành đồng full copy. - Chuyển ngữ cảnh - - Chuyển ngữ cảnh được bắt đầu như thế nào bởi hệ điều hành và phần cứng bên dưới - - [ ] [Tiểu trình trong C++ (danh sách 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [Chuyển ngữ cảnh được bắt đầu như thế nào bởi hệ điều hành và phần cứng bên dưới](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) + - [ ] [Thread trong C++ (danh sách 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - [ ] Xử lý đồng thời trong Python (video): - - [ ] [Danh sách ngắn các video về tiểu trình (Short series on threads)](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Tiểu trình của Python (Python Threads)](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [Danh sách ngắn các video về Thread (Short series on threads)](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [Thread của Python (Python Threads)](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [ ] [Hiểu rõ về Python GIL (Understanding the Python GIL (2010))](https://www.youtube.com/watch?v=Obt-vMVdM8s) - [Tham khảo](http://www.dabeaz.com/GIL) - [ ] [David Beazley - Căn bản về xử lý đồng thời trong Python: TRỰC TIẾP! - PyCon 2015 (David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015)](https://www.youtube.com/watch?v=MCs5OvhV9S4) - [ ] [Các điểm chính trong phần trình bày của David Beazley - Các vấn đề thú vị (Python Asyncio) (Keynote David Beazley - Topics of Interest (Python Asyncio))](https://www.youtube.com/watch?v=ZzfHjytDceU) - [ ] [Mutex trong Python (Mutex in Python)](https://www.youtube.com/watch?v=0zaPs8OtyKY) -- ### Các bài nghiên cứu - - Có nhiều bài nghiên cứu của Google và các bài nghiên cứu rất nổi tiếng. - - Đọc hết các bài nghiên cứu tốn rất nhiều thời gian, tôi khuyên bạn nên chọn lọc theo đề tài cụ thể. - - [ ] [1978: Tiến trình giao tiếp tuần tự (1978: Communicating Sequential Processes)](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Triển khai với Go (implemented in Go)](https://godoc.org/github.com/thomas11/csp) - - [Yêu thích các nghiên cứu cũ (Love classic papers)?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: Hệ thống tập tin của Google (2003: The Google File System)](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - thay thế bởi Colossus năm 2012 - - [ ] [2004: MapReduce: Đơn giản hóa xử lý dữ liệu trên phân vùng lớn (Simplified Data Processing on Large Clusters)]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - gần như bị thay thế bởi Cloud Dataflow? - - [ ] [2007: Những gì mà lập trình viên nên biết về bộ nhớ (rất dài, ngay cả tác giả cũng khuyến khích bỏ qua vài phần) (What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections))](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - Bài nghiên cứu không tồn tại - - [ ] 2012: AddressSanitizer: Kiểm tra nhanh tính đúng đắn của địa chỉ (A Fast Address Sanity Checker): - - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Máy học: Lợi ích và những vấn đề cần tránh (Machine Learning: The High-Interest Credit Card of Technical Debt)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en/pubs/archive/43790.pdf) - - [ ] [2015: Sẵn sàng cho thay đổi lớn: Xây dựng hạ tầng dữ liệu của Google dành cho quảng cáo (High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads)](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: Tensorflow: Áp dụng máy học với dữ liệu lớn trên hệ thống phân tán tính toán song song (Large-Scale Machine Learning on Heterogeneous Distributed Systems)](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: Lập trình viên tìm code như thế nào: Một trường hợp điển hình (How Developers Search for Code: A Case Study)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - - ### Kiểm thử phần mềm - Cần ghi nhớ: - Unit test thực hiện như thế nào @@ -1202,55 +1164,45 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] [Bài giảng của James Bach về kiểm tra phần mềm (Open Lecture by James Bach on Software Testing) (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - [ ] [Steve Freeman - Lập trình hướng tới việc test( Không phải như chúng ta nghĩ) (Test-Driven Development (that’s not what we meant)) (video)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [Lập trình hướng tới việc test đã chết. (TDD is dead. Long live testing.)](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Lập trình hướng tới việc test có phải đã chết? (Is TDD dead?) (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - Không phải tất cả đều cần thiết (not all are needed) (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Lập trình theo hướng test dành cho web với Python (Test-Driven Web Development with Python)](http://www.obeythetestinggoat.com/pages/book.html#toc) - [ ] Dependency injection: - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [ ] [Đạo trong kiểm tra (Tao Of Testing)](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] [Viết test thế nào(How to write tests)](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Lập lịch - - Trong một hệ điều hành hoạt động như thế nào - - Có thể tìm thấy trong các video về HĐH - -- ### Cài đặt các hàm hệ thống - - Hiểu rõ cách thức hoạt động đằng sau của các API - - Có thể triển khai chúng hay không? - ### Tìm kiếm và xử lý chuỗi - - [ ] [Sedgewick - Mảng tiền tố (Suffix Arrays) (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Tìm và thay chuỗi (Substring Search) (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Giới thiệu tìm và thay chuỗi (Introduction to Substring Search)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Tìm và thay chuỗi theo Brute-Force (Brute-Force Substring Search)](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] [Sedgewick - Mảng tiền tố (Suffix Arrays) (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Tìm và thay chuỗi (Substring Search) (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Giới thiệu tìm và thay chuỗi (Introduction to Substring Search)](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Tìm và thay chuỗi theo Brute-Force (Brute-Force Substring Search)](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - [ ] [Tìm kiếm mẫu trong văn bản (Search pattern in text) (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - Nếu bạn cần thêm thông tin chi tiết, hãy đọc qua phần "So khớp chuỗi" trong các mục đọc thêm [Đọc thêm về một số đề tài](đọc-thêm-về-một-số-đề-tài) + Nếu bạn cần thêm thông tin chi tiết, hãy đọc qua phần "So khớp chuỗi" trong các mục đọc thêm [Đọc thêm về một số đề tài](#đọc-thêm-về-một-số-đề-tài) - ### Tries > Tries: cấu trúc dữ liệu dạng cây cho phép _chèn_ và _tìm kiếm_ một chuỗi con nhanh (`O(L)`) và một vài lợi thế khác, thích hợp cho một số dạng toán xử lý chuỗi. - Chú ý rằng có những loại _trie_ khác nhau. Một vài có tiền tố (prefix), một vài loại thì không, và một số thì sử dụng chuỗi thay vì bit để lưu trử các con đường (từ gốc đến lá). - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - Tôi đã đọc qua code, nhưng sẽ không thực hiện + + - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: + - [ ] Các khóa video ngắn: - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [TopCoder - Using Tries](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [Stanford Lecture (real-world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - ### Cách biểu diễn số thực - [ ] Dạng 8-bit đơn giản: [Representation of Floating Point Numbers - 1 (video - có một lỗi nhỏ trong phần tính toán, xem thêm ở bên dưới video)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - ### Unicode - [ ] [Điểu tối thiểu nhất mà mọi lập trình viên bắt buộc phải biết về Unicode và các tập ký tự.]( http://www.joelonsoftware.com/articles/Unicode.html) @@ -1260,8 +1212,8 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của > Endianness: thứ tự phiên dịch các byte của một chuỗi byte trong bộ nhớ máy tính sang dạng số (4 byte với `int` hoặc 8 byte với `double`). Ví dụ như với 2 byte `0x00` và `0x01` lưu trên bộ nhớ, đọc theo Big-Endian ta được số 1 (0x00001. Đọc theo Little-Endia ta được 256 (0x100). Xem thêm ở các đường link bên duới. - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Lxittle Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - Rất nặng về mặt kỹ thuật, dành cho các lập trình viên làm việc với nhân Linux (kernels). - Đừng quá bận tâm nếu phần lớn video vượt quá khả năng của bạn. Chỉ cần đoạn nửa đầu video là đủ. @@ -1269,142 +1221,21 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - ### Mạng máy tính - **Nếu bạn có kinh nghiệm với mạng máy tính hoặc muốn trở thành một kỹ sư hệ thống, sẽ có các câu hỏi về chúng** - còn nếu không, biết thêm cũng tốt - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Sockets: + - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) - -## Thiết kế hệ thống, Khả năng mở rộng, Xử lý dữ liệu -- **Bạn có thể sẽ bị hỏi câu hỏi liên quan đến thiết kế hệ thống nếu có hơn 4 năm kinh nghiệm** -- Khả năng mở rộng và Thiết kế hệ thống là các chủ đề rất rộng, với nhiều vấn đề và tài liệu liên quan, bởi vì có rất nhiều vấn đề cần phải giải quyết khi thiết kế các hệ thống phần mềm (hoặc phần cứng) có thể mở rộng được. - Cần phải đầu tư một chút thời gian cho vấn đề này. -- Lời khuyên từ Yegge: - - Khả năng mở rộng - - Trích xuất từ cơ sở dữ liệu lớn về một giá trị độc nhất - - Chuyển đổi từ một tập dữ liệu sang tập khác - - Xử lý một khối lượng dữ liệu đồ sộ - - Thiết kế hệ thống - - Tập hợp các tính năng - - Giao diện - - Lớp phân cấp - - Thiết kế hệ thống dưới những ràng buộc - - Đơn giản và vững chắc - - Đánh đổi (từ gốc tradeoff, chấp nhận bỏ một vài tính năng nhỏ để có được những lợi ích khác như tốc độ xử lý...) - - Phân tích và tối ưu hiệu suất sử dụng -- [ ] **BÁT ĐẦU TỪ ĐÂY**: [System Design from HiredInTech - Thiết kế hệ thống bởi HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [Làm thế nào để trả lời các câu hỏi liên quan tới thiết kế trong phỏng vấn kỹ thuật? (How Do I Prepare To Answer Design Questions In A Technical Inverview)](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 điều bạn nên biết trước khi bắt đầu một buổi phỏng vấn về Thiết kế hệ thống (8 Things You Need to Know Before a System Design Interview) ](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Thiết kế thuật toán (Algorithm design)](http://www.hiredintech.com/algorithm-design/) -- [ ] [Chuẩn hóa trong cơ sở dữ liệu (Database Normalization - 1NF, 2NF, 3NF and 4NF) (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [Phỏng vấn về thiết kế hệ thống (System Design Interview)](https://github.com/checkcheckzz/system-design-interview) - Có rất nhiều tài liệu trong link nay. Hãy đọc qua các bài viết và các ví dụ. Tôi có liệt kê sau đây: -- [ ] [Làm thế nào để dẫn đầu trong cuộc phỏng vấn về thiết kế hệ thống (How to ace a systems design interview) ](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Những con số ai cũng nên biết (Numbers Everyone Should Know)](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [Mất bao lâu để làm một chuyển đổi ngữ cảnh? (How long does it take to make a context switch) ](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Các luồng xử lý trong trung tâm dữ liệu (Transactions Across Datacenters)(video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [Một hướng dẫn đơn giản về lý thuyết CAP (A plain English introduction to CAP Theorem)](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Thuật toán đồng thuận của Paxos: - - [video ngắn](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [Video mở rộng với trường hợp cụ thể và multi-paxos (extended video with use case and multi-paxos)](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [Nghiên cứu](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Băm nhất quán (Consistent Hashing)](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Khả năng mở rộng: - - [ ] [Tầm nhìn chung (Great overview)(video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Các seri ngắn: - - [Nhân bản (Clones)](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Cơ sỡ dữ liệu (Database)](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Bất đồng bộ (Asynchronism)](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Kiến trúc web và hệ thống phân tán có khả năng mở rộng (Scalable Web Architecture and Distributed Systems)](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [Bổ sung: Google Pregel cho xử lý đồ thị (Google Pregel Graph Processing)](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - - [ ] [Jeff Dean - Xây dựng hệ thống phần mềm tại Google và các bài học rút ra được (Jeff Dean - Building Software Systems At Google and Lessons Learned)(video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Giới thiệu về kiến trúc hệ thống có thể mở rộng (Introduction to Architecting Systems for Scale)](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Mở rộng game trên di động nhắm tới khách hàng trên toàn thế giới sử dụng App Engine và Cloud Datastore (Scaling mobile games to a global audience using App Engine and Cloud Datastore)(video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [Sự quan trọng của thuật toán (The Importance of Algorithms)](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) - - [ ] [Chia nhỏ cơ sở dữ liệu thành từng phần nhỏ và nhanh hơn, dễ quản lý hơn (Sharding)](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Khả năng mở rộng của Facebook (Scale at Facebook) - (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - - [ ] [Khả năng mở rộng của Facebook (2012), "Xây dựng cho cả tỷ người dùng" (Scale at Facebook (2012), "Building for a Billion Users" - )(video)](https://www.youtube.com/watch?v=oodS71YtkGU) - - [ ] [Lập trình cho cả khả năng phát triển trong tương lai (Engineering for the Long Game) - Astrid Atkinson Keynote - (video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 năm mở rộng của Youtube trong 30 phút (7 Years Of YouTube Scalability Lessons In 30 Minutes)](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [Paypal đã mở rộng thế nào để đáp ứng hơn tỷ lượt giao dịch mỗi ngày với 8VMs (How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs) ](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [Làm thế nào để xóa lặp trong dữ liệu (How to Remove Duplicates in Large Datasets)](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie) (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [Cùng nhìn nhận cách Etsy mở rộng và phong cách lập trình với Jon Cowie (What Led Amazon to its Own Microservices Architecture - Điều gì đưa Amazon tới kiến trúc microservices](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [Nén hay không nén, đây là câu hỏi dành cho Uber (To Compress Or Not To Compress, That Was Uber's Question)](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - - [ ] [Trong trường hợp nào truy vấn phỏng đoán được thực thi? (When Should Approximate Query Processing Be Used?)](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Kiến trúc Egnyte: Kinh nghiêm từ việc xây dụng và mở rộng hệ thống phân tán lên tới Petabyte (Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System) ](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Lập trình hướng máy học - Một cách lập trình mới trong thời đại mới (Machine Learning Driven Programming: A New Programming For A New World)](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - - [ ] [Kỹ thuật tối ưu hình ảnh để phục vụ hàng triệu yêu cầu mỗi ngày (The Image Optimization Technology That Serves Millions Of Requests Per Day)](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [Trình bày ngắn về kiến trúc Patreon (A Patreon Architecture Short)](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: Làm thế nào mà một trong những hệ thống hẹn hò lớn nhất quyết định bạn sẽ nhìn thấy ai tiếp theo (Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?)](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Facebook đã mở rộng thế nào để đáp ứng việc trình diễn video trực tiếp (Live Video Streaming At Facebook Scale)](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [ Hướng dẫn cơ bản cho việc mở rộng đến hơn 11 triệu người dùng với Amazon AWS (A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS )](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [Sử dụng docker ảnh hưởng tới độ trễ như thế nào? (How Does The Use Of Docker Effect Latency?)](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) - - [ ] [Có thể xem AMP như 1 đối thủ với Google không? (Does AMP Counter An Existential Threat To Google?)](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) - - [ ] [Một cái nhìn 360 độ về toàn bộ Netflix Stack (A 360 Degree View Of The Entire Netflix Stack)](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Độ trễ ảnh hưởng tới doanh thu của bạn - Làm sao để khắc phục? (Latency Is Everywhere And It Costs You Sales - How To Crush It)](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [Serverless (rất dài, chỉ nền dùng file gist)](http://martinfowler.com/articles/serverless.html) - - [ ] [Điều gì làm nên sức mạnh của Instagram: Hàng trăm phần tử, hàng tá các công nghệ (What Powers Instagram: Hundreds of Instances, Dozens of Technologies )](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Kiến trúc Cinchcast - Tạo ra 1500 giờ âm thanh mỗi ngày (Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day)](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Kiến trúc của chương trình phát sóng video trực tiếp Justin.Tv (Justin.Tv's Live Video Broadcasting Architecture)](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Kiến trúc của game cộng đồng Playfish - 50 triệu người sử dụng hàng tháng và vẫn tiếp tục tăng (Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing)](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [Kiến trúc của TripAdvisor - 40 triệu người viếng thăm, 200 triệu lượt xem, 30 Tb dữ liệu (TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data)](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [Kiến trúc của PlentyOfFish (PlentyOfFish Architecture)](http://highscalability.com/plentyoffish-architecture) - - [ ] [Kiến trúc của Salesforce - Làm thế nào để xử lý 1.3 tỷ giao dịch mỗi ngày (Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day)](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [Kiến trúc của ESPN khi mở rộng - Xử lý 100000 thông tin mỗi giây (ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second)](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] Xem qua "Messaging, Serialization, and Queueing Systems" phía dưới để hiểu các công nghệ có thể kết nối các dịch vụ cùng lúc thế nào. - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - Để có thêm thông tin, xem seri "Mining Massive Datasets" trong seri video. -- [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. [Thiết kế hệ thống bới HiredInTech (System Design from HiredInTech)](http://www.hiredintech.com/system-design/) - - [cheat sheet](/extras/cheat%20sheets/system-design.pdf) - - Các bước thực hiện: - 1. Hiểu vấn đề và phạm vi của vấn đề: - - Định nghĩa các trường hợp sử dụng cụ thể với sự trợ giúp từ người phỏng vấn - - Đề xuất thêm tính năng - - Bỏ đi những phần mà người phỏng vấn cho là không còn nằm trong phạm vi yêu cầu - - Giả sử khả năng khả dụng cao, thêm vào như một tính năng - 2. Suy nghĩ về các ràng buộc: - - Hỏi xem có bao nhiêu yêu cầu mỗi tháng - - Hỏi xem có bao nhiêu yêu cầu mỗi giây (hoặc họ đưa nó cho bạn hoặc bạn phải tự tính toán ra) - - So sánh tần số đọc và ghi - - Sử dụng luật 80/20 khi ước lượng - - Bao nhiêu dữ liệu được viết mỗi giây - - Toàn bộ kho lưu trữ dữ liệu cần cho 5 năm - - Bao nhiêu dữ liệu được đọc mỗi giây - 3. Thiết kế trừu tượng: - - Lớp (dịch vụ, dữ liệu, caching) - - Cấu trúc hệ thống: tải cân bằng, chuyển thông điệp - - Cái nhìn tổng quan về thuật toán chủ chốt để chạy các dịch vụ - - Đưa ra hướng giải quyết cho hiện tượng nghẽn cổ chai - - Bài tập: - - [Thiết kế một mạng CDN (Content Delivery Network) (Design a CDN network: old article) ](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - - [Thiết kê một hệ thống cung cấp ID ngẫu nhiên (Design a random unique ID generation system)](https://blog.twitter.com/2010/announcing-snowflake) - - [Thiết kế một hệ thống chơi bài nhiều người online (Design an online multiplayer card game)](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - - [Thiết kế một cơ sở dữ liệu khóa-giá trị (Design a key-value database)](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Thiết kế một hàm để trả về những từ khóa được tìm kiếm nhiều nhất trong thời gian gần nhất (Design a function to return the top k requests during past time interval)]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) - - [Thiết kế một hệ thống chia sẻ ảnh (Design a picture sharing system) ](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Thiết kế một hệ thống hổ trợ ra quyết định (Design a recommendation system)](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Thiết kế một hệ thống làm ngắn URL (Design a URL-shortener system: copied from above)](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Thiết kế một hệ thống cache (Design a cache system)](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - ---- +--- ## Tổng kết @@ -1416,70 +1247,12 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-5 phút - Michael Sambol (46 video) - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) +- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- -## Thực hành các câu hỏi về lập trình - -Bây giờ bạn đã biết tất cả các chủ đề về khoa học máy tính, đây là lúc để thực hành các câu hỏi về lập trình. - -**Thực hành trả lời các câu hỏi về lập trình không phải là ghi nhớ cách trả lời các vấn đề trong lập trình** - -Tại sao bạn cần thực hành trả lời các vấn đề lập trình: -- Nhận diện vấn đề, lựa chọn cấu trúc dữ liệu và thuật toán phù hợp -- Xác định các yêu cầu của vấn đề -- Trình bày cách suy nghĩ của bạn như thể bạn đang trong buổi phỏng vấn -- Lập trình trên bảng trắng hoặc trên giấy, không phải với máy tính -- Đưa ra được tính toán độ phức tạp về thời gian và không gian thực thi của giải pháp của bạn -- Kiểm tra giải pháp của bạn - -Dưới đây là một bài viết tuyệt vời về phương thức luận, cách kết nối giải quyết vấn đề trong một bài phỏng vấn. Bạn có thể gặp các bài viết tương tự trong các sách hướng dẫn phỏng vấn nhưng tôi cho là bài này thật sự cực kì xuất sắc: -[Thiết kế thuật toán (Algorithm design canvas)](http://www.hiredintech.com/algorithm-design/) - -[Các bước tôi xử lý cho các câu hỏi về lập trình trong phỏng vấn (My Process for Coding Interview (Book) Exercises)](https://googleyasheck.com/my-process-for-coding-interview-exercises/) - -Không có bảng trắng ở nhà? Cũng hợp lý chứ. Tôi có chút khác biệt và tôi có một cái bảng trắng rất to. Thay vì bảng trắng, bạn có thể chọn một tập sổ ký họa từ các cửa hàng nghệ thuật. Bạn có thể ngồi ở ghế salon và thực hành. Tôi gọi nó là "bảng trắng mềm mại". Tôi có bỏ vào cây bút để dễ ước lượng. Nếu bạn dùng bút mực, bạn sẽ mong chọn loại nào có thể tẩy được ấy, vì sớm muộn sẽ rối cả lên. - -![Bảng trắng mềm mại của tôi(my sofa whiteboard)](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) - -Phụ lục: - -- [Toán học cho nhà lập trình hàng đầu (Mathematics for Topcoders)](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Quy hoạch động - Từ cơ bản đến nâng cao (Dynamic Programming – From Novice to Advanced)](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [Các tài liệu liên quan tới phỏng vấn của MIT (MIT Interview Materials)](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - -**Đọc và làm các bài tập về lập trình (theo thứ tự sau):** - -- [ ] [Đi sâu vào các buổi phỏng vấn về lập trình: Bí mật để nhận được công việc mới (Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition)](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - Trả lời bằng C,C++, và Java -- [ ] [Vượt qua các bài phỏng vấn về lập trình (Cracking the Coding Interview, 6th Edition)](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Trả lời bằng Java - -Đọc qua [Danh sách sách phía trên](#danh-sách-sách) - - -## Giải bài tập lập trình - -Bạn nên để cho bộ não vận dụng các kiến thức đã học. Hãy thử sức với các bài toán lập trình hàng ngày, càng nhiều càng tốt. - -- [ ] [Làm thể nào để tìm lời giải](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [Làm thể nào để phân tích đề bài trên TopCoder](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) - -Các trang giải toán lập trình: -- [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (nặng về toán học)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com) - -Xem thêm: -- [Phỏng vấn thử nghiệm](http://www.gainlo.co/#!/) - ## Lý lịch (Resume) của bạn - [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) @@ -1575,122 +1348,182 @@ Bạn không bao giờ thực sự học xong! - [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - còn được gọi là "Sách của bộ tứ" (Gang Of Four, hoặc GOF) - quyển sách cổ diển về mẫu thiết kế. + +- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Quyển này được xuất bản năm 2004, phần nào đã lỗi thời, nhưng nó vẫn là một tài liệu tuyệt vời để tìm hiểu về máy tính một cách ngắn gọn. +   - Tác giả phát minh ra HLA (High Level Assembly), vậy nên hãy hãy chú ý một chút về các ví dụ và định nghĩa trong sách. Tuy không được sử dụng rộng rãi, nhưng đó là một ví dụ hiện đại về hợp ngữ. + - Những chương này rất đáng đọc để xây dựng cho bạn một nền tảng tốt (giữ nguyên gốc tiếng Anh): + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization + +- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) +   - **Chú ý:** Đọc cuốn này chỉ có một ít giá trị. Đây là một tổng hợp xuất sắc về giải thuật và cấu trúc dữ liệu, nhưng nó không dạy cho bạn cách viết code xuất sắc. Để làm một lập trình viên giỏi, bạn đồng thời phải có khả năng phát triển một giải pháp một cách hiệu quả nữa. + - Trích lời Yegge: "Nhưng nếu bạn muốn đến với buổi phỏng vấn một cách có chuẩn bị, vậy hãy hoãn đơn xin ứng tuyển lại cho đến khi bạn hoàn tất quyển sách này" + - Half.com là một trang hữu dụng để tìm sách với giá tốt. + - Đôi được gọi là CLR, hoặc là CLRS (trích chữ cái đầu trong tên của các tác giả), vì Stein (một trong 4 tác giả, S trong CLRS) nhập cuộc trễ + +- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - Như một tài liệu ôn tập và hỗ trợ nhận dạng vấn đề. + - Danh mục thuật toán thật sự vượt xa độ khó của một cuộc phỏng vấn. + - Cuốn sách có 2 phần: + - Giáo trình về cấu trúc dữ liệu và giải thuật: + - Ưu: + - Là một bài tổng quát tốt tương đương với các giáo trình khác. + - Nhiều câu chuyện thú vị từ kinh nghiệm của tác giả trong việc giải quyết các vấn đề thực tế và trong giới học thuật. + - Code mẫu bằng C. + - Nhược: + - Cô đặc và có thể khó hiểu ngang với CLRS, và trong một số chủ đề, CLRS có thể là một tài liệu tốt hơn để tham khảo. + - Các chương 7, 8, 9 có thể rất vất vả để theo được, vì một vài phần không được giải thích rõ, hoặc là yêu cầu nhiều não hơn những gì tôi có. + - Đừng hiểu lầm: Tôi thích Skiena, cách dạy học và phong các của ông ấy, nhưng tôi có lẽ không đủ khả năng để tốt nghiệp ở Stony Brook (nơi Skiena giảng dạy). + - Danh mục thuật toán: + - Đây là phần chính yếu mà bạn mua được từ quyển sách. + - Sắp đến được phần này rồi. Tôi sẽ cập nhật một khi tôi xong với nó. + - Trích dẫn từ Yegge: "Hơn hẳn những quyến sách khác, cuốn này giúp tôi hiểu rõ các bài toán về Graph phổ biến một cách đáng kinh ngạc và quan trọng như thế nào - chúng nên là một phần trong các công cụ của bất kỳ lập trình viên nào. Quyển sách đồng thời cũng bao phủ các cấu trúc dữ liệu cơ bản, các thuật toán sắp xếp. Đó là một điểm cộng. Nhưng phần quý giá thật sự nằm ở nửa sau, chính là bách khoa toàn thư ngắn gọn về hàng triệu bài toán hữu dụng và vô số cách để giải quyết chúng, trình bày sơ lược. Mỗi trang đều có một hình minh họa, giúp người đọc dễ ghi nhớ hơn. Đó là một cách tốt đề định dạng và phân loại các bài toán". + - Có thể thuê quyển sách này trên Kindle + - Half.com là một trang hữu dụng để tìm sách với giá tốt. + - Câu trả lời cho các bài tập trong sách: + - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) + - [Danh mục lỗi của sách](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + + + - [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - [Site Reliability Engineering: Google chạy các hệ thống của họ như thế nào](https://landing.google.com/sre/) - [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) -## System Design, Scalability, Data Handling - -**You can expect system design questions if you have 4+ years of experience.** - -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: - - Scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - System design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) -- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 steps guide to ace your system design interview](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below -- [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [Easy-to-read paper](https://raft.github.io/) - - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) + +## Thiết kế hệ thống, Khả năng mở rộng, Xử lý dữ liệu +- **Bạn có thể sẽ bị hỏi câu hỏi liên quan đến thiết kế hệ thống nếu có hơn 4 năm kinh nghiệm** +- Khả năng mở rộng và Thiết kế hệ thống là các chủ đề rất rộng, với nhiều vấn đề và tài liệu liên quan, bởi vì có rất nhiều vấn đề cần phải giải quyết khi thiết kế các hệ thống phần mềm (hoặc phần cứng) có thể mở rộng được. + Cần phải đầu tư một chút thời gian cho vấn đề này. +- Lời khuyên từ Yegge: + - Khả năng mở rộng + - Trích xuất từ cơ sở dữ liệu lớn về một giá trị độc nhất + - Chuyển đổi từ một tập dữ liệu sang tập khác + - Xử lý một khối lượng dữ liệu đồ sộ + - Thiết kế hệ thống + - Tập hợp các tính năng + - Giao diện + - Lớp phân cấp + - Thiết kế hệ thống dưới những ràng buộc + - Đơn giản và vững chắc + - Đánh đổi (từ gốc tradeoff, chấp nhận bỏ một vài tính năng nhỏ để có được những lợi ích khác như tốc độ xử lý...) + - Phân tích và tối ưu hiệu suất sử dụng +- [ ] **BÁT ĐẦU TỪ ĐÂY**: [System Design from HiredInTech - Thiết kế hệ thống bởi HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] [Làm thế nào để trả lời các câu hỏi liên quan tới thiết kế trong phỏng vấn kỹ thuật? (How Do I Prepare To Answer Design Questions In A Technical Inverview)](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [8 điều bạn nên biết trước khi bắt đầu một buổi phỏng vấn về Thiết kế hệ thống (8 Things You Need to Know Before a System Design Interview) ](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) +- [ ] [Thiết kế thuật toán (Algorithm design)](http://www.hiredintech.com/algorithm-design/) +- [ ] [Chuẩn hóa trong cơ sở dữ liệu (Database Normalization - 1NF, 2NF, 3NF and 4NF) (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Phỏng vấn về thiết kế hệ thống (System Design Interview)](https://github.com/checkcheckzz/system-design-interview) - Có rất nhiều tài liệu trong link nay. Hãy đọc qua các bài viết và các ví dụ. Tôi có liệt kê sau đây: +- [ ] [Làm thế nào để dẫn đầu trong cuộc phỏng vấn về thiết kế hệ thống (How to ace a systems design interview) ](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Những con số ai cũng nên biết (Numbers Everyone Should Know)](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [Mất bao lâu để làm một chuyển đổi ngữ cảnh? (How long does it take to make a context switch) ](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [Các luồng xử lý trong trung tâm dữ liệu (Transactions Across Datacenters)(video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Một hướng dẫn đơn giản về lý thuyết CAP (A plain English introduction to CAP Theorem)](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) +- [ ] Thuật toán đồng thuận của Paxos: + - [video ngắn](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [Video mở rộng với trường hợp cụ thể và multi-paxos (extended video with use case and multi-paxos)](https://www.youtube.com/watch?v=JEpsBg0AO6o) + - [Nghiên cứu](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) +- [ ] [Băm nhất quán (Consistent Hashing)](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) +- [ ] Khả năng mở rộng: + - [ ] [Tầm nhìn chung (Great overview)(video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] Các seri ngắn: + - [Nhân bản (Clones)](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [Cơ sỡ dữ liệu (Database)](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) + - [Bất đồng bộ (Asynchronism)](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) + - [ ] [Kiến trúc web và hệ thống phân tán có khả năng mở rộng (Scalable Web Architecture and Distributed Systems)](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) + - [Bổ sung: Google Pregel cho xử lý đồ thị (Google Pregel Graph Processing)](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) + - [ ] [Jeff Dean - Xây dựng hệ thống phần mềm tại Google và các bài học rút ra được (Jeff Dean - Building Software Systems At Google and Lessons Learned)(video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Giới thiệu về kiến trúc hệ thống có thể mở rộng (Introduction to Architecting Systems for Scale)](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [Mở rộng game trên di động nhắm tới khách hàng trên toàn thế giới sử dụng App Engine và Cloud Datastore (Scaling mobile games to a global audience using App Engine and Cloud Datastore)(video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [ ] [Sự quan trọng của thuật toán (The Importance of Algorithms)](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [Chia nhỏ cơ sở dữ liệu thành từng phần nhỏ và nhanh hơn, dễ quản lý hơn (Sharding)](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [Khả năng mở rộng của Facebook (Scale at Facebook) - (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) + - [ ] [Khả năng mở rộng của Facebook (2012), "Xây dựng cho cả tỷ người dùng" (Scale at Facebook (2012), "Building for a Billion Users" - )(video)](https://www.youtube.com/watch?v=oodS71YtkGU) + - [ ] [Lập trình cho cả khả năng phát triển trong tương lai (Engineering for the Long Game) - Astrid Atkinson Keynote - (video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [7 năm mở rộng của Youtube trong 30 phút (7 Years Of YouTube Scalability Lessons In 30 Minutes)](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [Paypal đã mở rộng thế nào để đáp ứng hơn tỷ lượt giao dịch mỗi ngày với 8VMs (How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs) ](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [Làm thế nào để xóa lặp trong dữ liệu (How to Remove Duplicates in Large Datasets)](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie) (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Cùng nhìn nhận cách Etsy mở rộng và phong cách lập trình với Jon Cowie (What Led Amazon to its Own Microservices Architecture - Điều gì đưa Amazon tới kiến trúc microservices](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [Nén hay không nén, đây là câu hỏi dành cho Uber (To Compress Or Not To Compress, That Was Uber's Question)](https://eng.uber.com/trip-data-squeeze/) + - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) + - [ ] [Trong trường hợp nào truy vấn phỏng đoán được thực thi? (When Should Approximate Query Processing Be Used?)](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) + - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) + - [ ] [Kiến trúc Egnyte: Kinh nghiêm từ việc xây dụng và mở rộng hệ thống phân tán lên tới Petabyte (Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System) ](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) + - [ ] [Lập trình hướng máy học - Một cách lập trình mới trong thời đại mới (Machine Learning Driven Programming: A New Programming For A New World)](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) + - [ ] [Kỹ thuật tối ưu hình ảnh để phục vụ hàng triệu yêu cầu mỗi ngày (The Image Optimization Technology That Serves Millions Of Requests Per Day)](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Trình bày ngắn về kiến trúc Patreon (A Patreon Architecture Short)](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: Làm thế nào mà một trong những hệ thống hẹn hò lớn nhất quyết định bạn sẽ nhìn thấy ai tiếp theo (Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?)](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together + - [ ] [Facebook đã mở rộng thế nào để đáp ứng việc trình diễn video trực tiếp (Live Video Streaming At Facebook Scale)](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [ Hướng dẫn cơ bản cho việc mở rộng đến hơn 11 triệu người dùng với Amazon AWS (A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS )](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [Sử dụng docker ảnh hưởng tới độ trễ như thế nào? (How Does The Use Of Docker Effect Latency?)](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html) + - [ ] [Có thể xem AMP như 1 đối thủ với Google không? (Does AMP Counter An Existential Threat To Google?)](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html) + - [ ] [Một cái nhìn 360 độ về toàn bộ Netflix Stack (A 360 Degree View Of The Entire Netflix Stack)](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [Độ trễ ảnh hưởng tới doanh thu của bạn - Làm sao để khắc phục? (Latency Is Everywhere And It Costs You Sales - How To Crush It)](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Serverless (rất dài, chỉ nền dùng file gist)](http://martinfowler.com/articles/serverless.html) + - [ ] [Điều gì làm nên sức mạnh của Instagram: Hàng trăm phần tử, hàng tá các công nghệ (What Powers Instagram: Hundreds of Instances, Dozens of Technologies )](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) + - [ ] [Kiến trúc Cinchcast - Tạo ra 1500 giờ âm thanh mỗi ngày (Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day)](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) + - [ ] [Kiến trúc của chương trình phát sóng video trực tiếp Justin.Tv (Justin.Tv's Live Video Broadcasting Architecture)](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) + - [ ] [Kiến trúc của game cộng đồng Playfish - 50 triệu người sử dụng hàng tháng và vẫn tiếp tục tăng (Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing)](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) + - [ ] [Kiến trúc của TripAdvisor - 40 triệu người viếng thăm, 200 triệu lượt xem, 30 Tb dữ liệu (TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data)](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) + - [ ] [Kiến trúc của PlentyOfFish (PlentyOfFish Architecture)](http://highscalability.com/plentyoffish-architecture) + - [ ] [Kiến trúc của Salesforce - Làm thế nào để xử lý 1.3 tỷ giao dịch mỗi ngày (Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day)](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [Kiến trúc của ESPN khi mở rộng - Xử lý 100000 thông tin mỗi giây (ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second)](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] Xem qua "Messaging, Serialization, and Queueing Systems" phía dưới để hiểu các công nghệ có thể kết nối các dịch vụ cùng lúc thế nào. - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see the "Mining Massive Datasets" video series in the [Video Series](#video-series) section -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - Define the use cases, with the interviewer's help - - Suggest additional features - - Remove items that the interviewer deems out of scope - - Assume high availability is required, add as a use case - 2. Think about constraints: - - Ask how many requests per month - - Ask how many requests per second (they may volunteer it or make you do the math) - - Estimate reads vs. writes percentage - - Keep the 80/20 rule in mind when estimating - - How much data is written per second - - Total storage required over 5 years - - How much data read per second - 3. Abstract design: - - Layers (service, data, caching) - - Infrastructure: load balancing, messaging - - Rough overview of any key algorithm that drives the service - - Consider bottlenecks and determine solutions - - Exercises: - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + - Để có thêm thông tin, xem seri "Mining Massive Datasets" trong seri video. +- [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. [Thiết kế hệ thống bới HiredInTech (System Design from HiredInTech)](http://www.hiredintech.com/system-design/) + - [cheat sheet](/extras/cheat%20sheets/system-design.pdf) + - Các bước thực hiện: + 1. Hiểu vấn đề và phạm vi của vấn đề: + - Định nghĩa các trường hợp sử dụng cụ thể với sự trợ giúp từ người phỏng vấn + - Đề xuất thêm tính năng + - Bỏ đi những phần mà người phỏng vấn cho là không còn nằm trong phạm vi yêu cầu + - Giả sử khả năng khả dụng cao, thêm vào như một tính năng + 2. Suy nghĩ về các ràng buộc: + - Hỏi xem có bao nhiêu yêu cầu mỗi tháng + - Hỏi xem có bao nhiêu yêu cầu mỗi giây (hoặc họ đưa nó cho bạn hoặc bạn phải tự tính toán ra) + - So sánh tần số đọc và ghi + - Sử dụng luật 80/20 khi ước lượng + - Bao nhiêu dữ liệu được viết mỗi giây + - Toàn bộ kho lưu trữ dữ liệu cần cho 5 năm + - Bao nhiêu dữ liệu được đọc mỗi giây + 3. Thiết kế trừu tượng: + - Lớp (dịch vụ, dữ liệu, caching) + - Cấu trúc hệ thống: tải cân bằng, chuyển thông điệp + - Cái nhìn tổng quan về thuật toán chủ chốt để chạy các dịch vụ + - Đưa ra hướng giải quyết cho hiện tượng nghẽn cổ chai + - Bài tập: + - [Thiết kế một mạng CDN (Content Delivery Network) (Design a CDN network: old article) ](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [Thiết kê một hệ thống cung cấp ID ngẫu nhiên (Design a random unique ID generation system)](https://blog.twitter.com/2010/announcing-snowflake) + - [Thiết kế một hệ thống chơi bài nhiều người online (Design an online multiplayer card game)](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) + - [Thiết kế một cơ sở dữ liệu khóa-giá trị (Design a key-value database)](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [Thiết kế một hàm để trả về những từ khóa được tìm kiếm nhiều nhất trong thời gian gần nhất (Design a function to return the top k requests during past time interval)]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) + - [Thiết kế một hệ thống chia sẻ ảnh (Design a picture sharing system) ](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [Thiết kế một hệ thống hổ trợ ra quyết định (Design a recommendation system)](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [Thiết kế một hệ thống làm ngắn URL (Design a URL-shortener system: copied from above)](http://www.hiredintech.com/system-design/the-system-design-process/) + - [Thiết kế một hệ thống cache (Design a cache system)](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) +--- ## Học thêm @@ -2143,3 +1976,57 @@ Hãy ngồi xuống và thưởng thức. "Luyện kỹ năng với Netflix" :P - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) + + +- ### Các bài nghiên cứu + - Có nhiều bài nghiên cứu của Google và các bài nghiên cứu rất nổi tiếng. + - Đọc hết các bài nghiên cứu tốn rất nhiều thời gian, tôi khuyên bạn nên chọn lọc theo đề tài cụ thể. + - [ ] [1978: Process giao tiếp tuần tự (1978: Communicating Sequential Processes)](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Triển khai với Go (implemented in Go)](https://godoc.org/github.com/thomas11/csp) + - [Yêu thích các nghiên cứu cũ (Love classic papers)?](https://www.cs.cmu.edu/~crary/819-f09/) + - [ ] [2003: Hệ thống tập tin của Google (2003: The Google File System)](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - thay thế bởi Colossus năm 2012 + - [ ] [2004: MapReduce: Đơn giản hóa xử lý dữ liệu trên phân vùng lớn (Simplified Data Processing on Large Clusters)]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - gần như bị thay thế bởi Cloud Dataflow? + - [ ] [2007: Những gì mà lập trình viên nên biết về bộ nhớ (rất dài, ngay cả tác giả cũng khuyến khích bỏ qua vài phần) (What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections))](https://www.akkadia.org/drepper/cpumemory.pdf) + - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) + - Bài nghiên cứu không tồn tại + - [ ] 2012: AddressSanitizer: Kiểm tra nhanh tính đúng đắn của địa chỉ (A Fast Address Sanity Checker): + - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) + - [ ] 2013: Spanner: Google’s Globally-Distributed Database: + - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) + - [ ] [2014: Máy học: Lợi ích và những vấn đề cần tránh (Machine Learning: The High-Interest Credit Card of Technical Debt)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) + - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en/pubs/archive/43790.pdf) + - [ ] [2015: Sẵn sàng cho thay đổi lớn: Xây dựng hạ tầng dữ liệu của Google dành cho quảng cáo (High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads)](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) + - [ ] [2015: Tensorflow: Áp dụng máy học với dữ liệu lớn trên hệ thống phân tán tính toán song song (Large-Scale Machine Learning on Heterogeneous Distributed Systems)](http://download.tensorflow.org/paper/whitepaper2015.pdf ) + - [ ] [2015: Lập trình viên tìm code như thế nào: Một trường hợp điển hình (How Developers Search for Code: A Case Study)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) + - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) + + + +## Papers + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [implemented in Go](https://godoc.org/github.com/thomas11/csp) +- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - replaced by Colossus in 2012 +- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - mostly replaced by Cloud Dataflow? +- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - The Dynamo paper kicked off the NoSQL revolution +- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: A Fast Address Sanity Checker: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google’s Globally-Distributed Database: + - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [video](https://www.usenix.org/node/170855) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) From e897639239a003f29a20a49fc907ee61323f3c40 Mon Sep 17 00:00:00 2001 From: ducdongmg Date: Wed, 15 Nov 2023 17:37:15 +0900 Subject: [PATCH 794/857] Update the remaining sections --- translations/README-vi.md | 710 +++++++++++++++++++------------------- 1 file changed, 351 insertions(+), 359 deletions(-) diff --git a/translations/README-vi.md b/translations/README-vi.md index e63310b1f8..4662c9e781 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1255,31 +1255,51 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của ## Lý lịch (Resume) của bạn -- [10 mẹo để Resume bớt (một chút) tào lao](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) -- Xem các phần về chuẩn bị Resume trong [Cracking The Coding Interview](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/) và [Programming Interviews Exposed](https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364) - - +- Xem thông tin chuẩn bị CV trong các sách: "Cracking The Coding Interview" và "Programming Interviews Exposed" +- ["Đây là những gì một CV TỐT nên có" của Gayle McDowell (tác giả của Cracking the Coding Interview)](https://www.careercup.com/resume), + - Lưu ý của tác giả: "Đây là cho một CV tập trung cho nước Mỹ. CV cho Ấn Độ và các quốc gia khác có những kỳ vọng khác nhau, mặc dù nhiều điểm sẽ giống nhau." +- ["Hướng dẫn từng bước để tạo CV" của Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Hướng dẫn chi tiết về cách thiết lập CV của bạn từ đầu, viết nội dung CV hiệu quả, tối ưu hóa nó, và kiểm tra CV của bạn ## Khi bạn tiến gần đến kỳ phỏng vấn - [ ] Cracking The Coding Interview, Phần 2 (video): - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) + ## Quy trình phỏng vấn & các bước chuẩn bị tổng quát -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [4 bước đến Google dù không có bằng cấp](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx) -- [ ] [Whiteboarding (Giải toán lập trình trên bảng trắng)](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Google nghĩ thế nào về Tuyển dụng, Quản lý và Văn hóa](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture) -- [ ] Cracking The Coding Interview Set 1: +- [ ] [Cách vượt qua cuộc phỏng vấn kỹ thuật năm 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Làm rõ việc tuyển dụng kỹ thuật](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] Cách nhận việc tại Big 4: + - [ ] [Cách nhận việc tại Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Cách nhận việc tại Big 4.1 (Video tiếp theo)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Bộ Cracking The Coding Interview 1: - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Làm thế nào để lấy được công việc ở Big 4: - - [ ] [Làm sao để lấy được công việc ở Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) -- [ ] [Thất bại trong cuộc phỏng vấn với Google](http://alexbowe.com/failing-at-google-interviews/) - + - [ ] [Cracking the Coding Interview với tác giả Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [Phương pháp tiếp cận](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Hướng dẫn giải quyết vấn đề](https://www.youtube.com/watch?v=4UWDyJq8jZg) + +- Các khóa học chuẩn bị: + - [Python cho Cấu trúc dữ liệu, Thuật toán, và Phỏng vấn (khóa học trả phí)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - Một khóa học chuẩn bị phỏng vấn tập trung vào Python, bao gồm cấu trúc dữ liệu, thuật toán, phỏng vấn giả lập, và nhiều hơn nữa. + - [Giới thiệu về Cấu trúc dữ liệu và Thuật toán sử dụng Python (khóa học miễn phí của Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Một khóa học miễn phí tập trung vào Python về cấu trúc dữ liệu và thuật toán. + - [Nanodegree Cấu trúc dữ liệu và Thuật toán! (Nanodegree trả phí của Udacity)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Nhận thực hành trực tiếp với hơn 100 bài tập về cấu trúc dữ liệu và thuật toán và hướng dẫn từ một người hướng dẫn chuyên dụng để giúp bạn chuẩn bị cho phỏng vấn và tình huống trong công việc. + - [Hiểu rõ Phỏng vấn Hành vi (khóa học miễn phí của Educative)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Nhiều lần, không phải năng lực kỹ thuật của bạn ngăn bạn không nhận được công việc mơ ước, mà là cách bạn thể hiện hành vi trong phỏng vấn. + - [AlgoMonster (khóa học trả phí với nội dung miễn phí)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - Khóa học tóm tắt cho LeetCode. Bao gồm tất cả các mô hình được tóm gọn từ hàng nghìn câu hỏi. + +Phỏng vấn mô phỏng: +- [Gainlo.co: Người phỏng vấn mô phỏng từ các công ty lớn](http://www.gainlo.co/#!/) - Tôi đã sử dụng dịch vụ này và nó giúp tôi thư giãn cho phần phỏng vấn qua điện thoại và phỏng vấn trực tiếp +- [Pramp: Phỏng vấn mô phỏng từ/ với đồng nghiệp](https://www.pramp.com/) - một mô hình ngang hàng để thực hành phỏng vấn +- [interviewing.io: Thực hành phỏng vấn mô phỏng với các kỹ sư hàng đầu](https://interviewing.io) - phỏng vấn mô phỏng về thiết kế thuật toán/hệ thống với các kỹ sư hàng đầu từ FAANG một cách ẩn danh +- [Meetapro: Phỏng vấn mô phỏng với những người phỏng vấn hàng đầu từ FAANG](https://meetapro.com/?utm_source=ciu) - một nền tảng phỏng vấn mô phỏng/phỏng vấn theo phong cách Airbnb. +- [Hello Interview: Phỏng vấn mô phỏng với các huấn luyện viên chuyên nghiệp và AI](https://www.hellointerview.com/?utm_source=ciu) - phỏng vấn trực tiếp với AI hoặc với các kỹ sư và quản lý từ FAANG. ## Hãy nghĩ đến những thứ bạn sẽ được hỏi @@ -1290,35 +1310,34 @@ Chuẩn bị 2 đến 3 câu trả lời cho mỗi câu hỏi. Hãy chuẩn bị - Vấn đề khó chịu nhất bạn từng giải quyết là gì? - Thử thách lớn nhất bạn từng đối mặt? - Thiết kế (hệ thống) tốt nhất/tồi nhất bạn từng gặp? -- Những ý tưởng để cải thiện các sản phẩm hiện giờ của Google. +- Những ý tưởng để cải thiện các sản phẩm hiện có. - Bạn sẽ làm việc như thế nào để đạt hiệu quả tốt nhất, trong trường hợp làm việc một mình và làm theo team? - Kỹ năng hay kinh nghiệm nào của bạn thích hợp cho công việc này, và tại sao? - Bạn thích điều gì nhất ở [công việc X/ dự án Y]? -- Lỗi gấy ức chế nhất bạn từng gặp phải ở [công việc X/ dự án Y]? +- Thách thức lớn nhất bạn từng gặp phải ở [công việc X/ dự án Y]? +- Lỗi lớn nhất bạn từng gặp phải ở [công việc X/ dự án Y]? - Bạn học được những gì ở [công việc X/ dự án Y]? - Những gì bạn cho rằng mình đã có thể làm tốt hơn ở [công việc X/ dự án Y]? - ## Chuẩn bị câu hỏi dành cho phỏng vấn viên - Một vài câu hỏi của tôi (Tôi có thể đã tìm hiểu trước rồi, nhưng vẫn muốn được nghe ý kiến từ góc nhìn của người phỏng vấn): +Một vài câu hỏi của tôi (Tôi có thể đã tìm hiểu trước rồi, nhưng vẫn muốn được nghe ý kiến từ góc nhìn của người phỏng vấn): - Quy mô của team thế nào? - Quy trình phát triển của bạn? Waterfall/sprints/agile? - Áp lực deadline có phổ biến không? Liệu có sự linh hoạt nào không? - Các quyết định của team được xây dựng như thế nào? - Khoảng bao nhiêu cuộc họp hàng tuần? -- Bạn có cho rằng môi trường làm việc giúp bạn tập trung hơn không? -- Hiện tại bạn đang xây dựng những gì? +- Bạn có cảm thấy môi trường làm việc của bạn giúp bạn tập trung không? +- Hiện tại bạn đang làm gì? - Bạn thích gì ở công việc này? -- Sự cân bằng giữa công việc và cuộc sống của bạn có ổn không? +- Cuộc sống làm việc như thế nào? +- Sự cân bằng giữa công việc và cuộc sống của bạn ra sao? ## Khi bạn được nhận việc Chúc mừng! -- [10 điều tôi ước gì được biết trong ngày đầu tiên tại Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) - Hãy tiếp tục rèn luyện. Bạn không bao giờ thực sự học xong! @@ -1329,7 +1348,9 @@ Bạn không bao giờ thực sự học xong! ***************************************************************************************************** ***************************************************************************************************** - Học các chủ đề này sẽ giúp bạn hiểu sâu hơn về Khoa học máy tính, và sẵn sàng hơn cho bất kỳ công ty nào. + Mọi thứ dưới đây là tùy chọn. Nó không cần thiết cho một cuộc phỏng vấn ở cấp độ mới vào nghề. + Tuy nhiên, bằng cách nghiên cứu những điều này, bạn sẽ tiếp xúc nhiều hơn với các khái niệm CS và sẽ được chuẩn bị tốt hơn + cho bất kỳ công việc kỹ sư phần mềm nào. Bạn sẽ trở thành một kỹ sư phần mềm toàn diện hơn. ***************************************************************************************************** ***************************************************************************************************** @@ -1338,6 +1359,8 @@ Bạn không bao giờ thực sự học xong! ## Sách bổ sung + Đây là nơi bạn có thể đào sâu vào các chủ đề bạn thấy hứng thú + - [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - cũ nhưng mà tốt - [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) @@ -1348,27 +1371,6 @@ Bạn không bao giờ thực sự học xong! - [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - còn được gọi là "Sách của bộ tứ" (Gang Of Four, hoặc GOF) - quyển sách cổ diển về mẫu thiết kế. - -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - Quyển này được xuất bản năm 2004, phần nào đã lỗi thời, nhưng nó vẫn là một tài liệu tuyệt vời để tìm hiểu về máy tính một cách ngắn gọn. -   - Tác giả phát minh ra HLA (High Level Assembly), vậy nên hãy hãy chú ý một chút về các ví dụ và định nghĩa trong sách. Tuy không được sử dụng rộng rãi, nhưng đó là một ví dụ hiện đại về hợp ngữ. - - Những chương này rất đáng đọc để xây dựng cho bạn một nền tảng tốt (giữ nguyên gốc tiếng Anh): - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization - -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) -   - **Chú ý:** Đọc cuốn này chỉ có một ít giá trị. Đây là một tổng hợp xuất sắc về giải thuật và cấu trúc dữ liệu, nhưng nó không dạy cho bạn cách viết code xuất sắc. Để làm một lập trình viên giỏi, bạn đồng thời phải có khả năng phát triển một giải pháp một cách hiệu quả nữa. - - Trích lời Yegge: "Nhưng nếu bạn muốn đến với buổi phỏng vấn một cách có chuẩn bị, vậy hãy hoãn đơn xin ứng tuyển lại cho đến khi bạn hoàn tất quyển sách này" - - Half.com là một trang hữu dụng để tìm sách với giá tốt. - - Đôi được gọi là CLR, hoặc là CLRS (trích chữ cái đầu trong tên của các tác giả), vì Stein (một trong 4 tác giả, S trong CLRS) nhập cuộc trễ - - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - Như một tài liệu ôn tập và hỗ trợ nhận dạng vấn đề. - Danh mục thuật toán thật sự vượt xa độ khó của một cuộc phỏng vấn. @@ -1383,25 +1385,41 @@ Bạn không bao giờ thực sự học xong! - Các chương 7, 8, 9 có thể rất vất vả để theo được, vì một vài phần không được giải thích rõ, hoặc là yêu cầu nhiều não hơn những gì tôi có. - Đừng hiểu lầm: Tôi thích Skiena, cách dạy học và phong các của ông ấy, nhưng tôi có lẽ không đủ khả năng để tốt nghiệp ở Stony Brook (nơi Skiena giảng dạy). - Danh mục thuật toán: - - Đây là phần chính yếu mà bạn mua được từ quyển sách. - - Sắp đến được phần này rồi. Tôi sẽ cập nhật một khi tôi xong với nó. + - Đây là lý do thực sự bạn mua cuốn sách này. + - Cuốn sách này tốt hơn khi được sử dụng như một tài liệu tham khảo về thuật toán, chứ không phải là một thứ bạn đọc từ đầu đến cuối. - Trích dẫn từ Yegge: "Hơn hẳn những quyến sách khác, cuốn này giúp tôi hiểu rõ các bài toán về Graph phổ biến một cách đáng kinh ngạc và quan trọng như thế nào - chúng nên là một phần trong các công cụ của bất kỳ lập trình viên nào. Quyển sách đồng thời cũng bao phủ các cấu trúc dữ liệu cơ bản, các thuật toán sắp xếp. Đó là một điểm cộng. Nhưng phần quý giá thật sự nằm ở nửa sau, chính là bách khoa toàn thư ngắn gọn về hàng triệu bài toán hữu dụng và vô số cách để giải quyết chúng, trình bày sơ lược. Mỗi trang đều có một hình minh họa, giúp người đọc dễ ghi nhớ hơn. Đó là một cách tốt đề định dạng và phân loại các bài toán". - Có thể thuê quyển sách này trên Kindle - - Half.com là một trang hữu dụng để tìm sách với giá tốt. - Câu trả lời cho các bài tập trong sách: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Danh mục lỗi của sách](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) +- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - Quyển này được xuất bản năm 2004, phần nào đã lỗi thời, nhưng nó vẫn là một tài liệu tuyệt vời để tìm hiểu về máy tính một cách ngắn gọn. +   - Tác giả phát minh ra HLA (High Level Assembly), vậy nên hãy hãy chú ý một chút về các ví dụ và định nghĩa trong sách. Tuy không được sử dụng rộng rãi, nhưng đó là một ví dụ hiện đại về hợp ngữ (assembly). + - Những chương này rất đáng đọc để xây dựng cho bạn một nền tảng tốt (giữ nguyên gốc tiếng Anh): + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization -- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) - - [Site Reliability Engineering: Google chạy các hệ thống của họ như thế nào](https://landing.google.com/sre/) -- [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) - +- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) +   - **Chú ý:** Đọc cuốn này chỉ có một ít giá trị. Đây là một tổng hợp xuất sắc về giải thuật và cấu trúc dữ liệu, nhưng nó không dạy cho bạn cách viết code xuất sắc. Để làm một lập trình viên giỏi, bạn đồng thời phải có khả năng phát triển một giải pháp một cách hiệu quả nữa. + - Trích lời Yegge: "Nhưng nếu bạn muốn đến với buổi phỏng vấn một cách có chuẩn bị, vậy hãy hoãn đơn xin ứng tuyển lại cho đến khi bạn hoàn tất quyển sách này" + - Half.com là một trang hữu dụng để tìm sách với giá tốt. + - Đôi được gọi là CLR, hoặc là CLRS (trích chữ cái đầu trong tên của các tác giả), vì Stein (một trong 4 tác giả, S trong CLRS) nhập cuộc trễ +- [Kiến trúc Máy tính, Ấn bản thứ Sáu: Một cách tiếp cận định lượng](https://www.amazon.com/dp/0128119055) + - Đối với một cách tiếp cận phong phú hơn, cập nhật hơn (2017), nhưng dài hơn ## Thiết kế hệ thống, Khả năng mở rộng, Xử lý dữ liệu + - **Bạn có thể sẽ bị hỏi câu hỏi liên quan đến thiết kế hệ thống nếu có hơn 4 năm kinh nghiệm** + - Khả năng mở rộng và Thiết kế hệ thống là các chủ đề rất rộng, với nhiều vấn đề và tài liệu liên quan, bởi vì có rất nhiều vấn đề cần phải giải quyết khi thiết kế các hệ thống phần mềm (hoặc phần cứng) có thể mở rộng được. Cần phải đầu tư một chút thời gian cho vấn đề này. - Lời khuyên từ Yegge: @@ -1417,24 +1435,27 @@ Bạn không bao giờ thực sự học xong! - Đơn giản và vững chắc - Đánh đổi (từ gốc tradeoff, chấp nhận bỏ một vài tính năng nhỏ để có được những lợi ích khác như tốc độ xử lý...) - Phân tích và tối ưu hiệu suất sử dụng -- [ ] **BÁT ĐẦU TỪ ĐÂY**: [System Design from HiredInTech - Thiết kế hệ thống bởi HiredInTech](http://www.hiredintech.com/system-design/) +- [ ] **BÁT ĐẦU TỪ ĐÂY**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [System Design from HiredInTech - Thiết kế hệ thống bởi HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [Làm thế nào để trả lời các câu hỏi liên quan tới thiết kế trong phỏng vấn kỹ thuật? (How Do I Prepare To Answer Design Questions In A Technical Inverview)](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 điều bạn nên biết trước khi bắt đầu một buổi phỏng vấn về Thiết kế hệ thống (8 Things You Need to Know Before a System Design Interview) ](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Thiết kế thuật toán (Algorithm design)](http://www.hiredintech.com/algorithm-design/) +- [ ] [8 điều bạn nên biết trước khi bắt đầu một buổi phỏng vấn về Thiết kế hệ thống (8 Things You Need to Know Before a System Design Interview) ](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) - [ ] [Chuẩn hóa trong cơ sở dữ liệu (Database Normalization - 1NF, 2NF, 3NF and 4NF) (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [Phỏng vấn về thiết kế hệ thống (System Design Interview)](https://github.com/checkcheckzz/system-design-interview) - Có rất nhiều tài liệu trong link nay. Hãy đọc qua các bài viết và các ví dụ. Tôi có liệt kê sau đây: -- [ ] [Làm thế nào để dẫn đầu trong cuộc phỏng vấn về thiết kế hệ thống (How to ace a systems design interview) ](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [Làm thế nào để dẫn đầu trong cuộc phỏng vấn về thiết kế hệ thống (How to ace a systems design interview) ](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Những con số ai cũng nên biết (Numbers Everyone Should Know)](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [Mất bao lâu để làm một chuyển đổi ngữ cảnh? (How long does it take to make a context switch) ](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) - [ ] [Các luồng xử lý trong trung tâm dữ liệu (Transactions Across Datacenters)(video)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [Một hướng dẫn đơn giản về lý thuyết CAP (A plain English introduction to CAP Theorem)](http://ksat.me/a-plain-english-introduction-to-cap-theorem/) -- [ ] Thuật toán đồng thuận của Paxos: - - [video ngắn](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [Video mở rộng với trường hợp cụ thể và multi-paxos (extended video with use case and multi-paxos)](https://www.youtube.com/watch?v=JEpsBg0AO6o) - - [Nghiên cứu](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf) -- [ ] [Băm nhất quán (Consistent Hashing)](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] Thuật toán đồng thuận: + - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [Easy-to-read paper](https://raft.github.io/) + - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) +- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Khả năng mở rộng: + - Bạn không cần tất cả chúng. Chỉ cần chọn 1 vài cái bạn có hứng thú - [ ] [Tầm nhìn chung (Great overview)(video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Các seri ngắn: - [Nhân bản (Clones)](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) @@ -1443,13 +1464,11 @@ Bạn không bao giờ thực sự học xong! - [Bất đồng bộ (Asynchronism)](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - [ ] [Kiến trúc web và hệ thống phân tán có khả năng mở rộng (Scalable Web Architecture and Distributed Systems)](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html) - - [Bổ sung: Google Pregel cho xử lý đồ thị (Google Pregel Graph Processing)](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html) - [ ] [Jeff Dean - Xây dựng hệ thống phần mềm tại Google và các bài học rút ra được (Jeff Dean - Building Software Systems At Google and Lessons Learned)(video)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Giới thiệu về kiến trúc hệ thống có thể mở rộng (Introduction to Architecting Systems for Scale)](http://lethain.com/introduction-to-architecting-systems-for-scale/) - [ ] [Mở rộng game trên di động nhắm tới khách hàng trên toàn thế giới sử dụng App Engine và Cloud Datastore (Scaling mobile games to a global audience using App Engine and Cloud Datastore)(video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [Sự quan trọng của thuật toán (The Importance of Algorithms)](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) + - [ ] [Sự quan trọng của thuật toán (The Importance of Algorithms)](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) - [ ] [Chia nhỏ cơ sở dữ liệu thành từng phần nhỏ và nhanh hơn, dễ quản lý hơn (Sharding)](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - [ ] [Khả năng mở rộng của Facebook (Scale at Facebook) - (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) - [ ] [Khả năng mở rộng của Facebook (2012), "Xây dựng cho cả tỷ người dùng" (Scale at Facebook (2012), "Building for a Billion Users" - )(video)](https://www.youtube.com/watch?v=oodS71YtkGU) @@ -1461,12 +1480,8 @@ Bạn không bao giờ thực sự học xong! - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie) (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [Cùng nhìn nhận cách Etsy mở rộng và phong cách lập trình với Jon Cowie (What Led Amazon to its Own Microservices Architecture - Điều gì đưa Amazon tới kiến trúc microservices](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [Nén hay không nén, đây là câu hỏi dành cho Uber (To Compress Or Not To Compress, That Was Uber's Question)](https://eng.uber.com/trip-data-squeeze/) - - [ ] [Asyncio Tarantool Queue, Get In The Queue](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html) - [ ] [Trong trường hợp nào truy vấn phỏng đoán được thực thi? (When Should Approximate Query Processing Be Used?)](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [Spanner](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html) - - [ ] [Kiến trúc Egnyte: Kinh nghiêm từ việc xây dụng và mở rộng hệ thống phân tán lên tới Petabyte (Egnyte Architecture: Lessons Learned In Building And Scaling A Multi Petabyte Distributed System) ](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html) - - [ ] [Lập trình hướng máy học - Một cách lập trình mới trong thời đại mới (Machine Learning Driven Programming: A New Programming For A New World)](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html) - [ ] [Kỹ thuật tối ưu hình ảnh để phục vụ hàng triệu yêu cầu mỗi ngày (The Image Optimization Technology That Serves Millions Of Requests Per Day)](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - [ ] [Trình bày ngắn về kiến trúc Patreon (A Patreon Architecture Short)](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - [ ] [Tinder: Làm thế nào mà một trong những hệ thống hẹn hò lớn nhất quyết định bạn sẽ nhìn thấy ai tiếp theo (Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?)](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) @@ -1479,20 +1494,17 @@ Bạn không bao giờ thực sự học xong! - [ ] [Độ trễ ảnh hưởng tới doanh thu của bạn - Làm sao để khắc phục? (Latency Is Everywhere And It Costs You Sales - How To Crush It)](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - [ ] [Serverless (rất dài, chỉ nền dùng file gist)](http://martinfowler.com/articles/serverless.html) - [ ] [Điều gì làm nên sức mạnh của Instagram: Hàng trăm phần tử, hàng tá các công nghệ (What Powers Instagram: Hundreds of Instances, Dozens of Technologies )](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Kiến trúc Cinchcast - Tạo ra 1500 giờ âm thanh mỗi ngày (Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day)](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html) - - [ ] [Kiến trúc của chương trình phát sóng video trực tiếp Justin.Tv (Justin.Tv's Live Video Broadcasting Architecture)](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html) - - [ ] [Kiến trúc của game cộng đồng Playfish - 50 triệu người sử dụng hàng tháng và vẫn tiếp tục tăng (Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing)](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html) - - [ ] [Kiến trúc của TripAdvisor - 40 triệu người viếng thăm, 200 triệu lượt xem, 30 Tb dữ liệu (TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data)](http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html) - - [ ] [Kiến trúc của PlentyOfFish (PlentyOfFish Architecture)](http://highscalability.com/plentyoffish-architecture) - [ ] [Kiến trúc của Salesforce - Làm thế nào để xử lý 1.3 tỷ giao dịch mỗi ngày (Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day)](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - [ ] [Kiến trúc của ESPN khi mở rộng - Xử lý 100000 thông tin mỗi giây (ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second)](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - [ ] Xem qua "Messaging, Serialization, and Queueing Systems" phía dưới để hiểu các công nghệ có thể kết nối các dịch vụ cùng lúc thế nào. - [ ] Twitter: - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - Để có thêm thông tin, xem seri "Mining Massive Datasets" trong seri video. -- [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. [Thiết kế hệ thống bới HiredInTech (System Design from HiredInTech)](http://www.hiredintech.com/system-design/) - - [cheat sheet](/extras/cheat%20sheets/system-design.pdf) + - Để có thêm thông tin, xem seri "Mining Massive Datasets" trong [seri video](#Các-chuỗi-Video). +- [ ] Thực hành thêm về thiết kế hệ thống: Sau đây là vài ý tưởng có thể thực hiện trên giấy, mỗi ý tưởng đều có tư liệu đi cùng để hiểu rõ nó thực thi thế nào trong thế giới thực. + - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [Thiết kế hệ thống bới HiredInTech (System Design from HiredInTech)](http://www.hiredintech.com/system-design/) + - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - Các bước thực hiện: 1. Hiểu vấn đề và phạm vi của vấn đề: - Định nghĩa các trường hợp sử dụng cụ thể với sự trợ giúp từ người phỏng vấn @@ -1513,32 +1525,30 @@ Bạn không bao giờ thực sự học xong! - Cái nhìn tổng quan về thuật toán chủ chốt để chạy các dịch vụ - Đưa ra hướng giải quyết cho hiện tượng nghẽn cổ chai - Bài tập: - - [Thiết kế một mạng CDN (Content Delivery Network) (Design a CDN network: old article) ](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - [Thiết kê một hệ thống cung cấp ID ngẫu nhiên (Design a random unique ID generation system)](https://blog.twitter.com/2010/announcing-snowflake) - - [Thiết kế một hệ thống chơi bài nhiều người online (Design an online multiplayer card game)](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html) - [Thiết kế một cơ sở dữ liệu khóa-giá trị (Design a key-value database)](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Thiết kế một hàm để trả về những từ khóa được tìm kiếm nhiều nhất trong thời gian gần nhất (Design a function to return the top k requests during past time interval)]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf) - [Thiết kế một hệ thống chia sẻ ảnh (Design a picture sharing system) ](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - [Thiết kế một hệ thống hổ trợ ra quyết định (Design a recommendation system)](http://ijcai13.org/files/tutorial_slides/td3.pdf) - [Thiết kế một hệ thống làm ngắn URL (Design a URL-shortener system: copied from above)](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Thiết kế một hệ thống cache (Design a cache system)](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - ---- + - [Thiết kế một hệ thống cache (Design a cache system)](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) ## Học thêm > Tiêu đề của các video, các thuật ngữ cao cấp xin được giữ nguyên. Một số thuật ngữ có thể dịch được, nhưng người dịch không đủ vốn từ đề diễn đạt chúng một cách ngắn gọn như trong tiếng Anh, nên cũng xin phép cho qua. + Tôi đã thêm chúng để giúp bạn trở thành một kỹ sư phần mềm toàn diện và để bạn biết về một số + công nghệ và thuật toán, vì vậy bạn sẽ có một bộ công cụ lớn hơn. + - ### Trình biên dịch - - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs và vi(m) - - Được đề xuất bởi Yegge, từ một bài đăng tuyển dụng cũ của Amazon: Phải nắm vững một trình chỉnh sửa văn bản thông dụng trên Unix. + - Phải nắm vững một trình chỉnh sửa văn bản thông dụng trên Unix. - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With Vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - 4 video: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) @@ -1551,123 +1561,123 @@ Bạn không bao giờ thực sự học xong! - 3 video: - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file, and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - ### Các công cụ chạy trên dòng lệnh của Unix - - Được đề xuất bởi Yegge, từ một bài đăng tuyển dụng cũ của Amazon. - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] curl or wget - - [ ] sort - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) + - bash + - cat + - grep + - sed + - awk + - curl or wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) - ### Lý thuyết thông tin - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) + - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - [ ] Hiểu thêm về chuỗi Markov: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - Xem thêm ở chuỗi bài từ đại học MIT 6.050J Information và Entropy bên dưới. - ### Parity & Hamming Code (videos) - - [ ] [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] Hamming Code: + - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - Hamming Code: - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### Entropy - - Xem các video bên dưới. - - Hãy chăc chắn đã xem qua các video đề lý thuyết thông tin trước. - - [ ] [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Mã hóa + - Xem các video bên dưới. - Hãy chăc chắn đã xem qua các video đề lý thuyết thông tin trước. - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) + - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Thuật toán nén - Hãy chăc chắn đã xem qua các video đề lý thuyết thông tin trước. - [ ] Computerphile (videos): - - [ ] [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Bảo mật - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Trình dọn rác > Trình dọn rác (garbage collection) là một tính năng của các ngôn ngữ lập trình cấp cao, trong đó hệ thông tự động thu hồi vùng nhớ của các data (biến, đối tượng) không còn được sử dụng nữa, và cấp phát chúng cho các data mới. Trước khi có tính năng này, lập trình viên phải quản lý vùng nhớ thủ công, tự xin cấp phát và tự giải phóng. - - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Lập trình song song - - [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [Efficient Python for High-Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, và Queueing Systems - - [ ] [Thrift](https://thrift.apache.org/) + - [Thrift](https://thrift.apache.org/) - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [ ] [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) + - [gRPC](http://www.grpc.io/) - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - - [ ] [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) + - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) + - [Celery](http://www.celeryproject.org/) - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) + - [ZeroMQ](http://zeromq.org/) - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A* + - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - - [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University](https://www.youtube.com/watch?v=qBTdukbzc78) + - Cho một bộ lọc Bloom với m bit và k hàm băm, cả việc chèn và kiểm tra thành viên đều là O(k) + - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1680,35 +1690,35 @@ Bạn không bao giờ thực sự học xong! - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [ ] [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT Lecture Notes](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) + - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lecture Notes](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) - ### Augmented Data Structures - - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) + - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - Biết ít nhất một dạng cây nhị phân tìm kiếm cân bằng (và biết cách cài đặt nó) - - "Trong các loại cây nhị phân cân bằng, cây AVL và 2/3 đã "ra đi", và cây đỏ-đen (red-black) có vẻ khá phỏ biến. Một dạng cây tự quản khá thú vị là _splay tree_, sử dụng phép xoay nút để chuyển bất kỳ nút nào lên trên gốc" - Skiena + - "Trong các loại cây nhị phân cân bằng, cây AVL và 2/3 đã "ra đi", và cây đỏ-đen (red-black) có vẻ khá phổ biến. Một dạng cây tự quản khá thú vị là _splay tree_, sử dụng phép xoay nút để chuyển bất kỳ nút nào lên trên gốc" - Skiena - Do đó, tôi quyết định cài đặt splay tree. Từ những gì tôi đọc được, bạn không cần phải cài đặt một cây nhị phân trong cuộc phỏng vấn. Nhưng tôi muốn chắc chắn về kiến thức của mình, và cũng phải đối diện với sự thật rằng splay tree khá khó. - splay tree: insert, search, delete functions - Nếu bạn muốn cài đặt cây đỏ-đen thì có thể thử sức các phép toán này: search and insertion functions, skipping delete - Tôi muốn học nhiều hơn về B-Tree, bởi vì nó được sử dụng rộng rãi với các tập dữ liệu rất lớn. - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - [ ] **AVL trees** - Trong thực tế: Từ những gì mà tôi đọc được, chúng không được sử dụng nhiều, nhưng tôi có thể nghĩ đến vài ứng dụng: cây AVL hỗ trợ O(log n) cho tìm kiếm, chèn và xóa nút. Nó được cân bằng một cách chặt chẽ hơn so với cây đỏ-đen, dẫn đến việc chèn và xóa chậm hơn, nhưng tìm kiếm sẽ nhanh hơn. Điều đó khiến nó thích hơp với các bộ dữ liệu được xây dựng một lần và tái sử dụng nhiều lần, ví dụ như từ diển trong ngôn ngữ thông thường (hoặc các bộ từ vựng trong lập trình, biên dịch) - - [ ] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) + - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - [ ] **Splay trees** - Trong thực tế: Splay tree được sử dụng để cài đặt cache, bộ cấp phát bộ nhớ, định tuyến, bộ dọn rác, trình nén dữ liệu, ropes (thay thế hoặc đại diện cho một chuỗi lớn), trong Windows NT (bộ nhớ ảo, mạng và hệ thống file.) - - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT Lecture: Splay Trees: + - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lecture: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) @@ -1716,43 +1726,44 @@ Bạn không bao giờ thực sự học xong! - Đây là một biến thể của cây 2/3 tree (xem bên dưới) - Trong thực tế: Cây Đỏ-đen đảm bảo tốc độ thực thi ok trong trường hợp xấu nhất cho các phép toán: chèn, xóa, tìm kiếm. Điều đó không chỉ khiến nó có giá trị trong các ứng dụng thời gian thực, mà còn là phần cơ bản đề xây dựng nhiều dạng cấu trúc dữ liệu nâng cao, ví dụ như, trong tính toán địa lý, nhiều cấu trúc dữ liệu được xây dựng dựa trên cây đỏ-đen, thuật toán Lập lịch tuyệt đối công bằng (Completely Fair Scheduler) sử dụng trong nhân Linux cũng dùng cây đỏ-đen. Trên Java 8, HashMap cũng được điều chỉnh lại, thay vi dùng LinkedList để chứa các phần tử giống nhau (trùng hashcode), nguời ta dùng một cây đỏ-đen. - - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) + - [Aduni - Algorithms - Lecture 4 (link jumps to the starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - [ ] **2-3 search trees** - Trong thực tế: - cây 2-3 chèn nhanh hơn, nhưng tìm kiêm chậm hơn (chiều cao của cây cao hơn so với AVL) + cây 2-3 chèn nhanh hơn, nhưng tìm kiếm chậm hơn (chiều cao của cây cao hơn so với AVL) - Bạn sẽ hiếm khi sử dụng cây 2-3, vì cài đặt của chúng sử dụng các dạng nút khác nhau. Vì vậy, người ta dùng cây đỏ-đen nhiều hơn. - - [ ] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [ ] **2-3-4 Trees (aka 2-4 trees)** - Trong thực tế: Với mỗi cây 2-4, có nhiều cây đỏ-đen tương ứng với cùng thứ tự nút. Phép chèn và xóa trên cây 2-4 cũng tương đương với phép đổi màu và xoay trên cây đỏ-đen. Nó khiến cho cây 2-4 trở thành một công cụ hiệu quả để hiểu được logic phía sau cây đỏ-đen, và đó là tại sao nhiều sách dẫn nhập thuật toán lại giới thiệu cây 2-4 trước cây đỏ-đen. **cây 2-4 không thường được dùng trong thực tế** - - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - [ ] **N-ary (K-ary, M-ary) trees** - chú ý: N hay K chính là yếu tố cho phân nhánh (số nhánh tối đa) - Cây nhị phân là 2-ary, trong đó, số nhánh tối đa (branching factor) là 2 - Cây 2-3 là 3-ary - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - [ ] **B-Trees** - fun fact: điều đó vẫn còn là một bí ẩn, nhưng B ở đây có thể là Boeing, Balanced (được cân bằng) hoặc Bayer (người đồng sáng tạo) - Trong thực tế: B-tree được sử dụng rộng rãi trong các cơ sở dữ liệu. Hầu hết các hệ thống file sử dụng B-tree (hoặc biến thể của nó). Thêm vào đó, loại cấu trúc cho phép truy cập ngẫu nhiên nhanh chóng vào một file bất kỳ. Vấn đề còn lại là điều chỉnh địa chỉ khổi vùng nhớ của file thành địa chỉ vật lý của ổ đĩa (hoặc địa chỉ _cylinder-head-sector_). (or perhaps to a cylinder-head-sector) address. - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) + - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - giải thích cache mau quên (cache-oblivious) B-Trees, một cấu trúc dữ liệu rất thú vị. - 37 phút đầu tiên rất nặng kỹ thuật, có thể bỏ qua - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) @@ -1761,46 +1772,49 @@ Bạn không bao giờ thực sự học xong! - ### k-D Trees - Tốt đề tìm số điểm nằm trong một hình chữ nhật hoặc một đối tượng đa chiều. - Rất thích hợp cho thuật toán tìm láng giềng gần nhất (k-nearest neighbors, một thuật toán trong khai thác dữ liệu) - - [ ] [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "Đó là một dạng cấu trúc dữ liệu được sùng bái" - Skiena - - [ ] [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) + - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Sự kết hợp giữa cây nhị phân và heap. - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - ### Linear Programming (videos) - - [ ] [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [ ] [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) + - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - ### Geometry, Convex hull (videos) - - [ ] [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - - Xem các video bên dưới + - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) + +--- - ### Machine Learning - [ ] Tại sao nên học ML? @@ -1828,205 +1842,183 @@ Bạn không bao giờ thực sự học xong! - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - Data School: http://www.dataschool.io/ -- ### Go - - [ ] Video: - - [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc) - - [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30) - - [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c) - - [ ] Sách: - - [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro) - - [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440) - - [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp) - -- ## Đọc thêm về một số đề tài    Tôi thêm những phần này để củng cố các kiến thức đã được trình bày ở trên, nhưng không muốn đưa chúng vào danh sách trên, vì đã quá nhiều rồi. Cũng có hơi vượt mức cần thiết. Nhưng dù sao, bạn muốn trúng tuyển mà phải không? -- [ ] **Union-Find** - - [ ] [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- [ ] **Đi sâu hơn vào quy hoạch động** (videos) - - [ ] [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [ ] [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) - -- [ ] **Xử lý đồ thị nâng cao** (videos) - - [ ] [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) - -- [ ] MIT **Xác suất** (nặng toán học, và hãy đi chậm chậm, sẽ tốt cho các vấn đề toán học khác) (videos): - - [ ] [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) - -- [ ] [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - -- [ ] **So khớp chuỗi** - - [ ] Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) +- **SOLID** + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | Clients should not be forced to implement interfaces they don't use + - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. + - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + + +- **Union-Find** + - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **Đi sâu hơn vào quy hoạch động** (videos) + - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **Xử lý đồ thị nâng cao** (videos) + - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **Xác suất** (nặng toán học, và hãy đi chậm chậm, sẽ tốt cho các vấn đề toán học khác) (videos): + - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **So khớp chuỗi** + - Rabin-Karp (videos): + - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] Knuth-Morris-Pratt (KMP): + - Knuth-Morris-Pratt (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer–Moore string search algorithm + - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - Khởi đầu khá tốt. Nhưng theo thời gian, khóa học đi qua thuật toán KMP, và trở nên phức tạp hơn mức cần thiết. - Trình bày về trie rất hay. - Có thể bỏ qua. -- [ ] **Sắp xếp** +- **Sắp xếp** - - [ ] Bài giảng của Stanford về sắp xếp: - - [ ] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [ ] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skiena lectures on sorting: - - [ ] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) + - Bài giảng của Stanford về sắp xếp: + - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Shai Simonson: + - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena lectures on sorting: + - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) -## Các chuỗi Video +- NAND To Tetris: [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) -Hãy ngồi xuống và thưởng thức. "Luyện kỹ năng với Netflix" :P - -- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - -- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) - -- [ ] [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +## Các chuỗi Video -- [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +Hãy ngồi xuống và thưởng thức. -- [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) +- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [Discrete Mathematics Part 1 by Sarada Herke (5 videos)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) -- [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [ ] [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [ ] [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [ ] [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [ ] [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) -- [ ] [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) +- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [ ] [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Các khóa học khoa học máy tính - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +## Algorithms implementation -- ### Các bài nghiên cứu +- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) + + +- ## Các bài nghiên cứu - Có nhiều bài nghiên cứu của Google và các bài nghiên cứu rất nổi tiếng. - Đọc hết các bài nghiên cứu tốn rất nhiều thời gian, tôi khuyên bạn nên chọn lọc theo đề tài cụ thể. - - [ ] [1978: Process giao tiếp tuần tự (1978: Communicating Sequential Processes)](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Triển khai với Go (implemented in Go)](https://godoc.org/github.com/thomas11/csp) - - [Yêu thích các nghiên cứu cũ (Love classic papers)?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [2003: Hệ thống tập tin của Google (2003: The Google File System)](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - thay thế bởi Colossus năm 2012 - - [ ] [2004: MapReduce: Đơn giản hóa xử lý dữ liệu trên phân vùng lớn (Simplified Data Processing on Large Clusters)]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - gần như bị thay thế bởi Cloud Dataflow? - - [ ] [2007: Những gì mà lập trình viên nên biết về bộ nhớ (rất dài, ngay cả tác giả cũng khuyến khích bỏ qua vài phần) (What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections))](https://www.akkadia.org/drepper/cpumemory.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - Bài nghiên cứu không tồn tại - - [ ] 2012: AddressSanitizer: Kiểm tra nhanh tính đúng đắn của địa chỉ (A Fast Address Sanity Checker): + +- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Process giao tiếp tuần tự (1978: Communicating Sequential Processes)](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Triển khai với Go (implemented in Go)](https://godoc.org/github.com/thomas11/csp) +- [2003: Hệ thống tập tin của Google (2003: The Google File System)](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - thay thế bởi Colossus năm 2012 +- [2004: MapReduce: Đơn giản hóa xử lý dữ liệu trên phân vùng lớn (Simplified Data Processing on Large Clusters)]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - gần như bị thay thế bởi Cloud Dataflow? +- [2006: Bigtable: Một Hệ thống Lưu trữ Phân tán cho Dữ liệu Cấu trúc](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: Dịch vụ Khóa Chubby cho Hệ thống Phân tán Kết nối Lỏng lẻo](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Key-value store Có khả năng Sẵn sàng cao của Amazon](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Bài báo Dynamo đã khởi đầu cho cuộc cách mạng NoSQL +- [2007: Những gì mà lập trình viên nên biết về bộ nhớ (rất dài, ngay cả tác giả cũng khuyến khích bỏ qua vài phần) (What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections))](https://www.akkadia.org/drepper/cpumemory.pdf) + - 2012: AddressSanitizer: Kiểm tra nhanh tính đúng đắn của địa chỉ (A Fast Address Sanity Checker): - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: + - 2013: Spanner: Google’s Globally-Distributed Database: - [Bài nghiên cứu](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Máy học: Lợi ích và những vấn đề cần tránh (Machine Learning: The High-Interest Credit Card of Technical Debt)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en/pubs/archive/43790.pdf) - - [ ] [2015: Sẵn sàng cho thay đổi lớn: Xây dựng hạ tầng dữ liệu của Google dành cho quảng cáo (High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads)](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: Tensorflow: Áp dụng máy học với dữ liệu lớn trên hệ thống phân tán tính toán song song (Large-Scale Machine Learning on Heterogeneous Distributed Systems)](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: Lập trình viên tìm code như thế nào: Một trường hợp điển hình (How Developers Search for Code: A Case Study)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - - - -## Papers - -- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) -- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) -- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 -- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? -- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution -- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) -- 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) -- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2014: Máy học: Lợi ích và những vấn đề cần tránh (Machine Learning: The High-Interest Credit Card of Technical Debt)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) +- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en/pubs/archive/43790.pdf) +- [2015: Sẵn sàng cho thay đổi lớn: Xây dựng hạ tầng dữ liệu của Google dành cho quảng cáo (High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads)](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Tensorflow: Áp dụng máy học với dữ liệu lớn trên hệ thống phân tán tính toán song song (Large-Scale Machine Learning on Heterogeneous Distributed Systems)](http://download.tensorflow.org/paper/whitepaper2015.pdf ) +- [2015: Lập trình viên tìm code như thế nào: Một trường hợp điển hình (How Developers Search for Code: A Case Study)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) From e39e7cf6ef3eac08c8a5b838762944fad5be33f2 Mon Sep 17 00:00:00 2001 From: Murat Can Sarkalkan Date: Mon, 4 Dec 2023 23:43:25 +0300 Subject: [PATCH 795/857] Update README-tr.md Translated few of the parts - more to come --- translations/README-tr.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/translations/README-tr.md b/translations/README-tr.md index cb240fc9a7..81f9c9f803 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1390,20 +1390,20 @@ Have a story, not just data, about something you accomplished. - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) -## Have questions for the interviewer - - Some of mine (I already may know answer to but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is work/life balance? +## Mülakatı yapan kişiye muhakkak sorularınız olsun + + Benim bazı sorularım (cevabını bilsem de onların görüşünü veya takımın bakış açısını isteyebilirim): + +- Takımınız kaç kişi? +- Geliştirici döngüsü nasıl? Waterfall/sprints/agile olarak mı çalışıyorsunuz? +- Teslim tarihlerine yetişmeye çalışma yaygın mıdır? Yoksa esneklik mevcut mu? +- Takımınızda kararlar nasıl verilir? +- Haftada kaç toplantınız oluyor? +- İş ortamınız odaklanmanıza yardımcı oluyor mu? +- Neyin üzerinde çalışıyorsunuz? +- İşinizle ilgili neyi seviyorsunuz? +- İş hayatı nasıldır? +- İş yaşam dengesi nasıldır? ## Once You've Got The Job From d3f558188591d60a54327e57ce993860dad2221b Mon Sep 17 00:00:00 2001 From: kamegoro Date: Sat, 16 Dec 2023 20:40:28 +0900 Subject: [PATCH 796/857] Complete migration of Japnanese translation update --- translations/README-ja.md | 1223 ++++++++++++++++++++----------------- 1 file changed, 653 insertions(+), 570 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index 386d907d75..ef2b0fad13 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1114,669 +1114,752 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ビデオ](https://www.youtube.com/@MichaelSambol) - [コード例](https://github.com/msambol/dsa) - [ ] [セッジウィック ビデオ - アルゴリズム I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [セッジウィック ビデオ - アルゴリズム II](https://www.coursera.org/learn/algorithms-part2) ) +- [ ] [セッジウィック ビデオ - アルゴリズム II](https://www.coursera.org/learn/algorithms-part2) --- -## コーディングの質問練習 - -上のすべてのコンピュータサイエンスのトピックを知ったので、コーディングの問題に答える練習をしましょう。 - -**コーディング質問の練習は、プログラミング問題への回答を記憶することではありません。** - -プログラミングの問題を練習する必要がある理由 -- 問題の認識、そして適切なデータ構造とアルゴリズムの適合 -- 問題のための要件を集める -- 面接であなたのように問題をあなたの方法で話している -- コンピュータではなく、ホワイトボードや紙でのコーディング -- ソリューションの時間と空間の複雑さが増す -- ソリューションのテスト - -面接では、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングの面接の本からもこれを手に入れるでしょうが、私はこの優れた発見しました: -[アルゴリズム設計キャンバス](http://www.hiredintech.com/algorithm-design/) - -自宅にホワイトボードはありませんか?それは理にかなっている。私は変わった人で、大きなホワイトボードを持っています。ホワイトボードの代わりに、 -アートストアから大きなドローイングパッドを拾い上げます。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。 -私はスケールの写真にペンを追加しました。ペンを使うと、あなたは消すことができます。すぐに厄介になる。 - -![私のソファホワイトボード](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) - -補足: - -- [Topcodersの数学](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [動的プログラミング - 初心者から上級者まで](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT面接資料](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - -**プログラミングの問題を読んでやる(この順番で):** - -- [ ] [プログラミング面接公開:あなたが次の仕事に着任する秘訣、第2版](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - C、C ++、Javaの回答 -- [ ] [コーディング面接をクラッキング、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Javaでの回答 - -[上記のブックリスト](#ブックリスト)を参照してください - -## コード演習/挑戦 - -あなたの脳を学んだら、脳を働かせてください。 -できるだけ多く、毎日コーディングの課題に取り組んでください。 - -- [ ] [解決策を見つける方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [Topcoderの問題を解読する方法](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) - -コーディング面接質問ビデオ: -- [IDeserve(88ビデオ)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy(5プレイリスト)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - -チャレンジサイト: -- [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [プロジェクトオイラー(Math-focused)](https://projecteuler.net/index.php?section=problems) -- [コードワード](http://www.codewars.com) -- [HackerEarth](https://www.hackerearth.com/) -- [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com) -- [Sphere(Sphere)](http://www.spoj.com/) - -チャレンジレポ: -- [Pythonでインタラクティブなコーディング面接の課題](https://github.com/donnemartin/interactive-coding-challenges) - -疑似面接: -- [Gainlo.co:大企業の疑似面接官](http://www.gainlo.co/#!/) -- [Pramp:仲間との面接](https://www.pramp.com/) -- [Refdash:疑似面接](https://refdash.com/) - -## 面接に近づいたら - -- [ ] クラッキングコーディング面接セット2(動画): - - [コード面接をクラッキングする](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [コード面接をクラックする - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - -## あなたの履歴書 - -- クラッキングでの準備項目の再開を参照してください。コーディング面接とプログラミング面接の公開 - - -## 面接が来たときに考えてください - -あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。 -それぞれ2-3の答えがあります。 -あなたが達成したことについての物語だけでなく、データを持ってください。 +## 履歴書を更新する + +- 書籍の履歴書準備情報を参照してください: 『コーディング面接の攻略』 「番組インタビュー暴露」 +- [「良い履歴書はこうあるべきだ」 Gayle McDowell (『Cracking thecoding Interview』の著者) 著](https://www.careercup.com/resume)、 + - 著者による注: 「これは米国に焦点を当てた履歴書用です。インドと他の国の履歴書では、多くの点は同じですが、期待される内容は異なります。」 +- [「ステップバイステップの履歴書ガイド」 by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - 履歴書を最初から設定し、効果的な履歴書の内容を作成し、最適化し、履歴書をテストする方法に関する詳細なガイド + +## 面接プロセスと面接一般的な面接の準備 + +- [ ] [2021 年のエンジニアリング面接に合格する方法](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [テクノロジー採用の謎を解く](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] ビッグ 4 に就職する方法: + - [ ] [ビッグ 4 で仕事を得る方法 - Amazon、Facebook、Google、およびMicrosoft (ビデオ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [Big 4.1 で仕事を得る方法 (フォローアップ ビデオ)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] コーディング インタビュー セット 1 を解読: + - [ ] [ゲイル L マクダウェル - コーディング インタビューのクラッキング (ビデオ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [著者ゲイル・ラークマン・マクダウェル氏のコーディングインタビューを解読 (ビデオ)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Facebook コーディングのインタビューを解読: + - [ ] [アプローチ](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [問題のチュートリアル](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- 準備コース: + - [データ構造、アルゴリズム、インタビューのための Python (有料コース)](https://www.udemy.com/python-for-data-structions-algorithms-and-interviews/): + - データ構造、アルゴリズム、模擬面接などをカバーする Python 中心の面接準備コース。 + - [Python を使用したデータ構造とアルゴリズムの紹介 (Udacity 無料コース)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - Python 中心のデータ構造とアルゴリズムの無料コース。 + - [【データ構造とアルゴリズムをナノレベルで解説! (Udacity 有料 Nanodegree)](https://www.udacity.com/course/data-structions-and-algorithms-nanodegree--nd256): + - 100 を超えるデータ構造とアルゴリズムの演習と、面接や実務シナリオの準備に役立つ専任のメンターからのガイダンスによる実践的な練習を行います。 + - [行動面接のグロッキング (無料教育コース)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - 多くの場合、夢の仕事に就くのを妨げているのは技術的能力ではなく、行動面接での成績です。 + - [AlgoMonster (無料コンテンツ付きの有料コース)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - LeetCode の短期集中コース。数千の質問から凝縮されたすべてのパターンを網羅。 + +模擬面接: +- [Gainlo.co: 大企業の面接官を模擬](http://www.gainlo.co/#!/) - これを使用したところ、電話での画面やオンサイトの面接に向けてリラックスするのに役立ちました +- [Pramp: ピアとの模擬面接](https://www.pramp.com/) - 面接を練習するためのピアツーピア モデル +- [interviewing.io: 上級エンジニアとの模擬面接の練習](https://interviewing.io) - FAANG の上級エンジニアとのアルゴリズム/システム設計匿名インタビュー +- [Meetapro: FAANG トップ面接官との模擬面接](https://meetapro.com/?utm_source=ciu) - Airbnb スタイルの模擬面接/コーチング プラットフォーム。 +- [Hello Interview: Expert Coaches and AI との模擬面接](https://www.hellointerview.com/?utm_source=ciu) - AI または FAANG スタッフのエンジニアやマネージャーと直接面接します。 + +## 面接が来るときのことを考えてください + +面接で聞かれる約 20 の質問と、以下の項目の内容を考えてください。それぞれに対して少なくとも 1 つの回答を用意してください。 +達成したことについて、単なるデータではなくストーリーを作成します。 - なぜあなたはこの仕事をしたいです? -- あなたが解決した厳しい問題は何ですか? -- 最大の課題に直面した? -- ベスト/最悪のデザインが見られる? -- 既存の製品を改善するためのアイデア。 -- 個人として、そしてチームの一員として、どのようにベストを尽くしていますか? -- あなたのスキルや経験のうち、その役割の資産とその理由は? -- [job x / project y]で一番楽しかったことは何ですか? -- [job x / project y]に直面した最大の課題は何ですか? -- [job x / project y]で直面した最も難しいバグは何でしたか? -- [job x / project y]で何を学びましたか? -- あなたは[job x / project y]で何を良くしていますか? +- あなたが解決した難しい問題は何ですか? +- 直面した最大の課題は何ですか? +- 見た中で最高/最悪のデザインは何ですか? +- 既存の製品を改善するためのアイデア +- 個人としても、チームの一員としても、どのようにすれば最も効果的に働くことができますか? +- あなたのスキルや経験のうち、その役割において資産となるものはどれですか、またその理由は何ですか? +- [ジョブ x / プロジェクト y] で一番楽しかったことは何ですか? +- [ジョブ x / プロジェクト y] で直面した最大の課題は何ですか? +- [ジョブ x / プロジェクト y] で直面した最も困難なバグは何ですか? +- [ジョブ x / プロジェクト y] で何を学びましたか? +- [ジョブ x / プロジェクト y] でもっと良くできたことは何ですか? ## 面接官に質問があります -    私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です): - -あなたのチームはどれくらいの規模ですか? -- あなたの開発サイクルはどのように見えるのですか?あなたはウォーターフォール/スプリント/アジャイルをしますか? -- 締め切りまでのフローは共通ですか?それとも柔軟性はありますか? -- あなたのチームではどのように意思決定が行われますか? -- 週に何回会議がありますか? -- あなたの仕事環境が集中するのに役立つと思いますか? -- 何をしているの? -- それについて何が好きですか? -- 仕事の生活はどうですか? +私の意見の一部 (答えはすでに知っているかもしれませんが、彼らの意見やチームの視点が欲しいです): + +- チームの規模はどれくらいですか? +- 開発サイクルはどのような感じですか?ウォーターフォール/スプリント/アジャイルをやっていますか? +- 締め切りに追われるのはよくあることですか?それとも柔軟性があるのでしょうか? +- チーム内での意思決定はどのように行われますか? +- 週に何回会議がありますか? +- 職場環境は集中力を高めますか? +-何に取り組んでいますか? +- 何が気に入っていますか? +- 仕事生活はどのような感じですか? - ワークライフバランスはどうですか? -## 一度あなたは仕事を得た +## 仕事に就いたら -おめでとう! +おめでとう! -学び続けてください。 +学び続けます。 -あなたは決して本当に終わらない。 +本当に終わったことはありません。 --- -    *************************************************** *************************************************** * -    *************************************************** *************************************************** * + ************************************************* ************************************************* * + ************************************************* ************************************************* * -    この点以下のものはすべてオプションです。 -    これらを勉強することで、より多くのCSコンセプトにさらされることになります。 -    任意のソフトウェアエンジニアリングジョブ。あなたはもっと豊富なソフトウェアエンジニアになるでしょう。 + これより下はすべてオプションです。初心者レベルの面接には必要ありません。 + ただし、これらを学習することで、より多くの CS 概念に詳しくなり、より適切な準備が整います。 + ソフトウェアエンジニアリングの仕事なら何でも。あなたは、より総合的なソフトウェア エンジニアになるでしょう。 -    *************************************************** *************************************************** * -    *************************************************** *************************************************** * + ************************************************* ************************************************* * + ************************************************* ************************************************* * --- - -## その他の書籍 - -- [ ] [Unixプログラミング環境](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=情報) - - 古き良き時代 -- [ ] [Linuxコマンドライン:完全な紹介](https://www.amazon.com/dp/1593273894/) - - 現代的な選択肢 -- [ ] [TCP / IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [ヘッドファーストデザインパターン](https://www.amazon.com/gp/product/0596007124/) - - デザインパターンへの穏やかな紹介 -- [ ] [デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - 別名「Gang Of Four」の本、またはGOF - - 正式なデザインパターンの本 -- [ ] [UNIXおよびLinuxシステム管理ハンドブック、第4版](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) - -## その他の学習 - -これらの話題は面接では出てこないかもしれませんが、 -特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 - -- [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) -- [ ] [日本語版:アルゴリズム設計マニュアル](https://www.amazon.co.jp/dp/4621085107) - - レビューと問題認識として - - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 - - この本は2パートに分かれます: - - データ構造とアルゴリズムに関する教科書 - - 長所: - - アルゴリズムの教科書はどんなものでも良いレビューです - - 業界および学界の問題を解決した経験から得た素敵な話 - - Cのコード例 - - 短所: - - Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります - - 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります - - 誤解しないで:私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。 - - アルゴリズムカタログ: - - これがあなたがこの本を買う本当の理由です。 - - この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。 - - Kindleで読むことが出来ます - - Half.comは教科書のための良いリソースです。 - - 回答: - - [ソリューション](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [ソリューション](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) +## 追加の書籍 + + これらは、興味のあるトピックに飛び込むことができるようにここにあります。 + +- [Unix プログラミング環境](https://www.amazon.com/dp/013937681X) + - 懐かしいけどおいしい +- [Linux コマンドライン: 完全な紹介](https://www.amazon.com/dp/1593273894/) + - 現代的なオプション +- [TCP/IP 図解シリーズ](https://en.wikipedia.org/wiki/TCP/IP_図解) +- [ヘッドファーストデザインパターン](https://www.amazon.com/gp/product/0596007124/) + - デザインパターンへの優しい入門書 +- [デザインパターン: 再利用可能なオブジェクト指向ソフトウェアの要素](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - 別名「ギャング・オブ・フォー」本またはGOF + - 正規のデザインパターンブック +- [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - 振り返りと問題認識として + - アルゴリズム カタログの部分は、面接で得られる難易度の範囲をはるかに超えています。 + - この本は 2 つの部分から構成されています。 + - データ構造とアルゴリズムに関する授業用教科書 + - 長所: + - アルゴリズムの教科書と同様に、良いレビューです + - 産業界や学界の問題を解決した彼の経験からの素敵な話 + - C でのコード例 + - 短所: + - CLRS と同じくらい高密度または透過不可能である可能性があり、場合によっては、一部の被験者にとっては CLRS の方が優れた代替手段になる可能性があります。 + - 第 7 章、第 8 章、および第 9 章は、いくつかの項目が十分に説明されていなかったり、私よりも多くの頭を必要としたりするため、理解しようとすると苦痛になる可能性があります。 + - 誤解しないでください。私はスキエナと彼の教え方、マナーが好きですが、ストーニー ブルックの材料ではないかもしれません。 + - アルゴリズムカタログ: + - これがこの本を購入する本当の理由です。 + - この本はアルゴリズムのリファレンスとして優れており、最初から最後まで読むものではありません。 + - Kindleでレンタルできる + - 答え: + - [ソリューション](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - [正誤表](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - -- [ ] [アルゴリズムイントロダクション](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) -- [ ] [日本語版:アルゴリズムイントロダクション](https://www.amazon.co.jp/dp/B078WPYHGN/) - - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 - - Half.comは、良い価格で教科書のための素晴らしいリソースです。 - - スタインはゲームに遅れていたので、別名CLR、ときにはCLRSと呼ばれている - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 -      これはプログラムの設計とアーキテクチャに関するガイドブックです。 - これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 - -- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ - - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 - - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう - +- [アルゴリズム](http://jeffe.cs.illinois.edu/teaching/algorithms/) (ジェフ エリクソン) +- [素晴らしいコードを書く: 第 1 巻: マシンを理解する](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - この本は 2004 年に出版されており、やや古いですが、コンピュータを簡単に理解するのに最適なリソースです。 + - 著者は [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly) を発明したものであるため、HLA での言及と例については、話半分に聞いてください。広く使用されていませんが、アセンブリがどのようなものかを示す適切な例 + - これらの章は、優れた基礎を築くために読む価値があります。 + - 第 2 章 - 数値表現 + - 第 3 章 - 2 進数演算とビット演算 + - 第 4 章 - 浮動小数点表現 + - 第 5 章 - キャラクター表現 + - 第 6 章 - メモリの構成とアクセス + - 第 7 章 - 複合データ型とメモリ オブジェクト + - 第 9 章 - CPU アーキテクチャ + - 第 10 章 - 命令セットのアーキテクチャ + - 第 11 章 - メモリのアーキテクチャと構成 +- [アルゴリズム入門](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造についての優れたレビューですが、優れたコードの書き方については教えてくれません。適切なソリューションを効率的にコーディングできなければなりません + - スタインがゲームに遅刻したため、別名 CLR、場合によっては CLRS +- [コンピュータ アーキテクチャ、第 6 版: 定量的アプローチ](https://www.amazon.com/dp/0128119055) + - より充実した、より最新の (2017) が、より長い治療期間を必要とする場合 + +## システム設計、スケーラビリティ、データ処理 + +**4 年以上の経験がある場合は、システム設計に関する質問が予想されます。** + +- スケーラビリティとシステム設計は、多くのトピックとリソースを含む非常に大きなトピックです。 + 拡張可能なソフトウェア/ハードウェア システムを設計する際には、考慮すべきことがたくさんあります。 + これにはかなりの時間を費やすことが予想されます +- 考慮事項: + - スケーラビリティ + - 大きなデータセットを単一の値に抽出します + - あるデータセットを別のデータセットに変換する + - 異常に大量のデータを扱うこと + - システムデザイン + - 機能セット + - インターフェース + - クラス階層 + - 特定の制約の下でシステムを設計する + - シンプルさと堅牢性 + - トレードオフ + - パフォーマンスの分析と最適化 +- [ ] **ここから始めてください**: [システム設計入門](https://github.com/donnemartin/system-design-primer) +- [ ] [HiredInTech のシステム設計](http://www.hiredintech.com/system-design/) +- [ ] [技術面接で設計に関する質問に答える準備はどのようにすればよいですか?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [システム設計面接に合格するための 8 つのステップ ガイド](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) +- [ ] [データベースの正規化 - 1NF、2NF、3NF、および 4NF (ビデオ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [システム設計インタビュー](https://github.com/checkcheckzz/system-design-interview) - これには多くのリソースがあります。記事と例を確認してください。その一部を以下に載せておきます +- [ ] [システム設計面接に合格する方法](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [誰もが知っておくべき数字](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-Should-know/) +- [ ] [コンテキストスイッチを行うのにどのくらい時間がかかりますか?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [データセンター間のトランザクション (ビデオ)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [CAP 定理のわかりやすい英語の紹介](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: 分散システム、2020 年春 (ビデオ 20 本)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] コンセンサスアルゴリズム: + - [ ] Paxos - [Paxos 契約 - コンピューター愛好家 (ビデオ)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [Raft 分散型コンセンサス アルゴリズムの概要 (ビデオ)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [読みやすい論文](https://raft.github.io/) + - [ ] [インフォグラフィック](http://thesecretlivesofdata.com/raft/) +- [ ] [一貫したハッシュ](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL パターン](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] スケーラビリティ: + - これらすべてが必要なわけではありません。興味のあるものをいくつか選んでください。 + - [ ] [素晴らしい概要 (ビデオ)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] 短編シリーズ: + - [クローン](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) + - [ ] [スケーラブルな Web アーキテクチャと分散システム](http://www.aosabook.org/en/distsys.html) + - [ ] [分散コンピューティングの誤った説明](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [Jeff Dean - Google でのソフトウェア システムの構築と得られた教訓 (ビデオ)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [大規模なシステムの設計入門](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [App Engine と Cloud Datastore を使用してモバイル ゲームを世界中の視聴者に拡張する (ビデオ)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Google が地球規模のインフラ向けに惑星規模のエンジニアリングを行う方法 (ビデオ)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [アルゴリズムの重要性](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [シャーディング](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [長期戦に向けたエンジニアリング - アストリッド アトキンソン基調講演 (ビデオ)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [30 分でわかる YouTube のスケーラビリティに関する 7 年間のレッスン](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [ビデオ](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [PayPal がわずか 8VM を使用して毎日数十億のトランザクションに拡張した方法](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [大規模なデータセット内の重複を削除する方法](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [Jon Cowie による Etsy の規模とエンジニアリング文化の内部を見る (ビデオ)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [Amazon を独自のマイクロサービス アーキテクチャに導いたもの](http://thenewstack.io/led-amazon-microservices-architecture/) + - [ ] [圧縮するかしないか、それは Uber の質問でした](https://eng.uber.com/trip-data-squeeze/) + - [ ] [近似クエリ処理はどのような場合に使用する必要がありますか?](http://highscalability.com/blog/2016/2/25/when-Should-estimate-query-processing-be-used.html) + - [ ] [単一データセンターからフェイルオーバー、ネイティブ マルチホーム アーキテクチャへの Google の移行]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) + - [ ] [1 日に何百万ものリクエストに対応する画像最適化テクノロジー](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) + - [ ] [Patreon アーキテクチャの短編](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [Tinder: 最大規模のレコメンデーション エンジンの 1 つは、次に会う人をどのように決定しますか?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-最大の推奨エンジンのde.html) + - [ ] [最新のキャッシュの設計](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [Facebook 規模のライブ ビデオ ストリーミング](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [Amazon の AWS で 1,100 万人以上のユーザーに拡張するための初心者ガイド](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-amazons.htmlで1,100万ユーザーに拡大) + - [ ] [Netflix スタック全体の 360 度ビュー](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html ) + - [ ] [レイテンシはどこにでも存在し、売上にコストがかかります - それを解消する方法](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [Instagram を動かすもの: 数百のインスタンス、数十のテクノロジー](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hunreds-of-instances) + - [ ] [Salesforce アーキテクチャ - 1 日あたり 13 億トランザクションを処理する方法](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) + - [ ] [ESPN の大規模なアーキテクチャ - 毎秒 100,000 Duh Nuh Nuhs で動作](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] 「メッセージング、シリアル化、およびキュー システム」を参照してください。サービスを結合できるいくつかのテクノロジーについては、以下を参照してください。 + - [ ] ツイッター: + - [O'MySQL CE 2011: Jeremy Cole、「@Twitter におけるビッグ データとスモール データ」」 (ビデオ)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [大規模なタイムライン](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - さらに詳しくは、「大規模なデータセットのマイニング」を参照してください。 [ビデオ シリーズ](#video-series) セクションのビデオ シリーズ +- [ ] システム設計プロセスの練習: ここでは、紙の上で取り組んでみるいくつかのアイデアを示します。それぞれのアイデアには、現実世界でどのように処理されたかについてのドキュメントが含まれています。 + - レビュー: [システム設計入門](https://github.com/donnemartin/system-design-primer) + - [HiredInTech のシステム設計](http://www.hiredintech.com/system-design/) + - [チートシート](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - 流れ: + 1. 問題と範囲を理解します。 + - 面接官の助けを借りてユースケースを定義する + - 追加機能を提案する + - 面接官が範囲外と判断した項目は削除します。 + - 高可用性が必要であると想定し、ユースケースとして追加します + 2. 制約について考えます。 + - 月あたりのリクエスト数を尋ねる + - 1 秒あたりのリクエスト数を尋ねます (ボランティアで依頼したり、計算させたりすることもあります) + - 読み取りと書き込みの割合を見積もる + - 見積もりの​​際は 80/20 ルールを念頭に置いてください + - 1秒あたりに書き込まれるデータ量 + - 5 年間に必要な合計ストレージ + - 1秒あたりに読み取られるデータ量 + 3. 抽象的なデザイン: + - レイヤー (サービス、データ、キャッシュ) + - インフラストラクチャ: 負荷分散、メッセージング + - サービスを推進する主要なアルゴリズムの大まかな概要 + - ボトルネックを検討し、解決策を決定します + - 演習: + - [ランダムな固有 ID 生成システムを設計する](https://blog.twitter.com/2010/payment-snowflake) + - [キーと値のデータベースを設計する](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [写真共有システムを設計する](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [推奨システムの設計](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [URL 短縮システムの設計: 上記からコピー](h​​ttp://www.hiredintech.com/system-design/the-system-design-process/) + - [キャッシュ システムの設計](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## 追加の学習 + + これらは、あなたが総合的なソフトウェア エンジニアになるのに役立ち、次の点に注意するために追加しました。 + テクノロジーとアルゴリズムを活用できるため、より大きなツールボックスが手に入ります。 - ### コンパイラ - - [ ] [1分でコンパイラがどのように動作するか(動画)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [ ] [Harvard CS50 - コンパイラ(動画)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [ ] [C ++(video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [ ] [コンパイラの最適化について(C ++)(動画)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- ### Emacsとvi(m) - - UNIXベースのコードエディタに慣れましょう - - vi(m): - - [vim 01での編集 - インストール、設定、およびモード(動画)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) - - 4ビデオのセット: - - [vi / vimエディタ - レッスン1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [vi / vimエディタ - レッスン2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [vi / vimエディター - レッスン3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [vi / vimエディタ - レッスン4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Emacsの代わりにViを使う](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - emacs: - - [基本Emacsチュートリアル(動画)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - 3つのセット(動画): - - [Emacsチュートリアル(初心者向け) - 第1部 - ファイルコマンド、カット/コピー/ペースト、カーソルコマンド](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacsチュートリアル(初心者向け) - パート2 - バッファ管理、検索、M-grep、rgrepモード](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacsチュートリアル(初心者) - 第3章式、ステートメント、〜/ .emacsファイルとパッケージ](https://www.youtube.com/watch?v=paSgzPso-yc) - - [邪悪なモード:または、私がEmacsを気絶させ、愛する方法(動画)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [EmacsでCプログラムを書く](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [(多分)組織モードの詳細:構造の管理(動画)](https://www.youtube.com/watch?v=nsGYet02bEk) - -- ### Unixコマンドラインツール - - 私は良いツールから下のリストに記入しました。 - - [ ] bash - - [ ] cat - - [ ] grep - - [ ] sed - - [ ] awk - - [ ] カールまたはwget - - [ ] ソート - - [ ] tr - - [ ] uniq - - [ ] [strace](https://en.wikipedia.org/wiki/Strace) - - [ ] [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### 情報理論(動画) - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - [ ] Markovプロセスの詳細: - - [ ] [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [ ] [Markov Text Generationを実装するコア](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [ ] [プロジェクト=マルコフテキスト生成ウォークスルー](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs) - - 下記のMIT 6.050J Information and Entropyシリーズを参照してください。 - -- ### パリティ&ハミングコード(動画) - - [ ] [イントロ](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [ ] [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - [ ] ハミングコード: + - [約 1 分でわかるコンパイラーの仕組み (ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [ハーバード CS50 - コンパイラー (ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (ビデオ)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [コンパイラの最適化を理解する (C++) (ビデオ)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs と vi(m) + - UNIX ベースのコード エディターに慣れる + - ヴィ(男): + - [Vim による編集 01 - インストール、セットアップ、およびモード (ビデオ)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM アドベンチャー](http://vim-adventures.com/) + - 4 つのビデオのセット: + - [vi/vim エディター - レッスン 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [vi/vim エディタ - レッスン 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [vi/vim エディター - レッスン 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [vi/vim エディター - レッスン 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Emacs の代わりに Vi を使用する](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [基礎 Emacs チュートリアル (ビデオ)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3 個セット (ビデオ): + - [Emacs チュートリアル (初心者向け) -その 1- ファイルコマンド、カット/コピー/ペースト、カーソルコマンド](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs チュートリアル (初心者向け) -パート 2- バッファ管理、検索、M-x grep および rgrep モード](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs チュートリアル (初心者向け) -パート 3- 式、ステートメント、~/.emacs ファイル、およびパッケージ](https://www.youtube.com/watch?v=paSgzPso-yc) + - [悪のモード: あるいは、心配をやめて Emacs を愛する方法を学んだ方法 (ビデオ)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Emacs を使用した C プログラムの作成](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [Emacs の完全初心者ガイド (David Wilson によるビデオ)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [Emacs の完全初心者ガイド (David Wilson によるメモ)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### Unix コマンドライン ツール + - 優れたツールから以下のリストを記入しました。 + - バッシュ + - 猫 + - grep + - セド + - ああ + - カールまたはウィジェット + - 選別 + - tr + - ユニーク + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### 情報理論 (ビデオ) + - [カーンアカデミー](https://www.khanacademy.org/computing/computer-science/informationtheory) + - マルコフ過程の詳細: + - [コアマルコフテキスト生成](https://www.coursera.org/learn/data-structions-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [マルコフ テキスト生成のコア実装](https://www.coursera.org/learn/data-structors-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [プロジェクト = マルコフ テキスト生成ウォークスルー](https://www.coursera.org/learn/data-structions-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - 詳細については、以下の MIT 6.050J 情報とエントロピー シリーズを参照してください。 + +- ### パリティとハミングコード (ビデオ) + - [紹介](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [パリティ](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - ハミングコード: - [エラー検出](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) + - [誤り訂正](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### エントロピー - - 下記の動画もご覧ください - - 最初に情報理論ビデオを見てください - - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(動画)](https://youtu.be/JnJq3Py0dyM?t=176) + - 以下のビデオもご覧ください + - 最初に情報理論のビデオを必ず視聴してください + - [情報理論、クロード シャノン、エントロピー、冗長性、データ圧縮とデータ圧縮ビッツ(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) - ### 暗号化 - - 下記の動画もご覧ください - - 最初に情報理論ビデオを見てください - - [ ] [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [ ] [暗号化:ハッシュ関数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [ ] [暗号化:暗号化](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - 以下のビデオもご覧ください + - 最初に情報理論のビデオを必ず視聴してください + - [カーン アカデミー シリーズ](https://www.khanacademy.org/computing/computer-science/cryptography) + - [暗号化: ハッシュ関数](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [暗号化: 暗号化](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### 圧縮 - - 最初に情報理論ビデオを見てください - - [ ] Computerphile(動画): - - [ ] [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [ ] [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [ ] [上向きの木(ハフマン木)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [ ] [エキストラビット/ TRITS - ハフマン木](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [ ] [テキストのエレガントな圧縮(LZ 77方式)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [ ] [テキスト圧縮が確率を満たす](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [ ] [(オプション)Google Developers Live:GZIPでは不十分です!](https://www.youtube.com/watch?v=whGwm0Lky2s) + - 最初に情報理論のビデオを必ず視聴してください + - コンピューターマニア (ビデオ): + - [圧縮](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [圧縮におけるエントロピー](h​​ttps://www.youtube.com/watch?v=M5c_RFKVkko) + - [逆さまの木 (ハフマンの木)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [おまけ/トリッツ - ハフマン ツリー](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [テキストのエレガントな圧縮 (LZ 77 メソッド)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [テキスト圧縮と確率の両立](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [コンプレッサーヘッドビデオ](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(オプション) Google Developers Live: GZIP だけでは十分ではありません!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### コンピュータセキュリティ - - [MIT(23ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [はじめに、脅威モデル](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [ハイジャック攻撃の制御](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [ ] [バッファオーバーフローの悪用と防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [ ] [特権の分離](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [機能](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [サンドボックス化ネイティブコード](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [ ] [ウェブセキュリティモデル](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [Webアプリケーションの保護](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [シンボリック実行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [ネットワークセキュリティ](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [ネットワークプロトコル](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [ ] [サイドチャネル攻撃](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### ガベージコレクション - - [ ] [ガベージコレクション(Java);データの拡張(動画)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) - - [ ] [コンパイラ(動画)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) - - [ ] [GC in Python(video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [ ] [ディープダイブJava:ガーベッジコレクションは良いです!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [ ] [Deep Dive Python:CPythonでのガベージコレクション(動画)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### パラレルプログラミング - - [ ] [Coursera(Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [ ] [高性能並列計算のための効率的なPython(動画)](https://www.youtube.com/watch?v=uY85GkaYzBk) - -- ### メッセージング、シリアライゼーション、およびキューイングシステム - - [ ] [Thrift](https://thrift.apache.org/) - - [チュートリアル](http://thrift-tutorial.readthedocs.io/ja/latest/intro.html) - - [ ] [プロトコルバッファ](https://developers.google.com/protocol-buffers/) + - [MIT (23 ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [概要、脅威モデル](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [コントロールハイジャック攻撃](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [バッファ オーバーフローの悪用と防御](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [権限の分離](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [機能](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [サンドボックス ネイティブ コード](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [Web セキュリティ モデル](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [Web アプリケーションの保護](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [シンボリック実行](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ネットワーク セキュリティ](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [ネットワーク プロトコル](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [サイドチャネル攻撃](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### ガベージ コレクション + - [Python での GC (ビデオ)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [Java の詳細: ガベージ コレクションは優れています!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [Python の詳細: CPython のガベージ コレクション (ビデオ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### 並列プログラミング + - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) + - [高性能並列コンピューティングのための効率的な Python (ビデオ)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### メッセージング、シリアル化、およびキューイング システム + - [スリフト](https://thrift.apache.org/) + - [チュートリアル](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [プロトコル バッファ](https://developers.google.com/protocol-buffers/) - [チュートリアル](https://developers.google.com/protocol-buffers/docs/tutorials) - - [ ] [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers(video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [ ] [Redis](http://redis.io/) + - [gRPC](http://www.grpc.io/) + - [Java 開発者のための gRPC 101 (ビデオ)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) - [チュートリアル](http://try.redis.io/) - - [ ] [Amazon SQS(キュー)](https://aws.amazon.com/sqs/) - - [ ] [Amazon SNS(pub-sub)](https://aws.amazon.com/sns/) - - [ ] [RabbitMQ](https://www.rabbitmq.com/) - - [はじめに](https://www.rabbitmq.com/getstarted.html) - - [ ] [Celery](http://www.celeryproject.org/) - - [セロリの最初のステップ](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ ] [ZeroMQ](http://zeromq.org/) - - [イントロ - マニュアルを読む](http://zeromq.org/intro:read-the-manual) - - [ ] [ActiveMQ](http://activemq.apache.org/) - - [ ] [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [ ] [MessagePack](http://msgpack.org/index.html) - - [ ] [Avro](https://avro.apache.org/) - -- ### A * - - [ ] [検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [ ] [A * Pathfinding Tutorial(video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [ ] [A *経路探索(E01:アルゴリズムの説明)(動画)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [Amazon SQS (キュー)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [はじめる](https://www.rabbitmq.com/getstarted.html) + - [セロリ](http://www.celeryproject.org/) + - [Celery を使用した最初のステップ](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [はじめに - マニュアルを読む](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [メッセージパック](http://msgpack.org/index.html) + - [アブロ](https://avro.apache.org/) + +- ### A* + - [検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Pathfinding (E01: アルゴリズムの説明) (ビデオ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### 高速フーリエ変換 - - [ ] [フーリエ変換のインタラクティブガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [ ] [フーリエ変換とは何ですか?それは何のために使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [ ] [フーリエ変換とは何ですか? (動画)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [ ] [Divide&Conquer:FFT(動画)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ ] [FFTの理解](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + - [フーリエ変換の対話型ガイド](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [フーリエ変換とは何ですか?それは何に使われますか?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [フーリエ変換とは何ですか? (ビデオ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [分割&分割 制覇: FFT (ビデオ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [FFT を理解する](http://jakevdp.github.io/blog/2013/08/28/Understanding-the-fft/) - ### ブルームフィルター - - mビットとkハッシュ関数を持つBloomフィルタが与えられた場合、挿入とメンバーシップの両方のテストはO(k) - - [Bloom Filters](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [ブルームフィルター|大規模なデータセットのマイニング|スタンフォード大学](https://www.youtube.com/watch?v=qBTdukbzc78) + - m ビットと k 個のハッシュ関数を持つブルーム フィルターを指定すると、挿入テストとメンバーシップ テストの両方が O(k) になります。 + - [ブルームフィルター (ビデオ)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [ブルームフィルター |大規模なデータセットのマイニング |スタンフォード大学 (ビデオ)](https://www.youtube.com/watch?v=qBTdukbzc78) - [チュートリアル](http://billmill.org/bloomfilter-tutorial/) - - [Bloom Filter Appを書く方法](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + - [ブルーム フィルター アプリの書き方](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) -- ### HyperLogLog - - [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) +- ### ハイパーログログ + - [わずか 1.5KB のメモリを使用して 10 億個の異なるオブジェクトを数える方法](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) -- ### 局所性に敏感なハッシング - - ドキュメントの類似性を判断するために使用されます。 - - 2つの文書/文字列がまったく同じかどうかを判断するために使用されるMD5またはSHAの反対。 - - [Simhashing(うまくいけば)シンプルに](http://ferd.ca/simhashing-hopefully-made-simple.html) +- ### 局所性を考慮したハッシュ + - 文書の類似性を判断するために使用されます + - 2 つのドキュメント/文字列がまったく同じかどうかを判断するために使用される MD5 または SHA の逆です。 + - [Simhashing (できれば) シンプルに](http://ferd.ca/simhashing-hopefull-made-simple.html) -- ### ヴァンEmde Boasの木 - - [Divide&Conquer:van Emde Boas Trees(動画)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [ ] [MIT講義ノート](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) +- ### ファン・エムデ・ボアスの木 + - [分割&分割 征服: ファン エムデ ボアスの木 (ビデオ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT 講義ノート](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) - ### 拡張データ構造 - - [ ] [CS 61B講義39:データ構造の拡張](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) - -- ### バランスの取れた検索木 - - 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている): - - "バランスの取れた探索木の​​中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。 -        特に興味深い自己組織化データ構造は、スプレイ木であり、回転を使用します -        アクセスされたキーをルートに移動する」 - Skiena -    これらのうち、私はスプレイ木を実装することを選択しました。私が読んだことから、あなたは -        あなたの面接でバランスの取れた検索木。しかし、私は1つのコーディングへの露出を望んでいた -        そしてそれに直面しましょう、スプレーの木はミツバチの膝です。私は赤黒の木のコードをたくさん読んだ。 - - スプレイ木:挿入、検索、削除機能 -        あなたが赤/黒の木の実装を終わらせるならば、これらを試してみてください: - - 検索と挿入機能、削除をスキップする -    B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。 - - [ ] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - [ ] **AVL木** -        - 実際には: -            私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。 -            AVL木は、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に -            赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより -            一度構築され、再構成なしでロードされる、例えば言語 -            辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。 - - [ ] [MIT AVL Trees / AVL Sort(動画)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [ ] [AVL木(動画)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [ ] [AVL木実装(動画)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [ ] [スプリットアンドマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - - - [ ] **スプレッド木** -        - 実際には: -            スプレイ・木は、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、 -            データ圧縮、ロープ(長いテキスト文字列に使用される文字列の置換)、Windows NT(仮想メモリ、 -            ネットワークおよびファイルシステムコードなど) - - [ ] [CS 61B:Splay Trees(video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) - - [ ] MIT講義:Splay Trees: - - 非常にマッシーになりますが、最後の10分を確かめてください。 - - [動画](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - [ ] **レッド/ブラックの木** - - これらは2-3木の翻訳です(下記参照) -        - 実際には: -            赤黒の木は、挿入時間、削除時間、および検索時間に対して最悪の場合の保証を提供します。 -            これは、リアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、これらを貴重なものにするだけでなく、 -            それは最悪の場合の保証を提供する他のデータ構造における貴重なビルディングブロックになります。 -            例えば、計算幾何学で使用される多くのデータ構造は赤黒の木に基づくことができ、 -            現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒の木を使用します。 Javaのバージョン8では、 -            Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに -            ハッシュコードでは、赤黒の木が使用されます。 - - [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(動画)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - アルゴリズム - 講義5(動画)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [ ] [黒い木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [ ] [バイナリサーチとレッドブラック木の紹介](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) - - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - -- [ ] **2-3の検索木** - - 実際には: -            2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。 - - 2-3の木は非常にまれにしか使用しませんが、実装にはさまざまなタイプのノードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。 - - [ ] [23木の直感と定義(動画)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [ ] [23-Treeのバイナリビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [2-3木(学生の暗唱)(動画)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - [ ] **2-3-4木(別名2-4木)** -        - 実際には: -            すべての2-4木には、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除 -            2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を -            赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、 -            2〜4本の木は実用的ではありません**。 - - [ ] [CS 61B講義26:バランスの取れた検索木(動画)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) - - [ ] [ボトムアップ234-Trees(動画)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [トップダウン234木(動画)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - [ ] **N-ary(K-ary、M-ary)木** - - 注記:NまたはKは分岐因子(最大分岐)であり、 - - 2分木は2分木であり、分岐因子= 2 - - 2-3本の木は3本である - - [ ] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - - [ ] **B-Tree** - - 楽しい事実:それは謎ですが、Bはボーイング、バランスの取れた、またはバイエル(共同発明家)のために立つことができます。 -        - 実際には: -            B木はデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて -            B木はファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします -            特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです -            (またはおそらくシリンダーヘッドセクターへの)アドレスである。 - - [ ] [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [ ] [B木(動画)の紹介](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [ ] [B木の定義と挿入(動画)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [B木削除(動画)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [MIT 6.851 - メモリ階層モデル(動画)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - キャッシュに気付かないB木、非常に興味深いデータ構造 - - 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです) - - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) - - -- ### k-D木 - - 矩形または高次元のオブジェクトの点数を見つけるのに最適 - - k最近接の隣人に適している - - [ ] [Kd Trees(動画)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [ ] [kNN K-d木アルゴリズム(動画)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [CS 61B 講義 39: データ構造の拡張](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### バランスのとれた検索ツリー + - 少なくとも 1 つのタイプのバランスのとれたバイナリ ツリーを知っています (そして、それがどのように実装されているかを知っています): + - 「バランスの取れた検索ツリーの中で、AVL と 2/3 ツリーは時代遅れになり、赤黒ツリーの方が人気があるようです。」 + 特に興味深い自己組織化データ構造は、回転を使用するスプレイ ツリーです。 + アクセスされたキーをルートに移動します。」 - スキエナ + - このうち、私はスプレイツリーを実装することにしました。私が読んだ限りでは、 + インタビューでのバランスの取れた検索ツリー。しかし、コーディングをもう一段階体験したかったのです + はっきり言って、枝分かれした木はミツバチの膝です。赤黒ツリーのコードをたくさん読みました + - スプレイツリー: 挿入、検索、削除機能 + 赤/黒のツリーを実装することになった場合は、次のことを試してください。 + - 検索および挿入機能、削除のスキップ + - B-Tree は非常に大規模なデータセットで広く使用されているため、B-Tree について詳しく知りたい + - [自己平衡二分探索木](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) + + - **AVL ツリー** + - 実際には: + 私の知る限り、これらは実際にはあまり使用されていませんが、どのような場所にあるのかはわかりました。 + AVL ツリーは、O(log n) の検索、挿入、削除をサポートする別の構造です。より厳格です + 赤黒の木よりもバランスが取れているため、挿入と削除は遅くなりますが、取得は速くなります。これでできます + 言語など、一度構築すれば再構築せずにロードできるデータ構造にとって魅力的 + 辞書 (またはアセンブラやインタプリタのオペコードなどのプログラム辞書) + - [MIT AVL ツリー / AVL ソート (ビデオ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL ツリー (ビデオ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL ツリーの実装 (ビデオ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [分割とマージ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[レビュー] 19 分でわかる AVL ツリー (プレイリスト) (ビデオ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) + + - **スプレーツリー** + - 実際には: + スプレイ ツリーは通常、キャッシュ、メモリ アロケータ、ルーター、ガベージ コレクター、 + データ圧縮、ロープ (長いテキスト文字列に使用される文字列の置換)、Windows NT (仮想メモリ内、 + ネットワークおよびファイル システム コード) など + - [CS 61B: スプレイ ツリー (ビデオ)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT 講義: スプレー ツリー: + - 非常に数学的になりますが、最後の 10 分を必ず見てください。 + - [ビデオ](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **赤/黒の木** + - これらは 2-3 ツリーの翻訳です (下記を参照)。 + - 実際には: + 赤黒ツリーは、挿入時間、削除時間、および検索時間について最悪の場合の保証を提供します。 + これにより、リアルタイム アプリケーションなどの時間に敏感なアプリケーションで価値が高まるだけでなく、 + しかし、それは、最悪の場合の保証を提供する他のデータ構造の貴重な構成要素になります。 + たとえば、計算幾何学で使用される多くのデータ構造は、赤黒ツリーに基づくことができます。 + 現在の Linux カーネルで使用されている Completely Fair Scheduler は、赤黒ツリーを使用します。 Java のバージョン 8 では、 + コレクション ハッシュマップは、LinkedList を使用する代わりに、同じ要素を低品質で保存するように変更されました。 + ハッシュコード、赤黒ツリーが使用されます + - [Aduni - アルゴリズム - レクチャー 4 (リンクは開始点にジャンプします) (ビデオ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - アルゴリズム - レクチャー 5 (ビデオ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [赤黒の木](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [二分探索と Red Black Tree の概要](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[レビュー] 30 分でわかる Red-Black Trees (プレイリスト) (ビデオ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) + + - **2-3 検索ツリー** + - 実際には: + 2 ~ 3 個のツリーでは、検索は遅くなりますが、挿入は高速になります (AVL ツリーと比較して高さが高いため)。 + - 実装にはさまざまなタイプのノードが含まれるため、2 ~ 3 個のツリーを使用することはほとんどありません。代わりに、人々は赤黒の木を使います。 + - [23 ツリーの直感と定義 (ビデオ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23 ツリーのバイナリ ビュー](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 Trees (学生朗読) (ビデオ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + + - **2-3-4 ツリー (別名 2-4 ツリー)** + - 実際には: + 2 ~ 4 個のツリーごとに、同じ順序でデータ要素を持つ対応する赤と黒のツリーがあります。挿入と削除 + 2 ~ 4 個のツリーに対する操作は、赤黒ツリーの色の反転と回転にも相当します。これにより、2 ~ 4 本の木が作成されます。 + これは、赤黒ツリーの背後にあるロジックを理解するための重要なツールであり、これが、多くのアルゴリズム入門書で紹介されている理由です。 + **実際には 2 ~ 4 本の木はあまり使用されません**が、赤黒の木の直前に 2 ~ 4 本の木。 + - [CS 61B レクチャー 26: バランスのとれた検索ツリー (ビデオ)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (ビデオ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [トップダウン 234-Trees (ビデオ)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N 配列 (K 配列、M 配列) ツリー** + - 注: N または K は分岐係数 (最大分岐) です。 + - 二分木は、分岐係数 = 2 の 2 分木です。 + - 2 ~ 3 本の木は 3 分木です + - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) + + - **B ツリー** + - 面白い事実: それは謎ですが、B はボーイング、バランスド、またはバイエル (共同発明者) を表す可能性があります。 + - 実際には: + B ツリーはデータベースで広く使用されています。最新のファイルシステムのほとんどは B ツリー (またはバリアント) を使用します。に加えて + B ツリーはデータベースで使用されるだけでなく、ファイル システムでも使用され、任意のファイルへの迅速なランダム アクセスを可能にします。 + 特定のファイル内のブロック。基本的な問題は、ファイル ブロック アドレスをディスク ブロックに変換することです。 + (またはおそらくシリンダーヘッドセクターへの) アドレス + - [B-Tree](https://en.wikipedia.org/wiki/B-tree) + - [B ツリー データ構造](http://btechsmartclass.com/data_structs/b-trees.html) + - [B-Tree の紹介 (ビデオ)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B ツリーの定義と挿入 (ビデオ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B ツリーの削除 (ビデオ)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - メモリ階層モデル (ビデオ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - キャッシュを意識しない B ツリー、非常に興味深いデータ構造をカバーします + - 最初の 37 分は非常に専門的なため、スキップされる可能性があります (B はブロック サイズ、キャッシュ ライン サイズ) + - [[レビュー] 26 分でわかる B-Trees (プレイリスト) (ビデオ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) + +- ### k-D ツリー + - 長方形または高次元のオブジェクト内の多数の点を見つけるのに最適です + - k 最近傍に適切に適合 + - [kNN K-d ツリー アルゴリズム (ビデオ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### リストをスキップする - - 「これは多少のカルトデータ構造です」 - Skiena - - [ ] [ランダム化:リストをスキップ(動画)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [アニメーションともう少し詳しく](https://en.wikipedia.org/wiki/Skip_list) + - 「これらはややカルト的なデータ構造です。」 - スキエナ + - [ランダム化: スキップ リスト (ビデオ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [アニメーションともう少し詳細については](https://en.wikipedia.org/wiki/Skip_list) + +- ### ネットワーク フロー + - [5 分でわかるフォード対フルカーソン — ステップバイステップの例 (ビデオ)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [フォード・フルカーソンアルゴリズム (ビデオ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [ネットワーク フロー (ビデオ)](https://www.youtube.com/watch?v=2vhN4Ice5jI) -- ### ネットワークの流れ - - [ ] [Ford-Fulkerson(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [Ford-Fulkersonアルゴリズム(動画)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [ ] [ネットワークフロー(動画)](https://www.youtube.com/watch?v=2vhN4Ice5jI) +- ### 素セットとユニオン検索 + - [UCB 61B - 素セット;並べ替えと整理セレクション (ビデオ)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick アルゴリズム - Union-Find (6 ビデオ)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### 高速処理のための数学 - - [ ] [整数演算、Karatsuba倍数(動画)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [中国の剰余定理(暗号で使用)(動画)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [整数算術、からつばかけ算(動画)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [中国剰余定理 (暗号化で使用) (ビデオ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) -- ### Treap +- ### トレプ - 二分探索木とヒープの組み合わせ - - [ ] [Treap](https://en.wikipedia.org/wiki/Treap) - - [ ] [データ構造:Treaps説明(動画)](https://www.youtube.com/watch?v=6podLUYinH8) - - [ ] [セット操作のアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + - [Treap](https://en.wikipedia.org/wiki/Treap) + - [データ構造: Treaps の説明 (ビデオ)](https://www.youtube.com/watch?v=6podLUyingH8) + - [集合演算でのアプリケーション](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### リニアプログラミング(動画) - - [ ] [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [ ] [最小費用の見積もり](https://www.youtube.com/watch?v=2ACJ9EWUC6U) - - [ ] [最大値の検索](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) +- ### 線形計画法 (ビデオ) + - [線形計画法](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [最低コストを調べる](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [最大値を見つける](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [Python で線形方程式を解く - シンプレックス アルゴリズム](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### 幾何学、凸包(動画) - - [ ] [Graph Alg。 IV:幾何学アルゴリズムの紹介 - 講義9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [ ] [Geometric Algorithms:Graham&Jarvis - 講義10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Divide&Conquer:Convex Hull、Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) +- ### ジオメトリ、凸包 (ビデオ) + - [グラフアルゴリズムIV: 幾何学的アルゴリズムの概要 - レクチャー 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [幾何アルゴリズム: Graham &ジャービス - 講義 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [分割&分割 征服: 凸包、中央値の検出](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### 離散数学 - - 下のビデオを見る - -- ### 機械学習 - - [ ] なぜMLですか? - - [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [ ] [知的コンピュータシステムのための大規模な深い学習(動画)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [ ] [深い学習と理解度対ソフトウェア工学と検証、Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [ ] [Googleのクラウドマシン学習ツール(動画)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [ ] [Google Developers `Machine Learning Recipes(Scikit Learn&Tensorflow)(動画)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [ ] [Tensorflow(video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [ ] [Tensorflowチュートリアル](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [ ] [Pythonでニューラルネットワークを実装する実践ガイド(Theanoを使用)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - コース: - - [グレートスターターコース:機械学習](https://www.coursera.org/learn/machine-learning) -   - [動画のみ](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) -   - 線形代数のレビューについてはビデオ12〜18を参照してください(14と15は重複しています) - - [機械学習のためのニューラルネットワーク](https://www.coursera.org/learn/neural-networks) - - [GoogleのDeep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google / Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [自己運転車技術者Nanodegree](https://www.udacity.com/drive) - - リソース: - - 書籍: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [ゼロからのデータ科学:Pythonの第一原理](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Pythonによる機械学習入門](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [ソフトウェアエンジニア向け機械学習](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - データスクール:http://www.dataschool.io/ - -- - -## 追加科目の詳細 - -    私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした -    それはちょうどあまりにも多くのためです。それは科目にそれを過ごすのは簡単です。 -    あなたは今世紀に雇われたかったですね。 - -- [ ] **連合検索** - - [ ] [概要](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [ ] [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [ ] [木](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [ ] [ランキングによる連合](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [ ] [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [ ] [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) - -- [ ] **もっとダイナミックなプログラミング**(動画) - - [ ] [6.006:動的プログラミングI:フィボナッチ、最短経路](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [ ] [6.006:ダイナミックプログラミングII:テキストジャスティフィケーション、ブラックジャック](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [ ] [6.006:DP III:かっこ、編集距離、ナップザック](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006:DP IV:Guitar Fingering、Tetris、Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.046:Dynamic Programming&Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [6.046:ダイナミックプログラミング:オールペア最短パス](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [ ] [6.046:ダイナミックプログラミング(学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + - [コンピューター サイエンス 70,001 - 2015 年春 - 離散数学と確率理論](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [シャイ・サイモンソンによる離散数学 (19 ビデオ)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [IIT Ropar NPTEL による離散数学](https://nptel.ac.in/courses/106/106/106106183/) + +--- + +## 一部の主題に関する追加の詳細 + + これらは、上ですでに示したいくつかのアイデアを補強するために追加しましたが、含めたくはありませんでした + あまりにも多すぎるため、上記で説明しました。あるテーマについてやりすぎるのは簡単です。 + 今世紀中に採用されたいですよね? + +- **固体** + - [ ] [Bob Martin オブジェクト指向とアジャイル設計の SOLID 原則 (ビデオ)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [単一責任の原則](http://www.oodesign.com/single-responsibility-principle.html) | [各オブジェクトに対する単一の責任](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [その他のフレーバー](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [オープン/クローズの原則](http://www.oodesign.com/open-close-principle.html) | [運用レベルでは、オブジェクトは拡張の準備ができていますが、変更の準備はできません](https://en.wikipedia.org/wiki/Open/closed_principle) + - [その他のフレーバー](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [リスコフ置換原則](http://www.oodesign.com/liskov-s-substitution-principle.html) | [基本クラスと派生クラスは「IS A」原則に従います](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [その他のフレーバー](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [インターフェイス分離の原則](http://www.oodesign.com/interface-segregation-principle.html) |クライアントは、使用しないインターフェイスの実装を強制されるべきではありません + - [5 分でわかるインターフェース分離の原則 (ビデオ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [その他のフレーバー](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja) + - [ ] D -[依存性反転の原則](http://www.oodesign.com/dependency-inversion-principle.html) |オブジェクトの構成における依存関係を軽減します。 + - [依存関係逆転の原則とその重要性](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [その他のフレーバー](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- **ユニオン検索** + - [概要](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [単純な実装](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [木](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [ランク別ユニオン](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [パス圧縮](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [分析オプション](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **さらに動的プログラミング** (ビデオ) + - [6.006: 動的計画法 I: フィボナッチ、最短経路](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: 動的プログラミング II: テキストの位置調整、ブラックジャック](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: 括弧、編集距離、ナップザック](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: ギターの運指、テトリス、スーパーマリオブラザーズ](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: 動的プログラミングとアドバンスト DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: 動的プログラミング: 全ペアの最短パス](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: 動的プログラミング (学生の暗唱)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **高度なグラフ処理** (ビデオ) + - [同期分散アルゴリズム: 対称性の破壊。最短パス スパニング ツリー](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [非同期分散アルゴリズム: 最短パス スパニング ツリー](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **確率** (数学的で、ゆっくり進めてください。これは数学的なことに適しています) (ビデオ): + - [MIT 6.042J - 確率の概要](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - 条件付き確率](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - 独立](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - 確率変数](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - 期待 I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - 期待 II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - 大きな逸脱](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - ランダム ウォーク](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [ ] **高度なグラフ処理**(動画) - - [ ] [同期分散アルゴリズム:対称性を破る。木にまたがる最短パス](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [ ] [非同期分散アルゴリズム:木にまたがる最短パス](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) +- [Simonson: 近似アルゴリズム (ビデオ)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) -- [ ] MIT **確率**(mathy、ゆっくりと進み、数学的なことに良い)(動画): - - [ ] [MIT 6.042J - 確率の紹介](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 条件付き確率](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 独立性](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - ランダム変数](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [ ] [MIT 6.042J - 期待値I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - 大きな偏差](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [ ] [MIT 6.042J - ランダムウォーク](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) +- **文字列のマッチング** + - ラビン・カープ (ビデオ): + - [Rabin Karps アルゴリズム](https://www.coursera.org/lecture/data- Structures/rabin-karps-algorithm-c0Qkw) + - [事前計算](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [最適化: 実装と分析](https://www.coursera.org/learn/data- Structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [テーブル ダブリング、カープラビン](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [ローリング ハッシュ、償却分析](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - クヌース・モリス・プラット (KMP): + - [Knuth-Morris-Pratt (KMP) 文字列マッチング アルゴリズム](https://www.youtube.com/watch?v=5i7oKodCRJo) + - Boyer-Moore 文字列検索アルゴリズム + - [Boyer-Moore 文字列検索アルゴリズム](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [Boyer-Moore-Horspool アルゴリズムによる高度な文字列検索 (ビデオ)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: 文字列上のアルゴリズム](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - 最初は素晴らしいですが、KMP を超えるまでに必要以上に複雑になります + - トライの素晴らしい説明 + - スキップ可能 -- [ ] [Simonson:Approximation Algorithms(video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- **並べ替え** -- [ ] **文字列マッチング** - - [ ] Rabin-Karp(動画): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [最適化:実装と分析](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [表倍増、Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [ローリングハッシュ、償却分析](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - [ ] クヌース・モリス・プラット(KMP): - - [Knuth-Morris-Pratt(KMP)文字列マッチングアルゴリズム](https://www.youtube.com/watch?v=5i7oKodCRJo) - - [ ] Boyer-Moore文字列検索アルゴリズム - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(動画)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [ ] [Coursera:文字列のアルゴリズム](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - すごく始まりますが、KMPを過ぎるまでには、必要以上に複雑になります - - 試行の良い説明 - - スキップすることができます + - スタンフォード大学の分類に関する講義: + - [講義 15 |プログラミングの抽象化 (ビデオ)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [講義 16 |プログラミングの抽象化 (ビデオ)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - シャイ・サイモンソン: + - [アルゴリズム - 並べ替え - レクチャー 2 (ビデオ)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [アルゴリズム - 並べ替え II - 講義 3 (ビデオ)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - スティーブン・スキーナが分類について講義します: + - [CSE373 2020 - マージソート/クイックソート (ビデオ)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - 線形並べ替え (ビデオ)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) -- [ ] **ソート** +- NAND からテトリスへ: [第一原理から最新のコンピューターを構築する](https://www.coursera.org/learn/build-a-computer) - - [ ] スタンフォードのソーティングに関する講義: - - [ ] [講義15 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [ ] [講義16 |プログラミングの抽象化(動画)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - [ ] Shai Simonson、[Aduni.org](http://www.aduni.org/): - - [ ] [アルゴリズム - ソート - 講義2(動画)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [ ] [アルゴリズム - ソートII - レクチャー3(動画)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - [ ] Steven Skienaのソーティングに関する講義: - - [ ] [講義は26:46に始まります(動画)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [ ] [講義は27:40(動画)から開始](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [講演は35:00(動画)から開始](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [講演は23:50から始まります(動画)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) +## ビデオ シリーズ +座って楽しんでください。 -## ビデオシリーズ +- [動的計画法の問題の個別リスト (それぞれ短い)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -座って楽しんでください。 「ネットフリックスとスキル」:P +- [x86 アーキテクチャ、アセンブリ、アプリケーション (11 ビデオ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [ ] [個々の動的プログラミングの問題のリスト(それぞれ短いです)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +- [MIT 18.06 線形代数、2005 年春 (35 ビデオ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) -- [ ] [x86アーキテクチャ、アセンブリ、アプリケーション(11ビデオ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [優れた - MIT 微積分再考: 単一変数微積分](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [ ] [MIT 18.06線形代数、2005年春(35ビデオ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [アルゴリズム設計マニュアルからの Skiena 講義 - CSE373 2020 - アルゴリズムの分析 (26 ビデオ)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) -- [ ] [優秀 - MIT Calculus Revisited:単一変数計算](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +- [UC Berkeley 61B (Spring 2014): データ構造 (25 ビデオ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [ ] [コンピュータサイエンス70,001 - 春2015 - 離散数学と確率論](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) +- [UC Berkeley 61B (2006 年秋): データ構造 (39 ビデオ)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [ ] [Shai Simonsonによる離散数学(19ビデオ)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) +- [UC Berkeley 61C: 機械構造 (26 ビデオ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [ ] [離散数学第1部:Sarada Herke(5ビデオ)](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) +- [OOSE: UML と Java を使用したソフトウェア開発 (21 ビデオ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [ ] CSE373 - アルゴリズムの分析(25ビデオ) - - [アルゴリズム設計マニュアルのSkiena講義](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +- [MIT 6.004: 計算構造 (ビデオ 49 件)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [UCバークレー61B(Spring 2014):データ構造(25ビデオ)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [カーネギー メロン - コンピューター アーキテクチャの講義 (ビデオ 39 件)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [UC Berkeley 61B(2006年秋):データ構造(39ビデオ)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) +- [MIT 6.006: アルゴリズムの紹介 (47 ビデオ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [UC Berkeley 61C:機械構造物(26ビデオ)](https://www.youtube.com/watch?v=gJJUUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [MIT 6.033: コンピューター システム エンジニアリング (22 ビデオ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [ ] [OOSE:UMLとJavaを使用したソフトウェア開発(21ビデオ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [MIT 6.034 人工知能、2010 年秋 (30 ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [ ] [UC Berkeley CS 152:コンピュータアーキテクチャとエンジニアリング(20ビデオ)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) +- [MIT 6.042J: コンピューター サイエンスのための数学、2010 年秋 (25 ビデオ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [ ] [MIT 6.004:計算構造(49ビデオ)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) +- [MIT 6.046: アルゴリズムの設計と分析 (ビデオ 34 件)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [Carnegie Mellon - Computer Architecture Lectures(39ビデオ)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [MIT 6.824: 分散システム、2020 年春 (ビデオ 20 本)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] [MIT 6.006:アルゴリズム紹介(47ビデオ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.851: 高度なデータ構造 (22 ビデオ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [ ] [MIT 6.033:コンピュータシステムエンジニアリング(22ビデオ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.854: 高度なアルゴリズム、2016 年春 (24 動画eos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [ ] [MIT 6.034人工知能、2010年秋(30ビデオ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [Harvard COMPSCI 224: 高度なアルゴリズム (25 ビデオ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) -- [ ] [MIT 6.042J:コンピュータサイエンスの数学、2010年秋(25ビデオ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.858 コンピューター システム セキュリティ、2014 年秋](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [ ] [MIT 6.046:アルゴリズムの設計と分析(34ビデオ)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [スタンフォード: プログラミング パラダイム (27 ビデオ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) -- [ ] [MIT 6.050J:情報とエントロピー、2008年春(19ビデオ)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +- [クリストフ・パールによる暗号入門](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + - [スライドと問題セットを含むコース Web サイト](http://www.crypto-textbook.com/) -- [ ] [MIT 6.851:高度なデータ構造(22ビデオ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [大規模なデータセットのマイニング - スタンフォード大学 (94 ビデオ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [ ] [MIT 6.854:Advanced Algorithms、Spring 2016(24ビデオ)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [Sarada Herke によるグラフ理論 (67 ビデオ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) -- [ ] [Harvard COMPSCI 224:Advanced Algorithms(25ビデオ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +## コンピューター サイエンス コース -- [ ] [MIT 6.858コンピュータシステムセキュリティ、2014年秋](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- [オンライン CS コースのディレクトリ](https://github.com/open-source-society/computer-science) +- [CS コースのディレクトリ (オンライン講義を含む多くのコース)](https://github.com/prakhar1989/awesome-courses) -- [ ] [Stanford:Programming Paradigms(27ビデオ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +## アルゴリズムの実装 -- [ ] [Christof Paarによる暗号の概要](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [スライドと問題セットと一緒のコースウェブサイト](http://www.crypto-textbook.com/) +- [プリンストン大学による複数のアルゴリズムの実装](https://algs4.cs.princeton.edu/code) -- [ ] [Mining Massive Datasets - スタンフォード大学(94ビデオ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +## 論文 -- [ ] [グラフ理論(Sarada Herke)(67ビデオ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [古典的な論文は好きですか?](https://www.cs.cmu.edu/~cry/819-f09/) +- [1978: 逐次プロセスの通信](http://spinroot.com/courses/Summer/Papers/hoare_1978.pdf) + - [Go で実装](https://godoc.org/github.com/thomas11/csp) +- [2003: Google ファイル システム](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 年に Colossus に置き換えられました +- [2004: MapReduce: 大規模クラスターでのデータ処理の簡素化](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - ほとんどが Cloud Dataflow に置き換えられましたか? +- [2006: Bigtable: 構造化データの分散ストレージ システム](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: 疎結合分散システム用の Chubby Lock サービス](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dynamo: Amazon の高可用性 Key-Value ストア](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Dynamo の論文が NoSQL 革命のきっかけとなった +- [2007: What Every Programmer Should Know About Memory (非常に長いため、著者は一部のセクションをスキップすることを推奨しています)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: 高速アドレス健全性チェッカー: + - [論文](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [ビデオ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google の世界的に分散されたデータベース: + - [論文](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [ビデオ](https://www.usenix.org/node/170855) +- [2015: Google の継続的なパイプライン](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: 大規模な高可用性: Google の広告用データ インフラストラクチャの構築](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: 開発者がコードを検索する方法: ケーススタディ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- その他の論文: [1,000 件の論文](https://github.com/0voice/computer_expert_paper) -## コンピュータサイエンスコース +## ライセンス -- [オンラインCSコースのディレクトリ](https://github.com/open-source-society/computer-science) -- [CSコースのディレクトリ(多くはオンライン講義あり)](https://github.com/prakhar1989/awesome-courses) +[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file From 2f207e45a415347fcc42229a5a547712ee9ea6a7 Mon Sep 17 00:00:00 2001 From: Tomas Achaval <134091945+achaval-tomas@users.noreply.github.com> Date: Sat, 30 Dec 2023 20:29:16 -0300 Subject: [PATCH 797/857] Corrected translations, added punctuation and fixed spelling mistakes. --- translations/README-es.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/translations/README-es.md b/translations/README-es.md index 15e35fb731..830d1ac239 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -839,7 +839,7 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - Mapa adyacente. - Familiarícese con cada representación y sus pros y contras. - BFS and DFS – Conozca su complejidad computacional, sus compromisos y cómo implementarlos en código real. - - Cuando se le haga una pregunta busqué una solución basada en grafos, si no encuentra continúe. + - Cuando se le haga una pregunta busque una solución basada en grafos. Si no la encuentra, continúe. - [ ] Lecturas de Skiena – Gran introducción): - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) @@ -868,7 +868,7 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - Curso Completo de Coursera: - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) -- Implementaré: +- Implementar: - [ ] DFS con lista de adyacencia (recursión) - [ ] DFS con la lista de adyacencia (iterativa con la pila) - [ ] DFS con matriz de adyacencia (recursión) @@ -880,8 +880,8 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - Algoritmos basados en DFS (ver videos de Aduni arriba): - [ ] Comprobar el ciclo (necesario para el tipo topológico, ya que vamos a comprobar el ciclo antes de comenzar) - [ ] Clasificación topológica. - - [ ] Cuenta los componentes conectados en un grafo. - - [ ] Lista de componentes fuertemente conectados. + - [ ] Cuenta los componentes conexos en un grafo. + - [ ] Lista de componentes fuertemente conexos. - [ ] Verificación de grafo bipartito. @@ -1102,11 +1102,11 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Planificador - - En un SO, Como funciona - - Se pueden obtener de los videos del sistema operativo + - En un SO, ¿Cómo funciona? + - Se pueden obtener de los videos del sistema operativo. - ### Implementar rutinas del sistema - - Entienda lo que hay debajo de las API de programación que usa + - Entienda lo que hay debajo de las API de programación que usa. - ¿Puede implementarlas? - ### Búsqueda de cadenas y manipulaciones @@ -1146,7 +1146,7 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) -- ### Extremidad (Endianness) +- ### Extremidad o "Endianismo" (Endianness) - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0): @@ -1273,14 +1273,14 @@ Los grafos pueden ser usados para representar muchos problemas en las Ciencias d - Asumir alta disponibilidad es necesario, añadir como un caso de uso. 2. Piense en las limitaciones: - Preguntar cuántas solicitudes por mes. - - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas) + - Preguntar cuántas solicitudes por segundo (que pueden ser voluntario o hacer que usted haga las matemáticas). - Lectura de estimación vs. Escribir porcentajes. - Tenga en cuenta la regla 80/20 al estimar. - La cantidad de datos escritos por segundo. - Almacenamiento total requerido durante 5 años. - La cantidad de datos leídos por segundo. 3. Diseño abstracto: - - Capas (servicio, datos, almacenamiento en caché) + - Capas (servicio, datos, almacenamiento en caché). - Infraestructura: balanceo de carga, mensajería. - Descripción aproximada de cualquier algoritmo clave que impulsa el servicio. - Considerar los cuellos de botella y determinar las soluciones. @@ -1308,13 +1308,13 @@ Es bueno si quieres repasar frecuentemente. --- -## Practica de preguntas de codificación +## Practica de preguntas de programación -Ahora que conoce todos los tópicos de las Ciencias de la Computación mencionados anteriormente, es tiempo de practicar respondiendo algunos problemas de codificación. +Ahora que conoce todos los tópicos de las Ciencias de la Computación mencionados anteriormente, es tiempo de practicar respondiendo algunos problemas de programación. -**La practica de preguntas de codificación no es sobre memorizar respuestas a problemas de programación.** +**La práctica de preguntas de programación no es sobre memorizar respuestas a problemas.** -Porque necesita practicar haciendo problemas de programación: +Por qué necesita practicar haciendo problemas de programación: - El reconocimiento de problemas, y donde las estructuras de datos y algoritmos adecuados encajan. - Reunir los requisitos para el problema. - Hablar sobre su camino a través del problema como lo hará en la entrevista. @@ -1324,16 +1324,16 @@ Porque necesita practicar haciendo problemas de programación: Hay una gran introducción para la solución de problemas metódicos y comunicativos en una entrevista. Conseguirá esto de los libros para la entrevista de programación también, pero encontré esto excepcional: [Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -¿No tiene pizarrón en casa? Hace sentido. Soy un bicho raro y tengo una pizarra grande. En vez de una pizarra blanca, recoja un gran cuadernillo de dibujo de una tienda de arte. Puede sentarse en el sofá y practicar. Esta es mi "pizarra de sofá". He añadido la pluma en la foto para la escala. Si usa un bolígrafo, deseará poder borrarlo. Se ensucia rápido. +¿No tiene pizarrón en casa? Tiene sentido. Soy un bicho raro y tengo una pizarra grande. En vez de una pizarra blanca, recoja un gran cuadernillo de dibujo de una tienda de arte. Puede sentarse en el sofá y practicar. Esta es mi "pizarra de sofá". He añadido la pluma en la foto para la escala. Si usa un bolígrafo, deseará poder borrarlo. Se ensucia rápido. ![my sofa whiteboard](https://camo.githubusercontent.com/4b2dfa34fd739404edcc014f89b5432ab1ec9cfebecce1d59b9f7986826d03cf/68747470733a2f2f64336a32706b6d6a74696e366f752e636c6f756466726f6e742e6e65742f6172745f626f6172645f736d5f322e6a7067) -Complementarios: +Complementos: - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) -**Lea y haga problemas de programación (en ese orden):** +**Lea y resuelva problemas de programación (en ese orden):** - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html): - Respuestas en C, C++ y Java @@ -1342,9 +1342,9 @@ Complementarios: Vea [Lista de libros](#lista-de-libros) -## Ejercicios de codificación/Desafíos +## Ejercicios de programación/Desafíos Una vez haya aprendido, ponga ese cerebro a trabajar. -Tome desafíos de codificación todos los días y tantos como pueda. +Tome desafíos de programación todos los días y tantos como pueda. - [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) From e12a8990a22776f973e1d4bad7a2d57dfb8a7402 Mon Sep 17 00:00:00 2001 From: Shaon Sikder Date: Mon, 1 Jan 2024 12:36:31 +0600 Subject: [PATCH 798/857] Updated README-bn(typo, formatting, linking issue).md --- translations/README-bn.md | 310 +++++++++++++++++++------------------- 1 file changed, 155 insertions(+), 155 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 9d4ef81758..d07e04c787 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -521,9 +521,9 @@ https://github.com/jwasham/coding-interview-university আমার প্রতিটি বিষয়ের জন্য এগুলি করার জন্য সময় নাও থাকতে পারে তবে আমি চেষ্টা করব। আপনি আমার কোডটি এখানে দেখতে পারেন: --[সি] (https://github.com/jwasham/pੈਕਟ-c) --[সি ++] (https://github.com/jwasham/pੈਕਟ-cpp) --[পাইথন] (https://github.com/jwasham/pੈਕਟ-python) +- [সি] (https://github.com/jwasham/pੈਕਟ-c) +- [সি ++] (https://github.com/jwasham/pੈਕਟ-cpp) +- [পাইথন] (https://github.com/jwasham/pੈਕਟ-python) আপনার প্রতিটি অ্যালগরিদমের সাহস মুখস্থ করার দরকার নেই। @@ -534,14 +534,14 @@ https://github.com/jwasham/coding-interview-university
<সংশ্লেষ> পূর্বশর্ত জ্ঞান << সংক্ষিপ্ত> -- ** সি ** শিখুন +- **সি** শিখুন -সি সর্বত্র আছে। আপনি অধ্যয়নরত অবস্থায় আপনি বই, বক্তৃতা, ভিডিও, * সর্বত্র * এর উদাহরণ দেখতে পাবেন। - [সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, খণ্ড ২] (https://www.amazon.com/Programming-Language-ব্রায়ান-ডব্লিউ-কর্নিগান/dp/0131103628) -এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষায় দুর্দান্ত হ্যান্ডেল দেবে এবং যদি আপনি এটি কিছুটা অনুশীলন করেন আপনি দ্রুত দক্ষ হয়ে উঠবেন। সি বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কীভাবে কাজ করে তা বুঝতে সহায়তা করে। -[প্রশ্নের উত্তর] (https://github.com/lekkas/c-algorithms) -- ** কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে: ** +- **কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে:** - [সিপিইউ কীভাবে একটি প্রোগ্রাম (ভিডিও) চালায়]] (https://www.youtube.com/watch?v=XM4lGflQFvA) - [কম্পিউটারগুলি কীভাবে গণনা করে-ALU (ভিডিও)] (https://youtu.be/1I5ZMmrOfnA) - [নিবন্ধসমূহ এবং র‌্যাম (ভিডিও)] (https://youtu.be/fpnE6UAfbtU) @@ -750,12 +750,12 @@ https://github.com/jwasham/coding-interview-university - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - ইমপ্লিমেন্টের প্রয়োজন নাই। --###স্ট্যাক +- ### স্ট্যাক - [স্ট্যাকস (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - ] বাস্তবায়ন করবে না। অ্যারের সাথে প্রয়োগ করা তুচ্ছ। --###কিউ +- ### কিউ - [সারি (ভিডিও)] (https://www.coursera.org/lecture/data-structures/queues-EShpq) - [বিজ্ঞপ্তি বাফার / ফিফো] (https://en.wikedia.org/wiki/Circular_buffer) - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) @@ -775,7 +775,7 @@ https://github.com/jwasham/coding-interview-university -প্রামাণ্য: ও (1) (লিঙ্কযুক্ত তালিকা এবং অ্যারে) -খালি: O (1) (লিঙ্কযুক্ত তালিকা এবং অ্যারে) --###হ্যাশ টেবিল +- ### হ্যাশ টেবিল - ভিডিওগুলি: - [চেইনিংয়ের সাথে হ্যাশিং (ভিডিও)] (https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - [সারণী দ্বিগুণ, কার্প-রবিন (ভিডিও)] (https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) @@ -802,12 +802,12 @@ https://github.com/jwasham/coding-interview-university
-##আরও জ্ঞান +## আরও জ্ঞান
আরও জ্ঞান << সংক্ষিপ্ত> --###বাইনারি অনুসন্ধান +- ### বাইনারি অনুসন্ধান - [বাইনারি অনুসন্ধান (ভিডিও)] (https://www.youtube.com/watch?v=D5SrAga1pno) - [বাইনারি সন্ধান (ভিডিও)] (https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) - [বিস্তারিত] (https://www.topcoder.com/commune/competitive-programming/tutorials/binary-search/) @@ -816,7 +816,7 @@ https://github.com/jwasham/coding-interview-university -বাইনারি অনুসন্ধান (পূর্ণসংখ্যার সাজানো অ্যারেতে) -পুনরাবৃত্তি ব্যবহার করে বাইনারি অনুসন্ধান --###বিটওয়াস অপারেশন +- ### বিটওয়াস অপারেশন - [বিটস চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bit-cheat-sheet.pdf)-আপনার অনেকগুলি জানা উচিত 2 এর ক্ষমতা (2 ^ 1 থেকে 2 ^ 16 এবং 2 ^ 32) - এর সাথে বিটগুলি ম্যানিপুলেটেড সম্পর্কে সত্যই উপলব্ধি পান: &, |, ^, ~, >> >> << - [শব্দ] (https://en.wikedia.org/wiki/Word_ (কম্পিউটার_আরকিটেকচার)) @@ -829,56 +829,56 @@ https://github.com/jwasham/coding-interview-university - [বিট টুইডলার] (https://bit.stephan-brumme.com/) - [বিট টুইডলার ইন্টারেক্টিভ] (https://bit.stephan-brumme.com/interactive.html) - 2 এস এবং 1 এস পরিপূরক - -[বাইনারি: প্লাসসেস এবং মিনিনস (কেন আমরা দু'জনের কমপ্লিমেন্ট ব্যবহার করি) (ভিডিও)] (https://www.youtube.com/watch?v=lKTsv6iVxV4) - -[১ এস পরিপূরক] (https://en.wikedia.org/wiki/Ones%27_complement) - -[2 এস পরিপূরক] (https://en.wikedia.org/wiki/Two%27s_complement) + - [বাইনারি: প্লাসসেস এবং মিনিনস (কেন আমরা দু'জনের কমপ্লিমেন্ট ব্যবহার করি) (ভিডিও)] (https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [১ এস পরিপূরক] (https://en.wikedia.org/wiki/Ones%27_complement) + - [2 এস পরিপূরক] (https://en.wikedia.org/wiki/Two%27s_complement) - সেট বিট গণনা করুন - -[বাইট (ভিডিও) এ বিট গণনা করার 4 টি উপায়] (https://youtu.be/Hzuzo9NJrlc) - -[বিট গণনা করুন) (https://ographicics.stanford.edu/~seender/bithacks.html#CountBitsSetKernighan) - -[32 বিট পূর্ণসংখ্যায় সেট বিটের সংখ্যা কীভাবে গণনা করবেন] (http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-િટ-in-a-32-বিট-পূর্ণসংখ্যা) + - [বাইট (ভিডিও) এ বিট গণনা করার 4 টি উপায়] (https://youtu.be/Hzuzo9NJrlc) + - [বিট গণনা করুন) (https://ographicics.stanford.edu/~seender/bithacks.html#CountBitsSetKernighan) + - [32 বিট পূর্ণসংখ্যায় সেট বিটের সংখ্যা কীভাবে গণনা করবেন] (http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-િટ-in-a-32-বিট-পূর্ণসংখ্যা) - পরের পাওয়ার 2 এর রাউন্ড: - -[দু'জনের পরের শক্তিতে রাউন্ড আপ] (https://bit.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [দু'জনের পরের শক্তিতে রাউন্ড আপ] (https://bit.stephan-brumme.com/roundUpToNextPowerOfTwo.html) -[ অদলবদল মান: - -[অদলবদল (https://bit.stephan-brumme.com/swap.html) + - [অদলবদল (https://bit.stephan-brumme.com/swap.html) - নিখুঁত মান: - -[নিখুঁত পূর্ণসংখ্যার] (https://bit.stephan-brumme.com/absInteger.html) + - [নিখুঁত পূর্ণসংখ্যার] (https://bit.stephan-brumme.com/absInteger.html)
-##গাছ +## ট্রি/গাছ
-গাছ +ট্রি/গাছ --###গাছ-নোট ও পটভূমি +- ### ট্রি-নোট ও পটভূমি - [সিরিজ: গাছ (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 95qda/trees) - -মৌলিক গাছ নির্মাণ - -traversal - -ম্যানিপুলেশন আলগোরিদিম + - মৌলিক গাছ নির্মাণ + - traversal + - ম্যানিপুলেশন আলগোরিদিম - [বিএফএস (প্রস্থের প্রথম সন্ধান) এবং ডিএফএস (গভীরতা-প্রথম অনুসন্ধান) (ভিডিও)] (https://www.youtube.com/watch?v=uWL6FJhq5fM) - -বিএফএস নোট: - -স্তর আদেশ (বিএফএস, সারি ব্যবহার করে) - -সময়ের জটিলতা: ও (এন) - -স্থান জটিলতা: সেরা: O (1), সবচেয়ে খারাপ: O (n / 2) = O (n) - -ডিএফএস নোট: - -সময়ের জটিলতা: ও (এন) - -স্থান জটিলতা: + - বিএফএস নোট: + - স্তর আদেশ (বিএফএস, সারি ব্যবহার করে) + - সময়ের জটিলতা: ও (এন) + - স্থান জটিলতা: সেরা: O (1), সবচেয়ে খারাপ: O (n / 2) = O (n) + - ডিএফএস নোট: + - সময়ের জটিলতা: ও (এন) + - স্থান জটিলতা: সেরা: ও (লগ এন)-গড়। গাছের উচ্চতা সবচেয়ে খারাপ: ও (এন) - -অর্ডার (ডিএফএস: বাম, স্ব, ডান) - -পোস্টর্ডার (ডিএফএস: বাম, ডান, স্ব) - -প্রির্ডার (ডিএফএস: স্ব, বাম, ডান) + - অর্ডার (ডিএফএস: বাম, স্ব, ডান) + - পোস্টর্ডার (ডিএফএস: বাম, ডান, স্ব) + - প্রির্ডার (ডিএফএস: স্ব, বাম, ডান) - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) --###বাইনারি অনুসন্ধান গাছ: বিএসটি +- ### বাইনারি অনুসন্ধান গাছ: বিএসটি - [বাইনারি অনুসন্ধান বৃক্ষ পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [সিরিজ (ভিডিও)] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-intr پيداوار-to-binary-search-trees) -প্রতীক টেবিল দিয়ে শুরু হয় এবং বিএসটি অ্যাপ্লিকেশনগুলির মধ্য দিয়ে যায় - [পরিচিতি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/E7cXP/intr پيداوار) - [এমআইটি (ভিডিও)] (https://www.youtube.com/watch?v=9Jry5-82I68) - -সি / সি ++: + - সি / সি ++: - [বাইনারি অনুসন্ধান ট্রি-সি / সি ++ (ভিডিও) তে বাস্তবায়ন]] (https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - [বিএসটি বাস্তবায়ন-স্ট্যাক এবং হিপ (ভিডিও) এ মেমরি বরাদ্দ] (https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - [একটি বাইনারি অনুসন্ধান গাছে নূন্যতম এবং সর্বাধিক উপাদান সন্ধান করুন (ভিডিও)] (https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) @@ -902,8 +902,8 @@ https://github.com/jwasham/coding-interview-university - মুছুন_মূল্য - get_successor // প্রদত্ত মানের পরে গাছের পরবর্তী-সর্বোচ্চ মান প্রদান করে,-1 না হলে --###গাদা / অগ্রাধিকার সারি / বাইনারি হিপ - -গাছ হিসাবে ভিজ্যুয়ালাইজড, তবে সাধারণত সঞ্চয়স্থানে লিনিয়ার থাকে (অ্যারে, লিঙ্কযুক্ত তালিকা) +- ### গাদা / অগ্রাধিকার সারি / বাইনারি হিপ + - গাছ হিসাবে ভিজ্যুয়ালাইজড, তবে সাধারণত সঞ্চয়স্থানে লিনিয়ার থাকে (অ্যারে, লিঙ্কযুক্ত তালিকা) - [গাদা] (https://en.wikedia.org/wiki/Heap_ (ডেটা_ স্ট্রাস্ট্রাকচার)) - [ভূমিকা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / 2 অপ্টস / সিন্ট্রোকশন) - [নিষ্পাপ বাস্তবায়ন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-বাস্তবায়ন) @@ -918,7 +918,7 @@ https://github.com/jwasham/coding-interview-university - [এমআইটি: হিপস এবং হিপ সাজান (ভিডিও)] (https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [সিএস 61 বি লেকচার 24: অগ্রাধিকার ক্যু (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [লিনিয়ার টাইম বিল্ডহীপ (সর্বাধিক হিপ)] (https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - একটি সর্বোচ্চ গাদা প্রয়োগ করুন: - sertোকান - সিফ্ট_আপ-.োকানোর জন্য প্রয়োজনীয় @@ -934,13 +934,13 @@ https://github.com/jwasham/coding-interview-university
-##শ্রেণীবিভাজন +## শ্রেণীবিভাজন
বাছাইকরণ -[ ] নোট: - -প্রকারভেদ প্রয়োগ করুন এবং সর্বোত্তম কেস / নিকৃষ্টতম কেস, প্রত্যেকের গড় জটিলতা জানেন: + - প্রকারভেদ প্রয়োগ করুন এবং সর্বোত্তম কেস / নিকৃষ্টতম কেস, প্রত্যেকের গড় জটিলতা জানেন: -কোনও বুদ্বুদ বাছাই নয়-এটি ভয়ানক-হে (n ^ 2), যখন এন <= 16 বাদে - অ্যালগরিদম বাছাইয়ের স্থায়িত্ব ("কুইকসোর্ট স্থিতিশীল?") -[অ্যালগোরিদম স্থিতিশীলতা বাছাই করা হচ্ছে) (https://en.wikedia.org/wiki/Sorting_algorithm#Stability) @@ -951,7 +951,7 @@ https://github.com/jwasham/coding-interview-university -আমি একটি লিঙ্কযুক্ত তালিকা বাছাইয়ের প্রস্তাব দেব না, তবে মার্জ সারণি করণীয়। -[লিঙ্কযুক্ত তালিকার জন্য বাছাই করুন মার্জ করুন] (http://www.geeksforgeeks.org/ নিমেষে-অনুসারে-লিঙ্কড-তালিকা /) --হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। হিপ সাজানো দুর্দান্ত তবে স্থিতিশীল নয়। +- হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। হিপ সাজানো দুর্দান্ত তবে স্থিতিশীল নয়। - [সেডজউইক-মার্জেসোর্ট (৫ টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/3) - [১। Mergesort] (https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) @@ -998,10 +998,10 @@ https://github.com/jwasham/coding-interview-university - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) - বাস্তবায়ন: - - মার্জোর্ট: ও (এন লগ এন) গড় এবং সবচেয়ে খারাপ অবস্থা case - - কুইকসোর্ট ও (এন লগ এন) গড় কেস - -বাছাই বাছাই এবং সন্নিবেশ বাছাই উভয় হে (এন ^ 2) গড় এবং সবচেয়ে খারাপ ক্ষেত্রে - -হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। + - মার্জোর্ট: ও (এন লগ এন) গড় এবং সবচেয়ে খারাপ অবস্থা case + - কুইকসোর্ট ও (এন লগ এন) গড় কেস + - বাছাই বাছাই এবং সন্নিবেশ বাছাই উভয় হে (এন ^ 2) গড় এবং সবচেয়ে খারাপ ক্ষেত্রে + - হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। - প্রয়োজন হয় না, তবে আমি তাদের সুপারিশ করেছি: - [সেডজউইক-র‌্যাডিক্স সোর্টস (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/3) @@ -1022,7 +1022,7 @@ https://github.com/jwasham/coding-interview-university
-##গ্রাফ +## গ্রাফ
গ্রাফ @@ -1068,10 +1068,10 @@ https://github.com/jwasham/coding-interview-university - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) --সম্পূর্ণ কোর্সেরা কোর্স: +- সম্পূর্ণ কোর্সেরা কোর্স: - [গ্রাফগুলিতে অ্যালগরিদমগুলি (ভিডিও)] (https://www.coursera.org/learn/algorithms-on-অনুচ্ছেদ / হোম / উপস্ব) --আমি বাস্তবায়ন করব: +- আমি বাস্তবায়ন করব: - সংলগ্ন তালিকার সাথে ডিএফএস (পুনরাবৃত্ত) - সংলগ্ন তালিকার সাথে ডিএফএস (স্ট্যাক সহ পুনরাবৃত্ত) - সংলগ্ন ম্যাট্রিক্স সহ ডিএফএস (পুনরাবৃত্ত) @@ -1080,7 +1080,7 @@ https://github.com/jwasham/coding-interview-university - সংলগ্ন ম্যাট্রিক্স সহ বিএফএস - একক উত্সের সংক্ষিপ্ততম পথ (ডিজকস্ট্র) - সর্বনিম্ন বিস্তৃত গাছ - -ডিএফএস-ভিত্তিক অ্যালগরিদম (উপরে অ্যাডুনি ভিডিও দেখুন): + - ডিএফএস-ভিত্তিক অ্যালগরিদম (উপরে অ্যাডুনি ভিডিও দেখুন): - চক্র পরীক্ষা করুন (টপোলজিকাল সাজানোর জন্য প্রয়োজনীয়, যেহেতু আমরা শুরু করার আগে চক্রটি পরীক্ষা করব) - টপোলজিকাল সাজান - একটি গ্রাফে সংযুক্ত উপাদানগুলি গণনা করুন @@ -1089,28 +1089,28 @@ https://github.com/jwasham/coding-interview-university
-##আরও জ্ঞান +## আরও জ্ঞান
আরও জ্ঞান << সংক্ষিপ্ত> --###পুনরাবৃত্তি +-### পুনরাবৃত্তি - পুনরাবৃত্তি ও ব্যাকট্র্যাকিংয়ের উপর স্ট্যানফোর্ডের বক্তৃতা: - [বক্তৃতা 8 | প্রোগ্রামিং বিমূর্তকরণ (ভিডিও)] (https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [বক্তৃতা 9 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - [বক্তৃতা 10 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - [বক্তৃতা 11 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - -যখন এটি ব্যবহার করা উপযুক্ত হবে - -টেল রিকার্সন এর চেয়ে ভাল কীভাবে? + - যখন এটি ব্যবহার করা উপযুক্ত হবে + - টেল রিকার্সন এর চেয়ে ভাল কীভাবে? - [লেজ পুনরাবৃত্তি কি এটি এত খারাপ কেন?] (Https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [টেল রিকার্সন (ভিডিও)] (https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) --###ডায়নামিক প্রোগ্রামিং - -আপনি সম্ভবত আপনার সাক্ষাত্কারে কোনও গতিশীল প্রোগ্রামিং সমস্যা দেখতে পাবেন না, তবে ডায়নামিক প্রোগ্রামিংয়ের প্রার্থী হিসাবে কোনও সমস্যাটি স্বীকৃতি দেওয়ার পক্ষে এটি মূল্যবান। - -এই বিষয়টি বেশ কঠিন হতে পারে, কারণ প্রতিটি ডিপি দ্রবণীয় সমস্যাটিকে অবশ্যই পুনরাবৃত্তির সম্পর্ক হিসাবে সংজ্ঞায়িত করা উচিত এবং এটির সাথে আসাটি জটিল হতে পারে। - -আমি জড়িত প্যাটার্ন সম্পর্কে দৃ understanding় ধারণা না পাওয়া পর্যন্ত আমি ডিপি সমস্যার অনেক উদাহরণ দেখার পরামর্শ দিই। +-### ডায়নামিক প্রোগ্রামিং + - আপনি সম্ভবত আপনার সাক্ষাত্কারে কোনও গতিশীল প্রোগ্রামিং সমস্যা দেখতে পাবেন না, তবে ডায়নামিক প্রোগ্রামিংয়ের প্রার্থী হিসাবে কোনও সমস্যাটি স্বীকৃতি দেওয়ার পক্ষে এটি মূল্যবান। + - এই বিষয়টি বেশ কঠিন হতে পারে, কারণ প্রতিটি ডিপি দ্রবণীয় সমস্যাটিকে অবশ্যই পুনরাবৃত্তির সম্পর্ক হিসাবে সংজ্ঞায়িত করা উচিত এবং এটির সাথে আসাটি জটিল হতে পারে। + - আমি জড়িত প্যাটার্ন সম্পর্কে দৃ understanding় ধারণা না পাওয়া পর্যন্ত আমি ডিপি সমস্যার অনেক উদাহরণ দেখার পরামর্শ দিই। - ভিডিওগুলি: - -স্কিয়েনা ভিডিওগুলি অনুসরণ করা শক্ত কারণ তিনি কখনও কখনও হোয়াইটবোর্ড ব্যবহার করেন যা দেখতে খুব ছোট + - স্কিয়েনা ভিডিওগুলি অনুসরণ করা শক্ত কারণ তিনি কখনও কখনও হোয়াইটবোর্ড ব্যবহার করেন যা দেখতে খুব ছোট - [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 19-ডায়নামিক প্রোগ্রামিংয়ের পরিচিতি (ভিডিও)] (https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - [স্কিয়েনা: সিএসই 373 2012-বক্তৃতা 20-দূরত্ব সম্পাদনা করুন (ভিডিও)] (https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - [স্কিয়েনা: সিএসই 373 2012-লেকচার 21-গতিশীল প্রোগ্রামিং উদাহরণ (ভিডিও)] (https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) @@ -1131,7 +1131,7 @@ https://github.com/jwasham/coding-interview-university - [গ্লোবাল পেয়ারওয়াইজ সিকোয়েন্স অ্যালাইনমেন্ট (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - [স্থানীয় যুগের ক্রম সারিবদ্ধকরণ প্রান্তিককরণ (ভিডিও)] (https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) --###অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং +- ### অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং - ptionচ্ছিক: ইউএমএল ২.০ সিরিজ (ভিডিও)] (https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার ইঞ্জিনিয়ারিং: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও): -আপনার যদি OO এবং OO ডিজাইনের অনুশীলনগুলির দুর্দান্ত উপলব্ধি থাকে তবে এড়িয়ে যেতে পারেন। @@ -1152,7 +1152,7 @@ https://github.com/jwasham/coding-interview-university -[নির্ভরতা বিপরীতকরণের মূলনীতি কেন এবং কেন এটি গুরুত্বপূর্ণ] (http://stackoverflow.com/questions/62539/ কি-এটি-নির্ভরতা-রূপান্তর-নীতি-এবং-কেন-কেন-গুরুত্বপূর্ণ-গুরুত্বপূর্ণ) -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjhhddlljrhmdlljrhmdlljdlmljrlm पर --###নকশা নিদর্শন +- ### নকশা নিদর্শন - [কুইক ইউএমএল পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - এই নিদর্শনগুলি শিখুন: - কৌশল @@ -1167,7 +1167,7 @@ https://github.com/jwasham/coding-interview-university - প্রক্সি - প্রতিনিধি - আদেশ - -[ ] অবস্থা + - [ ] অবস্থা - স্মৃতিচারণ - পুনরাবৃত্তিকারী - সংমিশ্রিত @@ -1182,20 +1182,20 @@ https://github.com/jwasham/coding-interview-university - [মানুষের জন্য নকশার নকশাগুলি] (https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) --###সম্মিলক (n কে নির্বাচন করুন) এবং সম্ভাবনা +- ### সম্মিলক (n কে নির্বাচন করুন) এবং সম্ভাবনা - [গণিত দক্ষতা: কীভাবে ফ্যাক্টরিয়াল, অনুমান এবং সংমিশ্রণ (চয়ন করুন) (ভিডিও)] (https://www.youtube.com/watch?v=8RRo6Ti9d0U) - [স্কুল তৈরি করুন: সম্ভাবনা (ভিডিও)] (https://www.youtube.com/watch?v=sZkAAk9Wwa4) - [স্কুল তৈরি করুন: আরও সম্ভাবনা এবং মার্কভ চেইন (ভিডিও)] (https://www.youtube.com/watch?v=dNaJg-mLobQ) - -[ ] খান একাডেমি: + - [ ] খান একাডেমি: -কোর্স লেআউট: - [বেসিক তাত্ত্বিক সম্ভাবনা] (https://www.khanacademy.org/math/probability/probability-and-combinatorics-টপিক) -কেবল ভিডিওগুলি-41 (প্রতিটি সহজ এবং প্রতিটি স্বল্প): - [সম্ভাব্যতার ব্যাখ্যা (ভিডিও)] (https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) --###এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম - -এনপি-সম্পূর্ণ সমস্যার সর্বাধিক বিখ্যাত শ্রেণীর সম্পর্কে জানুন, যেমন ভ্রমণ ভ্রমণ এবং ন্যাপস্যাক সমস্যা, +- ### এনপি, এনপি-সম্পূর্ণ এবং আনুমানিক অ্যালগরিদম + - এনপি-সম্পূর্ণ সমস্যার সর্বাধিক বিখ্যাত শ্রেণীর সম্পর্কে জানুন, যেমন ভ্রমণ ভ্রমণ এবং ন্যাপস্যাক সমস্যা, এবং যখন কোনও সাক্ষাত্কার আপনাকে ছদ্মবেশে জিজ্ঞাসা করে তখন সেগুলি সনাক্ত করতে সক্ষম হোন। - -এনপি-সম্পূর্ণ অর্থ কী তা জানুন। + - এনপি-সম্পূর্ণ অর্থ কী তা জানুন। - [গণনামূলক জটিলতা (ভিডিও)] (https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - সাইমনসন: - [লোভী অ্যালগস। এনপি সম্পূর্ণতা (ভিডিও) তে II এবং ইন্ট্রো] (https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) @@ -1224,31 +1224,31 @@ https://github.com/jwasham/coding-interview-university -###প্রক্রিয়া এবং থ্রেডস - কম্পিউটার বিজ্ঞান 162-অপারেটিং সিস্টেম (25 টি ভিডিও): - -প্রক্রিয়া এবং থ্রেডগুলির জন্য ভিডিওগুলি 1-11 দেখুন + - প্রক্রিয়া এবং থ্রেডগুলির জন্য ভিডিওগুলি 1-11 দেখুন -[অপারেটিং সিস্টেমস এবং সিস্টেম প্রোগ্রামিং (ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - -[প্রক্রিয়া এবং একটি থ্রেডের মধ্যে পার্থক্য কী?] (Https://www.quora.com/What-is-the-differences-between-a-process-and-a-thread) - -কভার: - -প্রক্রিয়াগুলি, থ্রেডগুলি, সমঝোতার বিষয়গুলি - -প্রক্রিয়া এবং থ্রেড মধ্যে পার্থক্য - -প্রক্রিয়া - -থ্রেড - -তালা - -মিটেক্সেস - -semaphores - -মনিটর - -তারা কীভাবে কাজ করে - -অচলাবস্থা - -লাইভলক - -সিপিইউ ক্রিয়াকলাপ, বাধা, প্রসঙ্গের স্যুইচিং - -মাল্টিকোর প্রসেসরগুলির সাথে আধুনিক একত্রীকরণ - -[পেজিং, বিভাগকরণ এবং ভার্চুয়াল মেমোরি (ভিডিও)] (https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - -[বাধা (ভিডিও)] (https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - -[শিডিং (ভিডিও)] (https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - -প্রক্রিয়া সংস্থান প্রয়োজন (মেমরি: কোড, স্ট্যাটিক স্টোরেজ, স্ট্যাক, গাদা, এবং ফাইল বিবরণকারী, i / o) - -থ্রেড রিসোর্সের প্রয়োজন (একই প্রক্রিয়ায় অন্যান্য থ্রেডের সাথে উপরের (বিয়োগ স্ট্যাক) তবে প্রতিটিটির নিজস্ব পিসি, স্ট্যাক কাউন্টার, রেজিস্টার এবং স্ট্যাক রয়েছে) - -নতুন প্রক্রিয়া মেমরিটিতে লেখার আগ পর্যন্ত ফোর্কিং সত্যই লেখার অনুলিপি (কেবল পঠনযোগ্য) হয়, তবে এটি একটি সম্পূর্ণ অনুলিপি করে। - -প্রসঙ্গে স্যুইচিং - -কীভাবে প্রসঙ্গের স্যুইচিং অপারেটিং সিস্টেম এবং অন্তর্নিহিত হার্ডওয়্যার দ্বারা শুরু করা হয় + - [প্রক্রিয়া এবং একটি থ্রেডের মধ্যে পার্থক্য কী?] (Https://www.quora.com/What-is-the-differences-between-a-process-and-a-thread) + - কভার: + - প্রক্রিয়াগুলি, থ্রেডগুলি, সমঝোতার বিষয়গুলি + - প্রক্রিয়া এবং থ্রেড মধ্যে পার্থক্য + - প্রক্রিয়া + - থ্রেড + - তালা + - মিটেক্সেস + - semaphores + - মনিটর + - তারা কীভাবে কাজ করে + - অচলাবস্থা + - লাইভলক + - সিপিইউ ক্রিয়াকলাপ, বাধা, প্রসঙ্গের স্যুইচিং + - মাল্টিকোর প্রসেসরগুলির সাথে আধুনিক একত্রীকরণ + - [পেজিং, বিভাগকরণ এবং ভার্চুয়াল মেমোরি (ভিডিও)] (https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - [বাধা (ভিডিও)] (https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - [শিডিং (ভিডিও)] (https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) + - প্রক্রিয়া সংস্থান প্রয়োজন (মেমরি: কোড, স্ট্যাটিক স্টোরেজ, স্ট্যাক, গাদা, এবং ফাইল বিবরণকারী, i / o) + - থ্রেড রিসোর্সের প্রয়োজন (একই প্রক্রিয়ায় অন্যান্য থ্রেডের সাথে উপরের (বিয়োগ স্ট্যাক) তবে প্রতিটিটির নিজস্ব পিসি, স্ট্যাক কাউন্টার, রেজিস্টার এবং স্ট্যাক রয়েছে) + - নতুন প্রক্রিয়া মেমরিটিতে লেখার আগ পর্যন্ত ফোর্কিং সত্যই লেখার অনুলিপি (কেবল পঠনযোগ্য) হয়, তবে এটি একটি সম্পূর্ণ অনুলিপি করে। + - প্রসঙ্গে স্যুইচিং + - কীভাবে প্রসঙ্গের স্যুইচিং অপারেটিং সিস্টেম এবং অন্তর্নিহিত হার্ডওয়্যার দ্বারা শুরু করা হয় - [সি ++ (সিরিজ-10 টি ভিডিও) এর থ্রেড]] (https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - পাইথনে সম্মতি (ভিডিও): - [থ্রেডগুলিতে সংক্ষিপ্ত সিরিজ] (https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) @@ -1259,8 +1259,8 @@ https://github.com/jwasham/coding-interview-university - [মূল ডেভিড বেজলি-আগ্রহের বিষয় (পাইথন অ্যাসিনসিও)] (https://www.youtube.com/watch?v=ZzfHjytDceU) - [পাইথনে নিবিড়] (https://www.youtube.com/watch?v=0zaPs8OtyKY) --###পরীক্ষামূলক - -ঢাকতে: +- ### পরীক্ষামূলক + - ঢাকতে: -ইউনিট টেস্টিং কীভাবে কাজ করে -মক অবজেক্টস কী -সংহতকরণ পরীক্ষা কি @@ -1273,16 +1273,16 @@ https://github.com/jwasham/coding-interview-university - [টিডিডি মারা গেছে? (ভিডিও)] (https://www.youtube.com/watch?v=z9quxZsLcfo) - [ভিডিও সিরিজ (152 টি ভিডিও)-সবার প্রয়োজন নেই (ভিডিও)] (https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - [পাইথনের সাথে পরীক্ষিত-চালিত ওয়েব বিকাশ] (http://www.obeythetestinggoat.com/pages/book.html#toc) - -[ ] ইনজেকশন নির্ভরতা: + - [ ] ইনজেকশন নির্ভরতা: - [ভিডিও] (https://www.youtube.com/watch?v=IKD2-MAkXyQ) - [পরীক্ষার তাও] (http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [পরীক্ষাগুলি কীভাবে লিখবেন] (http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) --###তফসিল - -কোনও ওএসে, এটি কীভাবে কাজ করে - -অপারেটিং সিস্টেমের ভিডিওগুলি থেকে সংগ্রহ করা যায় +- ### তফসিল + - কোনও ওএসে, এটি কীভাবে কাজ করে + - অপারেটিং সিস্টেমের ভিডিওগুলি থেকে সংগ্রহ করা যায় --###স্ট্রিং অনুসন্ধান এবং ম্যানিপুলেশনগুলি +- ### স্ট্রিং অনুসন্ধান এবং ম্যানিপুলেশনগুলি - [সেডজউইক-প্রত্যয় অ্যারে (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - [সেডজউইক-সাবস্ট্রিং অনুসন্ধান (ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) - [১। সাবস্ট্রিং অনুসন্ধানের পরিচিতি] (https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/intr پيداوار-to-substring-search) @@ -1294,10 +1294,10 @@ https://github.com/jwasham/coding-interview-university আপনার যদি এই বিষয়ে আরও বিশদ প্রয়োজন, [কিছু বিষয়ের উপর অতিরিক্ত বিবরণ] "স্ট্রিং ম্যাচিং" বিভাগটি দেখুন (কিছু-বিষয়ে-কিছু-অতিরিক্ত) --###চেষ্টা - -নোট করুন বিভিন্ন ধরণের চেষ্টা আছে। কারও কারও কাছে উপসর্গ আছে, কারও কাছে কিছু নেই, আবার কিছু বিটের পরিবর্তে স্ট্রিং ব্যবহার করে +- ### চেষ্টা + - নোট করুন বিভিন্ন ধরণের চেষ্টা আছে। কারও কারও কাছে উপসর্গ আছে, কারও কাছে কিছু নেই, আবার কিছু বিটের পরিবর্তে স্ট্রিং ব্যবহার করে পথ ট্র্যাক। - -আমি কোডের মাধ্যমে পড়েছি, তবে বাস্তবায়ন করব না। + - আমি কোডের মাধ্যমে পড়েছি, তবে বাস্তবায়ন করব না। - [সেডজউইক-চেষ্টা (3 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part2/home/week/4) - [১। আর ওয়ে চেষ্টা করে] (https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - [২। টার্নারি অনুসন্ধানের চেষ্টা] (https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) @@ -1312,23 +1312,23 @@ https://github.com/jwasham/coding-interview-university - [স্ট্যানফোর্ড লেকচার (রিয়েল ওয়ার্ল্ড ইউজ কেস) (ভিডিও)] (https://www.youtube.com/watch?v=TJ8SkcUSdbU) - [এমআইটি, উন্নত ডেটা স্ট্রাকচার, স্ট্রিংস (প্রায় অর্ধেক পথ ধরেই বেশ অস্পষ্টতা পেতে পারে) (ভিডিও)] (https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) --###ভাসমান পয়েন্ট নম্বর +- ### ভাসমান পয়েন্ট নম্বর - সাধারণ 8-বিট: [ভাসমান পয়েন্ট সংখ্যাগুলির প্রতিনিধিত্ব-1 (ভিডিও-গণনায় একটি ত্রুটি রয়েছে-ভিডিও বর্ণনা দেখুন)] (https://www.youtube.com/watch?v=ji3SfClm8TU) - 32 বিট: [আইইইই 7575 32-বিট ভাসমান পয়েন্ট বাইনারি (ভিডিও)] (https://www.youtube.com/watch?v=50ZYcZebIec) --###ইউনিকোড +- ### ইউনিকোড - [সর্বনিম্ন ন্যূনতম প্রতিটি সফ্টওয়্যার বিকাশকারী অবশ্যই, ইউনিকোড এবং চরিত্রের সেট সম্পর্কে ইতিবাচকভাবে অবশ্যই জানতে হবে] (http://www.joelonsoftware.com/articles/Unicode.html) - [প্রতিটি প্রোগ্রামার একেবারে নিখুঁতভাবে, এনকোডিংগুলি এবং পাঠ্যের সাথে কাজ করার জন্য চরিত্রের সেটগুলি সম্পর্কে ইতিবাচক প্রয়োজন] [http://kunststube.net/encoding/) --###শেষ +- ### শেষ - [বড় এবং ছোট এন্ডিয়ান] (https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian। এইচটিএমএল) - [বিগ এন্ডিয়ান বনাম লিটল এন্ডিয়ান (ভিডিও)] (https://www.youtube.com/watch?v=JrNF0KRAlyo) - [বিগ এবং লিটল এন্ডিয়ান ইনসাইড / আউট (ভিডিও)] (https://www.youtube.com/watch?v=oBSuXP-1Tc0) - -কার্নেল দেবদের জন্য খুব প্রযুক্তিগত আলাপ। বেশিরভাগ আপনার মাথার উপরে থাকলে চিন্তা করবেন না। - -প্রথমার্ধ যথেষ্ট। + - কার্নেল দেবদের জন্য খুব প্রযুক্তিগত আলাপ। বেশিরভাগ আপনার মাথার উপরে থাকলে চিন্তা করবেন না। + - প্রথমার্ধ যথেষ্ট। --###নেটওয়ার্কিং - -** আপনার যদি নেটওয়ার্কিংয়ের অভিজ্ঞতা থাকে বা কোনও নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে প্রশ্নগুলি আশা করুন ** +- ### নেটওয়ার্কিং + - **আপনার যদি নেটওয়ার্কিংয়ের অভিজ্ঞতা থাকে বা কোনও নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে প্রশ্নগুলি আশা করুন** -অন্যথায়, এটি জেনে রাখা ভাল - [খান একাডেমি] (https://www.khanacademy.org/computing/computer-science/internet-intro) - [ইউডিপি এবং টিসিপি: পরিবহন প্রোটোকলের তুলনা (ভিডিও)] (https://www.youtube.com/watch?v=Vdc8TCESIg8) @@ -1346,30 +1346,30 @@ https://github.com/jwasham/coding-interview-university
-##সিস্টেম ডিজাইন, স্কেলিবিলিটি, ডেটা হ্যান্ডলিং +## সিস্টেম ডিজাইন, স্কেলিবিলিটি, ডেটা হ্যান্ডলিং
<সুমারী> সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং -** আপনার 4+ বছরের অভিজ্ঞতা থাকলে আপনি সিস্টেম ডিজাইন প্রশ্নগুলি আশা করতে পারেন * +**আপনার ৪+ বছরের অভিজ্ঞতা থাকলে আপনি সিস্টেম ডিজাইন প্রশ্নগুলি আশা করতে পারেন* --স্কেলাবিলিটি এবং সিস্টেম ডিজাইন অনেকগুলি বিষয় এবং সংস্থান সহ অনেক বড় বিষয় since +- স্কেলাবিলিটি এবং সিস্টেম ডিজাইন অনেকগুলি বিষয় এবং সংস্থান সহ অনেক বড় বিষয় since এমন একটি সফ্টওয়্যার / হার্ডওয়্যার সিস্টেম ডিজাইন করার সময় বিবেচনা করার মতো অনেক কিছুই রয়েছে যা স্কেল করতে পারে। এটিতে বেশ কিছুটা সময় ব্যয় করার প্রত্যাশা করুন। --বিবেচনা: - -স্কেলিবিলিটি - -একক মানগুলিতে বড় ডেটা সেট স্থাপন করুন - -একটি ডেটা সেট করে অন্যটিতে রূপান্তর করুন - -অশ্লীলভাবে প্রচুর পরিমাণে ডেটা পরিচালনা করা - -ব্যবস্থা পরিকল্পনা - -বৈশিষ্ট্য সেট - -ইন্টারফেস - -শ্রেণি শ্রেণিবিন্যাস - -নির্দিষ্ট সীমাবদ্ধতার অধীনে একটি সিস্টেম ডিজাইন করা - -সরলতা এবং দৃust়তা - -বাণিজ্য - -কর্মক্ষমতা বিশ্লেষণ এবং অপ্টিমাইজেশন -- ** এখানে শুরু করুন **: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) +- বিবেচনা: + - স্কেলিবিলিটি + - একক মানগুলিতে বড় ডেটা সেট স্থাপন করুন + - একটি ডেটা সেট করে অন্যটিতে রূপান্তর করুন + - অশ্লীলভাবে প্রচুর পরিমাণে ডেটা পরিচালনা করা + - ব্যবস্থা পরিকল্পনা + - বৈশিষ্ট্য সেট + - ইন্টারফেস + - শ্রেণি শ্রেণিবিন্যাস + - নির্দিষ্ট সীমাবদ্ধতার অধীনে একটি সিস্টেম ডিজাইন করা + - সরলতা এবং দৃust়তা + - বাণিজ্য + - কর্মক্ষমতা বিশ্লেষণ এবং অপ্টিমাইজেশন +- **এখানে শুরু করুন**: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) - [হায়ারডিনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) - [আমি কীভাবে কোনও প্রযুক্তিগত ইনভারভিউতে নকশার প্রশ্নের উত্তর দিতে প্রস্তুত করব?] (Https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview? redirected_qid = 1500023) - [সিস্টেম ডিজাইনের সাক্ষাত্কারের আগে আপনার যে 8 টি বিষয়গুলি জানতে হবে]] (http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system ডিজাইন-সাক্ষাৎকার /) @@ -1439,15 +1439,15 @@ https://github.com/jwasham/coding-interview-university - [সেলসফোর্স আর্কিটেকচার-তারা কীভাবে একদিন ১.৩ বিলিয়ন লেনদেন পরিচালনা করে] [http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html ) - [ইএসপিএন এর আর্কিটেকচার স্কেল-100,000 ডুহ নুহ নুহ্হ্ প্রতি সেকেন্ডে অপারেটিং] [http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - পরিষেবাগুলিকে একসাথে আটকানো যেতে পারে এমন কয়েকটি প্রযুক্তির তথ্যের জন্য নীচে "বার্তা, সিরিয়ালাইজেশন এবং কুইউনিং সিস্টেম" দেখুন See - -[ ] টুইটার: - -[ও'রিলি মাইএসকিউএল সিই 2011: জেরেমি কোল, "টুইটারে বড় এবং ছোট তথ্য" (ভিডিও)] (https://www.youtube.com/watch?v=5cKTP36HVgI) - -[স্কেলে টাইমলাইন] (https://www.infoq.com/preferencesations/Twitter-Timeline-সক্ষমতা) - -আরও তথ্যের জন্য, [ভিডিও সিরিজ] (#ভিডিও-সিরিজ) বিভাগে "মাইনিং ম্যাসিভ ডেটাসেটস" ভিডিও সিরিজটি দেখুন। + - [ ] টুইটার: + - [ও'রিলি মাইএসকিউএল সিই 2011: জেরেমি কোল, "টুইটারে বড় এবং ছোট তথ্য" (ভিডিও)] (https://www.youtube.com/watch?v=5cKTP36HVgI) + - [স্কেলে টাইমলাইন] (https://www.infoq.com/preferencesations/Twitter-Timeline-সক্ষমতা) + - আরও তথ্যের জন্য, [ভিডিও সিরিজ] (#ভিডিও-সিরিজ) বিভাগে "মাইনিং ম্যাসিভ ডেটাসেটস" ভিডিও সিরিজটি দেখুন। - সিস্টেম ডিজাইন প্রক্রিয়াটির অনুশীলন: কাগজে কাজ করার চেষ্টা করার জন্য এখানে কয়েকটি ধারণা দেওয়া হয়েছে, প্রত্যেকটি আসল বিশ্বে কীভাবে এটি পরিচালনা করা হয়েছিল সে সম্পর্কে কিছু ডকুমেন্টেশন সহ: - -পর্যালোচনা: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) - -[হাইরেডইনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) - -[চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - -প্রবাহ: + - পর্যালোচনা: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) + - [হাইরেডইনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) + - [চিট শিট] (https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - প্রবাহ: 1. সমস্যা এবং সুযোগটি বুঝুন: -সাক্ষাত্কারের সাহায্যে ব্যবহারের ক্ষেত্রে সংজ্ঞা দিন -অতিরিক্ত বৈশিষ্ট্য প্রস্তাব @@ -1466,21 +1466,21 @@ https://github.com/jwasham/coding-interview-university -অবকাঠামো: লোড ব্যালেন্সিং, মেসেজিং -পরিষেবা চালিত কোনও মূল অ্যালগরিদম সম্পর্কে মোটামুটি ওভারভিউ -বাধা বিবেচনা করুন এবং সমাধান নির্ধারণ করুন - -অনুশীলন: - -[একটি সিডিএন নেটওয়ার্ক ডিজাইন করুন: পুরাতন নিবন্ধ] (http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) - -[একটি এলোমেলো আইডি জেনারেশন সিস্টেম ডিজাইন করুন] (https://blog.twitter.com/2010/annoucing-snowflake) - -[একটি অনলাইন মাল্টিপ্লেয়ার কার্ড গেমটি ডিজাইন করুন] (http://www.indieflashblog.com/how-to-create-an-asynchronous-multplayer-game.html) - -[একটি মূল-মান ডাটাবেস ডিজাইন করুন) (http://www.slideshare.net/dvirsky/intrration-to-redis) - -[ছবি শেয়ারিং সিস্টেম ডিজাইন করুন] (http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - -[একটি সুপারিশ সিস্টেম ডিজাইন করুন) (http://ijcai13.org/files/tutorial_slides/td3.pdf) - -[একটি ইউআরএল-শর্টনার সিস্টেম ডিজাইন করুন: উপর থেকে অনুলিপি করা হয়েছে) (http://www.hiredintech.com/system-design/the-system-design-process/) - -[একটি ক্যাশে সিস্টেম ডিজাইন করুন) (https://www.adayinthelifeof.nl/2011/02/06/mmcache-internals/) + - অনুশীলন: + - [একটি সিডিএন নেটওয়ার্ক ডিজাইন করুন: পুরাতন নিবন্ধ] (http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci) + - [একটি এলোমেলো আইডি জেনারেশন সিস্টেম ডিজাইন করুন] (https://blog.twitter.com/2010/annoucing-snowflake) + - [একটি অনলাইন মাল্টিপ্লেয়ার কার্ড গেমটি ডিজাইন করুন] (http://www.indieflashblog.com/how-to-create-an-asynchronous-multplayer-game.html) + - [একটি মূল-মান ডাটাবেস ডিজাইন করুন) (http://www.slideshare.net/dvirsky/intrration-to-redis) + - [ছবি শেয়ারিং সিস্টেম ডিজাইন করুন] (http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [একটি সুপারিশ সিস্টেম ডিজাইন করুন) (http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [একটি ইউআরএল-শর্টনার সিস্টেম ডিজাইন করুন: উপর থেকে অনুলিপি করা হয়েছে) (http://www.hiredintech.com/system-design/the-system-design-process/) + - [একটি ক্যাশে সিস্টেম ডিজাইন করুন) (https://www.adayinthelifeof.nl/2011/02/06/mmcache-internals/)
--- -##চূড়ান্ত পর্যালোচনা +## চূড়ান্ত পর্যালোচনা
চূড়ান্ত পর্যালোচনা @@ -1500,22 +1500,22 @@ https://github.com/jwasham/coding-interview-university --- -##কোডিং প্রশ্ন অনুশীলন +## কোডিং প্রশ্ন অনুশীলন
<সংশ্লেষ> কোডিং প্রশ্ন অনুশীলন << সংক্ষিপ্ত> আপনি যেহেতু উপরের সমস্ত কম্পিউটার বিজ্ঞানের বিষয়গুলি জানেন, এখন কোডিং সমস্যার উত্তর দেওয়ার অনুশীলন করার সময় এসেছে। -** কোডিং প্রশ্ন অনুশীলন প্রোগ্রামিং সমস্যার উত্তর মুখস্থ করার বিষয়ে নয় * ** +**কোডিং প্রশ্ন অনুশীলন প্রোগ্রামিং সমস্যার উত্তর মুখস্থ করার বিষয়ে নয়** আপনার প্রোগ্রামিং সমস্যাগুলি করার অনুশীলন করা দরকার কেন: --সমস্যা স্বীকৃতি এবং যেখানে সঠিক ডেটা স্ট্রাকচার এবং অ্যালগরিদম ফিট করে --সমস্যার প্রয়োজনীয়তা সংগ্রহ করা --আপনি যেমন সাক্ষাত্কারে যাবেন ঠিক তেমন সমস্যার মধ্য দিয়ে কথা বলা --একটি হোয়াইটবোর্ড বা কাগজে কোডিং, কম্পিউটার নয় --আপনার সমাধানের জন্য সময় এবং স্থান জটিলতার সাথে হাজির --আপনার সমাধান পরীক্ষা করা +- সমস্যা স্বীকৃতি এবং যেখানে সঠিক ডেটা স্ট্রাকচার এবং অ্যালগরিদম ফিট করে +- সমস্যার প্রয়োজনীয়তা সংগ্রহ করা +- আপনি যেমন সাক্ষাত্কারে যাবেন ঠিক তেমন সমস্যার মধ্য দিয়ে কথা বলা +- একটি হোয়াইটবোর্ড বা কাগজে কোডিং, কম্পিউটার নয় +- আপনার সমাধানের জন্য সময় এবং স্থান জটিলতার সাথে হাজির +- আপনার সমাধান পরীক্ষা করা একটি সাক্ষাত্কারে পদ্ধতিগত, যোগাযোগমূলক সমস্যা সমাধানের জন্য দুর্দান্ত ভূমিকা রয়েছে। আপনি প্রোগ্রামিং থেকে এটি পাবেন সাক্ষাত্কারের বইগুলিও, তবে আমি এই অসামান্যটি পেয়েছি: @@ -1533,7 +1533,7 @@ https://github.com/jwasham/coding-interview-university -[ডায়নামিক প্রোগ্রামিং-নোভাইস থেকে অ্যাডভান্সড] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/dynamic-programming-from-novice-to-advanced/ -[এমআইটি সাক্ষাত্কার উপকরণ] (https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/matorys.php) -** প্রোগ্রামিং সমস্যাগুলি পড়ুন এবং করুন (এই ক্রমে): ** +**প্রোগ্রামিং সমস্যাগুলি পড়ুন এবং করুন (এই ক্রমে):** - [প্রোগ্রামিং সাক্ষাত্কার উন্মোচিত: আপনার পরবর্তী কাজ ল্যান্ডিংয়ের গোপনীয়তা, ২ য় সংস্করণ] (http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) -সি, সি ++ এবং জাভাতে উত্তর @@ -2220,7 +2220,7 @@ https://github.com/jwasham/coding-interview-university - [২০১৪: মেশিন লার্নিং: প্রযুক্তিগত tণের উচ্চ-আগ্রহের ক্রেডিট কার্ড] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [২০১৫: গুগলে অবিচ্ছিন্ন পাইপলাইন] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [২০১৫: বৃহত্তর স্কেলে উচ্চ-প্রাপ্যতা: বিজ্ঞাপনগুলির জন্য গুগলের ডেটা অবকাঠামো তৈরি করা] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [২০১৫: টেনসরফ্লো: বিজাতীয় বিতরণকারী সিস্টেমে বৃহত্তর স্কেল মেশিন লার্নিং] (http://download.tensorflow.org/paper/ whitepaper2015.pdf) +- [২০১৫: টেনসরফ্লো: বিজাতীয় বিতরণকারী সিস্টেমে বৃহত্তর স্কেল মেশিন লার্নিং] (http://download.tensorflow.org/paper/whitepaper2015.pdf) - [২০১৫: কীভাবে ডেভলপাররা কোড অনুসন্ধান করে: একটি কেস স্টাডি] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - [২০১:: বোর্গ, ওমেগা এবং কুবারনেটস] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) From 60e18d4f5a47c83aa3961f73beead3c47bfc47a1 Mon Sep 17 00:00:00 2001 From: Shaon Sikder Date: Mon, 1 Jan 2024 12:46:07 +0600 Subject: [PATCH 799/857] Updated README-bn(Typo, Formatting, linking issues).md --- translations/README-bn.md | 528 +++++++++++++++++++------------------- 1 file changed, 264 insertions(+), 264 deletions(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index d07e04c787..58de395e36 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -4,7 +4,7 @@ > তবে এটি আজ আপনি যে বৃহত তালিকা দেখতে পাচ্ছেন তাতে রুপ নিয়েছে এই শিক্ষা পরিকল্পনাটি পেরিয়ে যাওয়ার পরে, [আমি নিয়োগ পেয়েছি > অ্যামাজনে সফটওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার হিসাবে](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > -> **খেয়াল করুন** আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। +>**খেয়াল করুন**আপনাকে সম্ভবত আমার মতো পড়াশোনা করতে হবে না। যাইহোক, আপনার যা কিছু প্রয়োজন তা এখানেই। > > আমি বেশ কয়েক মাস ধরে প্রতিদিন প্রায় ৮-১২ ঘন্টা অধ্যয়ন করেছি। এটি আমার গল্প: [গুগল সাক্ষাত্কারের জন্য আমি কেন ৮ মাস পূর্ণ-সময় অধ্যয়ন করেছি](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > @@ -12,7 +12,7 @@ > যার মধ্যে থাকবে বৃহৎ প্রযুক্তি কোম্পানি যেমন: অ্যামাজন, ফেসবুক, গুগল বা মাইক্রোসফ্ট। > -> *আপনার জন্য শুভকামনা!* +>*আপনার জন্য শুভকামনা!*
অনুবাদ: @@ -67,11 +67,11 @@ এটি আমার বহু মাসের অধ্যয়ন পরিকল্পনা যার মাধ্যমে কোনো বড় প্রতিষ্ঠানের সফটওয়্যার ইঞ্জিনিয়ারের কাজে (স্ব-শিক্ষিত, কোনও সিএস ডিগ্রি ছাড়া) যোগ দেওয়া সম্ভব। -**গুরুত্বপূর্নঃ** +**গুরুত্বপূর্নঃ** -* প্রোগ্রামিং এ সামান্য অভিজ্ঞতা (ভ্যারিয়েবলস,লুপ্স,মেথড/ফাংশন,ইত্যাদি) -* ধৈর্য -* সময় +*প্রোগ্রামিং এ সামান্য অভিজ্ঞতা (ভ্যারিয়েবলস,লুপ্স,মেথড/ফাংশন,ইত্যাদি) +*ধৈর্য +*সময় বিজ্ঞপ্তি এটি সফ্টওয়্যার ইঞ্জিনিয়ারিং এর অধ্যয়ন পরিকল্পনা, ওয়েব ডেভলপমেন্ট এর নয়। বড় বড় সফ্টওয়্যার কোম্পানি যেমন গুগল, অ্যামাজন,ফেসবুক এবং মাইক্রোসফ্ট সফ্টওয়্যার ইঞ্জিনিয়ারিং কে ওয়েব ডেভলপমেন্ট থেকে আলাদা হিসাবে দেখে। যেমন অ্যামাজন এর ফ্রন্ট এন্ড ইঞ্জিনিয়ার (এফইই) এবং সফ্টওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার (এফডিই) দুই ধরনের ইঞ্জিনিয়ার আছে। এই দুইটি আলাদা চাকরি এবং এদের ইন্টারভিউ ও আলাদা ধরনের হবে। কারন এই দুই ধরনের পেশার জন্য আলাদা দক্ষতা প্রয়োজন। এই প্রতিষ্ঠান গুলো সফ্টওয়্যার ডেভলপমেন্ট ইঞ্জিনিয়ার এর চাকরির জন্য কম্পিউটার সাইন্স এর জ্ঞান হাকা আবশ্যক মনে করে। @@ -102,14 +102,14 @@ - [অ্যালগোরিদমিক জটিলতা / বিগ-ও / অ্যাসিম্পটোটিক বিশ্লেষণ](#অ্যালগোরিদমিক-জটিলতা-বিগ-ও-অ্যাসিপোটোটিক-বিশ্লেষণ) - [ডেটা স্ট্রাকচার](#ডেটা-স্ট্রাকচার) - -[অ্যারে](#অ্যারে) - -[লিঙ্কলিস্ট](#লিঙ্কযুক্ত-তালিকাগুলি) - -[স্ট্যাক](#স্ট্যাক) - -[কিউ](#সারি) - -[হ্যাশ টেবিল](#হ্যাশ-টেবিল) + - [অ্যারে](#অ্যারে) + - [লিঙ্কলিস্ট](#লিঙ্কযুক্ত-তালিকাগুলি) + - [স্ট্যাক](#স্ট্যাক) + - [কিউ](#সারি) + - [হ্যাশ টেবিল](#হ্যাশ-টেবিল) - [আরও জ্ঞান](#আরও-জ্ঞান) - -[বাইনারি সার্চ](#বাইনারি-অনুসন্ধান) - -[বিটওয়াইজ অপারেশন](#বিটওয়াইস-অপারেশন) + - [বাইনারি সার্চ](#বাইনারি-অনুসন্ধান) + - [বিটওয়াইজ অপারেশন](#বিটওয়াইস-অপারেশন) - [ট্রি](#গাছ) - [ট্রি-নোট এবং পটভূমি](#গাছ-নোট-পটভূমি) - [বাইনারি সার্চ গাছ: বিএসটি](#বাইনারি-অনুসন্ধান-গাছ-বুস্ট) @@ -161,7 +161,7 @@ ### ঐচ্ছিক অতিরিক্ত বিষয় ও রিসোর্স --[অধিক বই](#অতিরিক্ত-বই) +- [অধিক বই](#অতিরিক্ত-বই) - [সিস্টেম ডিজাইন, স্কেলাবিলিটি, ডেটা হ্যান্ডলিং](#সিস্টেম-ডিজাইন-স্কেলাবিলিটি-ডেটা-হ্যান্ডলিং) (যদি আপনার 4+ বছরের অভিজ্ঞতা থাকে) - [অধিক শিক্ষা](#অতিরিক্ত-শিক্ষণ) - [কম্পাইলার্স](#সংকলক) @@ -176,7 +176,7 @@ - [গারবেজ কালেকশন](#জঞ্জাল-সংগ্রহ) - [প্যারালাল প্রোগ্রামিং](#সমান্তরাল-প্রোগ্রামিং) - [মেসেজিং, সিরিয়ালাইজেশন, এবং কিউইং সিস্টেম](#মেসেজিং-সিরিয়ালাইজেশন-এবং-কুইউং-সিস্টেম) - - [এ *](#ক) + - [এ*](#ক) - [ফাস্ট ফুরিয়ার ট্রান্সফর্ম](#ফাস্ট-ফুরিয়ার-ট্রান্সফর্ম) - [ব্লুম ফিল্টার](#ব্লুম-ফিল্টার) - [হাইপারলগলগ](#হাইপারলগলগ) @@ -407,7 +407,7 @@ https://github.com/jwasham/coding-interview-university - [ফ্ল্যাশকার্ডস সাইটের রিপো](https://github.com/jwasham/computer-science-flash-cards) -**আমি আমার ফ্ল্যাশকার্ডগুলি ব্যবহার করার পরামর্শ দিই না।** অনেকগুলি আছে এবং তাদের মধ্যে অনেকগুলি তুচ্ছ বিষয় যা আপনার প্রয়োজন নেই. +**আমি আমার ফ্ল্যাশকার্ডগুলি ব্যবহার করার পরামর্শ দিই না।**অনেকগুলি আছে এবং তাদের মধ্যে অনেকগুলি তুচ্ছ বিষয় যা আপনার প্রয়োজন নেই. তবু যদি আপনি আপনি আমার কথা শুনতে নাহ চান। এখানে ফ্ল্যাশ কার্ড গুলি পাবেন: - [আমার ফ্ল্যাশ কার্ডের ডাটাবেস (পুরাতন-1200 কার্ড)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): @@ -415,7 +415,7 @@ https://github.com/jwasham/coding-interview-university মনে রাখবেন আমি ওভারবোর্ডে গিয়েছিলাম এবং সমাবেশগুলির ভাষা এবং পাইথন ট্রিভিয়া থেকে শুরু করে মেশিন লার্নিং এবং পরিসংখ্যানের সমস্ত কিছুর জন্য কার্ড রয়েছে। যা প্রয়োজন তার জন্য এটি অনেক বেশি। -**ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য:** আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে +**ফ্ল্যাশকার্ডগুলিতে দ্রষ্টব্য:**আপনি যখন প্রথমবার উত্তরটি জানেন তখন তা চিহ্নিত হিসাবে চিহ্নিত করবেন না। আপনাকে দেখতে হবে একই কার্ড এবং এটি জেনে রাখার আগে বেশ কয়েকবার সঠিক উত্তর দিন। পুনরাবৃত্তি সেই জ্ঞানকে আরও গভীর করে দেবে আপনার মস্তিষ্ক. @@ -504,7 +504,7 @@ https://github.com/jwasham/coding-interview-university কিছু বিষয় একদিন নেয়, এবং কিছুতে একাধিক দিন সময় লাগবে। কিছু বাস্তবায়নের কিছুই না দিয়ে কেবল শিখছে। প্রতিদিন আমি নীচের তালিকা থেকে একটি বিষয় নিয়ে যাই, সেই বিষয় সম্পর্কে ভিডিও দেখি এবং একটি বাস্তবায়ন এখানে লিখি: -- সি-স্ট্রাকস এবং ফাংশনগুলি ব্যবহার করে যা স্ট্রাক * এবং আরজ হিসাবে অন্য কোনও কিছু নেয়। +- সি-স্ট্রাকস এবং ফাংশনগুলি ব্যবহার করে যা স্ট্রাক*এবং আরজ হিসাবে অন্য কোনও কিছু নেয়। - সি ++-অন্তর্নির্মিত প্রকারগুলি ব্যবহার না করে - সি ++-অন্তর্নির্মিত প্রকারগুলি যেমন STL এর std :: লিঙ্কযুক্ত তালিকার জন্য তালিকা ব্যবহার করে - পাইথন-অন্তর্নির্মিত প্রকারগুলি (পাইথনের অনুশীলন চালিয়ে যেতে) ব্যবহার করে @@ -534,14 +534,14 @@ https://github.com/jwasham/coding-interview-university
<সংশ্লেষ> পূর্বশর্ত জ্ঞান << সংক্ষিপ্ত> -- **সি** শিখুন - -সি সর্বত্র আছে। আপনি অধ্যয়নরত অবস্থায় আপনি বই, বক্তৃতা, ভিডিও, * সর্বত্র * এর উদাহরণ দেখতে পাবেন। +- **সি**শিখুন + -সি সর্বত্র আছে। আপনি অধ্যয়নরত অবস্থায় আপনি বই, বক্তৃতা, ভিডিও,*সর্বত্র*এর উদাহরণ দেখতে পাবেন। - [সি প্রোগ্রামিং ল্যাঙ্গুয়েজ, খণ্ড ২] (https://www.amazon.com/Programming-Language-ব্রায়ান-ডব্লিউ-কর্নিগান/dp/0131103628) -এটি একটি সংক্ষিপ্ত বই, তবে এটি আপনাকে সি ভাষায় দুর্দান্ত হ্যান্ডেল দেবে এবং যদি আপনি এটি কিছুটা অনুশীলন করেন আপনি দ্রুত দক্ষ হয়ে উঠবেন। সি বোঝা আপনাকে প্রোগ্রাম এবং মেমরি কীভাবে কাজ করে তা বুঝতে সহায়তা করে। - -[প্রশ্নের উত্তর] (https://github.com/lekkas/c-algorithms) + - [প্রশ্নের উত্তর] (https://github.com/lekkas/c-algorithms) -- **কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে:** +- **কম্পিউটার কীভাবে কোনও প্রোগ্রাম প্রক্রিয়া করে:** - [সিপিইউ কীভাবে একটি প্রোগ্রাম (ভিডিও) চালায়]] (https://www.youtube.com/watch?v=XM4lGflQFvA) - [কম্পিউটারগুলি কীভাবে গণনা করে-ALU (ভিডিও)] (https://youtu.be/1I5ZMmrOfnA) - [নিবন্ধসমূহ এবং র‌্যাম (ভিডিও)] (https://youtu.be/fpnE6UAfbtU) @@ -613,7 +613,7 @@ https://github.com/jwasham/coding-interview-university আপনার বাড়িতে একটি হোয়াইটবোর্ড না থাকলে, একটি আর্ট স্টোর থেকে একটি বড় অঙ্কন প্যাড নিন। আপনি সোফায় বসে অনুশীলন করতে পারেন। এটি আমার "সোফা হোয়াইটবোর্ড"। আমি শুধু স্কেলের জন্য ফটোতে কলম যোগ করেছি। যদি আপনি একটি কলম ব্যবহার করেন, আপনি মুছে দিতে পারেন. -দ্রুত এলোমেলো হয়ে যায়। **আমি একটি পেন্সিল এবং ইরেজার ব্যবহার করি।** +দ্রুত এলোমেলো হয়ে যায়।**আমি একটি পেন্সিল এবং ইরেজার ব্যবহার করি।** ![আমার সোফা হোয়াইটবোর্ড](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) @@ -713,7 +713,7 @@ https://github.com/jwasham/coding-interview-university - O(n) to insert/remove elsewhere - [ ] Space - 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) - ### লিঙ্কড লিস্ট - [ ] বিবরণ: @@ -790,8 +790,8 @@ https://github.com/jwasham/coding-interview-university - [ডেটা স্ট্রাকচার (ভিডিও)] (https://www.coursera.org/learn/data-structures/home/week/3) - [ফোন বুক সমস্যা (ভিডিও)] (https://www.coursera.org/learn/data-structures/ নির্বাচন / NYZZP/ iPhone-book-সমস্যা) - হ্যাশ টেবিল বিতরণ: - -[ড্রপবক্সে তাত্ক্ষণিক আপলোড এবং স্টোরেজ অপ্টিমাইজেশন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-stores-optimization-in-rodbox) - -[বিতরণ করা হ্যাশ টেবিলগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributes-hash-tables) + - [ড্রপবক্সে তাত্ক্ষণিক আপলোড এবং স্টোরেজ অপ্টিমাইজেশন (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-stores-optimization-in-rodbox) + - [বিতরণ করা হ্যাশ টেবিলগুলি (ভিডিও)] (https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributes-hash-tables) - লিনিয়ার প্রোব ব্যবহার করে অ্যারে প্রয়োগ করুন -হ্যাশ (কে, মি)-মি হ্যাশ টেবিলের আকার @@ -838,7 +838,7 @@ https://github.com/jwasham/coding-interview-university - [32 বিট পূর্ণসংখ্যায় সেট বিটের সংখ্যা কীভাবে গণনা করবেন] (http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-િટ-in-a-32-বিট-পূর্ণসংখ্যা) - পরের পাওয়ার 2 এর রাউন্ড: - [দু'জনের পরের শক্তিতে রাউন্ড আপ] (https://bit.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - -[ অদলবদল মান: + - [ অদলবদল মান: - [অদলবদল (https://bit.stephan-brumme.com/swap.html) - নিখুঁত মান: - [নিখুঁত পূর্ণসংখ্যার] (https://bit.stephan-brumme.com/absInteger.html) @@ -894,7 +894,7 @@ https://github.com/jwasham/coding-interview-university - get_node_count // সঞ্চিত মানের গণনা পান - মুদ্রণ_মূল্য // গাছের মানগুলি ন্যূনতম থেকে সর্বোচ্চ পর্যন্ত মুদ্রণ করে - মোছা_ট্রি - -[ is_in_tree // টি দেওয়া যদি গাছটিতে থাকে তবে তা সত্য হয় returns + - [ is_in_tree // টি দেওয়া যদি গাছটিতে থাকে তবে তা সত্য হয় returns - get_height // নোডগুলিতে উচ্চতা ফেরায় (একক নোডের উচ্চতা 1) - get_min // গাছে সঞ্চিত সর্বনিম্ন মান প্রদান করে - get_max // গাছের মধ্যে সঞ্চিত সর্বোচ্চ মান প্রদান করে returns @@ -939,17 +939,17 @@ https://github.com/jwasham/coding-interview-university
বাছাইকরণ --[ ] নোট: +- [ ] নোট: - প্রকারভেদ প্রয়োগ করুন এবং সর্বোত্তম কেস / নিকৃষ্টতম কেস, প্রত্যেকের গড় জটিলতা জানেন: -কোনও বুদ্বুদ বাছাই নয়-এটি ভয়ানক-হে (n ^ 2), যখন এন <= 16 বাদে - অ্যালগরিদম বাছাইয়ের স্থায়িত্ব ("কুইকসোর্ট স্থিতিশীল?") - -[অ্যালগোরিদম স্থিতিশীলতা বাছাই করা হচ্ছে) (https://en.wikedia.org/wiki/Sorting_algorithm#Stability) - -[অ্যালগরিদমগুলি বাছাইয়ে স্থিতিশীলতা] (http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - -[অ্যালগোরিদম বাছাইয়ে স্থায়িত্ব] (http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - -[অ্যালগরিদম বাছাই-স্থিতিশীলতা] (http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [অ্যালগোরিদম স্থিতিশীলতা বাছাই করা হচ্ছে) (https://en.wikedia.org/wiki/Sorting_algorithm#Stability) + - [অ্যালগরিদমগুলি বাছাইয়ে স্থিতিশীলতা] (http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [অ্যালগোরিদম বাছাইয়ে স্থায়িত্ব] (http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [অ্যালগরিদম বাছাই-স্থিতিশীলতা] (http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - লিঙ্কযুক্ত তালিকায় কোন অ্যালগরিদম ব্যবহার করা যেতে পারে? অ্যারেতে কোনটি? উভয় উপর? -আমি একটি লিঙ্কযুক্ত তালিকা বাছাইয়ের প্রস্তাব দেব না, তবে মার্জ সারণি করণীয়। - -[লিঙ্কযুক্ত তালিকার জন্য বাছাই করুন মার্জ করুন] (http://www.geeksforgeeks.org/ নিমেষে-অনুসারে-লিঙ্কড-তালিকা /) + - [লিঙ্কযুক্ত তালিকার জন্য বাছাই করুন মার্জ করুন] (http://www.geeksforgeeks.org/ নিমেষে-অনুসারে-লিঙ্কড-তালিকা /) - হিপসোর্টের জন্য, উপরে হ্যাপের ডেটা কাঠামোটি দেখুন। হিপ সাজানো দুর্দান্ত তবে স্থিতিশীল নয়। @@ -1094,7 +1094,7 @@ https://github.com/jwasham/coding-interview-university
আরও জ্ঞান << সংক্ষিপ্ত> --### পুনরাবৃত্তি +- ### পুনরাবৃত্তি - পুনরাবৃত্তি ও ব্যাকট্র্যাকিংয়ের উপর স্ট্যানফোর্ডের বক্তৃতা: - [বক্তৃতা 8 | প্রোগ্রামিং বিমূর্তকরণ (ভিডিও)] (https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - [বক্তৃতা 9 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) @@ -1105,7 +1105,7 @@ https://github.com/jwasham/coding-interview-university - [লেজ পুনরাবৃত্তি কি এটি এত খারাপ কেন?] (Https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - [টেল রিকার্সন (ভিডিও)] (https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) --### ডায়নামিক প্রোগ্রামিং +- ### ডায়নামিক প্রোগ্রামিং - আপনি সম্ভবত আপনার সাক্ষাত্কারে কোনও গতিশীল প্রোগ্রামিং সমস্যা দেখতে পাবেন না, তবে ডায়নামিক প্রোগ্রামিংয়ের প্রার্থী হিসাবে কোনও সমস্যাটি স্বীকৃতি দেওয়ার পক্ষে এটি মূল্যবান। - এই বিষয়টি বেশ কঠিন হতে পারে, কারণ প্রতিটি ডিপি দ্রবণীয় সমস্যাটিকে অবশ্যই পুনরাবৃত্তির সম্পর্ক হিসাবে সংজ্ঞায়িত করা উচিত এবং এটির সাথে আসাটি জটিল হতে পারে। - আমি জড়িত প্যাটার্ন সম্পর্কে দৃ understanding় ধারণা না পাওয়া পর্যন্ত আমি ডিপি সমস্যার অনেক উদাহরণ দেখার পরামর্শ দিই। @@ -1135,22 +1135,22 @@ https://github.com/jwasham/coding-interview-university - ptionচ্ছিক: ইউএমএল ২.০ সিরিজ (ভিডিও)] (https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - অবজেক্ট-ওরিয়েন্টেড সফটওয়্যার ইঞ্জিনিয়ারিং: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (21 টি ভিডিও): -আপনার যদি OO এবং OO ডিজাইনের অনুশীলনগুলির দুর্দান্ত উপলব্ধি থাকে তবে এড়িয়ে যেতে পারেন। - -[ওওএসই: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (ভিডিও)] (https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ওওএসই: ইউএমএল এবং জাভা ব্যবহার করে সফটওয়্যার ডেভ (ভিডিও)] (https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - সলিড ওওপি নীতিগুলি: - [বব মার্টিন সলিউড অবজেক্ট অরিয়েন্টেড অ্যান্ড এগ্রিল ডিজাইনের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=TMuno5RZNeE) - [সলাইড নীতি (ভিডিও)] (https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - এস-[একক দায়িত্বের নীতি] (http://www.oodesign.com/single-দায়িত্বজ্ঞাপন-প্রিন্সিপাল html) | [প্রতিটি বস্তুর একক দায়িত্ব] (http://www.javacodegeeks.com/2011/11/solid-single-দায়বদ্ধতা-নীতি-নীতি html) - -[আরও স্বাদ] (https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - ও-[ওপেন / ক্লোজড অধ্যক্ষ] (http://www.oodesign.com/open-close-prصولle.html) | [উত্পাদন স্তরে অবজেক্টগুলি এক্সটেনশনের জন্য প্রস্তুত তবে পরিবর্তনের জন্য নয়] (https://en.wikedia.org/wiki/Open/closed_prصول) - -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUTNThhGG1Y&hzGiY) - - এল-[লিসকোভ সাবস্টিটিউশন অধ্যক্ষ] (http://www.oodesign.com/liskov-s-substedia-prصولle.html) | [বেস ক্লাস এবং ডারাইভড ক্লাস 'আইএস এ' প্রিন্সিপাল অনুসরণ করে] (http://stackoverflow.com/questions/56860/ কি-is-the-liskov-subst येशू-প্রিন্সিপাল) - -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtTDhhenU5ZZll55) - - আমি-[ইন্টারফেস বিভাজন নীতি] (http://www.oodesign.com/interface-segregation-prصولle.html) | ক্লায়েন্টরা তাদের ব্যবহার না করে এমন ইন্টারফেস প্রয়োগ করতে বাধ্য করা উচিত নয় - -[5 মিনিটের মধ্যে ইন্টারফেস পৃথককরণের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=3CtAfl7aXAQ) - -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5i&jdc5i&jdc5i) - - ডি-[নির্ভরতা বিপরীতার নীতি] (http://www.oodesign.com/d dependency-inversion-prصولle.html) | নির্ভরতা হ্রাস করুন বস্তুর সংমিশ্রণে। - -[নির্ভরতা বিপরীতকরণের মূলনীতি কেন এবং কেন এটি গুরুত্বপূর্ণ] (http://stackoverflow.com/questions/62539/ কি-এটি-নির্ভরতা-রূপান্তর-নীতি-এবং-কেন-কেন-গুরুত্বপূর্ণ-গুরুত্বপূর্ণ) - -[আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjhhddlljrhmdlljrhmdlljdlmljrlm पर + - এস- [একক দায়িত্বের নীতি] (http://www.oodesign.com/single-দায়িত্বজ্ঞাপন-প্রিন্সিপাল html) | [প্রতিটি বস্তুর একক দায়িত্ব] (http://www.javacodegeeks.com/2011/11/solid-single-দায়বদ্ধতা-নীতি-নীতি html) + - [আরও স্বাদ] (https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - ও- [ওপেন / ক্লোজড অধ্যক্ষ] (http://www.oodesign.com/open-close-prصولle.html) | [উত্পাদন স্তরে অবজেক্টগুলি এক্সটেনশনের জন্য প্রস্তুত তবে পরিবর্তনের জন্য নয়] (https://en.wikedia.org/wiki/Open/closed_prصول) + - [আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUTNThhGG1Y&hzGiY) + - এল- [লিসকোভ সাবস্টিটিউশন অধ্যক্ষ] (http://www.oodesign.com/liskov-s-substedia-prصولle.html) | [বেস ক্লাস এবং ডারাইভড ক্লাস 'আইএস এ' প্রিন্সিপাল অনুসরণ করে] (http://stackoverflow.com/questions/56860/ কি-is-the-liskov-subst येशू-প্রিন্সিপাল) + - [আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtTDhhenU5ZZll55) + - আমি- [ইন্টারফেস বিভাজন নীতি] (http://www.oodesign.com/interface-segregation-prصولle.html) | ক্লায়েন্টরা তাদের ব্যবহার না করে এমন ইন্টারফেস প্রয়োগ করতে বাধ্য করা উচিত নয় + - [5 মিনিটের মধ্যে ইন্টারফেস পৃথককরণের নীতি (ভিডিও)] (https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5i&jdc5i&jdc5i) + - ডি- [নির্ভরতা বিপরীতার নীতি] (http://www.oodesign.com/d dependency-inversion-prصولle.html) | নির্ভরতা হ্রাস করুন বস্তুর সংমিশ্রণে। + - [নির্ভরতা বিপরীতকরণের মূলনীতি কেন এবং কেন এটি গুরুত্বপূর্ণ] (http://stackoverflow.com/questions/62539/ কি-এটি-নির্ভরতা-রূপান্তর-নীতি-এবং-কেন-কেন-গুরুত্বপূর্ণ-গুরুত্বপূর্ণ) + - [আরও স্বাদ] (http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BWCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjhhddlljrhmdlljrhmdlljdlmljrlm पर - ### নকশা নিদর্শন - [কুইক ইউএমএল পর্যালোচনা (ভিডিও)] (https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) @@ -1210,10 +1210,10 @@ https://github.com/jwasham/coding-interview-university - [জটিলতা: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - [জটিলতা: স্থির-প্যারামিটার অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -পিটার নরভিগ বিক্রয়কর্মী সমস্যার ভ্রমণের নিকটতম সর্বোত্তম সমাধানগুলি নিয়ে আলোচনা করেছেন: - -[বৃহস্পতি নোটবুক] (http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - [বৃহস্পতি নোটবুক] (http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) -সিএলআরএসে 1048-1140 পৃষ্ঠা রয়েছে যদি তা থাকে। --###ক্যাচ +- ### ক্যাচ - এলআরইউ ক্যাশে: - [এলআরইউ ক্যাশে যাদু (গুগল দেবের 100 দিন) (ভিডিও)] (https://www.youtube.com/watch?v=R5ON3iwx78M) - [এলআরইউ বাস্তবায়ন করছে (ভিডিও)] (https://www.youtube.com/watch?v=bq6N7Ym81iI) @@ -1222,10 +1222,10 @@ https://github.com/jwasham/coding-interview-university - [এমআইটি 6.004 এল 15: মেমোরি হায়ারার্কি (ভিডিও)] (https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - [এমআইটি 00.০০৪ এল এল: ক্যাশে ইস্যু (ভিডিও)] (https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) --###প্রক্রিয়া এবং থ্রেডস +- ### প্রক্রিয়া এবং থ্রেডস - কম্পিউটার বিজ্ঞান 162-অপারেটিং সিস্টেম (25 টি ভিডিও): - প্রক্রিয়া এবং থ্রেডগুলির জন্য ভিডিওগুলি 1-11 দেখুন - -[অপারেটিং সিস্টেমস এবং সিস্টেম প্রোগ্রামিং (ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [অপারেটিং সিস্টেমস এবং সিস্টেম প্রোগ্রামিং (ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - [প্রক্রিয়া এবং একটি থ্রেডের মধ্যে পার্থক্য কী?] (Https://www.quora.com/What-is-the-differences-between-a-process-and-a-thread) - কভার: - প্রক্রিয়াগুলি, থ্রেডগুলি, সমঝোতার বিষয়গুলি @@ -1254,7 +1254,7 @@ https://github.com/jwasham/coding-interview-university - [থ্রেডগুলিতে সংক্ষিপ্ত সিরিজ] (https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - [পাইথন থ্রেডস] (https://www.youtube.com/watch?v=Bs7vPNbB9JM) - [পাইথন জিআইএল বোঝা (২০১০)] (https://www.youtube.com/watch?v=Obt-vMVdM8s) - -[রেফারেন্স] (http://www.dabeaz.com/GIL) + - [রেফারেন্স] (http://www.dabeaz.com/GIL) - [ডেভিড বেজলি-গ্রাউন্ড আপ থেকে পাইথন কনক্যুরન્સી: লাইভ!-পাইকন 2015] (https://www.youtube.com/watch?v=MCs5OvhV9S4) - [মূল ডেভিড বেজলি-আগ্রহের বিষয় (পাইথন অ্যাসিনসিও)] (https://www.youtube.com/watch?v=ZzfHjytDceU) - [পাইথনে নিবিড়] (https://www.youtube.com/watch?v=0zaPs8OtyKY) @@ -1268,7 +1268,7 @@ https://github.com/jwasham/coding-interview-university - [জেমস বাচ (ভিডিও) এর সাথে চতুর সফ্টওয়্যার পরীক্ষা করা] (https://www.youtube.com/watch?v=SAhJf36_u5U) - [সফটওয়্যার টেস্টিং (ভিডিও) এ জেমস বাচের লিখিত বক্তব্য খুলুন] (https://www.youtube.com/watch?v=ILkT_HV9DVU) - [স্টিভ ফ্রিম্যান-টেস্ট-চালিত বিকাশ (এটি আমরা বোঝাতে চাইনি) (ভিডিও)] (https://vimeo.com/83960706) - -[স্লাইডস] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDe વિકાસmentThatNotWhatWeMeant.pdf) + - [স্লাইডস] (http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDe વિકાસmentThatNotWhatWeMeant.pdf) - [টিডিডি মারা গেছে। দীর্ঘ লাইভ টেস্টিং।] (Http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - [টিডিডি মারা গেছে? (ভিডিও)] (https://www.youtube.com/watch?v=z9quxZsLcfo) - [ভিডিও সিরিজ (152 টি ভিডিও)-সবার প্রয়োজন নেই (ভিডিও)] (https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) @@ -1328,7 +1328,7 @@ https://github.com/jwasham/coding-interview-university - প্রথমার্ধ যথেষ্ট। - ### নেটওয়ার্কিং - - **আপনার যদি নেটওয়ার্কিংয়ের অভিজ্ঞতা থাকে বা কোনও নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে প্রশ্নগুলি আশা করুন** + -**আপনার যদি নেটওয়ার্কিংয়ের অভিজ্ঞতা থাকে বা কোনও নির্ভরযোগ্যতা প্রকৌশলী বা অপারেশন ইঞ্জিনিয়ার হতে চান তবে প্রশ্নগুলি আশা করুন** -অন্যথায়, এটি জেনে রাখা ভাল - [খান একাডেমি] (https://www.khanacademy.org/computing/computer-science/internet-intro) - [ইউডিপি এবং টিসিপি: পরিবহন প্রোটোকলের তুলনা (ভিডিও)] (https://www.youtube.com/watch?v=Vdc8TCESIg8) @@ -1369,7 +1369,7 @@ https://github.com/jwasham/coding-interview-university - সরলতা এবং দৃust়তা - বাণিজ্য - কর্মক্ষমতা বিশ্লেষণ এবং অপ্টিমাইজেশন -- **এখানে শুরু করুন**: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) +- **এখানে শুরু করুন**: [সিস্টেম ডিজাইন প্রাইমার] (https://github.com/donnemartin/system-design-primer) - [হায়ারডিনটেক থেকে সিস্টেম ডিজাইন] (http://www.hiredintech.com/system-design/) - [আমি কীভাবে কোনও প্রযুক্তিগত ইনভারভিউতে নকশার প্রশ্নের উত্তর দিতে প্রস্তুত করব?] (Https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview? redirected_qid = 1500023) - [সিস্টেম ডিজাইনের সাক্ষাত্কারের আগে আপনার যে 8 টি বিষয়গুলি জানতে হবে]] (http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system ডিজাইন-সাক্ষাৎকার /) @@ -1382,8 +1382,8 @@ https://github.com/jwasham/coding-interview-university - [ডাটাসেন্টারস জুড়ে লেনদেন (ভিডিও)] (https://www.youtube.com/watch?v=srOgpXECblk) - [সিএপি উপপাদ্যের একটি সরল ইংরেজী ভূমিকা] (http://ksat.me/a-plain-english-intr پيداوار-to-cap-theorem/) - সম্মতিসূচক অ্যালগরিদম: - - প্যাক্সোস-[প্যাকসোস চুক্তি-কম্পিউটারফিলি (ভিডিও)] (https://www.youtube.com/watch?v=s8JqcZtvnsM) - - ভেলা-[রাফট বিতরণ সম্মতি অ্যালগরিদমের একটি পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=P9Ydif5_qvE) + - প্যাক্সোস- [প্যাকসোস চুক্তি-কম্পিউটারফিলি (ভিডিও)] (https://www.youtube.com/watch?v=s8JqcZtvnsM) + - ভেলা- [রাফট বিতরণ সম্মতি অ্যালগরিদমের একটি পরিচিতি (ভিডিও)] (https://www.youtube.com/watch?v=P9Ydif5_qvE) - [সহজেই পঠনযোগ্য কাগজ] (https://raft.github.io/) - [ইনফোগ্রাফিক] (http://thesecretlivesofdata.com/raft/) - [ধারাবাহিকভাবে হ্যাশিং] (http://www.tom-e-white.com/2007/11/cons Contin-hashing.html) @@ -1392,14 +1392,14 @@ https://github.com/jwasham/coding-interview-university -আপনার এসবের দরকার নেই। আপনার আগ্রহের কিছু বেছে নিন। - [দুর্দান্ত ওভারভিউ (ভিডিও)] (https://www.youtube.com/watch?v=-W9F__D3oY4) - সংক্ষিপ্ত সিরিজ: - -[ক্লোনস] (http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - -[ডাটাবেস] (http://www.lecloud.net/post/7994751381/scalability-জন্য-ডামি-পার্ট ২--ডেটাবেস) - -[ক্যাশে] (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.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) + - [ডাটাবেস] (http://www.lecloud.net/post/7994751381/scalability-জন্য-ডামি-পার্ট ২--ডেটাবেস) + - [ক্যাশে] (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) - [বিতরণকৃত কম্পিউটিংয়ের ভুল ব্যাখ্যা] (https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - [প্র্যাকমেটিক প্রোগ্রামিং কৌশল] (http://horicky.blogspot.com/2010/10/scalable-সিস্টেমে-ডিজাইন-পত্রিকা html) - -[অতিরিক্ত: গুগল প্রেগেল গ্রাফ প্রসেসিং] (http://horicky.blogspot.com/2010/07/google-pregel-راف-প্রসেসিং html) + - [অতিরিক্ত: গুগল প্রেগেল গ্রাফ প্রসেসিং] (http://horicky.blogspot.com/2010/07/google-pregel-راف-প্রসেসিং html) - [জেফ ডিন-গুগল এ বিল্ডিং সফটওয়্যার সিস্টেম এবং পাঠ শিখেছে (ভিডিও)] (https://www.youtube.com/watch?v=modXC5IWTJI) - [আকারের জন্য আর্কিটেকটিং সিস্টেমের পরিচিতি] (http://lethain.com/intr Productions-to-architecting-সিস্টেমে-for-স্কেল/) - [অ্যাপ ইঞ্জিন এবং ক্লাউড ডেটাস্টোর (ভিডিও) ব্যবহার করে বিশ্বব্যাপী দর্শকদের কাছে মোবাইল গেমস স্কেলিং]] (https://www.youtube.com/watch?v=9nWyWwY2Onc) @@ -1409,7 +1409,7 @@ https://github.com/jwasham/coding-interview-university - [ফেসবুকে স্কেল (2012), "বিলিয়ন ব্যবহারকারীদের জন্য বিল্ডিং" (ভিডিও)] (https://www.youtube.com/watch?v=oodS71YtkGU) - [লং গেমের জন্য ইঞ্জিনিয়ারিং-অ্যাস্ট্রিড অ্যাটকিনসন কীনোট (ভিডিও)] (https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [৩০ মিনিটের মধ্যে ইউটিউব স্কেলিবিলিটি পাঠের 7 বছরের বছর] (http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html ) - -[ভিডিও] (https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ভিডিও] (https://www.youtube.com/watch?v=G-lGCC4KKok) - [পেপাল কীভাবে দৈনিক মাত্র 8 ভিএম ব্যবহার করে বিলিয়ন বিলিয়ন লেনদেনের পরিমাণকে বাড়িয়েছে] (http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transferences-daily-using-ju.html) - [বৃহত্তর ডেটাসেটে নকলগুলি কীভাবে সরানো যায়] (https://blog.clevertap.com/how-to-remove-d નકલ-in-large-datasets/) - [জোন কাউই (ভিডিও) এর সাথে এটসির স্কেল এবং ইঞ্জিনিয়ারিং সংস্কৃতির ভিতরে এক ঝলক দেখুন] (https://www.youtube.com/watch?v=3vV4YiqKm1o) @@ -1489,7 +1489,7 @@ https://github.com/jwasham/coding-interview-university আপনি প্রায়শই একটি রিফ্রেশার চাইলে এটি দুর্দান্ত। - শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) - -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) + - [ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) - 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (46 টি ভিডিও): - [ভিডিও](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) @@ -1529,9 +1529,9 @@ https://github.com/jwasham/coding-interview-university প্রাসঙ্গিক: --[টপকোডারদের জন্য গণিত] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / ম্যাথেমেটিক্সের জন্য-ট্যাপকোডার /) --[ডায়নামিক প্রোগ্রামিং-নোভাইস থেকে অ্যাডভান্সড] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/dynamic-programming-from-novice-to-advanced/ --[এমআইটি সাক্ষাত্কার উপকরণ] (https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/matorys.php) +- [টপকোডারদের জন্য গণিত] (https://www.topcoder.com / সম্প্রদায় / কমপিটিটিভ-প্রোগ্রামিং / টিউটোরিয়ালস / ম্যাথেমেটিক্সের জন্য-ট্যাপকোডার /) +- [ডায়নামিক প্রোগ্রামিং-নোভাইস থেকে অ্যাডভান্সড] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/dynamic-programming-from-novice-to-advanced/ +- [এমআইটি সাক্ষাত্কার উপকরণ] (https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/matorys.php) **প্রোগ্রামিং সমস্যাগুলি পড়ুন এবং করুন (এই ক্রমে):** @@ -1556,38 +1556,38 @@ https://github.com/jwasham/coding-interview-university - [কীভাবে টপকোডার সমস্যার বিবরণটি সংক্রামিত করবেন] (https://www.topcoder.com/commune/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) কোডিং সাক্ষাত্কার প্রশ্ন ভিডিও: --[আইডিজার (৮৮ টি ভিডিও)] (https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) --[তুষার রায় (৫ টি প্লেলিস্ট)] (https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) +- [আইডিজার (৮৮ টি ভিডিও)] (https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [তুষার রায় (৫ টি প্লেলিস্ট)] (https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) চ্যালেঞ্জ সাইটগুলি: --[লেটকোড] (https://leetcode.com/) --[টপকোডার] (https://www.topcoder.com/) --[প্রকল্পের এলিউর (গণিত-কেন্দ্রিক)] (https://projecteuler.net/index.php?section=problems) --[কোডওয়ারস] (http://www.codewars.com) --[হ্যাকারআর্থ] (https://www.haakerrearth.com/) --[হ্যাকারর্যাঙ্ক] (https://www.hackerrank.com/) --[কোডলিটি] (https://codility.com / প্রোগ্রামার /) --[ইন্টারভিউকেক] (https://www.interviewcake.com/) --[গিক্সের জন্য গিগস] (http://www.geeksforgeeks.org/) --[সাক্ষাত্কার বিট] (https://www.interviewbit.com) --[স্ফিয়ার অনলাইন জজ (স্পোজ)] (http://www.spoj.com/) --[কোডেফ] (https://www.codechef.com/) +- [লেটকোড] (https://leetcode.com/) +- [টপকোডার] (https://www.topcoder.com/) +- [প্রকল্পের এলিউর (গণিত-কেন্দ্রিক)] (https://projecteuler.net/index.php?section=problems) +- [কোডওয়ারস] (http://www.codewars.com) +- [হ্যাকারআর্থ] (https://www.haakerrearth.com/) +- [হ্যাকারর্যাঙ্ক] (https://www.hackerrank.com/) +- [কোডলিটি] (https://codility.com / প্রোগ্রামার /) +- [ইন্টারভিউকেক] (https://www.interviewcake.com/) +- [গিক্সের জন্য গিগস] (http://www.geeksforgeeks.org/) +- [সাক্ষাত্কার বিট] (https://www.interviewbit.com) +- [স্ফিয়ার অনলাইন জজ (স্পোজ)] (http://www.spoj.com/) +- [কোডেফ] (https://www.codechef.com/) চ্যালেঞ্জ রেপো: --[পাইথনে ইন্টারেক্টিভ কোডিং সাক্ষাত্কারের চ্যালেঞ্জগুলি] (https://github.com/donnemartin/interactive-coding-challenges) +- [পাইথনে ইন্টারেক্টিভ কোডিং সাক্ষাত্কারের চ্যালেঞ্জগুলি] (https://github.com/donnemartin/interactive-coding-challenges) মক সাক্ষাত্কার: --[গেইনলোক.কম: বড় সংস্থাগুলির মক সাক্ষাত্কার]] (http://www.gainlo.co/#!/)-আমি এটি ব্যবহার করেছি এবং এটি আমাকে ফোনের স্ক্রিন এবং সাইটে সাক্ষাত্কারের জন্য শিথিল করতে সহায়তা করেছে। --[প্র্যাম্প: সহকর্মীদের কাছ থেকে / সাথে মক সাক্ষাত্কার] (https://www.pramp.com/)-অনুশীলন সাক্ষাত্কারগুলির পিয়ার-টু-পিয়ার মডেল --[রেফড্যাশ: মক সাক্ষাত্কার এবং তাত্ক্ষণিক সাক্ষাত্কার]] (https://refdash.com/)-প্রযুক্তিবিদদের সাথে একাধিক সাক্ষাত্কার এড়িয়ে প্রার্থীদের দ্রুত ট্র্যাক করতে সহায়তা করে। +- [গেইনলোক.কম: বড় সংস্থাগুলির মক সাক্ষাত্কার]] (http://www.gainlo.co/#!/)-আমি এটি ব্যবহার করেছি এবং এটি আমাকে ফোনের স্ক্রিন এবং সাইটে সাক্ষাত্কারের জন্য শিথিল করতে সহায়তা করেছে। +- [প্র্যাম্প: সহকর্মীদের কাছ থেকে / সাথে মক সাক্ষাত্কার] (https://www.pramp.com/)-অনুশীলন সাক্ষাত্কারগুলির পিয়ার-টু-পিয়ার মডেল +- [রেফড্যাশ: মক সাক্ষাত্কার এবং তাত্ক্ষণিক সাক্ষাত্কার]] (https://refdash.com/)-প্রযুক্তিবিদদের সাথে একাধিক সাক্ষাত্কার এড়িয়ে প্রার্থীদের দ্রুত ট্র্যাক করতে সহায়তা করে।
##একবার আপনি সাক্ষাত্কারের কাছাকাছি চলে আসবেন - কোডিং সাক্ষাত্কার সেট 2 (ভিডিও) ক্র্যাক করা: - -[কোড সাক্ষাত্কারে ক্র্যাকিং] (https://www.youtube.com/watch?v=4NIb9l3imAo) - -[কোডিং সাক্ষাত্কার ক্র্যাকিং-ফুলস্ট্যাক স্পিকার সিরিজ] (https://www.youtube.com/watch?v=Eg5-tdAwclo) + - [কোড সাক্ষাত্কারে ক্র্যাকিং] (https://www.youtube.com/watch?v=4NIb9l3imAo) + - [কোডিং সাক্ষাত্কার ক্র্যাকিং-ফুলস্ট্যাক স্পিকার সিরিজ] (https://www.youtube.com/watch?v=Eg5-tdAwclo) ##আপনার সারসংকলন @@ -1606,11 +1606,11 @@ https://github.com/jwasham/coding-interview-university -একটি বিদ্যমান পণ্য উন্নত করার জন্য ধারণা। -আপনি ব্যক্তিগতভাবে এবং একটি দলের অংশ হিসাবে কীভাবে সেরা কাজ করেন? -আপনার দক্ষতা বা অভিজ্ঞতাগুলির মধ্যে কোনটি ভূমিকায় সম্পদ হবে এবং কেন? --[জব x / প্রজেক্ট y] এ আপনি সবচেয়ে বেশি কী উপভোগ করেছেন? --[জব x / প্রজেক্ট y] এ আপনি যে সবচেয়ে বড় চ্যালেঞ্জের মুখোমুখি হয়েছিলেন? +- [জব x / প্রজেক্ট y] এ আপনি সবচেয়ে বেশি কী উপভোগ করেছেন? +- [জব x / প্রজেক্ট y] এ আপনি যে সবচেয়ে বড় চ্যালেঞ্জের মুখোমুখি হয়েছিলেন? -আপনি [জব এক্স / প্রজেক্ট ওয়াই]-এ সবচেয়ে কঠিন বাগটি কীসের মুখোমুখি হয়েছিল? -আপনি [জব x / প্রজেক্ট y] এ কী শিখলেন? --[জব এক্স / প্রজেক্ট ওয়াই] তে আপনি কী আরও ভাল করতে পারতেন? +- [জব এক্স / প্রজেক্ট ওয়াই] তে আপনি কী আরও ভাল করতে পারতেন? ##সাক্ষাত্কারকারীর জন্য প্রশ্ন রয়েছে @@ -1636,72 +1636,72 @@ https://github.com/jwasham/coding-interview-university --- - ************************************************** ************************************************** * - ************************************************** ************************************************** * + ***************************************************************************************************** + ***************************************************************************************************** এই বিন্দু নীচে সবকিছু Everythingচ্ছিক। এগুলি অধ্যয়ন করে আপনি আরও সিএস ধারণাগুলির আরও বেশি প্রকাশ পেয়ে যাবেন এবং এর জন্য আরও ভাল প্রস্তুত থাকবেন কোনও সফ্টওয়্যার ইঞ্জিনিয়ারিং কাজ। আপনি অনেক বেশি গোলাকার সফটওয়্যার ইঞ্জিনিয়ার হবেন। - ************************************************** ************************************************** * - ************************************************** ************************************************** * + ***************************************************************************************************** + ***************************************************************************************************** --- -##অতিরিক্ত বই +## অতিরিক্ত বই
অতিরিক্ত বই --[ইউনিক্স প্রোগ্রামিং পরিবেশ] (https://www.amazon.com/dp/013937681X) +- [ইউনিক্স প্রোগ্রামিং পরিবেশ] (https://www.amazon.com/dp/013937681X) -একজন বয়স্ক কিন্তু গুডি --[লিনাক্স কমান্ড লাইন: একটি সম্পূর্ণ ভূমিকা] (https://www.amazon.com/dp/1593273894/) +- [লিনাক্স কমান্ড লাইন: একটি সম্পূর্ণ ভূমিকা] (https://www.amazon.com/dp/1593273894/) -একটি আধুনিক বিকল্প --[টিসিপি / আইপি সচিত্র সিরিজ] (https://en.wikedia.org/wiki/TCP/IP_ ইলাস্ট্রেটেড) --[প্রথম নকশার প্রধান শিরোনাম] (https://www.amazon.com/gp/product/0596007124/) +- [টিসিপি / আইপি সচিত্র সিরিজ] (https://en.wikedia.org/wiki/TCP/IP_ ইলাস্ট্রেটেড) +- [প্রথম নকশার প্রধান শিরোনাম] (https://www.amazon.com/gp/product/0596007124/) -নকশা নিদর্শন একটি মৃদু ভূমিকা --[নকশার প্যাটার্নস: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টে ডি সফ্টওয়্যার এর উপাদানসমূহ] (https://www.amazon.com/ ডিজাইন-প্যাটার্নস-উপাদানসমূহ-পুনরায় ব্যবহারযোগ্য-অবজেক্ট-ওরিয়েন্টড / ডিপি / ২০১২ 36৩6363১২) +- [নকশার প্যাটার্নস: পুনরায় ব্যবহারযোগ্য অবজেক্ট-ওরিয়েন্টে ডি সফ্টওয়্যার এর উপাদানসমূহ] (https://www.amazon.com/ ডিজাইন-প্যাটার্নস-উপাদানসমূহ-পুনরায় ব্যবহারযোগ্য-অবজেক্ট-ওরিয়েন্টড / ডিপি / ২০১২ 36৩6363১২) -ওরফে "গ্যাং অফ ফোর" বই, বা জিওএফ -ক্যানোনিকাল ডিজাইন নিদর্শন বই --[ইউনিক্স এবং লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেশন হ্যান্ডবুক, 5 তম সংস্করণ] (https://www.amazon.com/UNIX-Linux-System-প্রশাসক-হ্যান্ডবুক/dp/0134277554/) --[অ্যালগোরিদম ডিজাইন ম্যানুয়াল] (http://www.amazon.com/Algorithm-ডিজাইন-ম্যানুয়াল-স্টিভেন-স্কিয়েনা / ডিপি / 1849967202) (স্কিয়েনা) - -একটি পর্যালোচনা এবং সমস্যা স্বীকৃতি হিসাবে - -অ্যালগোরিদম ক্যাটালগ অংশটি আপনি একটি সাক্ষাত্কারে পাবেন এমন অসুবিধার সুযোগের বাইরেও। - -এই বইয়ের 2 টি অংশ রয়েছে: - -ডেটা স্ট্রাকচার এবং অ্যালগরিদমের উপর ক্লাসের পাঠ্যপুস্তক - -পেশাদার: - -যে কোনও অ্যালগরিদম পাঠ্যপুস্তক যেমন হবে তেমন একটি ভাল পর্যালোচনা - -শিল্প ও একাডেমিয়ার সমস্যা সমাধানের জন্য তাঁর অভিজ্ঞতা থেকে দুর্দান্ত গল্প - -সি কোড কোড - -কনস: - -সিএলআরএসের মতো ঘন বা দুর্ভেদ্য হতে পারে এবং কিছু ক্ষেত্রে সিএলআরএস কিছু বিষয়ের জন্য আরও ভাল বিকল্প হতে পারে - -অধ্যায় 7, 8, 9 অনুসরণ করার চেষ্টা করা বেদনাদায়ক হতে পারে, কারণ কিছু আইটেম ভালভাবে ব্যাখ্যা করা হয়নি বা আমার চেয়ে বেশি মস্তিষ্কের প্রয়োজন নেই - -আমাকে ভুল মনে করবেন না: আমি স্কিয়েনা, তার শিক্ষার ধরন এবং পদ্ধতিগুলি পছন্দ করি তবে আমি স্টনি ব্রুকের উপাদান নাও হতে পারি। - -অ্যালগরিদম ক্যাটালগ: - -আপনি এই বইটি কেনার আসল কারণ। - -এই অংশে পেতে। এটির মাধ্যমে একবার আমার পথ তৈরি হয়ে গেলে এখানে আপডেট হবে। - -কিন্ডেল এ ভাড়া দিতে পারেন - -উত্তর: - -[সমাধান] (http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_ ডিজাইন_ ম্যানুয়াল_ (দ্বিতীয়_ সংস্করণ) - -[সমাধান] (http://blog.panictank.net/category/algorithmndesignmanoutsolutions/page/2/) - -[এরেতা] (http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) - --[অ্যালগরিদমের ভূমিকা] (https://www.amazon.com/Intr Productions-আলগোরিদিমস ৩ য়আর-এমআইটি-প্রেস / ডিপি/0262033844) - -** গুরুত্বপূর্ণ: ** এই বইটি পড়ার কেবল মূল্য সীমিত থাকবে। এই বইটি অ্যালগরিদম এবং ডেটা স্ট্রাকচারের দুর্দান্ত পর্যালোচনা, তবে কীভাবে ভাল কোড লিখতে হয় তা শেখায় না। আপনি দক্ষতার সাথে একটি শালীন সমাধান কোড করতে সক্ষম হতে হবে। - -ওরফে সিএলআর, কখনও কখনও সিএলআরএস, কারণ স্টেইন খেলায় দেরি করেছিল - --[কম্পিউটার আর্কিটেকচার, ষষ্ঠ সংস্করণ: একটি পরিমাণগত পদ্ধতির] (https://www.amazon.com/dp/0128119055) - -আরও সমৃদ্ধের জন্য আরও আধুনিক (2017), তবে দীর্ঘতর চিকিত্সা - --[প্রোগ্রামিং পার্লস] (http://www.amazon.com/Programming-Pearls-2nd-জন-Bentley/dp/0201657880) - -প্রথম অধ্যায় দুটি প্রোগ্রামিং সমস্যার চতুর সমাধান উপস্থাপন করে (কিছু ডেটা টেপ ব্যবহার করে খুব পুরানো) তবে +- [ইউনিক্স এবং লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেশন হ্যান্ডবুক, 5 তম সংস্করণ] (https://www.amazon.com/UNIX-Linux-System-প্রশাসক-হ্যান্ডবুক/dp/0134277554/) +- [অ্যালগোরিদম ডিজাইন ম্যানুয়াল] (http://www.amazon.com/Algorithm-ডিজাইন-ম্যানুয়াল-স্টিভেন-স্কিয়েনা / ডিপি / 1849967202) (স্কিয়েনা) + - একটি পর্যালোচনা এবং সমস্যা স্বীকৃতি হিসাবে + - অ্যালগোরিদম ক্যাটালগ অংশটি আপনি একটি সাক্ষাত্কারে পাবেন এমন অসুবিধার সুযোগের বাইরেও। + - এই বইয়ের 2 টি অংশ রয়েছে: + - ডেটা স্ট্রাকচার এবং অ্যালগরিদমের উপর ক্লাসের পাঠ্যপুস্তক + - পেশাদার: + - যে কোনও অ্যালগরিদম পাঠ্যপুস্তক যেমন হবে তেমন একটি ভাল পর্যালোচনা + - শিল্প ও একাডেমিয়ার সমস্যা সমাধানের জন্য তাঁর অভিজ্ঞতা থেকে দুর্দান্ত গল্প + - সি কোড কোড + - কনস: + - সিএলআরএসের মতো ঘন বা দুর্ভেদ্য হতে পারে এবং কিছু ক্ষেত্রে সিএলআরএস কিছু বিষয়ের জন্য আরও ভাল বিকল্প হতে পারে + - অধ্যায় 7, 8, 9 অনুসরণ করার চেষ্টা করা বেদনাদায়ক হতে পারে, কারণ কিছু আইটেম ভালভাবে ব্যাখ্যা করা হয়নি বা আমার চেয়ে বেশি মস্তিষ্কের প্রয়োজন নেই + - আমাকে ভুল মনে করবেন না: আমি স্কিয়েনা, তার শিক্ষার ধরন এবং পদ্ধতিগুলি পছন্দ করি তবে আমি স্টনি ব্রুকের উপাদান নাও হতে পারি। + - অ্যালগরিদম ক্যাটালগ: + - আপনি এই বইটি কেনার আসল কারণ। + - এই অংশে পেতে। এটির মাধ্যমে একবার আমার পথ তৈরি হয়ে গেলে এখানে আপডেট হবে। + - কিন্ডেল এ ভাড়া দিতে পারেন + - উত্তর: + - [সমাধান] (http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_ ডিজাইন_ ম্যানুয়াল_ (দ্বিতীয়_ সংস্করণ) + - [সমাধান] (http://blog.panictank.net/category/algorithmndesignmanoutsolutions/page/2/) + - [এরেতা] (http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) + +- [অ্যালগরিদমের ভূমিকা] (https://www.amazon.com/Intr Productions-আলগোরিদিমস ৩ য়আর-এমআইটি-প্রেস / ডিপি/0262033844) + -**গুরুত্বপূর্ণ:**এই বইটি পড়ার কেবল মূল্য সীমিত থাকবে। এই বইটি অ্যালগরিদম এবং ডেটা স্ট্রাকচারের দুর্দান্ত পর্যালোচনা, তবে কীভাবে ভাল কোড লিখতে হয় তা শেখায় না। আপনি দক্ষতার সাথে একটি শালীন সমাধান কোড করতে সক্ষম হতে হবে। + - ওরফে সিএলআর, কখনও কখনও সিএলআরএস, কারণ স্টেইন খেলায় দেরি করেছিল + +- [কম্পিউটার আর্কিটেকচার, ষষ্ঠ সংস্করণ: একটি পরিমাণগত পদ্ধতির] (https://www.amazon.com/dp/0128119055) + - আরও সমৃদ্ধের জন্য আরও আধুনিক (2017), তবে দীর্ঘতর চিকিত্সা + +- [প্রোগ্রামিং পার্লস] (http://www.amazon.com/Programming-Pearls-2nd-জন-Bentley/dp/0201657880) + - প্রথম অধ্যায় দুটি প্রোগ্রামিং সমস্যার চতুর সমাধান উপস্থাপন করে (কিছু ডেটা টেপ ব্যবহার করে খুব পুরানো) তবে এটি কেবল একটি ভূমিকা প্রোগ্রামের নকশা এবং আর্কিটেকচারের জন্য এটি একটি গাইডবুক, অনেকটা কোড কমপ্লিটের মতো, তবে আরও ছোট।
-##অতিরিক্ত শিক্ষা +## অতিরিক্ত শিক্ষা
অতিরিক্ত পড়াশুনা <সংক্ষিপ্ত> @@ -1709,34 +1709,34 @@ https://github.com/jwasham/coding-interview-university এই বিষয়গুলি সম্ভবত কোনও সাক্ষাত্কারে উঠে আসবে না, তবে আপনাকে সুদৃ .় হতে সাহায্য করার জন্য আমি এগুলি যুক্ত করেছি সফ্টওয়্যার ইঞ্জিনিয়ার, এবং নির্দিষ্ট প্রযুক্তি এবং অ্যালগরিদম সম্পর্কে সচেতন হতে যাতে আপনার কাছে একটি বড় টুলবক্স থাকে। --###সংকলক +- ### সংকলক - [একটি সংকলক কীভাবে ~ 1 মিনিটে (ভিডিও) কাজ করে] [https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [হার্ভার্ড সিএস 50-সংকলক (ভিডিও)] (https://www.youtube.com/watch?v=CSZLNYF4Klo) - [সি ++ (ভিডিও)] (https://www.youtube.com/watch?v=twodd1KFfGk) - [সংকলন অপ্টিমাইজেশন (সি ++) (ভিডিও) বোঝা] (https://www.youtube.com/watch?v=FnGCDLhaxKU) --###ইম্যাক্স এবং ভিআই (মি) - -ইউনিক্স ভিত্তিক কোড সম্পাদকের সাথে নিজেকে পরিচিত করুন - -vi (এম): - -[ভিএম 01 সহ সম্পাদনা-ইনস্টলেশন, সেটআপ, এবং মোডগুলি (ভিডিও)] (https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - -[ভিআইএম অ্যাডভেঞ্চারস] (http://vim-ad مہم.com/) - -4 টি ভিডিওর সেট: - -[দ্বি / ভিআইএম সম্পাদক-পাঠ 1] (https://www.youtube.com/watch?v=SI8TeVMX8pk) - -[দ্বি / ভিআইএম সম্পাদক-পাঠ 2] (https://www.youtube.com/watch?v=F3OO7ZIOaEE) - -[দ্বি / ভিআইএম সম্পাদক-পাঠ 3] (https://www.youtube.com/watch?v=ZYEccA_nMaI) - -[দ্বি / ভিআইএম সম্পাদক-পাঠ 4] (https://www.youtube.com/watch?v=1lYD5gwgZIA) - -[ইমাসের পরিবর্তে ভী ব্যবহার করা] [http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#ব্যবহার_ভি_ইনস্টিড_ও_এম্যাকস) - -ইমাস: - -[বুনিয়াদি ইম্যাকস টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=hbmV1bnQ-i0) - -3 সেট (ভিডিও): - -[ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পার্ট 1-ফাইল কমান্ড, কাট / অনুলিপি / পেস্ট করুন, কার্সার কমান্ড] (https://www.youtube.com/watch?v=ujODL7MD04Q) - -[ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পার্ট 2-বাফার পরিচালনা, অনুসন্ধান, এমএক্স গ্রেপ এবং আরগ্রিপ মোড] (https://www.youtube.com/watch?v=XWpsRupJ4II) - -[ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পর্ব 3-এক্সপ্রেশন, বিবৃতি, ~ / .emacs ফাইল এবং প্যাকেজ] (https://www.youtube.com/watch?v=paSgzPso-yc) - -[এভিল মোড: বা, আমি কীভাবে উদ্বেগ বন্ধ করতে এবং ইমাসকে ভালোবাসতে শিখেছি (ভিডিও)] (https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - -[ইমাস সহ সি প্রোগ্রাম রচনা] [http://www.cs.yale.edu/homes/aspnes/class/223/notes.html#রাইটিং_সি_প্রগ্রাম_উইথ_এম্যাকস) - -[(হতে পারে) অরগ মোড গভীরতায়: কাঠামো পরিচালনার (ভিডিও)] (https://www.youtube.com/watch?v=nsGYet02bEk) - --###ইউনিক্স কমান্ড লাইন সরঞ্জাম +- ### ইম্যাক্স এবং ভিআই (মি) + - ইউনিক্স ভিত্তিক কোড সম্পাদকের সাথে নিজেকে পরিচিত করুন + - vi (এম): + - [ভিএম 01 সহ সম্পাদনা-ইনস্টলেশন, সেটআপ, এবং মোডগুলি (ভিডিও)] (https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [ভিআইএম অ্যাডভেঞ্চারস] (http://vim-ad مہم.com/) + - 4 টি ভিডিওর সেট: + - [দ্বি / ভিআইএম সম্পাদক-পাঠ 1] (https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [দ্বি / ভিআইএম সম্পাদক-পাঠ 2] (https://www.youtube.com/watch?v=F3OO7ZIOaEE) + - [দ্বি / ভিআইএম সম্পাদক-পাঠ 3] (https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [দ্বি / ভিআইএম সম্পাদক-পাঠ 4] (https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [ইমাসের পরিবর্তে ভী ব্যবহার করা] [http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#ব্যবহার_ভি_ইনস্টিড_ও_এম্যাকস) + - ইমাস: + - [বুনিয়াদি ইম্যাকস টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - 3 সেট (ভিডিও): + - [ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পার্ট 1-ফাইল কমান্ড, কাট / অনুলিপি / পেস্ট করুন, কার্সার কমান্ড] (https://www.youtube.com/watch?v=ujODL7MD04Q) + - [ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পার্ট 2-বাফার পরিচালনা, অনুসন্ধান, এমএক্স গ্রেপ এবং আরগ্রিপ মোড] (https://www.youtube.com/watch?v=XWpsRupJ4II) + - [ইমাস টিউটোরিয়াল (প্রারম্ভিক)-পর্ব 3-এক্সপ্রেশন, বিবৃতি, ~ / .emacs ফাইল এবং প্যাকেজ] (https://www.youtube.com/watch?v=paSgzPso-yc) + - [এভিল মোড: বা, আমি কীভাবে উদ্বেগ বন্ধ করতে এবং ইমাসকে ভালোবাসতে শিখেছি (ভিডিও)] (https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [ইমাস সহ সি প্রোগ্রাম রচনা] [http://www.cs.yale.edu/homes/aspnes/class/223/notes.html#রাইটিং_সি_প্রগ্রাম_উইথ_এম্যাকস) + - [(হতে পারে) অরগ মোড গভীরতায়: কাঠামো পরিচালনার (ভিডিও)] (https://www.youtube.com/watch?v=nsGYet02bEk) + +- ### ইউনিক্স কমান্ড লাইন সরঞ্জাম -আমি ভাল সরঞ্জামগুলি থেকে নীচে তালিকায় পূর্ণ করেছি। - বাশ - বিড়াল @@ -1744,41 +1744,41 @@ https://github.com/jwasham/coding-interview-university - সেড - অজানা - কার্ল বা উইজেট - -[ ] সাজান + - [ ] সাজান - ট্র - ইউনিক - [স্ট্রেস] (https://en.wikedia.org/wiki/Strace) - [tcpdump] (https://danielmiessler.com/study/tcpdump/) --###তথ্য তত্ত্ব (ভিডিও) +- ### তথ্য তত্ত্ব (ভিডিও) - [খান একাডেমি] (https://www.khanacademy.org/computing/computer-s विज्ञान / তথ্যসূত্র) - মার্কভ প্রক্রিয়া সম্পর্কে আরও: - [কোর মার্কভ টেক্সট জেনারেশন] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - [মার্কেভ টেক্সট জেনারেশনের মূল প্রয়োগকারী] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - [প্রকল্প = মার্কভ টেক্সট জেনারেশন ওয়াক থ্রো] (https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - -নীচে এমআইটি 6.050J তথ্য এবং এন্ট্রপি সিরিজে আরও দেখুন। + - নীচে এমআইটি 6.050J তথ্য এবং এন্ট্রপি সিরিজে আরও দেখুন। --###সমতা এবং হামিং কোড (ভিডিও) +- ### সমতা এবং হামিং কোড (ভিডিও) - [পরিচয়] (https://www.youtube.com/watch?v=q-3BctoUpHE) - [সমতা] (https://www.youtube.com/watch?v=DdMcAUlxh1M) - হামিং কোড: - -[ত্রুটি সনাক্তকরণ] (https://www.youtube.com/watch?v=1A_NcXxdoCc) - -[ত্রুটি সংশোধন] (https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [ত্রুটি সনাক্তকরণ] (https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [ত্রুটি সংশোধন] (https://www.youtube.com/watch?v=JAMLuxdHH8o) - [ত্রুটি পরীক্ষা করা] (https://www.youtube.com/watch?v=wbH2VxzmoZk) --###এন্ট্রপি - -নীচে ভিডিও দেখুন - -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন +- ### এন্ট্রপি + - নীচে ভিডিও দেখুন + - প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - [তথ্য তত্ত্ব, ক্লড শ্যানন, এন্ট্রপি, রিডানডেন্সি, ডেটা সংক্ষেপণ এবং বিটস (ভিডিও)] (https://youtu.be/JnJq3Py0dyM?t=176) --###ক্রিপ্টোগ্রাফি - -নীচে ভিডিও দেখুন - -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন +- ### ক্রিপ্টোগ্রাফি + - নীচে ভিডিও দেখুন + - প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - [খান একাডেমি সিরিজ] (https://www.khanacademy.org/computing/computer-s विज्ञान/cryptography) - [ক্রিপ্টোগ্রাফি: হ্যাশ ফাংশন] (https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [ক্রিপ্টোগ্রাফি: এনক্রিপশন] (https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) --###সঙ্কোচন +- ### সঙ্কোচন -প্রথমে তথ্য তত্ত্বের ভিডিওগুলি নিশ্চিত করে দেখুন - কম্পিউটারফিল (ভিডিও): - [সংক্ষেপণ] (https://www.youtube.com/watch?v=Lto-ajuqW3w) @@ -1790,8 +1790,8 @@ https://github.com/jwasham/coding-interview-university - [সংক্ষেপক প্রধান ভিডিও] (https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(alচ্ছিক) গুগল বিকাশকারীদের লাইভ: জিজেপআইপি যথেষ্ট নয়!] (https://www.youtube.com/watch?v=whGwm0Lky2s) --###কম্পিউটার নিরাপত্তা - -[এমআইটি (২৩ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +- ### কম্পিউটার নিরাপত্তা + - [এমআইটি (২৩ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [ভূমিকা, হুমকির মডেল] (https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [হাইজ্যাকিং আক্রমণকে নিয়ন্ত্রণ করুন] (https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - [বাফার ওভারফ্লো শোষণ এবং প্রতিরক্ষা] (https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) @@ -1805,74 +1805,74 @@ https://github.com/jwasham/coding-interview-university - [নেটওয়ার্ক প্রোটোকল] (https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [সাইড-চ্যানেল আক্রমণগুলি) (https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) --###আবর্জনা সংগ্রহ +- ### আবর্জনা সংগ্রহ - [পাইথনে জিসি (ভিডিও)] (https://www.youtube.com/watch?v=iHVs_HkjdmI) - [ডিপ ডাইভ জাভা: আবর্জনা সংগ্রহ ভাল!] (Https://www.infoq.com/preferencesations/garbage-colલેક્--সুবিধা) - [ডিপ ডাইভ পাইথন: সিপিথনে আবর্জনা সংগ্রহ (ভিডিও)] (https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) --###সমান্তরাল প্রোগ্রামিং +- ### সমান্তরাল প্রোগ্রামিং - [কোর্সেরা (স্কালা)] (https://www.coursera.org/learn/parprog1/home/week/1) - [উচ্চ পারফরম্যান্স প্যারালাল কম্পিউটিংয়ের জন্য দক্ষ পাইথন (ভিডিও)] (https://www.youtube.com/watch?v=uY85GkaYzBk) --###মেসেজিং, সিরিয়ালাইজেশন এবং কুইউিং সিস্টেম +- ### মেসেজিং, সিরিয়ালাইজেশন এবং কুইউিং সিস্টেম - [থ্রিফট] (https://thrift.apache.org/) - -[টিউটোরিয়াল] (http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [টিউটোরিয়াল] (http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - [প্রোটোকল বাফারস) (https://developers.google.com/protocol-buffers/) - -[টিউটোরিয়াল] (https://developers.google.com/protocol-buffers/docs/tutorials) + - [টিউটোরিয়াল] (https://developers.google.com/protocol-buffers/docs/tutorials) - [জিআরপিসি] (http://www.grpc.io/) - -[জাভা ডেভেলপারদের (ভিডিও) জন্য জিআরপিসি 101] (https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJOL&index=1) + - [জাভা ডেভেলপারদের (ভিডিও) জন্য জিআরপিসি 101] (https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJOL&index=1) - [রেডিস] (http://redis.io/) - -[টিউটোরিয়াল] (http://try.redis.io/) + - [টিউটোরিয়াল] (http://try.redis.io/) - [আমাজন এসকিউএস (সারি)] (https://aws.amazon.com/sqs/) - [অ্যামাজন এসএনএস (পাব সাব)] (https://aws.amazon.com/sns/) - [র‌্যাবিট এমকিউ] (https://www.rabbitmq.com/) - -[শুরু করুন] (https://www.rabbitmq.com/getstarted.html) + - [শুরু করুন] (https://www.rabbitmq.com/getstarted.html) - [সেলারি] (http://www.celeryproject.org/) - -[সিলারির সাথে প্রথম পদক্ষেপ] (http://docs.celeryproject.org/en/latest/getting-st সূত্র / প্রথম পদক্ষেপ-উইথ-সিলারি html) + - [সিলারির সাথে প্রথম পদক্ষেপ] (http://docs.celeryproject.org/en/latest/getting-st সূত্র / প্রথম পদক্ষেপ-উইথ-সিলারি html) - [জিরো কিউ] (http://zeromq.org/) - -[পরিচয়-ম্যানুয়াল পড়ুন] (http://zeromq.org/intro:read-the-manual) + - [পরিচয়-ম্যানুয়াল পড়ুন] (http://zeromq.org/intro:read-the-manual) - [অ্যাক্টিভ এমকিউ] (http://activemq.apache.org/) - [কাফকা] (http://kafka.apache.org/docamentation.html#intr پيداوار) - [বার্তা প্যাক] (http://msgpack.org/index.html) - [অভ্র] (https://avro.apache.org/) --###এ * +- ### এ* - [একটি অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/A*_search_algorithm) - - [একটি * প্যাথফাইন্ডিং টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [এ * প্যাথফাইন্ডিং (E01: অ্যালগরিদম ব্যাখ্যা) (ভিডিও)] (https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [একটি*প্যাথফাইন্ডিং টিউটোরিয়াল (ভিডিও)] (https://www.youtube.com/watch?v=KNXfSOx4eEE) + - [এ*প্যাথফাইন্ডিং (E01: অ্যালগরিদম ব্যাখ্যা) (ভিডিও)] (https://www.youtube.com/watch?v=-L-WgKMFuhE) --###ফাস্ট ফোরিয়ার ট্রান্সফর্ম +- ### ফাস্ট ফোরিয়ার ট্রান্সফর্ম - [ফুরিয়ার ট্রান্সফর্মের জন্য একটি ইন্টারেক্টিভ গাইড] (https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [ফুরিয়ার রূপান্তর কী? এটি কীসের জন্য ব্যবহার করা হয়েছে?] (Http://www.askamathematician.com/2012/09/q-কি-is-a-fourier-transform-কি-is-it-used-for/) - [ফুরিয়ার ট্রান্সফর্ম কী? (ভিডিও)] (https://www.youtube.com/watch?v=Xxut2PN-V8Q) - [ভাগ করুন এবং বিজয়: এফএফটি (ভিডিও)] (https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [এফএফটি বোঝা] (http://jakevdp.github.io/blog/2013/08/28/ বোঝা-the-fft/) --###ব্লুম ফিল্টার - -এম বিট এবং কে হ্যাশিং ফাংশন সহ একটি ব্লুম ফিল্টার দেওয়া, সন্নিবেশ এবং সদস্যপদ পরীক্ষা উভয়ই হ'ল (কে) - -[ব্লুম ফিল্টার (ভিডিও)] (https://www.youtube.com/watch?v=-SUTGoFYjZs) - -[ব্লুম ফিল্টার | ম্যাসিভ ডেটাসেটের খনন | স্ট্যানফোর্ড বিশ্ববিদ্যালয় (ভিডিও)] (https://www.youtube.com/watch?v=qBTdukbzc78) - -[টিউটোরিয়াল] (http://billmill.org/bloomfilter-tutorial/) - -[ব্লুম ফিল্টার অ্যাপ কীভাবে লিখবেন] (http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) +- ### ব্লুম ফিল্টার + - এম বিট এবং কে হ্যাশিং ফাংশন সহ একটি ব্লুম ফিল্টার দেওয়া, সন্নিবেশ এবং সদস্যপদ পরীক্ষা উভয়ই হ'ল (কে) + - [ব্লুম ফিল্টার (ভিডিও)] (https://www.youtube.com/watch?v=-SUTGoFYjZs) + - [ব্লুম ফিল্টার | ম্যাসিভ ডেটাসেটের খনন | স্ট্যানফোর্ড বিশ্ববিদ্যালয় (ভিডিও)] (https://www.youtube.com/watch?v=qBTdukbzc78) + - [টিউটোরিয়াল] (http://billmill.org/bloomfilter-tutorial/) + - [ব্লুম ফিল্টার অ্যাপ কীভাবে লিখবেন] (http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) --###হাইপারলগলগ - -[কেবল মাত্র 1.5 কেবি মেমরি ব্যবহার করে এক বিলিয়ন স্বতন্ত্র বিষয়গুলি কীভাবে গণনা করতে হবে) (http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) +- ### হাইপারলগলগ + - [কেবল মাত্র 1.5 কেবি মেমরি ব্যবহার করে এক বিলিয়ন স্বতন্ত্র বিষয়গুলি কীভাবে গণনা করতে হবে) (http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) --###লোকালয়-সংবেদনশীল হ্যাশিং - -নথির সাদৃশ্য নির্ধারণ করতে ব্যবহৃত - -MD5 বা SHA এর বিপরীত যা 2 টি নথি / স্ট্রিং ঠিক একই কিনা তা নির্ধারণ করতে ব্যবহৃত হয়। - -[সিমহাশিং (আশাবাদী) সহজ করে]] (http://ferd.ca/simhashing-hopefully-made-simple.html) +- ### লোকালয়-সংবেদনশীল হ্যাশিং + - নথির সাদৃশ্য নির্ধারণ করতে ব্যবহৃত + - MD5 বা SHA এর বিপরীত যা 2 টি নথি / স্ট্রিং ঠিক একই কিনা তা নির্ধারণ করতে ব্যবহৃত হয়। + - [সিমহাশিং (আশাবাদী) সহজ করে]] (http://ferd.ca/simhashing-hopefully-made-simple.html) --###ভ্যান এমডে বোস ট্রি +- ### ভ্যান এমডে বোস ট্রি - [ভাগ করুন এবং জয়লাভ করুন: ভ্যান এমডে বোস ট্রি (ভিডিও)] (https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - [এমআইটি লেকচার নোটস] (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) --###সংযুক্ত ডেটা কাঠামো +- ### সংযুক্ত ডেটা কাঠামো - [সিএস 61 বি লেকচার 39: ডেটা স্ট্রাকচারগুলিকে বাড়িয়ে তোলা] (https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) --###ভারসাম্যযুক্ত অনুসন্ধান গাছ - -কমপক্ষে এক ধরণের সুষম বাইনারি ট্রি জানুন (এবং এটি কীভাবে প্রয়োগ করা হয় তা জানুন): - -"সুষম অনুসন্ধান গাছগুলির মধ্যে, এভিএল এবং ২/৩ টি গাছ এখন পাস é এবং লাল-কালো গাছগুলি আরও জনপ্রিয় বলে মনে হচ্ছে। +- ### ভারসাম্যযুক্ত অনুসন্ধান গাছ + - কমপক্ষে এক ধরণের সুষম বাইনারি ট্রি জানুন (এবং এটি কীভাবে প্রয়োগ করা হয় তা জানুন): + - "সুষম অনুসন্ধান গাছগুলির মধ্যে, এভিএল এবং ২/৩ টি গাছ এখন পাস é এবং লাল-কালো গাছগুলি আরও জনপ্রিয় বলে মনে হচ্ছে। একটি বিশেষ আকর্ষণীয় স্ব-সংগঠিত ডেটা কাঠামো হ'ল স্প্লে ট্রি, যা ঘূর্ণন ব্যবহার করে যে কোনও অ্যাক্সেসযুক্ত কীটি রুটে নিয়ে যেতে ""-স্কিয়েনা -এর মধ্যে আমি একটি স্প্লে গাছকে বাস্তবায়ন করতে বেছে নিয়েছি। আমি যা পড়েছি তা থেকে আপনি একটি বাস্তবায়ন করবেন না @@ -1884,7 +1884,7 @@ https://github.com/jwasham/coding-interview-university -আমি বি-ট্রি সম্পর্কে আরও জানতে চাই যেহেতু এটি খুব বড় ডেটা সেটগুলির সাথে এত ব্যাপকভাবে ব্যবহৃত হয়। - [স্ব-ভারসাম্য বাইনারি অনুসন্ধান বৃক্ষ] (https://en.wikedia.org/wiki/S سیل-ব্যালেন্সিং_বাইনারি_সার্চ_ট্রি) - - ** এভিএল গাছ ** + - **এভিএল গাছ** -প্রস্তুতিতে: আমি যা বলতে পারি, সেগুলি থেকে অনুশীলনে এগুলি বেশি ব্যবহার করা হয় না, তবে আমি দেখতে পেতাম তারা কোথায় থাকবে: এভিএল ট্রি ও (লগ এন) অনুসন্ধান, সন্নিবেশ এবং অপসারণকে সমর্থনকারী আরেকটি কাঠামো। এটি আরও কঠোরভাবে হয় @@ -1897,7 +1897,7 @@ https://github.com/jwasham/coding-interview-university - [স্প্লিট এবং মার্জ করুন] (https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-विसর) - [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-) - - ** গাছ স্প্লে ** + - **গাছ স্প্লে** -প্রস্তুতিতে: স্প্লে গাছগুলি সাধারণত ক্যাশে, মেমরি বরাদ্দকারী, রাউটার, আবর্জনা সংগ্রহকারী, উইন্ডোজ এনটি-তে (ভার্চুয়াল মেমরির মধ্যে, ডেটা সংক্ষেপণ, দড়ি (দীর্ঘ পাঠ্য স্ট্রিংয়ের জন্য ব্যবহৃত স্ট্রিংয়ের প্রতিস্থাপন)) @@ -1905,9 +1905,9 @@ https://github.com/jwasham/coding-interview-university - [সিএস 61 বি: স্প্লে ট্রি (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - এমআইটি বক্তৃতা: স্প্লে ট্রি: -খুব ম্যাথী পেয়েছে তবে নিশ্চিত হয়ে 10 মিনিট দেখুন। - -[ভিডিও] (https://www.youtube.com/watch?v=QnPl_Y6EqMo) + - [ভিডিও] (https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - ** লাল / কালো গাছ ** + - **লাল / কালো গাছ** -এটি একটি 2-3 গাছের অনুবাদ (নীচে দেখুন) -প্রস্তুতিতে: লাল – কালো গাছগুলি সন্নিবেশের সময়, মোছার সময় এবং অনুসন্ধানের সময়ের জন্য সবচেয়ে খারাপ গ্যারান্টি সরবরাহ করে। @@ -1923,7 +1923,7 @@ https://github.com/jwasham/coding-interview-university - [বাইনারি অনুসন্ধান এবং লাল কালো গাছের পরিচিতি] (https://www.topcoder.com/commune/competitive-pogramming/tutorials/an-intr Produc-to-binary-search-and-red-black-trees /) - [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) - - ** ২-৩ টি অনুসন্ধান গাছ ** + - **২-৩ টি অনুসন্ধান গাছ** -প্রস্তুতিতে: ধীরে ধীরে অনুসন্ধানের ব্যয়ে 2-3 টি গাছে দ্রুত সন্নিবেশ থাকে (যেহেতু এভিএল গাছের তুলনায় উচ্চতা বেশি)। -আপনি খুব সহজেই 2-3 গাছ ব্যবহার করবেন কারণ এর প্রয়োগে নোডের বিভিন্ন ধরণের জড়িত। পরিবর্তে লোকে লোহিত কালো গাছ ব্যবহার করে। @@ -1931,23 +1931,23 @@ https://github.com/jwasham/coding-interview-university - [২৩-গাছের দ্বিখণ্ডিত ভিউ] (https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [২-৩ টি গাছ (ছাত্র আবৃত্তি) (ভিডিও)] (https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - ** ২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ) ** + - **২-৩-৪ টি গাছ (ওরফ ২-৪ টি গাছ)** -প্রস্তুতিতে: প্রতি 2-4 টি গাছের জন্য, একই ক্রমে ডেটা উপাদানগুলির সাথে সম্পর্কিত লাল – কালো গাছ রয়েছে। সন্নিবেশ এবং মোছা 2-4 টি গাছের ক্রিয়াকলাপগুলি রঙ-ফ্লিপিং এবং লাল-কালো গাছে ঘূর্ণনের সমতুল্য। এটি 2-4 গাছ একটি করে লাল-কালো গাছগুলির পিছনে যুক্তি বোঝার জন্য গুরুত্বপূর্ণ সরঞ্জাম এবং এ কারণেই অনেক সূচনা অ্যালগরিদম পাঠগুলি প্রবর্তন করে - লাল-কালো গাছের ঠিক আগে 2-4 টি গাছ, যদিও ** 2-4 টি গাছ সাধারণত অনুশীলনে ব্যবহৃত হয় না **। + লাল-কালো গাছের ঠিক আগে 2-4 টি গাছ, যদিও**2-4 টি গাছ সাধারণত অনুশীলনে ব্যবহৃত হয় না**। - [সিএস 61 বি লেকচার 26: ভারসাম্যযুক্ত অনুসন্ধান গাছ (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - [নীচে 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - [শীর্ষস্থানীয় 234-গাছ (ভিডিও)] (https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - ** এন-অ্যারি (কে-আরি, এম-আরি) গাছগুলি ** + - **এন-অ্যারি (কে-আরি, এম-আরি) গাছগুলি** -দ্রষ্টব্য: এন বা কে শাখা প্রশাখার উপাদান (সর্বাধিক শাখা) -বাইনারি গাছগুলি একটি 2-অ্যারি গাছ, যার শাখা ফ্যাক্টর = 2 থাকে -2-3 গাছ 3-ary হয় - [কে-আর্য গাছ] (https://en.wikedia.org/wiki/K-ary_tree) - - ** বি-ট্রিস ** + - **বি-ট্রিস** -মজার ঘটনা: এটি একটি রহস্য, তবে বি বোয়িং, ভারসাম্যহীন বা বায়ারের পক্ষে (সহ-উদ্ভাবক) দাঁড়াতে পারে -প্রস্তুতিতে: বি-ট্রিগুলি ডেটাবেজে ব্যাপকভাবে ব্যবহৃত হয়। বেশিরভাগ আধুনিক ফাইল সিস্টেমগুলি বি-ট্রি (বা ভেরিয়েন্ট) ব্যবহার করে। এ ছাড়াও @@ -1965,51 +1965,51 @@ https://github.com/jwasham/coding-interview-university - [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) --###কেডি গাছ - -একটি আয়তক্ষেত্র বা উচ্চ মাত্রার অবজেক্টে পয়েন্ট সংখ্যা সন্ধানের জন্য দুর্দান্ত - -কে-নিকটতম প্রতিবেশীদের জন্য ভাল ফিট +- ### কেডি গাছ + - একটি আয়তক্ষেত্র বা উচ্চ মাত্রার অবজেক্টে পয়েন্ট সংখ্যা সন্ধানের জন্য দুর্দান্ত + - কে-নিকটতম প্রতিবেশীদের জন্য ভাল ফিট - [কেডি ট্রিস (ভিডিও)] (https://www.youtube.com/watch?v=W94M9D_yXKk) - [কেএনএন কেডি ট্রি অ্যালগোরিদম (ভিডিও)] (https://www.youtube.com/watch?v=Y4ZgLlDfKDg) --###তালিকা বাদ দিন - -"এগুলি কিছুটা কাল্ট ডেটা কাঠামো"-স্কিয়েনা +- ### তালিকা বাদ দিন + - "এগুলি কিছুটা কাল্ট ডেটা কাঠামো"-স্কিয়েনা - [র্যান্ডমাইজেশন: তালিকাগুলি বাদ দিন (ভিডিও)] (https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [অ্যানিমেশন এবং আরও বিশদ জন্য] (https://en.wikedia.org/wiki/Skip_list) --###নেটওয়ার্ক প্রবাহ +- ### নেটওয়ার্ক প্রবাহ - [5 মিনিটে ফোর্ড-ফুলকারসন-ধাপে ধাপে উদাহরণ (ভিডিও)] (https://www.youtube.com/watch?v=Tl90tNtKvxs) - [ফোর্ড-ফুলকারসন অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=v1VgJmkEJW0) - [নেটওয়ার্ক প্রবাহ (ভিডিও)] (https://www.youtube.com/watch?v=2vhN4Ice5jI) --###অসম্পূর্ণ সেট ও ইউনিয়ন অনুসন্ধান করুন +- ### অসম্পূর্ণ সেট ও ইউনিয়ন অনুসন্ধান করুন - [ইউসিবি 61 বি-বিচ্ছিন্ন সেটগুলি; বাছাই ও নির্বাচন (ভিডিও)] (https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - [সেডজউইক অ্যালগরিদম-ইউনিয়ন-সন্ধান (6 টি ভিডিও)] (https://www.coursera.org/learn/algorithms-part1/home/week/1) --###দ্রুত প্রক্রিয়াজাতকরণের জন্য গণিত +- ### দ্রুত প্রক্রিয়াজাতকরণের জন্য গণিত - [পূর্ণসংখ্যার গাণিতিক, করাতসুবা গুণ (ভিডিও)] (https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [চীনা রেমেন্ডার উপপাদ্য (ক্রিপ্টোগ্রাফিতে ব্যবহৃত) (ভিডিও)] (https://www.youtube.com/watch?v=ru7mWZJlRQg) --###ট্রেপ +- ### ট্রেপ -একটি বাইনারি অনুসন্ধান গাছ এবং একটি গাদা সংমিশ্রণ - [ট্রেপ] (https://en.wikedia.org/wiki/Treap) - [ডেটা স্ট্রাকচার: ট্র্যাপগুলি ব্যাখ্যা করা হয়েছে (ভিডিও)] (https://www.youtube.com/watch?v=6podLUYinH8) - [সেট অপারেশনে অ্যাপ্লিকেশন] (https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) --###লিনিয়ার প্রোগ্রামিং (ভিডিও) +- ### লিনিয়ার প্রোগ্রামিং (ভিডিও) - [লিনিয়ার প্রোগ্রামিং] (https://www.youtube.com/watch?v=M4K6HYLHREQ) - [সর্বনিম্ন ব্যয় সন্ধান করা] (https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [সর্বাধিক মান সন্ধান করা] (https://www.youtube.com/watch?v=8AA_81xI3ik) - [পাইথনের সাথে লিনিয়ার সমীকরণগুলি সমাধান করুন-সিম্প্লেক্স অ্যালগরিদম] (https://www.youtube.com/watch?v=44pAWI7v5Zk) --###জ্যামিতি, উত্তল হাল (ভিডিও) +- ### জ্যামিতি, উত্তল হাল (ভিডিও) - [গ্রাফ আলগ চতুর্থ: জ্যামিতিক অ্যালগোরিদমগুলিতে পরিচিতি-বক্তৃতা 9] (https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - [জ্যামিতিক অ্যালগোরিদম: গ্রাহাম এবং জার্ভিস-প্রবন্ধ 10] (https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [ভাগ করুন এবং জয়লাভ করুন: উত্তল হাল, মিডিয়ান ফাইন্ডিং] (https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) --###স্বতন্ত্র গণিত +- ### স্বতন্ত্র গণিত -নীচে ভিডিও দেখুন --###মেশিন লার্নিং +- ### মেশিন লার্নিং - কেন এমএল? - [গুগল নিজেকে মেশিন লার্নিং ফার্স্ট সংস্থা হিসাবে নিজেকে কীভাবে স্মরণ করছে] (https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - [ইন্টেলিজেন্ট কম্পিউটার সিস্টেমের জন্য বৃহত্তর স্কেল গভীর শিক্ষা (ভিডিও)] (https://www.youtube.com/watch?v=QSaZGT4-6EY) @@ -2020,20 +2020,20 @@ https://github.com/jwasham/coding-interview-university - [টেনসরফ্লো টিউটোরিয়াল] (https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - [পাইথনে নিউরাল নেটওয়ার্ক বাস্তবায়নের ব্যবহারিক গাইড (থিওনো ব্যবহার করে)] (http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) -কোর্স: - -[দুর্দান্ত স্টার্টার কোর্স: মেশিন লার্নিং] (https://www.coursera.org/learn/machine-learning) - -[কেবলমাত্র ভিডিও] (https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - [দুর্দান্ত স্টার্টার কোর্স: মেশিন লার্নিং] (https://www.coursera.org/learn/machine-learning) + - [কেবলমাত্র ভিডিও] (https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) -লিনিয়ার বীজগণিতের পর্যালোচনার জন্য ভিডিওগুলি 12-18 দেখুন (14 এবং 15 টি সদৃশ) - -[মেশিন লার্নিংয়ের জন্য নিউরাল নেটওয়ার্ক] (https://www.coursera.org/learn/neural-নেট ওয়ার্কস) - -[গুগলের ডিপ লার্নিং ন্যানোডগ্রি] (https://www.udacity.com/course/DP-learning--ud730) - -[গুগল / কাগল মেশিন লার্নিং ইঞ্জিনিয়ার ন্যানোডগ্রি] (https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - -[স্ব-চালনা কার ইঞ্জিনিয়ার ন্যানোডগ্রি] (https://www.udacity.com/drive) - -[মেটিস অনলাইন কোর্স (2 মাসের জন্য 99 ডলার)] (http://www.thisismetis.com / এক্সপ্লোর-ডেটা-বিজ্ঞান) + - [মেশিন লার্নিংয়ের জন্য নিউরাল নেটওয়ার্ক] (https://www.coursera.org/learn/neural-নেট ওয়ার্কস) + - [গুগলের ডিপ লার্নিং ন্যানোডগ্রি] (https://www.udacity.com/course/DP-learning--ud730) + - [গুগল / কাগল মেশিন লার্নিং ইঞ্জিনিয়ার ন্যানোডগ্রি] (https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) + - [স্ব-চালনা কার ইঞ্জিনিয়ার ন্যানোডগ্রি] (https://www.udacity.com/drive) + - [মেটিস অনলাইন কোর্স (2 মাসের জন্য 99 ডলার)] (http://www.thisismetis.com / এক্সপ্লোর-ডেটা-বিজ্ঞান) -সংস্থানসমূহ: -বই: - -[পাইথন মেশিন লার্নিং] (https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - -[স্ক্র্যাচ থেকে ডেটা সায়েন্স: পাইথন সহ প্রথম নীতিগুলি] (https://www.amazon.com/Data-Sज्ञान-Scratch-প্রিন্সিপালস-পাইথন/dp/149190142X) - -[পাইথনের সাথে মেশিন লার্নিংয়ের পরিচিতি] (https://www.amazon.com/Intr Productions-Machine-Learning-পাইথন-বিজ্ঞানী / dp/1449369413/) - -[সফটওয়্যার ইঞ্জিনিয়ারদের জন্য মেশিন লার্নিং] (https://github.com/ZuzooVn/machine-learning-for-software-engineers) + - [পাইথন মেশিন লার্নিং] (https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) + - [স্ক্র্যাচ থেকে ডেটা সায়েন্স: পাইথন সহ প্রথম নীতিগুলি] (https://www.amazon.com/Data-Sज्ञान-Scratch-প্রিন্সিপালস-পাইথন/dp/149190142X) + - [পাইথনের সাথে মেশিন লার্নিংয়ের পরিচিতি] (https://www.amazon.com/Intr Productions-Machine-Learning-পাইথন-বিজ্ঞানী / dp/1449369413/) + - [সফটওয়্যার ইঞ্জিনিয়ারদের জন্য মেশিন লার্নিং] (https://github.com/ZuzooVn/machine-learning-for-software-engineers) -ডেটা স্কুল: http://www.dataschool.io/
@@ -2049,7 +2049,7 @@ https://github.com/jwasham/coding-interview-university উপরে কারণ এটি ঠিক অনেক বেশি। কোনও বিষয়ে এটি অতিরিক্ত পরিমাণে নেওয়া সহজ। আপনি এই শতাব্দীতে ভাড়া পেতে চান, তাই না? -- ** ইউনিয়ন-সন্ধান করুন ** +- **ইউনিয়ন-সন্ধান করুন** - [ওভারভিউ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / জেএসএসওয়াই / ওভারভিউ) - [নিষ্পাপ বাস্তবায়ন] (https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-আইনীকরণ) - [গাছগুলি] (https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) @@ -2057,7 +2057,7 @@ https://github.com/jwasham/coding-interview-university - [পথ সংক্ষেপণ] (https://www.coursera.org/learn/data-structures/ নির্বাচন / Q9CVI/path-compression) - [বিশ্লেষণ বিকল্পসমূহ) (https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) -- ** আরও ডায়নামিক প্রোগ্রামিং ** (ভিডিও) +- **আরও ডায়নামিক প্রোগ্রামিং**(ভিডিও) - 6..০০০০: ডায়নামিক প্রোগ্রামিং আই: ফিবোনাচি, সবচেয়ে ছোট পাথ] (https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - 6..০০০০: ডায়নামিক প্রোগ্রামিং II: পাঠ্য সমর্থন, ব্ল্যাকজ্যাক] (https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - 6..০০০০: ডিপি তৃতীয়: প্যারেন্টেসাইজেশন, দূরত্ব সম্পাদনা, ন্যাপস্যাক] (https://www.youtube.com/watch?v=ocZMDMZWCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) @@ -2066,11 +2066,11 @@ https://github.com/jwasham/coding-interview-university - [.0.০4646: ডায়নামিক প্রোগ্রামিং: সর্ব-সংক্ষিপ্ততম পথ] [https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - 6.০4646: ডায়নামিক প্রোগ্রামিং (শিক্ষার্থী আবৃত্তি)] (https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- ** উন্নত গ্রাফ প্রসেসিং ** (ভিডিও) +- **উন্নত গ্রাফ প্রসেসিং**(ভিডিও) - [সিঙ্ক্রোনাস বিতরণ করা অ্যালগরিদম: প্রতিসাম্যতা-ব্রেকিং। সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [অ্যাসিনক্রোনাস বিতরণ করা অ্যালগরিদম: সংক্ষিপ্ততম পথগুলি ছড়িয়ে পড়া গাছ] (https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- এমআইটি ** সম্ভাবনা ** (ম্যাথি, এবং ধীরে ধীরে যান, যা ম্যাথিক জিনিসগুলির পক্ষে ভাল) (ভিডিও): +- এমআইটি**সম্ভাবনা**(ম্যাথি, এবং ধীরে ধীরে যান, যা ম্যাথিক জিনিসগুলির পক্ষে ভাল) (ভিডিও): - [এমআইটি 6.042 জ-সম্ভাবনার পরিচিতি] (https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [এমআইটি 6.042 জে-শর্তাধীন সম্ভাবনা] (https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [এমআইটি 6.042 জ-স্বাধীনতা] (https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -2082,24 +2082,24 @@ https://github.com/jwasham/coding-interview-university - [সিমসন: আনুমানিক অ্যালগরিদম (ভিডিও)] (https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) -- ** স্ট্রিং ম্যাচিং ** +- **স্ট্রিং ম্যাচিং** - রবিন-কার্প (ভিডিও): - -[রবিন কার্পস অ্যালগরিদম] (https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - -[প্রিকম্পুটিং] (https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - -[অপ্টিমাইজেশন: বাস্তবায়ন এবং বিশ্লেষণ] (https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-বাস্তবায়ন-এবং-বিশ্লেষণ) - -[টেবিল ডাবলিং, কার্প-রবিন] (https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - -[রোলিং হ্যাশস, ইমোর্টাইজড বিশ্লেষণ] (https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - [রবিন কার্পস অ্যালগরিদম] (https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) + - [প্রিকম্পুটিং] (https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [অপ্টিমাইজেশন: বাস্তবায়ন এবং বিশ্লেষণ] (https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-বাস্তবায়ন-এবং-বিশ্লেষণ) + - [টেবিল ডাবলিং, কার্প-রবিন] (https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [রোলিং হ্যাশস, ইমোর্টাইজড বিশ্লেষণ] (https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - নুথ-মরিস-প্র্যাট (কেএমপি): - -[টিউথ-মরিস-প্র্যাট (কেএমপি) স্ট্রিং ম্যাচিং অ্যালগরিদম] (https://www.youtube.com/watch?v=5i7oKodCRJo) + - [টিউথ-মরিস-প্র্যাট (কেএমপি) স্ট্রিং ম্যাচিং অ্যালগরিদম] (https://www.youtube.com/watch?v=5i7oKodCRJo) - বায়ার – মুর স্ট্রিং অনুসন্ধানের অ্যালগরিদম - -[বয়ূর-মুর স্ট্রিং অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/Boyer%E2%80%93 মুর_স্ট্রিং_সার্চ_ালগোরিদম) - -[অ্যাডভান্সড স্ট্রিং বয়েয়ার-মুর-হর্সপুল অ্যালগরিদমস (ভিডিও) অনুসন্ধান করছে] [https://www.youtube.com/watch?v=QDZpzctPf10) + - [বয়ূর-মুর স্ট্রিং অনুসন্ধান অ্যালগরিদম] (https://en.wikedia.org/wiki/Boyer%E2%80%93 মুর_স্ট্রিং_সার্চ_ালগোরিদম) + - [অ্যাডভান্সড স্ট্রিং বয়েয়ার-মুর-হর্সপুল অ্যালগরিদমস (ভিডিও) অনুসন্ধান করছে] [https://www.youtube.com/watch?v=QDZpzctPf10) - [কোর্সেরা: স্ট্রিংগুলিতে অ্যালগরিদম] (https://www.coursera.org/learn/algorithms-on-strings/home/week/1) -দুর্দান্ত শুরু হয় তবে কেএমপি কেটে যাওয়ার সময় এটি যতটা প্রয়োজন তত বেশি জটিল হয়ে যায় -চেষ্টা সুন্দর ব্যাখ্যা -এড়িয়ে যেতে পারে --[ ] **শ্রেণীবিভাজন** +- [ ]**শ্রেণীবিভাজন** - স্ট্যানফোর্ড বাছাই সম্পর্কিত বক্তৃতা: - [বক্তৃতা 15 | প্রোগ্রামিং বিমূর্তি (ভিডিও)] (https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) @@ -2107,7 +2107,7 @@ https://github.com/jwasham/coding-interview-university - শাই সায়মনসন, [অ্যাডুনি.আর।] (Http://www.aduni.org/): - [অ্যালগরিদম-বাছাই-লেকচার 2 (ভিডিও)] (https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - [অ্যালগরিদম-দ্বিতীয়টি বাছাই-লেকচার 3 (ভিডিও)] (https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - -[ স্টিভেন স্কিয়েনা বাছাই সম্পর্কিত বক্তৃতা: + - [ স্টিভেন স্কিয়েনা বাছাই সম্পর্কিত বক্তৃতা: - [বক্তৃতা 26:46 এ শুরু হয় (ভিডিও)] (https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - [বক্তৃতা 27:40 এ শুরু হয় (ভিডিও)] (https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [বক্তৃতা শুরু হয় ৩৫:০০ এ (ভিডিও)] (https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) @@ -2137,7 +2137,7 @@ https://github.com/jwasham/coding-interview-university - [সারদা হার্কের স্বতন্ত্র গণিতের প্রথম ভাগ (৫ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo) - সিএসই 373-অ্যালগরিদমের বিশ্লেষণ (25 টি ভিডিও) - -[আলগোরিদম ডিজাইন ম্যানুয়াল থেকে স্কিয়েনা বক্তৃতা] (https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) + - [আলগোরিদম ডিজাইন ম্যানুয়াল থেকে স্কিয়েনা বক্তৃতা] (https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) - [ইউসি বার্কলে 61 বি (স্প্রিং 2014): ডেটা স্ট্রাকচার (25 টি ভিডিও)] (https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) @@ -2176,7 +2176,7 @@ https://github.com/jwasham/coding-interview-university - [স্ট্যানফোর্ড: প্রোগ্রামিং প্যারাডিজমস (২ videos টি ভিডিও)] (https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [ক্রিস্টোফ পার দ্বারা ক্রিপ্টোগ্রাফির পরিচিতি] (https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - -[স্লাইডস এবং সমস্যা সেটের পাশাপাশি কোর্স ওয়েবসাইট] (http://www.crypto-textbook.com/) + - [স্লাইডস এবং সমস্যা সেটের পাশাপাশি কোর্স ওয়েবসাইট] (http://www.crypto-textbook.com/) - [মাইনিং ম্যাসিভ ডেটাসেটস-স্ট্যানফোর্ড বিশ্ববিদ্যালয় (৯৯ টি ভিডিও)] (https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) @@ -2186,23 +2186,23 @@ https://github.com/jwasham/coding-interview-university ##কম্পিউটার সায়েন্স কোর্স --[অনলাইন সিএস কোর্সগুলির ডিরেক্টরি] (https://github.com/open-source-sociversity/computer-s विज्ञान) --[সিএস কোর্সের ডিরেক্টরী (অনেকগুলি অনলাইন লেকচার সহ)] (https://github.com/prakhar1989/awesome-courses) +- [অনলাইন সিএস কোর্সগুলির ডিরেক্টরি] (https://github.com/open-source-sociversity/computer-s विज्ञान) +- [সিএস কোর্সের ডিরেক্টরী (অনেকগুলি অনলাইন লেকচার সহ)] (https://github.com/prakhar1989/awesome-courses) ##কাগজপত্র
পেপারস --[ক্লাসিক কাগজগুলি ভালবাসেন?] (Https://www.cs.cmu.edu/~crary/819-f09/) +- [ক্লাসিক কাগজগুলি ভালবাসেন?] (Https://www.cs.cmu.edu/~crary/819-f09/) - [1978: সিক্যুয়ালাল প্রক্রিয়াগুলি যোগাযোগ করে] (http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - -[গো প্রয়োগ করা হয়েছে] (https://godoc.org/github.com/thomas11/csp) + - [গো প্রয়োগ করা হয়েছে] (https://godoc.org/github.com/thomas11/csp) - [2003: গুগল ফাইল সিস্টেম] (http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) -2012 সালে কলসাস দ্বারা প্রতিস্থাপিত - [২০০৪: ম্যাপ্রেডস: বড় ক্লাস্টারগুলিতে সরলীকৃত ডেটা প্রসেসিং] (http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) -বেশিরভাগ ক্লাউড ডেটাফ্লো দ্বারা প্রতিস্থাপিত হয়? - [২০০:: বিগ টেবিল: স্ট্রাকচার্ড ডেটার জন্য বিতরণযোগ্য স্টোরেজ সিস্টেম] (https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - -[গুগল বিগকুইয়ারির অভ্যন্তরীণ চেহারা] (https://cloud.google.com/files/BigQueryTechnicalWP.pdf) + - [গুগল বিগকুইয়ারির অভ্যন্তরীণ চেহারা] (https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - [২০০:: আলগা-কাপল ডিস্ট্রিবিউটেড সিস্টেমগুলির জন্য নিবিড় লক পরিষেবা] (https://research.google.com/archive/chubby-osdi06.pdf) - [২০০:: ডায়নামো: অ্যামাজনের সর্বোচ্চ উপলব্ধ কী-মান স্টোর] (http://s3.amazonaws.com/AllThingsDistributes/sosp/amazon-dynamo-sosp2007.pdf) -ডায়নামো কাগজটি নোএসকিউএল বিপ্লবটিকে সরিয়ে দিয়েছে @@ -2212,11 +2212,11 @@ https://github.com/jwasham/coding-interview-university - [২০১২: গুগলের কলসাস] (https://www.wired.com/2012/07/google-colossus/) -কাগজ পাওয়া যায় না - 2012: অ্যাড্রেস স্যানিটাইজার: একটি দ্রুত ঠিকানা স্যানিটি পরীক্ষক: - -[কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - -[ভিডিও] (https://www.usenix.org/conferences/atc12/technical-sessions/preferencesation/serebryany) + - [কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [ভিডিও] (https://www.usenix.org/conferences/atc12/technical-sessions/preferencesation/serebryany) - 2013: স্প্যানার: গুগলের বিশ্বব্যাপী বিতরণ ডেটাবেস: - -[কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - -[ভিডিও] (https://www.usenix.org/node/170855) + - [কাগজ] (http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [ভিডিও] (https://www.usenix.org/node/170855) - [২০১৪: মেশিন লার্নিং: প্রযুক্তিগত tণের উচ্চ-আগ্রহের ক্রেডিট কার্ড] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - [২০১৫: গুগলে অবিচ্ছিন্ন পাইপলাইন] (http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - [২০১৫: বৃহত্তর স্কেলে উচ্চ-প্রাপ্যতা: বিজ্ঞাপনগুলির জন্য গুগলের ডেটা অবকাঠামো তৈরি করা] (https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) @@ -2226,7 +2226,7 @@ https://github.com/jwasham/coding-interview-university
-##লাইসেন্স +## লাইসেন্স [সিসি-বাই-এসএ-4.0] (./ LICENSE.txt) From acc12e09a09c132aa138858731bf9aebb2ca2efb Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Sat, 6 Jan 2024 12:08:41 -0600 Subject: [PATCH 800/857] Update video count --- README.md | 2 +- translations/README-af.md | 2 +- translations/README-ar.md | 2 +- translations/README-bg.md | 2 +- translations/README-bn.md | 2 +- translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-es.md | 2 +- translations/README-fa.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-it.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 6c53a3d243..a2d9eedc5c 100644 --- a/README.md +++ b/README.md @@ -1199,7 +1199,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-af.md b/translations/README-af.md index 804154d1ea..a9c8f66aaf 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -1201,7 +1201,7 @@ Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoor - [ ] Reeks van 2-3 minute kort onderwerp videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (46 videos): +- [ ] Reeks van 2-5 minute kort onderwerp videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-ar.md b/translations/README-ar.md index a7e3c6907b..8012d11433 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1277,7 +1277,7 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-bg.md b/translations/README-bg.md index 5c32b86e95..708fc924f6 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -1213,7 +1213,7 @@ pобхождам графи. Ако трябваше да напиша сорт - [ ] Серия от 2-3 минутни кратки клипове по различни теми (23 клипа) - [Клипове](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (46 клипа): +- [ ] Серия от 2-5 минутни кратки клипове по различни теми - Michael Sambol (48 клипа): - [Клипове](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Алгоритми I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-bn.md b/translations/README-bn.md index 9d4ef81758..28d35535ab 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -1490,7 +1490,7 @@ https://github.com/jwasham/coding-interview-university - শর্ট সাবজেক্টের ২-৩ মিনিটের সিরিজ (২৩ টি ভিডিও) -[ভিডিও] (https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (46 টি ভিডিও): +- 2-5 মিনিটের সংক্ষিপ্ত বিষয় ভিডিওর সিরিজ-মাইকেল সাম্বোল - Michael Sambol (48 টি ভিডিও): - [ভিডিও](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [সেজেজউইক ভিডিও-অ্যালগোরিদম আই] (https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-cn.md b/translations/README-cn.md index 2e6beed115..e95106a5eb 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1154,7 +1154,7 @@ - [ ] 一系列2-3分钟的短主题视频(共23个视频) - [视频链接](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 一系列2-5分钟的短主题视频 - Michael Sambol(共46个视频): +- [ ] 一系列2-5分钟的短主题视频 - Michael Sambol(共48个视频): - [视频链接](https://www.youtube.com/@MichaelSambol) - [代码示例](https://github.com/msambol/dsa) - [ ] [Sedgewick的算法课程视频 - 算法I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-de.md b/translations/README-de.md index 937a4b28c5..6cfdc560b6 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -1367,7 +1367,7 @@ Graphen können genutzt werden, um damit viele verschiedene Probleme in der Info - [ ] Reihe mit kurzen 2-3 Minuten Videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (46 videos): +- [ ] Reihe mit kurzen 2-5 Minuten Videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-es.md b/translations/README-es.md index 830d1ac239..b1bbafd1c1 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -1302,7 +1302,7 @@ Es bueno si quieres repasar frecuentemente. - [ ] Series de videos cortos sobre temas de 2-3 minutos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (46 videos): +- [ ] Series de videos cortos sobre temas de 2-5 minutos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-fa.md b/translations/README-fa.md index 7cb3895eeb..866f91cba5 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -1181,7 +1181,7 @@ Choose one: - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-fr.md b/translations/README-fr.md index 85902de35c..2a5e2e9501 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -1275,7 +1275,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-he.md b/translations/README-he.md index 43ded72815..f0d632cfb3 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -1286,7 +1286,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [סרטונים](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [סרטונים](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-hi.md b/translations/README-hi.md index 520d340666..a2de5e83f2 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -1202,7 +1202,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [ ] 2-3 मिनट के लघु विषय वीडियो की श्रृंखला (23 वीडियो) - [वीडियो](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (46 वीडियो): +- [ ] 2-5 मिनट के लघु विषय वीडियो की श्रृंखला - Michael Sambol (48 वीडियो): - [वीडियो](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [सेजविक वीडियो - एल्गोरिदम I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-id.md b/translations/README-id.md index 51e1b097cd..20badf9ca4 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -1200,7 +1200,7 @@ Graf (Graphs) dapat digunakan untuk merepresentasikan banyak masalah dalam ilmu - [ ] Seri video subjek pendek berdurasi 2-3 menit (23 video) - [Video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (46 video): +- [ ] Seri video subjek pendek berdurasi 2-5 menit - Michael Sambol (48 video): - [Video](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Video Sedgewick - Algoritma I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-it.md b/translations/README-it.md index 14a87f3e45..73bfe42841 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -1208,7 +1208,7 @@ I grafi possono essere usati per rappresentare molti problemi in informatica, pe - [ ] Series of 2-3 minutes short subject video (23 video) - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject video - Michael Sambol (46 video): +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (48 video): - [video](https://www.youtube.com/@MichaelSambol) - [code examples](https://github.com/msambol/dsa) - [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-ja.md b/translations/README-ja.md index ef2b0fad13..7f01ffdc90 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -1110,7 +1110,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [ ] 2 ~ 3 分の短い主題ビデオ シリーズ (23 動画) - [ビデオ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2 ~ 5 分のシリーズ短い主題のビデオ - Michael Sambol (動画 46 件): +- [ ] 2 ~ 5 分のシリーズ短い主題のビデオ - Michael Sambol (動画 48 件): - [ビデオ](https://www.youtube.com/@MichaelSambol) - [コード例](https://github.com/msambol/dsa) - [ ] [セッジウィック ビデオ - アルゴリズム I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-kh.md b/translations/README-kh.md index e6bca72b14..2b05dda51e 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -1266,7 +1266,7 @@ Graphs អាចត្រូវបានប្រើដើម្បីបង្ - [ ] Series of 2-3 minutes short subject videos (23 វីដេអូ) - [វីដេអូ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 វីដេអូ): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 វីដេអូ): - [វីដេអូ](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [វីដេអូ Sedgewick - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-ko.md b/translations/README-ko.md index 4d8a53727b..66c2089d31 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -1285,7 +1285,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 - [ ] 2-3분 분량의 주제별 짧은 영상 시리즈 (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (46 videos): +- [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-pl.md b/translations/README-pl.md index 98295aa719..3ed30ea006 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -1239,7 +1239,7 @@ Trie to drzewo węzłów, które obsługuje operacje Znajdź i Wstaw [etc (...)] - [ ] Seria 2-3 minutowych, krótkich filmów tematycznych (23 wideo) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (46 wideo): +- [ ] Seria 2–5 minutowych, krótkich filmów tematycznych - Michael Sambol (48 wideo): - [Wideo](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorytmy I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 69a394713b..14086098e1 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -1308,7 +1308,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] Séries de vídeos curtos (2 - 3 minutos) sobre o assunto (23 vídeos) - [Vídeos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (46 vídeos): +- [ ] Séries de vídeos curtos (2 - 5 minutos) sobre o assunto - Michael Sambol (48 vídeos): - [Vídeos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-ru.md b/translations/README-ru.md index 1fb7e919f1..3bf2126131 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -1288,7 +1288,7 @@ Google не возьмёт тебя на работу. - [ ] Серия 2-3 минутных короткие видео по темам (23 видео) - [Видео](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (46 видео): +- [ ] Серия коротких 2-5 минутных видео - Michael Sambol (48 видео): - [Видео](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-th.md b/translations/README-th.md index 3c507b365f..bc75d66566 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -1282,7 +1282,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-tr.md b/translations/README-tr.md index 81f9c9f803..0d1bf43701 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -1254,7 +1254,7 @@ Graflar, bilgisayar bilimlerinde birçok sorunu temsil etmek için kullanılabil - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-tw.md b/translations/README-tw.md index 3508158202..f7bcf7e0d3 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1232,7 +1232,7 @@ - [ ] 2-3分鐘快速複習影片系列(23個影片) - [影片](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (46個影片) +- [ ] 2-5分鐘快速複習影片系列-Michael Sambol (48個影片) - [影片](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-uk.md b/translations/README-uk.md index 00c9464e63..72be106e59 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1332,7 +1332,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th - [ ] Series of 2-3 minutes short subject videos (23 videos) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (46 videos): +- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) diff --git a/translations/README-ur.md b/translations/README-ur.md index 702cb9866c..259930900e 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -1183,7 +1183,7 @@ If you need more detail on this subject, see "Sorting" section in [Additional De - [ ] 2-3 منٹ کی مختصر سبجیکٹ ویڈیوز کی سیریز (23 ویڈیوز) - [ویڈیوز](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (46 ویڈیوز): +- [ ] 2-5 منٹ کی مختصر موضوع ویڈیوز کی سیریز - مائیکل سمبول (48 ویڈیوز): - [ویڈیوز](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-uz.md b/translations/README-uz.md index d4e44265a0..7b73aa5ebd 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -1243,7 +1243,7 @@ Computer science da graflar bir talay masalalarni tasvirlashda ishlatiladi. Shun - [ ] 2-3 minutlik qisqa mavzuga oid videolar seriyasi (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (46 video): +- [ ] 2-5 minutlik qisqa mavzuga oid videolar seriyasi - Michael Sambol (48 video): - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) diff --git a/translations/README-vi.md b/translations/README-vi.md index 4662c9e781..a156ead91a 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -1244,7 +1244,7 @@ Bạn sẽ biết thêm nhiều ứng dụng của đồ thị trong sách của - [ ] Các video ngắn 2-3 phút (23 video) - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Các video ngắn 2-5 phút - Michael Sambol (46 video) +- [ ] Các video ngắn 2-5 phút - Michael Sambol (48 video) - [Videos](https://www.youtube.com/@MichaelSambol) - [Code Examples](https://github.com/msambol/dsa) - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) From 681c4b73669069b13e63d06a1a0f3d41971ce3e7 Mon Sep 17 00:00:00 2001 From: Michael Sambol Date: Sat, 6 Jan 2024 12:14:40 -0600 Subject: [PATCH 801/857] Update algo analysis playlist --- README.md | 2 +- translations/README-af.md | 2 +- translations/README-ar.md | 2 +- translations/README-bg.md | 2 +- translations/README-bn.md | 2 +- translations/README-cn.md | 2 +- translations/README-de.md | 2 +- translations/README-el.md | 2 +- translations/README-es.md | 2 +- translations/README-fa.md | 2 +- translations/README-fr.md | 2 +- translations/README-he.md | 2 +- translations/README-hi.md | 2 +- translations/README-id.md | 2 +- translations/README-it.md | 2 +- translations/README-ja.md | 2 +- translations/README-kh.md | 2 +- translations/README-ko.md | 2 +- translations/README-pl.md | 2 +- translations/README-ptbr.md | 2 +- translations/README-ru.md | 2 +- translations/README-th.md | 2 +- translations/README-tr.md | 2 +- translations/README-tw.md | 2 +- translations/README-uk.md | 2 +- translations/README-ur.md | 2 +- translations/README-uz.md | 2 +- translations/README-vi.md | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a2d9eedc5c..60b14455b7 100644 --- a/README.md +++ b/README.md @@ -569,7 +569,7 @@ But don't forget to do coding problems from above while you learn! - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Well, that's about enough of that. diff --git a/translations/README-af.md b/translations/README-af.md index a9c8f66aaf..cab069db32 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -571,7 +571,7 @@ Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie! - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Well, dis genoeg van daardie. diff --git a/translations/README-ar.md b/translations/README-ar.md index 8012d11433..6aaa53a15c 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -525,7 +525,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## Data Structures diff --git a/translations/README-bg.md b/translations/README-bg.md index 708fc924f6..241d25b5d7 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -565,7 +565,7 @@ pобхождам графи. Ако трябваше да напиша сорт - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Пищови](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Е, това е достатъчно за тази тема. diff --git a/translations/README-bn.md b/translations/README-bn.md index 28d35535ab..fea671475e 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -673,7 +673,7 @@ https://github.com/jwasham/coding-interview-university - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ওয়েল, যে যথেষ্ট যে সম্পর্কে. diff --git a/translations/README-cn.md b/translations/README-cn.md index e95106a5eb..ccb3e869cc 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -525,7 +525,7 @@ - [计算复杂性:第1部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [计算复杂性:第2部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [速查表](http://bigocheatsheet.com/) -- [ ] [[复习] 5分钟内了解大O符号(视频)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) 好吧,差不多就到这里了。 diff --git a/translations/README-de.md b/translations/README-de.md index 6cfdc560b6..e57346e72c 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -549,7 +549,7 @@ Schreib Code auf einer Tafel oder auf Papier, aber nicht am Computer. Teste mit - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Spickzettel](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv)
diff --git a/translations/README-el.md b/translations/README-el.md index a3057e19d4..c679fd7706 100644 --- a/translations/README-el.md +++ b/translations/README-el.md @@ -456,7 +456,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Εάν μερικές διαλέξεις είναι πολύ μαθηματικές, μπορείς να μεταβείς προς τα κάτω και να παρακολουθήσεις μερικά βίντεο σχετικά με τα διακριτά μαθηματικά για να πάρεις όλες τις γνώσεις που απαιτούνται. diff --git a/translations/README-es.md b/translations/README-es.md index b1bbafd1c1..995fce0397 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -520,7 +520,7 @@ Escriba código en un pizarrón o en papel, pero no en la computadora. Pruebe co - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Si algunas de las lecturas son muy matemáticas, puede saltar a la parte inferior y ver las matemáticas discretas para tener el conocimiento base. diff --git a/translations/README-fa.md b/translations/README-fa.md index 866f91cba5..dfcaa1a646 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -552,7 +552,7 @@ Choose one: - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) بسیارخب، فکر کنم در همین حد کافی باشه. diff --git a/translations/README-fr.md b/translations/README-fr.md index 2a5e2e9501..964d90bab6 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -560,7 +560,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) If some of the lectures are too mathy, you can jump down to the bottom and watch the discrete mathematics videos to get the background knowledge. diff --git a/translations/README-he.md b/translations/README-he.md index f0d632cfb3..2b02e12859 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -571,7 +571,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) If some of the lectures are too mathy, you can jump down to the bottom and diff --git a/translations/README-hi.md b/translations/README-hi.md index a2de5e83f2..531af59775 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -579,7 +579,7 @@ Anki प्रारूप में मेरा फ्लैशकार्ड - [कम्प्यूटेशनल जटिलता: सेक्शन 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [कम्प्यूटेशनल जटिलता: धारा 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [चीट शीट] (http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) खैर, बस इतना ही काफी है। diff --git a/translations/README-id.md b/translations/README-id.md index 20badf9ca4..5c480e3bce 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -442,7 +442,7 @@ Menulis kode pada papan tulis atau kertas, bukan komputer. Uji dengan beberapa s - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## Struktur Data diff --git a/translations/README-it.md b/translations/README-it.md index 73bfe42841..d3c97f1e97 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -575,7 +575,7 @@ Ma non dimenticare di esercitarti con i problemi, anche durante lo studio! - [Complessità Computazionale: Sezione 1 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Complessità Computazionale: Sezione 2 (Articolo in Inglese)](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat-Sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Bene, direi che può bastare. diff --git a/translations/README-ja.md b/translations/README-ja.md index 7f01ffdc90..e77a518a1e 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -481,7 +481,7 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s - [計算の複雑さ: セクション 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [計算の複雑さ: セクション 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [チートシート](http://bigocheatsheet.com/) -- [ ] [【復習】5分でわかるBig-O記譜法(動画)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) まあ、それだけで十分です。 diff --git a/translations/README-kh.md b/translations/README-kh.md index 2b05dda51e..2cf649ee4a 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -496,7 +496,7 @@ Data Structure ទាំងអស់ដែលខ្ញុំធ្លាប់ - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ១](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [ភាពស្មុគស្មាញនៃការគណនា៖ ផ្នែកទី ២](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [សន្លឹកជំនួយ](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) --- diff --git a/translations/README-ko.md b/translations/README-ko.md index 66c2089d31..3329d429df 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -531,7 +531,7 @@ Anki 형식의 내 요약집 데이터베이스: https://ankiweb.net/shared/info - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## 자료구조 diff --git a/translations/README-pl.md b/translations/README-pl.md index 3ed30ea006..c9a81d08c9 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -483,7 +483,7 @@ Napisz kod na tablicy lub papierze, a nie na komputerze. Testuj z niektórymi pr - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Ściągawka](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## Struktury danych diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index 14086098e1..b5cda2ac42 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -512,7 +512,7 @@ Escreva código em um quadro branco ou papel, não em um computador. Teste com u - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) (Complexidade Computacional: Seção 1) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) (Complexidade Computacional: Seção 2) - [ ] [Cheat sheet](http://bigocheatsheet.com/) (Folha de Consultas) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Se alguma das aulas forem muito "matemáticas", você pode pular para o final e diff --git a/translations/README-ru.md b/translations/README-ru.md index 3bf2126131..0b6f308c9d 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -565,7 +565,7 @@ Google не возьмёт тебя на работу. - [Вычислительная сложность: Часть 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Вычислительная сложность: Часть 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Шпаргалка](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Если в некоторых лекциях слишком много математики, вы можете ниже найти и посмотреть лекции по дискретной математике для получения базовых знаний. diff --git a/translations/README-th.md b/translations/README-th.md index bc75d66566..9b6379f73b 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -492,7 +492,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) If some of the lectures are too mathy, you can jump down to the bottom and diff --git a/translations/README-tr.md b/translations/README-tr.md index 0d1bf43701..706b52bb5a 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -510,7 +510,7 @@ Kodları beyaz tahtaya ya da kağıda yazın, bilgisayara değil. Örnek girdile - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## Veri Yapıları diff --git a/translations/README-tw.md b/translations/README-tw.md index f7bcf7e0d3..70222509f1 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -482,7 +482,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## 資料結構 - ### 陣列 diff --git a/translations/README-uk.md b/translations/README-uk.md index 72be106e59..d7fc004cf7 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -539,7 +539,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) If some of the lectures are too mathy, you can jump down to the bottom and diff --git a/translations/README-ur.md b/translations/README-ur.md index 259930900e..8ed5285ad1 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -555,7 +555,7 @@ - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) یہ اس کے بارے میں کافی ہے. diff --git a/translations/README-uz.md b/translations/README-uz.md index 7b73aa5ebd..ed9e722d13 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -486,7 +486,7 @@ Birinchi kodizni doskada yoki qog'ozda yozing, kompyuterda emas. Og'zaki test qi - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) - [ ] [Cheat varaq](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) ## Ma'lumotlar tuzilmasi (Data structures) diff --git a/translations/README-vi.md b/translations/README-vi.md index a156ead91a..3e14a27829 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -571,7 +571,7 @@ Nhưng đừng quên làm các bài toán lập trình ở phía trên trong khi - [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Big-O notation in 5 minutes (video)](https://youtu.be/__vX2sjlpXU) +- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) Ồ, chắc cũng đủ rồi. From 86ffe5e37d5504a1ddfb60eeacce1d4bd506f72e Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Fri, 2 Feb 2024 12:02:30 +0100 Subject: [PATCH 802/857] Fix order and orientation I've sorted the entries alphabetically and this fixed the backwards orientation in the region. --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 60b14455b7..03c636cb92 100644 --- a/README.md +++ b/README.md @@ -17,22 +17,22 @@
Translations: -- [اردو - Urdu](translations/README-ur.md) -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) - +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md) +- [Bahasa Indonesia](translations/README-id.md)
From a70fc388e3f6931419ada967486221f30c033e17 Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Fri, 2 Feb 2024 12:04:04 +0100 Subject: [PATCH 803/857] Fix order This just fixes the alphabetical order of the entries. --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 03c636cb92..1acc80ea5f 100644 --- a/README.md +++ b/README.md @@ -32,26 +32,25 @@ - [ខ្មែរ - Khmer](translations/README-kh.md) - [中文版本](translations/README-cn.md) - [繁體中文](translations/README-tw.md) -- [Bahasa Indonesia](translations/README-id.md)
Translations in progress: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
From 61a9f31fda56738ab3ac02185c010853528ece3e Mon Sep 17 00:00:00 2001 From: kiwib0y Date: Fri, 2 Feb 2024 12:19:03 +0100 Subject: [PATCH 804/857] Update every translation details I've updated the translations status, for each of the markdown files and made them as they're in the original english markdown. --- translations/README-af.md | 39 ++++++++++++++--------------- translations/README-ar.md | 46 +++++++++++++++++++--------------- translations/README-bg.md | 41 +++++++++++++++---------------- translations/README-bn.md | 39 +++++++++++++++-------------- translations/README-de.md | 37 ++++++++++++++++------------ translations/README-es.md | 38 +++++++++++++++------------- translations/README-fa.md | 39 +++++++++++++++-------------- translations/README-hi.md | 40 +++++++++++++++--------------- translations/README-kh.md | 41 ++++++++++++++++++------------- translations/README-pl.md | 38 ++++++++++++++++------------ translations/README-ptbr.md | 36 +++++++++++++++++---------- translations/README-tr.md | 45 ++++++++++++++++++---------------- translations/README-tw.md | 49 ++++++++++++++++++------------------- translations/README-uk.md | 36 +++++++++++++++------------ translations/README-ur.md | 40 +++++++++++++++--------------- 15 files changed, 326 insertions(+), 278 deletions(-) diff --git a/translations/README-af.md b/translations/README-af.md index cab069db32..b9631bdc0d 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -17,41 +17,40 @@
Vertalings: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) - +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Vertalings aan die gang: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-ar.md b/translations/README-ar.md index 6aaa53a15c..9f1bd01081 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -22,34 +22,40 @@
الترجمات: +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) - [中文版本](translations/README-cn.md) -- [Tiếng Việt - الفيتنامبة](translations/README-vi.md) -- [الإسبانية](translations/README-es.md) -- [(البرتغالية (البرازيلية](translations/README-ptbr.md) -- [البولندية](translations/README-pl.md) - [繁體中文](translations/README-tw.md) -- [اليابانية (日本語)](translations/README-ja.md) -- [الروسية](translations/README-ru.md) -
ترجمات تحت الإعداد: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [الإندونيسية](https://github.com/jwasham/coding-interview-university/issues/101) -- [العربية](https://github.com/jwasham/coding-interview-university/issues/98) -- [التركية](https://github.com/jwasham/coding-interview-university/issues/90) -- [الفرنسية](https://github.com/jwasham/coding-interview-university/issues/89) -- [الأكرانية](https://github.com/jwasham/coding-interview-university/issues/106) -- [الكورية(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [أردو](https://github.com/jwasham/coding-interview-university/issues/140) -- [التايلندية](https://github.com/jwasham/coding-interview-university/issues/156) -- [اليونانية](https://github.com/jwasham/coding-interview-university/issues/166) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)

diff --git a/translations/README-bg.md b/translations/README-bg.md index eb58b1e76c..06ef98f1ff 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -4,7 +4,7 @@ > > Учих между 8-12 часа на ден в продължение на няколко месеца. Това е историята ми: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **Моля обърнете внимание:** Няма да Ви се налага да учите колкото мен. Загубих много време, учейки неща, които нямах нужда да знам. Може да прочетете повече за това надолу. Ще Ви помогна да достигнете до крайната цел без да прахосвате скъпото си време. +> **Моля обърнете внимание:** Няма да Ви се налага да учите колкото мен. Загубих много време, учейки неща, които няма нужда да знам. Може да прочетете повече за това надолу. Ще Ви помогна да достигнете до крайната цел без да прахосвате скъпото си време. > > Темите, изредени тук, ще Ви подготвят добре за техническо интервю за почти всяка една компания, включително гигантите Amazon, Facebook, Google и Microsoft > @@ -13,41 +13,40 @@
Преводи: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) - +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Текущи преводи: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-bn.md b/translations/README-bn.md index 1bf2624ab9..3cb1325d15 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -17,39 +17,40 @@
অনুবাদ: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) - +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
অনুবাদ অগ্রগতি: - -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) + +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-de.md b/translations/README-de.md index e57346e72c..ba1463d89f 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -15,33 +15,40 @@
Übersetzungen: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) - [Português Brasileiro](translations/README-ptbr.md) - +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Übersetzungen in Bearbeitung: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-es.md b/translations/README-es.md index 995fce0397..298563407a 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -14,36 +14,40 @@
Traducciones: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) - +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Traducciones en progreso: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-fa.md b/translations/README-fa.md index dfcaa1a646..b0e8fdb113 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -17,37 +17,40 @@
ترجمه ها: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) - +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
در حال ترجمه: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
@@ -1972,4 +1975,4 @@ Sit back and enjoy. ## LICENSE -[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file +[CC-BY-SA-4.0](./LICENSE.txt) diff --git a/translations/README-hi.md b/translations/README-hi.md index 531af59775..8e18e05f36 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -18,41 +18,41 @@ अनुवाद: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) - +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
अनुवाद जारी है: -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) + +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-kh.md b/translations/README-kh.md index 2cf649ee4a..6c6a222da7 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -17,33 +17,40 @@
ការបកប្រែ៖ -- [ភាសារចិន - 中文版本](translations/README-cn.md) -- [ភាសារវៀតណាម - Tiếng Việt - Vietnamese](translations/README-vi.md) -- [ភាសារអេស្ប៉ាញ - Español](translations/README-es.md) -- [ភាសារព័រទុយហ្កាល់ - Português Brasileiro](translations/README-ptbr.md) -- [ភាសារប៉ូឡូញ - Polish](translations/README-pl.md) - +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
ភាសារដែលកំពុងបកប្រែ: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-pl.md b/translations/README-pl.md index c9a81d08c9..7f5696c103 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -13,34 +13,40 @@
Tłumaczenia: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) - [Português Brasileiro](translations/README-ptbr.md) -- [Polish](https://github.com/mbiesiad/coding-interview-university/blob/master/translations/README-pl.md) - +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Tłumaczenia w trakcie: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Japanese (日本語)](https://github.com/jwasham/coding-interview-university/issues/257) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index b5cda2ac42..c1ebca0c38 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -17,27 +17,37 @@ **Tradutores**: [Marlon Aviz](https://github.com/avizmarlon) ([Contribuições](https://github.com/avizmarlon/coding-interview-university/commits/ptbr-translation/translations/README-ptbr.md?author=avizmarlon)), [marceloogeda](https://github.com/marceloogeda) ([Contribuições](https://github.com/avizmarlon/coding-interview-university/commits/ptbr-translation/translations/README-ptbr.md?author=marceloogeda)), [laris151](https://github.com/laris151) ([Contribuições](https://github.com/avizmarlon/coding-interview-university/commits/ptbr-translation/translations/README-ptbr.md?author=laris151)) Traduções: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](README-ptbr.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md) Traduções em progresso: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Russian](https://github.com/jwasham/coding-interview-university/issues/87) -- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Polish](https://github.com/jwasham/coding-interview-university/issues/122) -- [German](https://github.com/jwasham/coding-interview-university/issues/135) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)

diff --git a/translations/README-tr.md b/translations/README-tr.md index 706b52bb5a..5d8fdf6fce 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -16,37 +16,40 @@
Translations: +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) - [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamca](translations/README-vi.md) -- [İspanyolca](translations/README-es.md) -- [Brezilya Portekizcesi](translations/README-ptbr.md) -- [Lehçe](translations/README-pl.md) - [繁體中文](translations/README-tw.md) -- [Japonca (日本語)](translations/README-ja.md) -- [Rusça](translations/README-ru.md) -- [Almanca](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Kmer](translations/README-kh.md) -- [Özbekçe](translations/README-uz.md) -
Translations in progress: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arapça](https://github.com/jwasham/coding-interview-university/issues/98) -- [Türkçe](https://github.com/jwasham/coding-interview-university/issues/90) -- [Fransızca](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Yunanca](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-tw.md b/translations/README-tw.md index 70222509f1..7ca08068a6 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -14,41 +14,40 @@
翻譯: -- [中文版本](README-cn.md) -- [Tiếng Việt - Vietnamese](README-vi.md) -- [Español](README-es.md) -- [Português Brasileiro](README-ptbr.md) -- [Polish](README-pl.md) -- [繁體中文](README-tw.md) -- [Japanese (日本語)](README-ja.md) -- [Russian](README-ru.md) -- [German](README-de.md) -- [Bahasa Indonesia](README-id.md) -- [ខ្មែរ - Khmer](README-kh.md) -- [Uzbek](README-uz.md) -- [Bulgarian](README-bg.md) -- [বাংলা - Bangla](README-bn.md) - +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
正在翻譯的項目: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-uk.md b/translations/README-uk.md index d7fc004cf7..f7f900aff2 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -20,36 +20,40 @@ Microsoft.
Переклади: -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) - +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
Переклади в процесі: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) - [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
diff --git a/translations/README-ur.md b/translations/README-ur.md index 8ed5285ad1..867e306b7d 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -13,41 +13,41 @@
ترجمہ: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) + +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) - [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) +- [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) - [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [中文版本](translations/README-cn.md) +- [繁體中文](translations/README-tw.md)
ترجمہ جاری ہے: -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) - [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - - +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
From aea2f5cb57d8c98017435bb7016afdb2a1d47440 Mon Sep 17 00:00:00 2001 From: hashcookie Date: Thu, 22 Feb 2024 19:25:26 +0800 Subject: [PATCH 805/857] docs: update Chinese translation for algorithm analysis video URL --- translations/README-cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index ccb3e869cc..b8ae4a33d5 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -525,7 +525,7 @@ - [计算复杂性:第1部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) - [计算复杂性:第2部分](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) - [ ] [速查表](http://bigocheatsheet.com/) -- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) +- [ ] [[回顾] 在 18 分钟内分析算法(播放列表)(视频)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) 好吧,差不多就到这里了。 From 0437f2c080c4d38c7275f227d505986554f2711a Mon Sep 17 00:00:00 2001 From: Mark Qian Date: Fri, 1 Mar 2024 21:00:23 -0500 Subject: [PATCH 806/857] Update README.md to include Codemia as a tool to practice system design problems codemia.io is a platform for practicing and studying system design problem. Users can practice alone via AI tool or share their solution on the platform to get human feedback as well. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1acc80ea5f..17a70999e2 100644 --- a/README.md +++ b/README.md @@ -1245,6 +1245,7 @@ Mock Interviews: - [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously - [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. - [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers. +- [Codemia: Practice system design problems with AI or community solutions and feedback](https://codemia.io/?utm_source=ciu) - Practice system design problems via AI practice tool. Share your solution with the community to get human feedback as well. ## Be thinking of for when the interview comes From e7ba3825058a8c200e0f058074deb2ab1b403024 Mon Sep 17 00:00:00 2001 From: hashcookie Date: Tue, 5 Mar 2024 21:00:01 +0800 Subject: [PATCH 807/857] docs: Add new resource for practicing system design problems --- translations/README-cn.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-cn.md b/translations/README-cn.md index b8ae4a33d5..1d29ed3813 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -1201,6 +1201,7 @@ - [interviewing.io:与资深工程师进行模拟面试 ](https://interviewing.io) - 匿名算法/系统设计面试,与FAANG公司的资深工程师进行。 - [Meetapro:与顶级FAANG面试官进行模拟面试 ](https://meetapro.com/?utm_source=ciu) - 类似Airbnb的模拟面试/指导平台。 - [Hello Interview:与专家教练和人工智能模拟面试](https://www.hellointerview.com/?utm_source=ciu) - 直接与人工智能或 FAANG 员工工程师和经理面试。 +- [Codemia:通过人工智能或社区解决方案和反馈来练习系统设计问题](https://codemia.io/?utm_source=ciu) - 通过AI练习工具来解决系统设计问题。与社区分享你的解决方案,以获得反馈。. ## 当面试来临的时候 From 6a01ab5037306ff8761be3b81a1e0d4b783dab81 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:28:28 +0800 Subject: [PATCH 808/857] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17a70999e2..e31e5b01c9 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md)
From cd1c1037f6f6de3e67b51f46bd0760fb3ba1599a Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:33:53 +0800 Subject: [PATCH 809/857] Update README-af.md --- translations/README-af.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-af.md b/translations/README-af.md index b9631bdc0d..41d8f57fb0 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -30,7 +30,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md)
From 2dc9229a6e6cb7b882cde6b1fabd551f5b6dead2 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:34:01 +0800 Subject: [PATCH 810/857] Update README-ar.md --- translations/README-ar.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 9f1bd01081..14d7b3e293 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -35,7 +35,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From d213042c813be9a71c5f3ce3701c913d55e1792a Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:34:10 +0800 Subject: [PATCH 811/857] Update README-bg.md --- translations/README-bg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bg.md b/translations/README-bg.md index 06ef98f1ff..0ac2b95a7d 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -26,7 +26,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From e09e79ca562bd500782d7efe35f108a6446ba779 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:34:20 +0800 Subject: [PATCH 812/857] Update README-bn.md --- translations/README-bn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-bn.md b/translations/README-bn.md index 3cb1325d15..de98566ffb 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -30,7 +30,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 513b8cd4d1bcd6dc1994f8683457eb4789a0c1ee Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:34:47 +0800 Subject: [PATCH 813/857] Update README-de.md --- translations/README-de.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-de.md b/translations/README-de.md index ba1463d89f..d3479e6bb3 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -28,7 +28,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 0d5804a0a9ec3caf8a7966603be255883a3689d8 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:35:00 +0800 Subject: [PATCH 814/857] Update README-es.md --- translations/README-es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-es.md b/translations/README-es.md index 298563407a..d4a3600884 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -27,7 +27,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 4da2bff9b825f68976e4a155978f51206c6189e0 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:35:10 +0800 Subject: [PATCH 815/857] Update README-fa.md --- translations/README-fa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-fa.md b/translations/README-fa.md index b0e8fdb113..2a4e5296db 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -30,7 +30,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 4d0a4cff79bfa277ee22a738bca15f15e90d7083 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:35:33 +0800 Subject: [PATCH 816/857] Update README-hi.md --- translations/README-hi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-hi.md b/translations/README-hi.md index 8e18e05f36..7b19b2296c 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -31,7 +31,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 8019a4a1e6002781ac468262b0e90f49b4438e1a Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:36:02 +0800 Subject: [PATCH 817/857] Update README-ja.md --- translations/README-ja.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index e77a518a1e..4b85e59a5f 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -12,7 +12,7 @@ > *あなたに最高の幸運がありますように!* 翻訳: -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [TiếngViệt - ベトナム語](translations/README-vi.md) - [Español](translations/README-es.md) @@ -1862,4 +1862,4 @@ Anki 形式のフラッシュカード データベース: https://ankiweb.net/s ## ライセンス -[CC-BY-SA-4.0](./LICENSE.txt) \ No newline at end of file +[CC-BY-SA-4.0](./LICENSE.txt) From c45dba6e09aa321aa2f334b41435ffb88e43e5df Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:36:12 +0800 Subject: [PATCH 818/857] Update README-kh.md --- translations/README-kh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-kh.md b/translations/README-kh.md index 6c6a222da7..23a2a16df0 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -30,7 +30,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 8117685dc705374ffa0913fc2e415b2b59a3b294 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:36:28 +0800 Subject: [PATCH 819/857] Update README-pl.md --- translations/README-pl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-pl.md b/translations/README-pl.md index 7f5696c103..56e964f107 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -26,7 +26,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From d6074a5a99370b111976282a989e2d5b581c66b7 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:36:45 +0800 Subject: [PATCH 820/857] Update README-th.md --- translations/README-th.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-th.md b/translations/README-th.md index 9b6379f73b..32e4acea79 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -6,7 +6,7 @@ > *ขอให้คุณโชคดี!* ภาษาอื่นๆ: -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - กำลังดำเนินการแปลภาษา: - [Español](https://github.com/jwasham/coding-interview-university/issues/80) - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) From ad26ad9a9f3ddc00ed7c333049439559c6bc9e42 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:36:55 +0800 Subject: [PATCH 821/857] Update README-tr.md --- translations/README-tr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-tr.md b/translations/README-tr.md index 5d8fdf6fce..a7dd4dd3e0 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -29,7 +29,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 47894f68cc50febdbc6aa93b067375e5b00bcce4 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:37:05 +0800 Subject: [PATCH 822/857] Update README-tw.md --- translations/README-tw.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index 7ca08068a6..f88aca81ca 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -27,7 +27,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From d1f140c2556fddb280e20463248c99278a9803e1 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:37:14 +0800 Subject: [PATCH 823/857] Update README-uk.md --- translations/README-uk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index f7f900aff2..4fba162e4e 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -33,7 +33,7 @@ Microsoft. - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 9be6a0c67b45e152eb942ef02e07665a5995251d Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:37:23 +0800 Subject: [PATCH 824/857] Update README-ur.md --- translations/README-ur.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-ur.md b/translations/README-ur.md index 867e306b7d..a50f85c88f 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -27,7 +27,7 @@ - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) -- [中文版本](translations/README-cn.md) +- [简体中文](translations/README-cn.md) - [繁體中文](translations/README-tw.md) From 43aa5a0f0a0cb01cbd35097ff0834d36ad9e5da9 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:43:38 +0800 Subject: [PATCH 825/857] Update README-tw.md --- translations/README-tw.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index f88aca81ca..c7c60bfc52 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1,13 +1,13 @@ # Coding Interview University > 原先我為了成為一個軟體工程師而建立這份簡單的讀書主題清單(To-do list), -> 但這份To-do list隨著時間而膨脹成這個樣子。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> 但這份To-do list隨著時間而儼然成為了一個很大的清單。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > 你或許不需要像我讀一樣多。但是,每個讓你成為一位稱職工程師所需要的知識都在這裡了。 > > 我每天讀8~12小時的書,這樣持續了好幾個月。這是我的故事:[為什麼我為了Google面試而讀了8個月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > > 在這份To-do list內的主題會讓你擁有足夠的知識去面對幾乎每家軟體公司的專業面試, -> 這些公司包含了科技巨獸,例如Amazon、Facebook、Google,或者是Microsoft。 +> 這些公司包含了諸多科技巨獸,例如Amazon、Facebook、Google,或者是Microsoft。 > > *祝你好運!* From c752a8fa52f6acf099ca78163c48720dc4f390e0 Mon Sep 17 00:00:00 2001 From: "Andy Lu (Lu, Yu-An)" Date: Tue, 16 Apr 2024 10:44:00 +0800 Subject: [PATCH 826/857] Update README-tw.md --- translations/README-tw.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README-tw.md b/translations/README-tw.md index c7c60bfc52..05c156f84a 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -1,7 +1,7 @@ # Coding Interview University > 原先我為了成為一個軟體工程師而建立這份簡單的讀書主題清單(To-do list), -> 但這份To-do list隨著時間而儼然成為了一個很大的清單。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> 但這份To-do list儼然隨著時間成為了一個很長的清單。 [做完這份To-do list上的每個目標後,我成為了Amazon的工程師](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! > 你或許不需要像我讀一樣多。但是,每個讓你成為一位稱職工程師所需要的知識都在這裡了。 > > 我每天讀8~12小時的書,這樣持續了好幾個月。這是我的故事:[為什麼我為了Google面試而讀了8個月](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) From 3af861bad03e9ff5c97e903dbd73687e5236d841 Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 02:45:15 +0530 Subject: [PATCH 827/857] Create README-mr.md --- translations/README-mr.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 translations/README-mr.md diff --git a/translations/README-mr.md b/translations/README-mr.md new file mode 100644 index 0000000000..8188df40cf --- /dev/null +++ b/translations/README-mr.md @@ -0,0 +1,14 @@ +# कोडिंग साक्षात्कार विद्यापीठ + +> मी प्रारंभिकपणे ह्या सॉफ्टवेअर इंजिनिअर बनण्याच्या अभ्यास विषयांची संक्षिप्त सूची म्हणून हे निर्माण केलं होतं, +> परंतु ते आता आपण दिसतं असं मोठं सूची व्हायला वाढलं. या अभ्यास योजनेवर पास केल्यानंतर, [मी Amazon वर सॉफ्टवेअर विकास अभियंता म्हणून नोकरी मिळवली](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> आपल्याला असं अधिक अभ्यास करण्याची आवश्यकता नसेल. काहीही आपल्याला येऊ शकणार नाही म्हणून आम्ही दाखवणार आहोत. + +> मी दिवसात 8-12 तास अभ्यास केले, काही महिन्यांसाठी. या माझ्या कथेचं असं आहे: [Google साक्षात्कारासाठी मी 8 महिन्यांसाठी पूर्ण वेळ अभ्यास केलं आहे का नाही हे का](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) + +> **कृपया लक्षात घ्या:** आपल्याला मला अधिक अभ्यास करण्याची आवश्यकता नसेल. मी अनावश्यक गोष्टींवर अनेक वेळा वेळा अवधी निघाली. त्याबद्दल अधिक माहिती खाली आहे. आपल्या मौल्यवान वेळाची व्यर्थ झाली नाही, मी आपल्याला त्यांच्या अभ्यासात येण्यासाठी मदत करेन. + +> येथील आयटम्स आपल्याला केवळ किटकिटायला तक्रारी साक्षात्कारासाठी अचूक तयार करतील, +> समाविष्ट: Amazon, Facebook, Google, आणि Microsoft जस्ती राजकारणी कंपन्या. + +> _तुम्हाला शुभेच्छा!_ From cc68ad1e52d0356c17b38bd1bf56fad50885c36b Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 03:07:24 +0530 Subject: [PATCH 828/857] wip marathi translation --- translations/README-mr.md | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/translations/README-mr.md b/translations/README-mr.md index 8188df40cf..b8bcde2360 100644 --- a/translations/README-mr.md +++ b/translations/README-mr.md @@ -12,3 +12,71 @@ > समाविष्ट: Amazon, Facebook, Google, आणि Microsoft जस्ती राजकारणी कंपन्या. > _तुम्हाला शुभेच्छा!_ + +
+भाषांतर: + +- [Bahasa Indonesia](translations/README-id.md) +- [Bulgarian](translations/README-bg.md) +- [Español](translations/README-es.md) +- [German](translations/README-de.md) +- [Japanese (日本語)](translations/README-ja.md) +- [Polish](translations/README-pl.md) +- [Português Brasileiro](translations/README-ptbr.md) +- [Russian](translations/README-ru.md) +- [Tiếng Việt - Vietnamese](translations/README-vi.md) +- [Urdu - اردو](tanslations/README-ur.md) +- [Uzbek](translations/README-uz.md) +- [বাংলা - Bangla](translations/README-bn.md) +- [ខ្មែរ - Khmer](translations/README-kh.md) +- [简体中文](translations/README-cn.md) +- [繁體中文](translations/README-tw.md) +
+ +
+भाषांतर कार्यात आहे: + +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) +- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) +- [French](https://github.com/jwasham/coding-interview-university/issues/89) +- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) +- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) +- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) +- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) +- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) +- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) +- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) +- [मराठी](https://github.com/jwasham/coding-interview-university/issues/1002) +
+ + + +## हे काय आहे? + +![HBO च्या सिलिकॉन व्हॅलीच्या 'कोडिंग अँट दी व्हाइटबोर्ड' चित्रपटातील दृश्य.](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +हे माझ्या अनेक महिन्यांचे अभ्यास योजना आहे, ज्यामध्ये मी एक मोठ्या कंपनीसाठी सॉफ्टवेअर इंजिनिअर बनण्यासाठी प्रयत्नशील असेल. + +**आवश्यक:** + +- कोडिंगसह थोड्या अनुभवासह (वेरिअबल्स, लूप्स, मेथड्स/फंक्शन्स, इत्यादी) +- धैर्य +- वेळ + +ध्यान द्या कि ही सॉफ्टवेअर इंजिनिअरिंगसाठी अभ्यास योजना आहे, असे की फ्रंटएंड इंजिनिअरिंग किंवा फुल-स्टॅक डेव्हलपमेंटसाठी नाही. हे वास्तविकपणे +त्या करियर मार्गांसाठी अनेक रोडमॅप आणि पाठ्यक्रम इतर कुठल्या ठिकाणी उपलब्ध आहेत (https://roadmap.sh/ पाहा). + +कॉलेज कॉम्प्युटर सायन्स कार्यक्रममध्ये शिकायला खूप काही आहे, परंतु मुलाखतसाठी 75% जाणून असल्यास ह्याची काही पुरेशी माहिती आहे, म्हणजे मला येथे आवर्जू केलेले आहे. +पूर्ण CS स्वतःशिक्षित कार्यक्रमसाठी, माझ्या अभ्यास योजनेतील संसाधने कामरान अहमदच्या कॉम्प्युटर सायन्स रोडमॅपमध्ये समाविष्ट केली गेली आहेत: https://roadmap.sh/computer-science + +--- From d2c19ba4ba013ded2b6022116425d4b1e27a3c4a Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 03:18:33 +0530 Subject: [PATCH 829/857] 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 --- translations/README-mr.md | 246 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) diff --git a/translations/README-mr.md b/translations/README-mr.md index b8bcde2360..196c65556b 100644 --- a/translations/README-mr.md +++ b/translations/README-mr.md @@ -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) From 8d889b6393ae015cc1b22009ad36cf2556f7d179 Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 03:38:15 +0530 Subject: [PATCH 830/857] wip marathi translation Data Structures Sorting Graphs More Knowledge Trees What you won't see covered The Daily Plan Coding Question Practice Coding Problems Let's Get Started Algorithmic complexity / Big-O / Asymptotic analysis Books for Data Structures and Algorithms Interview Prep Books Don't Make My Mistakes --- translations/README-mr.md | 625 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 625 insertions(+) diff --git a/translations/README-mr.md b/translations/README-mr.md index 196c65556b..6ad9961808 100644 --- a/translations/README-mr.md +++ b/translations/README-mr.md @@ -326,3 +326,628 @@ - [तुमच्या कोडिंग साक्षात्कारासाठी योग्य भाषा निवडा](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) [भाषा-विशिष्ट संसाधनांसाठी येथे पहा](programming-language-resources.md) + +## डेटा संरचना आणि अ‍ॅल्गोरिदमसाठी पुस्तके + +ह्या पुस्तकांनी कॉम्प्यूटर विज्ञानात आपले आधार रचले जाईल. + +फक्त एक निवडा, ज्यात तुम्ही स्वत: आराम असेल भाषेत. + +### C + +- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - मूलभूत, डेटा संरचना, क्रमवार्ता, शोध, आणि ग्राफ अ‍ॅल्गोरिदम + +### Python + +- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Goodrich, Tamassia, Goldwasser यांचे + - मला ह्या पुस्तकांविषयी आवडलं. हे सर्व काही आणि अधिक कवर केलं. + - पायथनिक कोड + - माझं चमकदार पुस्तक अहवाल: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ + +### Java + +तुमची निवड: + +- Goodrich, Tamassia, Goldwasser + - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick आणि Wayne: + - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - विनामूल्य Coursera कोर्स ज्याचा पुस्तकावर अध्यापन केला जातो (लेखकांद्वारे शिकवलेलं!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) + +### C++ + +तुमची निवड: + +- Goodrich, Tamassia, आणि Mount + - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick आणि Wayne + - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) + +## साक्षात्कार साजोवट पुस्तके + +तुम्हाला आणखी बर्‍याच नकाशी करण्याची आवश्यकता नाही. खरं "क्रॅकिंग द कोडिंग इंटरव्ह्यू" किती ह्या तरी अ‍ॅल्गोरिदम बराबरीचं काही किती पर्याय खरेदी केली जाऊ शकते, +परंतु मला अधिक प्रशिक्षण देण्यासाठी आणि मला आदतें आली असतात. + +मी दोन्ही खरेदी केली. त्यांनी मला प्रचंड प्रशिक्षण दिलं. + +- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - उत्तर C++ आणि जावा मध्ये + - विशेषत: Cracking the Coding Interviewसाठी चांगलं वार्म-अप + - खूप कठीण नाही. जेव्हा तुम्ही एक साक्षात्कारात दिसणार प्रश्नांच्या प्रमाणाच्या जास्तीत जास्त किती मजेशीर प्रश्न मिळवतात (मला काहीचं वाचलं आहे) +- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - उत्तर जावा मध्ये + +### जर आपल्याकडे अत्याधिक वेळ असेल: + +एक निवडा: + +- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) + +## आपल्याकडे अशा चूका नका + +ह्या यादीत अनेक महिन्यांच्या अंतर्गत वाढले आहे, आणि होय, ह्या यादीत काहीतरी अधिक झाले आहे. + +येथे माझ्यांनी चुका केल्या आहेत त्यामुळे तुम्हाला एक चांगली अनुभवासाठी हवं. आणि तुम्ही महिन्यांच्या वेळांची जतन करेल. + +### 1. तुम्ही सर्व काही आतापर्यंत ओळखायला असाल ते आपल्याला आत्मविश्वास आहे का? + +मी आयचं व्हिडिओ पाहिलं आणि कॉपियस नोट्स घेतले, आणि महिन्यांनंतर अनेक काही मला आठवलं. मला आमच्या नोटसबद्दल 3 दिवसं वेळं लागलं, परंतु मला त्यांचं अधिक माहिती हवं नसलं. + +कृपया, हे वाचा आणि तुम्हाला माझ्या चुकांचं तयारी करून घ्यायला येणार नाही. + +[कॉम्प्यूटर विज्ञानाचे ज्ञान राखणे](https://startupnextdoor.com/retaining-computer-science-knowledge/). + +### 2. फ्लॅशकार्ड्स वापरा + +मी समस्या सोडण्यासाठी एक छोटं फ्लॅशकार्ड साइट बनवलं, ज्यावर मी 2 प्रकारच्या फ्लॅशकार्ड जोडवू शकतो: सामान्य आणि कोड. +प्रत्येक कार्डांनी वेगवेगळी स्वरुपणं आहेत. मी मोबाइल-पहिलं वेबसाइट बनवलं, म्हणजे मी आपल्या फोन किंवा टॅबलेटवर पुनरावलोकन करू शकतो, आता कोठे आहे. + +विनामूल्यसेच बनवा: + +- [फ्लॅशकार्ड साइट रेपो](https://github.com/jwasham/computer-science-flash-cards) + +**मला माझ्या फ्लॅशकार्ड साइटवर वापरण्याची शिफारस करत नाही.** येथे खूप आहेत आणि अधिकांश ते उत्तररूप नसलेल्या ते तुम्हाला आवडणार नाही. + +परंतु जर तुम्हाला मला ऐकायला नको, तर इथे आहे: + +- [माझे फ्लॅशकार्ड डेटाबेस (1200 कार्ड)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [माझे फ्लॅशकार्ड डेटाबेस (अत्यंत - 1800 कार्ड)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): + +आणि नक्की काळजी करा की मी अत्यंतात जास्त काही कवर करत आहे. यात सर्व कुठल्या आसंतात आणि मला यात आवडते, मनोबद्धतेच्या तत्त्वांनी सामान्यतः ते वापरतात. +ज्ञान गहाळ करण्यासाठी करून घेणे. + +अन्किच्या फ्लॅशकार्डवर किंवा त्यातील व्हिडिओ पाहून माहिती कच्च करण्याची एक वैकल्पिक उपाय आहे. ते तुम्हाला लक्ष देण्यासाठी आहे, अन्की पुनरावलोकन प्रणाली वापरतात. ते वापरकर्ता मित्रवत, सर्व प्लेटफॉर्म्सवर उपलब्ध आहे, आणि एक क्लाउड सिंक प्रणाली असते. +iOS वर $25 खर्च होते परंतु इतर प्लेटफॉर्म्सवर विनामूल्य आहे. + +अन्की फॉर्मॅटमध्ये माझ्या फ्लॅशकार्ड डेटाबेस: https://ankiweb.net/shared/info/25173560 (आभार [@xiewenya](https://github.com/xiewenya)). + +काही विद्यार्थ्यांना श्वेत जागा विचारांसह फॉर्मॅटिंग समस्या आल्या आहेत की ते खालीलप्रमाणे सुधारणे केले जाऊ शकतात: डेक उघडा, कार्ड संपादित करा, कार्ड्स क्लिक करा, "स्टाइलिंग" रेडिओ बटण निवडा, आणि "स्टाइलिंग" रेडिओ बटण निवडा, आणि त्या कार्ड क्लासला "सफेद अंतराळ: प्री;" घाला. + +### 3. तुम्हाला कोडिंग इंटरव्यू प्रश्न करताना + +ह्या विषयाच्या अध्ययनात आहत तेव्हा कोडिंग इंटरव्यू प्रश्नांचं करा. + +तुम्हाला समस्यांचं समाधान करण्यास आवश्यक आहे, किंवा तुम्ही विसरलं जाऊ शकता. मी ही चूक केली. + +एकदा आपल्याला एक विषय शिकला आहे, आणि तुम्ही त्यात काही पर्याय अनुभवत आहात, उदाहरणार्थ, **लिंक्ड लिस्ट**: + +1. [कोडिंग इंटरव्यू पुस्तके](#interview-prep-books) (किंवा कोडिंग समस्या वेबसाइट, खाली दिलेल्या) +1. 2 किंवा 3 प्रश्नांचा उत्तर द्या लिंक्ड लिस्टसाठी. +1. पुढील शिकण्याच्या विषयात प्रवेश करा. +1. नंतर, पुन्हा जाऊन आपल्याला दुसऱ्या 2 किंवा 3 लिंक्ड लिस्ट समस्यांचं उत्तर द्या. +1. नवीन विषयासोबत हे करा आपल्याला प्रत्येक नवीन विषय शिकण्याच्या वेळी. + +**तुम्हाला तुमच्या सर्व या प्रश्नांना शिकताना समस्यांचं समाधान करत राहावं लागेल, शिकताना नंतर नाही.** + +तुम्हाला ज्ञानासाठी नाही, पण तुम्ही ज्ञान कसं लागू करायला तुम्हाला नोकरी मिळवण्यासाठी. + +ह्यात कोडिंग समस्यांचे अनेक स्रोत आहेत, खालील लिंक्समध्ये आहेत. चालू राहा. + +### 4. लक्ष द्या + +आहे काहीतरी मोठ्या महत्त्वाच्या वेळांचं सापडतात. ध्यान आणि एकाग्रता कठीण आहेत. ते संगीत सुरू करा +शब्दनिर्देश असं अनुमति आहे आणि तुम्ही काही सुस्त सुद्धा लक्षात ठेवू शकता. + +## तुम्हाला आपल्याला कळवू शकत नाही की + +ह्या अभ्यासक्रमात असलेली प्रमुख तंत्रज्ञाने पण त्यांचा अभ्यास समाविष्ट नाहीत: + +- जावास्क्रिप्ट (Javascript) +- एचटीएमएल, सीएसएस, आणि इतर फ्रंट-एंड तंत्रज्ञाने +- एसक्यूएल (SQL) + +## दैनिक योजना + +ह्या पाठ्यक्रमात अनेक विषय आहेत. प्रत्येकाची संभाव्यतः काही दिवसं, किंवा कधी काही आणि अधिक आणि दिवसांत अवलंबू शकते. याचे तुमच्या कार्यक्रमावर निर्भर आहे. + +प्रत्येक दिवस, यादीतील पुढील विषय घ्या, त्याविषयावर काही व्हिडिओ पाहा, आणि नंतर त्या डेटा संरचनेचे किंवा ऍल्गोरिदमचे संवाद तुमच्या निवडलेल्या भाषेत लिहा. + +तुमचं कोड येथे पाहू शकता: + +- [सी](https://github.com/jwasham/practice-c) +- [सी++](https://github.com/jwasham/practice-cpp) +- [पायथन](https://github.com/jwasham/practice-python) + +तुम्हाला प्रत्येक ऍल्गोरिदम याद ठेवण्याची गरज नाही. तुम्हाला त्याची समज येण्यासाठी पर्याय असणे आवश्यक आहे किंवा तुम्ही स्वतःचं संवाद लिहू शकता. + +## कोडिंग प्रश्न अभ्यास + + आम्हाला ह्याचं का आवडतं? मी साक्षात्कारासाठी तयार नाही. + +[तर जा आणि ह्याचं वाचा.](#3-do-coding-interview-questions-while-youre-learning) + +तुम्हाला कोडिंग समस्यांचा अभ्यास करण्याची गरज का आहे: + +- समस्या स्वीकृती, आणि कुठल्या सर्वोत्तम डेटा संरचनांसाठी आणि ऍल्गोरिदम्समध्ये कसं फिट होईल हे ओळखणे +- समस्येसाठी आवश्यक अटी संग्रहण करणे +- साक्षात्कारात आपल्या मार्गाचं बोलणं, जसं तुम्ही साक्षात्कारात करेल +- कॉम्प्यूटरवर नक्कीचं व्हायटबोर्ड किंवा कागदावर कोड लिहणे, कॉम्प्यूटरवर नाही +- तुमच्या सोडलेल्या संदर्भांसाठी समय आणि स्थान जटिलता येण्याचे कल्पना करणे (मोठं-ओ खाली पहा) +- तुमच्या निवडलेल्या सोडांची किंवा ऍल्गोरिदमची टेस्टिंग करणे + +साक्षात्कारातील पद्धतीसाठी एक योग्य, संवेदनशील समस्या-सोडवणे साठवण्यात येतं. तुम्ही ज्या कोडिंग साक्षात्कारात बुक्स मधून मिळवता, त्यापुढे ह्या प्रशिक्षणांचं अद्भुत आरंभ आहे: +[ऍल्गोरिदम डिझाइन कॅनव्हस](http://www.hiredintech.com/algorithm-design/) + +कोड व्हायटबोर्ड किंवा कागदावर लिहा, कॉम्प्यूटरवर नक्कीचं वाचवा. काही उदाहरणांसह परीक्षण करा. नंतर तो टाइप करा आणि ते कॉम्प्यूटरवर परीक्षण करा. + +जर तुम्हाला घरात व्हायटबोर्ड नसेल, तर आर्ट स्टोरमधून एक मोठं ड्रॉइंग पॅड घ्या. तुम्हाला सोफावर बसुन अभ्यास करायचं आहे. हा माझा "सोफा व्हायटबोर्ड" आहे. मला फोटोत आढळवून दिलं. जेव्हा तुम्ही कलम वापरता, तुम्हाला मिटवायला इच्छित असेल. वेगवेगळ्या गोष्टींना जलगं झालं. **मी कलम आणि मिटवा वापरतो.** + +![माझ्या सोफा व्हायटबोर्ड](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) + +**कोडिंग प्रश्न अभ्यास इतरांच्या प्रोग्रामिंग समस्यांच्या उत्तर मेमराइझ करण्याबद्दल नसतं.** + +## कोडिंग समस्या + +तुमचं कोडिंग साक्षात्कार पुस्तके विसरू नका [इथे](#interview-prep-books). + +समस्या सोडणे: + +- [समाधान कसे शोधायचं](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- [टॉपकोडर समस्या विवरण कसे विभाजू](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) + +कोडिंग साक्षात्कार प्रश्न व्हिडिओ: + +- [IDeserve (88 व्हिडिओ)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- [टुशार रॉय (5 प्लेलिस्ट)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - समस्या समाधानांच्या पूर्ण व्हॉकथ्रूसाठी उत्तम +- [निक व्हाइट - लीटकोड समाधान (187 व्हिडिओ)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - समाधान आणि कोड चे चांगले स्पष्टीकरण + - तुम्हाला थोडं वेळ मध्ये अनेक पाहू शकता +- [फिशरकोडर - लीटकोड समाधान](https://youtube.com/FisherCoder) + +चॅलेंज / अभ्यास संकेत: + +- [लीटकोड](https://leetcode.com/) + - माझं आवडतं कोडिंग समस्या संकेत. तुमच्याला साक्षात्कारासाठी १-२ महिने तयारीसाठी पैसे वसूल आहेत. + - कोड वॉकथ्रूसाठी निक व्हाइट आणि फिशरकोडर व्हिडिओ पहा. +- [हॅकरँक](https://www.hackerrank.com/) +- [टॉपकोडर](https://www.topcoder.com/) +- [कोडफोर्स](https://codeforces.com/) +- [कोडिलिटी](https://codility.com/programmers/) +- [गीक्स फॉर गीक्स](https://practice.geeksforgeeks.org/explore/?page=1) +- [ऍल्गोएक्सपर्ट](https://www.algoexpert.io/product) + - गूगल इंजिनिअर्सने तयार केलेला, हे तुमच्या कौशल्ये तयार करण्यासाठी सर्वोत्तम स्रोत आहे. +- [प्रोजेक्ट युलर](https://projecteuler.net/) + - खूप माहितीसंवेदनशील आहे, आणि कोडिंग साक्षात्कारासाठी खूप उपयुक्त नसते + +## प्रारंभ करूया + +ठीक आहे, खूप बोलणं, लेकी शिकूया! + +परंतु तुम्हाला शिकताना उपरोक्त कोडिंग समस्यांसह सुरू करण्याचं विसरू नका! + +## ऍल्गोरिदमिक कंप्लेक्सिटी / बिग-ओ / असिंप्टोटिक विश्लेषण + +- येथे काही अमलात घेण्याची गरज नाही, तुम्ही केवळ व्हिडिओ पहा आणि टीके काढा! वाह! +- येथे खूप व्हिडिओ आहेत. तुम्हाला समजताना पर्यंत पर्याप्त व्हिडिओ पहायला लागेल. तुम्ही नेहमी परत येऊ शकता आणि पुनरावलोकन करू शकता. +- जर तुम्हाला हा सर्व गणित समजत नसेल, तर घाबरू नका. +- तुम्हाला केवळ ऍल्गोरिदमचं कंप्लेक्सिटी बिग-ओ च्या प्रकारात कसं व्यक्त करायचं हे समजून घ्यायचं आहे. +- [ ] [हार्वर्ड सीएस50 - असिंप्टोटिक नोटेशन (व्हिडिओ)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] [बिग ओ नोटेशन (सामान्य जलद ट्यूटोरियल) (व्हिडिओ)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] [बिग ओ नोटेशन (आणि ओमेगा आणि थेटा) - सर्वात उत्तम गणितीय स्पष्टीकरण (व्हिडिओ)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] [स्किना (व्हिडिओ)](https://www.youtube.com/watch?v=z1mkCe3kVUA) +- [ ] [यूसी बर्कली बिग ओ (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) +- [ ] [अमॉर्टिज्ड विश्लेषण (व्हिडिओ)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] टॉपकोडर (पुनरावलोकन नियमन आणि मास्टर थिओरेम समाविष्ट): + - [गणकीय कंप्लेक्सिटी: विभाग 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one) + - [गणकीय कंप्लेक्सिटी: विभाग 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two) +- [ ] [चीट शीट](http://bigocheatsheet.com/) +- [ ] [[पुनरावलोकन] ऍल्गोरिदम विश्लेषण (प्लेलिस्ट) १८ मिनिटांत (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) + +वेगवेगळं नसेल आणि. + +तुम्हाला "क्रॅकिंग द सीडी इंटर्व्ह्यू" असल्यास, त्याच्या एका अध्यायात ह्या विषयावर आहे, आणि शेवटी त्यात विविध ऍल्गोरिदमचं क्रमसंबंधी रनटाईम कंप्लेक्सिटी ओळखून पाहण्याची क्षमता असल्याचं काहीतरी चाचणीचं आहे. हे एक चांगले पुनरावलोकन आणि चाचणी आहे. + +- ### डेटा संरचना + +- ### अ‍ॅरे + + - [ ] अ‍ॅरे बद्दल: + - [हार्वर्ड विद्यापीठावरील अ‍ॅरे CS50](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - [अ‍ॅरे (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [UC बर्कली CS61B - लिनियर आणि मल्टी-डिम अ‍ॅरे (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (15 मिनिट 32 सेकंदपासून पाहा) + - [डायनॅमिक अ‍ॅरे (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [जॅग्ड अ‍ॅरे (व्हिडिओ)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + - [ ] एक वेक्टर अ‍ॅरे (परिवर्तनशील अ‍ॅरे स्वत:चं रेसायजिंगसह): + - [ ] अ‍ॅरे आणि पॉईंटर्स वापरून कोडिंग करण्याची अभ्यास करा, आणि निर्देशांकांचा वापर करून सूचकांक करा. + - [ ] नवीन कच्चे डेटा अ‍ॅरे नेहमीची आता आवंटित संदर्भ + - अंत: एंट अ‍ॅरे आवंटित करू शकता, केव्हा त्याचे वैशिष्ट्य वापरू शकत नाहीत + - १६सह प्रारंभ करा, किंवा प्रारंभीक अंक जास्त असल्यास, १६, ३२, ६४, १२८ च्या सकलांमध्ये वापरा + - [ ] साईज() - आयटमची संख्या + - [ ] कॅपॅसिटी() - तो आयटम कित्येक ठाऊक ठेवू शकतो + - [ ] एस_खाली() + - [ ] अँट(संदर्भ) - दिलेल्या संदर्भातील आयटम परत करतो, जर संदर्भ अंतर्दृष्टीत नसेल तर वायरला जातो + - [ ] पुश(आयटम) + - [ ] इन्सर्ट(संदर्भ, आयटम) - संदर्भातील आयटममध्ये आयटम जोडते, त्या संदर्भाच्या मूल्य आणि परतलेल्या आयटमांच्या पाठीवर जातो + - [ ] प्रिपेंड(आयटम) - उपरी संदर्भात इन्सर्ट वापरू शकता + - [ ] पॉप() - शेवटीच्या पासून काढतो, मूल्य परत करतो + - [ ] डिलीट(संदर्भ) - दिलेल्या संदर्भातील आयटम काढतो, परतलेल्या सर्व आयटम डावीकडे सायकल करतो + - [ ] रिमूव(आयटम) - मूल्य बघतो आणि त्याच्या मूल्याच्या संदर्भातील प्रथम आयटम काढतो (जर एकाधिक स्थानांमध्ये असेल, तरीही) + - [ ] फिंड(आयटम) - मूल्य बघतो आणि त्यामध्ये पहिला संदर्भातील स्थान परत करतो, जर नसेल तर -१ + - [ ] रिसाईझ(नवीन_कॅपॅसिटी) // खाजगी कार्य + - आपल्याला कॅपॅसिटी पर्यंत पोचण्यासाठी जर आपल्याला पर्याय होतं, तर दगडी किती वेळा + - काढत असल्यास एकाधिक पॉप करण्यासाठी, जर साईज कॅपॅसिटीची चौथी असेल तर, अर्धे कितीवर्षी त्याची आकारिक करणे + - [ ] काळ + - अ‍ॅंडिंगला विनिमेष करण्यासाठी O(1) (अधिकार्यस्थवादी करण्यासाठी जागा आवंटन करण्यासाठी), संदर्भ, किंवा अद्यतन करण्यासाठी + - इतर क्षेत्रात डाळणे / काढणे करण्यासाठी O(n) + - [ ] जागा + - मेमोरीत एकत्रित, म्हणजे संबंध उत्कृष्टता मदत करते + - आवश्यक जागा = (अ‍ॅरे क्षमता, ज्याप्रमाणे >= n असेल) \* आयटमची आकारे, पण किंवा जर २एनची आहे, तरीही O(n) + +- ### लिंक्ड लिस्ट्स + + - [ ] वर्णन: + - [ ] [लिंक्ड लिस्ट्स CS50 हार्वर्ड विद्यापीठ](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - हे इंट्यूइशन तयार करते. + - [ ] [सिंगली लिंक्ड लिस्ट्स (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [सीएस 61B - लिंक्ड लिस्ट्स 1 (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] [सीएस 61B - लिंक्ड लिस्ट्स 2 (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[पुनरावलोकन] ४ मिनिटात लिंक्ड लिस्ट्स (व्हिडिओ)](https://youtu.be/F8AbOfQwl1c) + - [ ] [सी कोड (व्हिडिओ)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - पूर्ण व्हिडिओ नाही, फक्त नोड स्ट्रक्चर आणि मेमोरी आवंटनबद्दल कितीतरी भागांच्या बद्दल + - [ ] लिंक्ड लिस्ट बनावण्याचा प्रयत्न किंवा आणखी विचारांसाठी संदर्भ: + - [ ] साईज() - लिस्टमध्ये डेटा घटकांची संख्या परत करते + - [ ] एम्प्टी() - रिक्त असल्यास true परत करतो + - [ ] व्हॅल्यू_अँट(संदर्भ) - प्रथमाच्या आयटमचे मूल्य परत करतो (पहिल्यासाठी ०वरून सुरू करा) + - [ ] पुश_फ्रंट(मूल्य) - लिस्टच्या सुरूतीला एक आयटम जोडतो + - [ ] पॉप_फ्रंट() - फ्रंट आयटम काढतो आणि त्याचा मूल्य परत करतो + - [ ] पुश_बॅक(मूल्य) - शेवटीला एक आयटम जोडतो + - [ ] पॉप_बॅक() - शेवटीचा आयटम काढतो आणि त्याचा मूल्य परत करतो + - [ ] फ्रंट() - फ्रंट आयटमचा मूल्य मिळवा + - [ ] बॅक() - शेवटीच्या आयटमचा मूल्य मिळवा + - [ ] इन्सर्ट(संदर्भ, मूल्य) - संदर्भात मूल्य अंक इन्सर्ट करते, म्हणजे त्या संदर्भाच्या नवीन आयटमातील अंक दिलेल्या आयटमाच्या संदर्भात जातो + - [ ] इरेस(संदर्भ) - दिलेल्या संदर्भातील नोड काढतो + - [ ] व्हॅल्यू*न*फ्रॉम_एंड(न) - न थेट आयटमाचा मूल्य परत करतो + - [ ] रिव्हर्स() - लिस्ट उलटते + - [ ] रिमूव_वॅल्यू(मूल्य) - लिस्टमध्ये त्याच्या मूल्यानुसार प्रथम आयटम काढतो + - [ ] डब्ल्यू-लिंक्ड लिस्ट + - [वर्णन (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - कोणत्याही अट लागत नाही + +- ### स्टॅक + + - [ ] [स्टॅक (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [[पुनरावलोकन] ३ मिनिटात स्टॅक्स (व्हिडिओ)](https://youtu.be/KcT3aVgrrpU) + - [ ] अ‍ॅरे सह अ‍ॅरे वापरणे सोपं आहे + +- ### क्यू + + - [ ] [क्यू (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [सर्कुलर बफर / एफआयएफओ](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [[पुनरावलोकन] ३ मिनिटात क्यू (व्हिडिओ)](https://youtu.be/D6gu-_tmEpQ) + - [ ] लिंक्ड-लिस्ट वापरून कार्यान्वयन करा, प्लॅनर संदर्भाने: + - इन्क्यू(मूल्य) - पायास एक स्थानावर मूल्य जोडतो + - डेक्यू() - खाली होताना मूल्य परत करतो आणि किमान वेळी जोडलेला पायावरतीत मूल्य काढतो (फ्रंट) + - एंप्टी() + - [ ] एक नियमित आकाराच्या अ‍ॅरे वापरून कार्यान्वयन करा: + - इन्क्यू(मूल्य) - उपलब्ध संचयाच्या शेवटीला आयटम जोडतो + - डेक्यू() - मूल्य परत करतो आणि किमान वेळी जोडलेला आयटम काढतो + - एंप्टी() + - फुल() + +- ### हॅश टेबल + + - [ ] व्हिडिओ: + - [ ] [चेनिंगसह एचिंग (व्हिडिओ)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [टेबल डबलिंग, कारप-रॅबिन (व्हिडिओ)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [ओपन अ‍ॅड्रेसिंग, क्रिप्टोग्राफिक हॅशिंग (व्हिडिओ)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [पायकॉन 2010: माईटी डिक्शनरी (व्हिडिओ)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [पायकॉन 2017: डिक्शनरी इव्हेन मायटीअर (व्हिडिओ)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(उन्नत) यादृच्छिकीकरण: युनिव्हर्सल आणि परिपूर्ण हॅशिंग (व्हिडिओ)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(उन्नत) परिपूर्ण हॅशिंग (व्हिडिओ)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [[पुनरावलोकन] ४ मिनिटात हॅश टेबल्स (व्हिडिओ)](https://youtu.be/knV86FlSXJ8) + - [ ] ऑनलाईन कोर्सेस: + + - [ ] [कोर हॅश टेबल्स (व्हिडिओ)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [डेटा संरचना (व्हिडिओ)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [फोन बुक प्रॉब्लेम (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] वितरित हॅश टेबल्स: + - [ड्रॉपबॉक्समध्ये त्वरित अपलोड्स आणि स्टोरेज अद्यतन (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [वितरित हॅश टेबल्स (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] अ‍ॅरे वापरून लिनिअर प्रोबिंग वापरून कार्यान्वित करा + - हॅश(k, m) - m हॅश टेबलचा आकार आहे + - जोडणे(की, मूल्य) - जर की आधीच अस्तित्वात असेल, मूल्य सुधारित करा + - अस्तित्व आहे(की) + - प्राप्त(की) + +## अधिक ज्ञान + +- ### बायनरी शोध + + - [ ] [बायनरी शोध (व्हिडिओ)](https://www.youtube.com/watch?v=D5SrAga1pno) + - [ ] [बायनरी शोध (व्हिडिओ)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [ ] [विवर](https://www.topcoder.com/thrive/articles/Binary%20Search) + - [ ] [रूपरेखा](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) + - [ ] [[समीक्षा] बायनरी शोध 4 मिनिटांत (व्हिडिओ)](https://youtu.be/fDKIpRe8GW4) + - [ ] कार्यान्वित करा: + - क्रमवार सादर केलेल्या पूर्णांकांच्या ऍरेअयात बायनरी शोध + - पुनरावृत्ती वापरून बायनरी शोध + +- ### बिटवायज क्रिया + - [ ] [बिट्स चीट शीट](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) + - आपल्याला (2^1 ते 2^16 आणि 2^32 पर्यंत 2च्या अनेक घातांची माहिती असावी) + - [ ] & | ^ ~ >> << सह बिट्स व्यवस्थापनाची खुपच चांगली समज मिळाली पाहिजे + - [ ] [शब्द]() + - [ ] चांगले प्रारंभ: + [बिट व्यवस्थापन (व्हिडिओ)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [सी प्रोग्रामिंग ट्यूटोरियल 2-10: बिटवायज ऑपरेटर्स (व्हिडिओ)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [बिट व्यवस्थापन](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [बिटवायज क्रिया](https://en.wikipedia.org/wiki/Bitwise_operation) + - [ ] [बिटहॅक्स](https://graphics.stanford.edu/~seander/bithacks.html) + - [ ] [द बिट ट्विड्लर](https://bits.stephan-brumme.com/) + - [ ] [द बिट ट्विड्लर इंटरऍक्टिव](https://bits.stephan-brumme.com/interactive.html) + - [ ] [बिट हॅक्स (व्हिडिओ)](https://www.youtube.com/watch?v=ZusiKXcz_ac) + - [ ] [अभ्यास क्रिया](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) + - [ ] 2s आणि 1s पूरक + - [बायनरी: प्लसेस आणि माइनस (आपण दोन्ही दुईच्या पूरकाचा वापर का करतो) (व्हिडिओ)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [1s पूरक](https://en.wikipedia.org/wiki/Ones%27_complement) + - [2s पूरक](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] सेट बिटची गणना + - [बाईटमध्ये बिट्सची गणना करण्यासाठी 4 पद्धती (व्हिडिओ)](https://youtu.be/Hzuzo9NJrlc) + - [बिट गणना](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - [32 बिट अंकाच्या सेट बिट्सची संख्या कसे गणवू](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - [ ] मूल्ये बदला: + - [मूल्ये बदला](https://bits.stephan-brumme.com/swap.html) + - [ ] पूर्णांक मान: + - [पूर्णांक बिट](https://bits.stephan-brumme.com/absInteger.html) + +## झाडे + +- ### झाडे - परिचय + + - [ ] [झाडांचा परिचय (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [झाड ट्रावर्सल (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] [BFS(ब्रेड्थ-फर्स्ट सर्च) आणि DFS(डेप्थ-फर्स्ट सर्च) (व्हिडिओ)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - BFS नोट: + - स्तर क्रम (BFS, क्यूच वापरून) + - काळजीच्या समय: O(n) + - जागा काळजी: सर्वोत्तम: O(1), वास्तविक: O(n/2)=O(n) + - DFS नोट: + - काळजीच्या समय: O(n) + - जागा काळजी: + सर्वोत्तम: O(log n) - झाडाचे सरासरी उंची + वास्तविक: O(n) + - inorder (DFS: डावी, स्वयं, उजवी) + - postorder (DFS: डावी, उजवी, स्वयं) + - preorder (DFS: स्वयं, डावी, उजवी) + - [ ] [[समीक्षा] 4 मिनिटांत ब्रेड्थ-फर्स्ट सर्च (व्हिडिओ)](https://youtu.be/HZ5YTanv5QE) + - [ ] [[समीक्षा] 4 मिनिटांत डेप्थ-फर्स्ट सर्च (व्हिडिओ)](https://youtu.be/Urx87-NMm6c) + - [ ] [[समीक्षा] झाड ट्रावर्सल (प्लेलिस्ट) 11 मिनिटांत (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + +- ### बायनरी शोध झाडे: BSTs + + - [ ] [बायनरी शोध झाड समीक्षा (व्हिडिओ)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] [परिचय (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [MIT (व्हिडिओ)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) + - C/C++: + - [ ] [बायनरी शोध झाड - C/C++ मध्ये कार्यान्वितीकरण (व्हिडिओ)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] [BST कार्यान्विती - स्टॅक आणि हिपमध्ये स्मृति काळजी (व्हिडिओ)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] [बायनरी शोध झाडातील किमान आणि जास्त मूल्य शोधा (व्हिडिओ)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [एक बायनरी झाडाची उंची कसे शोधायची (व्हिडिओ)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] [बायनरी झाडाचा ट्रावर्सल - स्थिरता-प्रथम आणि डेप्थ-प्रथम युक्तियां (व्हिडिओ)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] [बायनरी झाड: स्तर क्रम ट्रावर्सल (व्हिडिओ)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बायनरी झाडाचा ट्रावर्सल: प्रीऑर्डर, इनऑर्डर, पोस्टऑर्डर (व्हिडिओ)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बायनरी शोध झाड आहे का नाही ते तपासा (व्हिडिओ)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] [बायनरी शोध झाडातून मूल्य काढा (व्हिडिओ)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] [बायनरी शोध झाडातील आगामी स्वयं (व्हिडिओ)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] कार्यान्वित: + - [ ] [insert // झाडात मूल्य घाला](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) + - [ ] get_node_count // संग्रहित मूल्यांची कोणतीही संख्या मिळवा + - [ ] print_values // मूल्यांचा झाडातून प्रिंट करा, किमान ते जास्त + - [ ] delete_tree + - [ ] is_in_tree // दिलेल्या मूल्याला झाडात असल्यास त्रुटी आहे आपल्याला true कळवा + - [ ] [get_height // नोड्यांमध्ये उंची परत मिळवा (एकचा नोडचा उंची 1)](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) + - [ ] get_min // झाडात संग्रहित किमान मूल्य मिळवा + - [ ] get_max // झाडात संग्रहित किमान मूल्य मिळवा + - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) + - [ ] delete_value + - [ ] get_successor // दिलेल्या मूल्यानंतर झाडातील आगामी स्वयं मिळवा, कोणतेही नसल्यास -1 + +- ### हिप / प्रायरिटी क्यू / बायनरी हिप + - झाड म्हणून विज्ञान केले जाते, परंतु सामान्यतः संग्रह (एरे, लिंक्ड सूची) मध्ये लीनियर आहे + - [ ] [हिप]() + - [ ] [परिचय (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] [बायनरी झाड (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [झाड उंची टिप (व्हिडिओ)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] [मूल्यांची बुनणी (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] [पूर्ण बायनरी झाड (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] [उपनामकोड (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [हिप क्रमवार क्रमणी (व्हिडिओ)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] [हिप क्रमवार (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] [हिप निर्माण (व्हिडिओ)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [MIT: हिप आणि हिप क्रमवार (व्हिडिओ)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [CS 61B लेक्चर 24: प्रायरिटी क्यू (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) + - [ ] [लीनियर वेळ बनवा (मॅक्स-हिपमध्ये)](https://www.youtube.com/watch?v=MiyLo8adrWw) + - [ ] [[समीक्षा] हिप (प्लेलिस्ट) 13 मिनिटांत (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] एक मॅक्स-हिपसाठी कार्यान्वित: + - [ ] insert + - [ ] sift_up - insert साठी आवश्यक + - [ ] get_max - त्याच्यापासून माझ्या वस्तू मिळते, ते काढून टाकून नको + - [ ] get_size() - संग्रहित घटकांची संख्या परत द्या + - [ ] is_empty() - सत्रात कोणतेही घटक असल्यास त्रुटी द्या + - [ ] extract_max - माझ्या घटकापासून माझ्या घटक मिळते, तो काढून टाकून नको + - [ ] sift_down - extract_max साठी आवश्यक + - [ ] remove(x) - स्थिती x पासून वस्तू काढा + - [ ] heapify - घटकांच्या एक संचयापासून एक हिप तयार करा, heap_sort साठी आवश्यक + - [ ] heap_sort() - एक क्रमरहित संचय घेऊन तो एक क्रमरहित संचय बनवा + +## छांटणी + +- [ ] नोट्स: + + - सॉर्ट्स अमल करा आणि प्रत्येकाच्या सर्वोत्तम/अत्यधिक, सरासरी संघटनाची कसे आहे हे जाणून घ्या: + - बबल सॉर्ट करू नका - तो वाईट आहे - O(n^2), केवळ जेम्हाने n <= 16 असल्यास + - [ ] सॉर्टिंग अल्गोरिदम्स मध्ये स्थिरता कोणत्या आहेत? ("क्विक्सॉर्ट स्थिर आहे का?") + - [सॉर्टिंग अल्गोरिदम स्थिरता](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - [सॉर्टिंग अल्गोरिदम मध्ये स्थिरता](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - [सॉर्टिंग अल्गोरिदम मध्ये स्थिरता](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - [सॉर्टिंग अल्गोरिदम्स - स्थिरता](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] कोणत्या अल्गोरिदम्स कस्टोडीत वापरू शकतात? कोणत्या अ‍ॅरे वापरू शकतात? कोणत्या अ‍ॅन्ड बोथ? + - मला एक लिंक्ड लिस्ट सॉर्ट करण्याचं सांगणं शक्य नाही, परंतु मर्ज सॉर्ट संभव आहे. + - [मर्ज सॉर्ट फॉर लिंक्ड लिस्ट](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- हीप सॉर्टसाठी, खालील हीप डेटा संरचना पहा. हिप सॉर्ट म्हणजे चांगलं आहे, परंतु थेट नसलेलं + +- [ ] [सेजविक - मर्जसॉर्ट (5 व्हिडिओ)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + + - [ ] [1. मर्जसॉर्ट](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] [2. बॉटम-अप मर्जसॉर्ट](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] [3. सॉर्टिंग संघटना](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. कंपरेटर्स](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] [5. स्थिरता](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] [सेजविक - क्विकसॉर्ट (4 व्हिडिओ)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + + - [ ] [1. क्विकसॉर्ट](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] [2. सेलेक्शन](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] [3. डुप्लिकेट कीज](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. सिस्टम सॉर्ट्स](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] UC Berkeley: + + - [ ] [CS 61B लेक्चर 29: सॉर्टिंग I (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] [CS 61B लेक्चर 30: सॉर्टिंग II (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] [CS 61B लेक्चर 32: सॉर्टिंग III (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] [CS 61B लेक्चर 33: सॉर्टिंग V (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] [CS 61B 2014-04-21: रॅडिक्स सॉर्ट(व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) + +- [ ] [बबल सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] [बबल सॉर्टचा विश्लेषण (व्हिडिओ)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] [इन्सर्शन सॉर्ट, मर्ज सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] [इन्सर्शन सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] [मर्ज सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] [क्विकसॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] [सेलेक्शन सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] मर्ज सॉर्ट कोड: + - [ ] [आउटपुट अरेंजमेंट वापरून (सी)](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) + - [ ] [इन-प्लेस (सी++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] क्विक सॉर्ट कोड: + + - [ ] [कार्यान्वयन (सी)](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) + - [ ] [कार्यान्वयन (पायथन)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] [[समीक्षा] १८ मिनिटांत सॉर्टिंग (प्लेलिस्ट)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + + - [ ] [क्विक सॉर्ट ४ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/Hoixgm4-P4M) + - [ ] [हीप सॉर्ट ४ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/2DmK_H7IdTo) + - [ ] [मर्ज सॉर्ट ३ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/4VqmGXwpLqc) + - [ ] [बबल सॉर्ट २ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/xli_FI7CuzA) + - [ ] [सेलेक्शन सॉर्ट ३ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/g-PGLbMth_g) + - [ ] [इन्सर्शन सॉर्ट २ मिनिटमध्ये (व्हिडिओ)](https://youtu.be/JU767SDMDvA) + +- [ ] कार्यान्वित करा: + + - [ ] मर्जसॉर्ट: O(n log n) औसत आणि अत्यधिक चणजी + - [ ] क्विकसॉर्ट O(n log n) औसत चणजी + - सेलेक्शन सॉर्ट आणि इन्सर्शन सॉर्ट दोन्ही O(n^2) औसत आणि अत्यधिक चणजी + - हिप सॉर्टसाठी, खालील हिप डेटा संरचना पहा + +- [ ] आवश्यक नाही, परंतु मी त्यांना शिफारस करतो: + - [ ] [सेजविक - रॅडिक्स सॉर्ट (६ व्हिडिओ)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. जावात स्ट्रिंग्स](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] [2. की इंडेक्स्ड काउंटिंग](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. लीस्ट सिग्निफिकंट डिजिट फर्स्ट स्ट्रिंग रॅडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] [4. मोस्ट सिग्निफिकंट डिजिट फर्स्ट स्ट्रिंग रॅडिक्स सॉर्ट](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] [5. ३ वे रॅडिक्स क्विकसॉर्ट](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. सफ्फिक्स अ‍ॅरे](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [रॅडिक्स सॉर्ट](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] [रॅडिक्स सॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [रॅडिक्स सॉर्ट, काउंटिंग सॉर्ट (कनिष्ठ समय दिल्याप्रमाणे सीमांकित) (व्हिडिओ)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [रॅडिक्स सॉर्ट, आरंडमीकरण: मॅट्रिक्स मल्टिप्लाई, क्विकसॉर्ट, फ्रेवाल्ड्सचा अल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [सॉर्टिंग इन लिनियर टाइम (व्हिडिओ)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +सारांशात, येथे असलेल्या [१५ सॉर्टिंग अल्गोरिदम्स](https://www.youtube.com/watch?v=kPRA0W1kECg)ची एक दृश्यात्मक प्रतिनिधीत्व केली आहे. जर आपल्याला या विषयावर अधिक माहिती आवश्यक असेल, तर "[कितीही विषयांवर अतिरिक्त माहिती](#additional-detail-on-some-subjects)" मध्ये "सॉर्टिंग" विभाग पहा + +## ग्राफ + +कंप्यूटर विज्ञानात कोणत्याही समस्या प्रतिस्थापित करण्यासाठी ग्राफ वापरले जाऊ शकतात, म्हणून ह्या विभागात तोड, कळवणे आणि क्रमवारीस असे लांब असतात. + +- नोट: + + - मेमोरीमध्ये ग्राफ प्रतिनिधित्व करण्याचे ४ मूल विधान आहेत: + - ऑब्जेक्ट्स आणि पॉईंटर्स + - परिसराचे संबंधचित्र + - अजेसन्सी लिस्ट + - अजेसन्सी मॅप + - प्रत्येक प्रतिनिधित्वाची आपल्याला ओळखा आणि त्याचे फायदे आणि दुष्करता + - BFS आणि DFS - त्यांची संगणनात्मक जटिलता, त्यांच्या सूट, आणि त्यांना वास्तविक कोडमध्ये कसे कार्यान्वित करायचे याची ओळख असल्याचे + - प्रश्न केल्यावर, पहिल्यांसाठी ग्राफ-आधारित सोड शोधा, नंतर वळण + +- [ ] MIT(व्हिडिओ): + + - [ ] [ब्रेड्थ-फर्स्ट सर्च](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [डेप्थ-फर्स्ट सर्च](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] स्कीना व्याख्यान - महान परिचय: + + - [ ] [CSE373 2020 - लेक्चर 10 - ग्राफ डेटा संरचना (व्हिडिओ)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - लेक्चर 11 - ग्राफ वर्तन (व्हिडिओ)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - लेक्चर 12 - डेप्थ फर्स्ट सर्च (व्हिडिओ)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - लेक्चर 13 - किमी स्पॅनिंग ट्रीज (व्हिडिओ)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - लेक्चर 14 - किमी स्पॅनिंग ट्रीज (सुरू) (व्हिडिओ)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - लेक्चर 15 - ग्राफ अल्गोरिदम (टेलीमोठ टू) (व्हिडिओ)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] ग्राफ (पुनरावलोकन आणि अधिक): + + - [ ] [६.००६ एकट्यांचा सर्वोत्तम मार्ग समस्या (व्हिडिओ)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [६.००६ डायक्स्ट्रा (व्हिडिओ)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [६.००६ बेल्मन-फॉर्ड (व्हिडिओ)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [६.००६ डायक्स्ट्रा वेगवेगळ्या (व्हिडिओ)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [अडुनी: ग्राफ अल्गोरिदम I - टोपोलॉजिकल सॉर्टिंग, किमी स्पॅनिंग ट्रीज, प्रिम्स अल्गोरिदम - लेक्चर 6 (व्हिडिओ)](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [अडुनी: ग्राफ अल्गोरिदम II - DFS, BFS, क्रस्कल्स अल्गोरिदम, युनियन फाइंड डेटा संरचना - लेक्चर 7 (व्हिडिओ)](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [अडुनी: ग्राफ अल्गोरिदम III: किमी स्पॅनिंग - लेक्चर 8 (व्हिडिओ)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [अडुनी: ग्राफ अल्गोरिदम IV: भौमिती अल्गोरिदम्सकरणासाठी परिचय - लेक्चर 9 (व्हिडिओ)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: वेटेड ग्राफ (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [लालाच अल्गोरिदम्स: किमी स्पॅनिंग ट्री (व्हिडिओ)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [स्ट्रॉन्ग्ली कनेक्टेड कॉम्पोनेंट्स कोसराजूचा अल्गोरिदम ग्राफ अल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [[पुनरावलोकन] सर्वोत्तम मार्ग अल्गोरिदम (playlist) १६ मिनिटांमध्ये (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [[पुनरावलोकन] किमी स्पॅनिंग ट्री (playlist) ४ मिनिटांमध्ये (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + +- पूर्ण Coursera कोर्स: + + - [ ] [ग्राफ अल्गोरिदम (व्हिडिओ)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- मी अमला करेन: + - [ ] अजेसन्सी लिस्टसह DFS (आवृत्तीद्वारे) + - [ ] अजेसन्सी लिस्टसह DFS (स्टॅकसह आवृत्तीद्वारे) + - [ ] अजेसन्सी मॅट्रिक्ससह DFS (आवृत्तीद्वारे) + - [ ] अजेसन्सी मॅट्रिक्ससह DFS (स्टॅकसह आवृत्तीद्वारे) + - [ ] अजेसन्सी लिस्टसह BFS + - [ ] अजेसन्सी मॅट्रिक्ससह BFS + - [ ] एकट्यांच्या सर्वोत्तम मार्ग (डायक्स्ट्रा) + - [ ] किमी स्पॅनिंग ट्री + - DFS-आधारित अल्गोरिदम (वरील Aduni व्हिडिओ पहा): + - [ ] सायकलासाठी तपासा (तोपोलॉजिकल सॉर्टिंगसाठी आम्ही सायकलाची तपासणी सुरू करण्यापूर्वी सायकल तपासणे आवश्यक आहे, कारण आम्ही सुरू करण्यापूर्वी सायकलाची तपासणी करण्याची तपासणी करीत आहोत) + - [ ] तोपोलॉजिकल सॉर्ट + - [ ] ग्राफमध्ये कनेक्टेड संघटनांची संख्या काउंट करा + - [ ] कड़क संघटनांची सूची + - [ ] बायपार्टाईट ग्राफसाठी तपासा From 21fe23946bcc6f297ffaac2f9d94f3d646d7341a Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 04:30:15 +0530 Subject: [PATCH 831/857] README-mr.md Marathi translation Additional Detail on Some Subjects Video Series Computer Science Courses Algorithms implementation Papers LICENSE System Design, Scalability, Data Handling Additional Learning Be thinking of for when the interview comes Have questions for the interviewer Once You've Got The Job Additional Books Update Your Resume Interview Process & General Interview Prep Even More Knowledge Final Review --- translations/README-mr.md | 980 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 980 insertions(+) diff --git a/translations/README-mr.md b/translations/README-mr.md index 6ad9961808..567e08705a 100644 --- a/translations/README-mr.md +++ b/translations/README-mr.md @@ -951,3 +951,983 @@ iOS वर $25 खर्च होते परंतु इतर प्ले - [ ] ग्राफमध्ये कनेक्टेड संघटनांची संख्या काउंट करा - [ ] कड़क संघटनांची सूची - [ ] बायपार्टाईट ग्राफसाठी तपासा + +## आणखी ज्ञान + +- ### पुनरावर्तन (Recursion) + + - [ ] पुनरावर्तन आणि परत्यायीकरणाच्या Stanford व्याख्यानपट्टी: + - [ ] [व्हिडिओ 8 | कार्यपद्धती (व्हिडिओ)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [व्हिडिओ 9 | कार्यपद्धती (व्हिडिओ)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [व्हिडिओ 10 | कार्यपद्धती (व्हिडिओ)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [व्हिडिओ 11 | कार्यपद्धती (व्हिडिओ)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - कोणत्याही स्थितीत ते वापरण्याचे कधी योग्य आहे? + - टेल पुनरावर्तन कसे विचारले जाते? + - [ ] [टेल पुनरावर्तन काय आहे, ते का वापरण्याचे खरे कारण आहे?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [टेल पुनरावर्तन (व्हिडिओ)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] [कोणत्याही पुनरावर्तन समस्येचे विचार कसे करावे (व्हिडिओ)](https://youtu.be/ngCos392W4w) + + परत्यायीकरणाची शारीरिक नकाशा: [Java]() + [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) + +- ### डायनॅमिक प्रोग्रामिंग + + - तुम्हाला तुमच्या साक्षात्कारात कोणत्याही डायनॅमिक प्रोग्रामिंग समस्या पाहायला मिळाली नाही, परंतु हे एक डायनॅमिक प्रोग्रामिंग समस्या म्हणून मान्यता देण्यास अनुरूप आहे हे महत्त्वाचं आहे. + - या विषयाचं अत्यंत कठीण असू शकतं, कारण प्रत्येक डीपी अंतग्रहणकर्त्याची चूकीची देवाण करणे आवश्यक आहे, आणि त्याचा साधन करणे कठीण असू शकतं. + - मी तुम्हाला डीपी समस्यांच्या अनेक उदाहरणे पाहून पैटर्नचं ठसा समजलं पर्यंत तुम्हाला सुचना देतो. + - [ ] व्हिडिओ: + - [ ] [स्किना: CSE373 2020 - व्याख्यान 19 - डायनॅमिक प्रोग्रामिंगचे परिचय (व्हिडिओ)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [स्किना: CSE373 2020 - व्याख्यान 20 - संपादन अंतर (व्हिडिओ)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [स्किना: CSE373 2020 - व्याख्यान 20 - संपादन अंतर (सुरुवात) (व्हिडिओ)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [स्किना: CSE373 2020 - व्याख्यान 21 - डायनॅमिक प्रोग्रामिंग (व्हिडिओ)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [स्किना: CSE373 2020 - व्याख्यान 22 - डायनॅमिक प्रोग्रामिंग आणि पुनरावलोकन (व्हिडिओ)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) + - [ ] [साइमन्सन: डायनॅमिक प्रोग्रामिंग 0 (59:18 पासून सुरू) (व्हिडिओ)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [साइमन्सन: डायनॅमिक प्रोग्रामिंग I - व्याख्यान 11 (व्हिडिओ)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [साइमन्सन: डायनॅमिक प्रोग्रामिंग II - व्याख्यान 12 (व्हिडिओ)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] व्यक्तिगत डीपी समस्यांची यादी (प्रत्येक संक्षिप्त आहे): + [डायनॅमिक प्रोग्रामिंग (व्हिडिओ)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] येल व्याख्यान नोट्स: + - [ ] [डायनॅमिक प्रोग्रामिंग](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) + - [ ] कोर्सेरा: + - [ ] [RNA सेकंडरी संरचना समस्या (व्हिडिओ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] [एक डायनॅमिक प्रोग्रामिंग अल्गोरिदम (व्हिडिओ)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [डीपी अल्गोरिदमचा चित्रण (व्हिडिओ)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [डीपी अल्गोरिदमची चालनाची वेळ (व्हिडिओ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [डीपी बनाम पुनरावलोकन अंमलावणी (व्हिडिओ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] [ग्लोबल पेअरवायस सिक्वेन्स अलायनमेंट (व्हिडिओ)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [स्थानिक पेअरवायस सिक्वेन्स अलायनमेंट (व्हिडिओ)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### डिझाइन पॅटर्न्स + + - [ ] [व्हिडिओ: त्वरीत UML पुनरावलोकन (व्हिडिओ)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] ह्या पॅटर्न्सचा अभ्यास करा: + - [ ] स्ट्रॅटेजी + - [ ] सिंगलटन + - [ ] ऍडॅप्टर + - [ ] प्रोटोटाईप + - [ ] डेकोरेटर + - [ ] विजिटर + - [ ] फॅक्टरी, अ‍ॅब्सट्रॅक्ट फॅक्टरी + - [ ] फेसेड + - [ ] ऑब्झर्व्हर + - [ ] प्रॉक्सी + - [ ] डेलीगेट + - [ ] कमांड + - [ ] स्टेट + - [ ] मेमेंटो + - [ ] आयटरेटर + - [ ] कॉम्पोझिट + - [ ] फ्लायवेट + - [ ] [संच: व्हिडिओ सिरीज (27 व्हिडिओ)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [पुस्तक: हेड फर्स्ट डिझाइन पॅटर्न्स](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - मला माहित आहे की कॅनॉनिकल पुस्तक "डिझाइन पॅटर्न्स: ओब्जेक्ट-ओरिएंटेड सॉफ्टवेअरचे घटक" आहे, परंतु हेड फर्स्ट ही सुरुवातीकडून अवघड प्रारंभकांसाठी उत्तम आहे. + - [हॅंडी संदर्भ: डेव्हलपर्ससाठी 101 डिझाइन पॅटर्न्स आणि सूचना](https://sourcemaking.com/design-patterns-and-tips) + +- ### संयुक्तिशास्त्र (n निवडा k) आणि प्रायोगिकी + + - [ ] [गणित कौशल्य: फॅक्टोरियल, पर्म्युटेशन, आणि कॉम्बिनेशन (निवडा) कसे शोधायचं (व्हिडिओ)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [मेक स्कूल: प्रायोगिकी (व्हिडिओ)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [मेक स्कूल: अधिक प्रायोगिकी आणि मार्कोव श्रॅइन्स (व्हिडिओ)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] खान एकेडेमी: + - कोर्स लेआउट: + - [ ] [मूल थ्योरेटिकल प्रायोगिकी](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - केवळ व्हिडिओ - 41 (प्रत्येक सोपे आणि प्रत्येक संक्षिप्त आहेत): + - [ ] [प्रायोगिकी समजलेलं (व्हिडिओ)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + +- ### एनपी, एनपी-पूर्ण आणि अनुमापन अल्गोरिदम + + - एनपी-पूर्ण समस्यांच्या सर्वात प्रसिद्ध वर्गांची ओळख करा, उदा. यात्रा करणारा विक्रेता आणि बटवारे समस्या, आणि त्यांना ओळखू शकण्यात यावं जेव्हा साक्षात्कारदाता तुम्हाला त्यांचं उपाय करण्याचं म्हणेल. + - एनपी-पूर्ण असे काय म्हणतात, हे ओळखा. + - [ ] [संज्ञानात घेण्याची सोपीता (व्हिडिओ)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] सायमन्सन: + - [ ] [लालची एल्गोरिदम्स II आणि एनपी-पूर्णता साठी परिचय (व्हिडिओ)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [एनपी-पूर्णता II आणि घटक (व्हिडिओ)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी-पूर्णता III (व्हिडिओ)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [एनपी-पूर्णता IV (व्हिडिओ)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] स्कीना: + - [ ] [CSE373 2020 - व्याख्यान 23 - एनपी-पूर्णता (व्हिडिओ)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - व्याख्यान 24 - संतोषपद (व्हिडिओ)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - व्याख्यान 25 - अधिक एनपी-पूर्णता (व्हिडिओ)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - व्याख्यान 26 - एनपी-पूर्णता चॅलेंज (व्हिडिओ)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [जटिलता: पी, एनपी, एनपी-पूर्णता, घटक (व्हिडिओ)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [जटिलता: अनुमापन अल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [जटिलता: निश्चित-पॅरामीटर अल्गोरिदम्स (व्हिडिओ)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - पीटर नॉर्विग यांनी यात्रा करणार्या विक्रेता समस्येसाठी करीब करीब उत्तम सोडलेले निर्धारण: + - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) + - तुमच्याकडे आहे का तो CLRS चा पृष्ठ 1048 - 1140. + +- ### कसे कंप्यूटर प्रोग्राम प्रक्रिया करते + - [ ] [कसे सीपीयू प्रोग्राम कार्यान्वित करतो (व्हिडिओ)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [कसे कंप्यूटर गणना करते - एएलयु (व्हिडिओ)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [रजिस्टर आणि रॅम (व्हिडिओ)](https://youtu.be/fpnE6UAfbtU) + - [ ] [केंद्रीय प्रोसेसिंग युनिट (सीपीयू) (व्हिडिओ)](https://youtu.be/FZGugFqdr60) + - [ ] [निर्देशन आणि कार्यक्रम (व्हिडिओ)](https://youtu.be/zltgXvg6r3k) +- ### कॅशेस + + - [ ] LRU कॅश: + - [ ] [LRU कॅशाची जादू (100 दिवस ऑफ गूगल डेव) (व्हिडिओ)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [LRU अंमलात घेणे (व्हिडिओ)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU कॅश (सी++) (व्हिडिओ)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] सीपीयू कॅश: + - [ ] [MIT 6.004 L15: मेमरी हायरार्की (व्हिडिओ)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: कॅश समस्या (व्हिडिओ)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### प्रक्रिया आणि थ्रेड्स + + - [ ] कॉम्प्यूटर सायन्स 162 - ऑपरेटिंग सिस्टम्स (25 व्हिडिओ): + - प्रक्रिया आणि थ्रेड्ससाठी 1-11 व्हिडिओ पहा + - [ऑपरेटिंग सिस्टम्स आणि सिस्टम प्रोग्रामिंग (व्हिडिओ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - [प्रक्रिया आणि थ्रेड्समध्ये अंतर काय आहे?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - आवरण करते: + - प्रक्रिया, थ्रेड्स, एकत्रता समस्या + - प्रक्रिया आणि थ्रेड्स विचार + - प्रक्रिया + - थ्रेड्स + - लॉक्स + - म्यूटेक्स + - सेमाफोर्स + - मॉनिटर्स + - ते कसे कार्य करतात? + - डेडलॉक + - लायव्हलॉक + - सीपीयू चालना, इंटरप्ट्स, संदर्भ परिवर्तन + - मल्टीकोर प्रोसेसर्ससह सध्याची एकत्रता संरचना + - [पेजिंग, सेग्मेंटेशन, आणि वर्च्युअल मेमरी (व्हिडिओ)](https://youtu.be/O4nwUqQodAg) + - [इंटरप्ट्स (व्हिडिओ)](https://youtu.be/iKlAWIKEyuw) + - प्रक्रिया संसाधन आवश्यकता (मेमरी: कोड, स्थैतिक संचयन, स्टॅक, हिप, आणि संदर्भांचा फाईल दर्शक, आयओ) + - थ्रेड्स संसाधन आवश्यकता (समावेश करते (स्टॅक समावेश केलेला बाहेर) आणि प्रक्रियेमध्ये इतर थ्रेड्ससह सामायिक असताना प्रत्येकाचं नवीन पीसी, स्टॅक काउंटर, नोंदणी, आणि स्टॅक असतं.) + - फोर्किंग खरोखर लिहिते किंवा नवीन प्रक्रियेमध्ये लिहिते (वाचण्यासाठी) तोते कोपी. + - संदर्भ परिवर्तन + - [ऑपरेटिंग सिस्टम्स आणि त्यातील कनेक्टिंग व्हार्डवेअरद्वारे संदर्भ परिवर्तन कसे प्रारंभ होतं?](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) + - [ ] [सी++मध्ये थ्रेड्स (संचिका - 10 व्हिडिओ)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] [मेसाचुसेट्स युनिवर्सिटीनंचे CS 377 Spring '14: ऑपरेटिंग सिस्टम्स](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) + - [ ] पायथनमध्ये एकत्रता (व्हिडिओ): + - [ ] [थ्रेड्सवरील लघु संचिका](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] [पायथन थ्रेड्स](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] [पायथन GILचा समज (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [संदर्भ](http://www.dabeaz.com/GIL) + - [ ] [डेविड Beazley - पायथन एकत्रता एवढं वाचा LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] [कीनोट डेविड Beazley - विषय आहेत (पायथन एसिंक्रोनॉस्टिका)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] [पायथनमध्ये म्यूटेक्स](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### चाचणी + + - कवर करण्यासाठी: + - कसे युनिट चाचणी कार्य करते + - काय मॉक ऑब्जेक्ट आहेत + - काय एकत्रता चाचणी आहे + - काय डिपेंडेन्सी इन्जेक्शन आहे + - [ ] [जेम्स बाच सोबत Agile सॉफ्टवेअर टेस्टिंग (व्हिडिओ)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [सॉफ्टवेअर टेस्टिंगवर जेम्स बाच द्वारे खुला व्याख्यान (व्हिडिओ)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [स्टीव फ्रीमॅन - टेस्ट-ड्रायव्ह्ड डेव्हलपमेंट (ते काय आम्ही म्हणत होतो) (व्हिडिओ)](https://vimeo.com/83960706) + - [स्लाइड्स](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] डिपेंडेन्सी इन्जेक्शन: + - [ ] [व्हिडिओ](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] [चाचणी कसे लिहावी](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] [चाचण्यांसाठी कसे लिहावं](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + +- ### स्ट्रिंग शोध आणि व्यवस्थापन + + - [ ] [सेजविक - सफ्फिक्स अ‍ॅरेस (व्हिडिओ)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [सेजविक - उपस्थिती शोध (व्हिडिओ)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. उपस्थिती शोधास परिचय](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. ब्र्यूट-फोर्स उपस्थिती शोध](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) + - [ ] [3. क्नूथ-मोरिस प्रॅट](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) + - [ ] [4. बोयर-मोर](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) + - [ ] [5. राबिन-कार्प](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) + - [ ] [टेक्स्टमध्ये पॅटर्न शोध (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + जर आपल्याला या विषयावर अधिक माहिती आवडत असेल तर, "कितीकोटी विषयांवर अतिरिक्त माहिती" मध्ये "स्ट्रिंग मॅचिंग" अनुभाग पहा. + +- ### ट्राय्स + + - नोंद: विविध प्रकारांचे ट्राय आहेत. काहीतरींना प्रिफिक्स आहेत, काहीतरींना नाही, आणि काही बिट्ससाठी स्ट्रिंग्स वापरतात + मार्गाचे ट्रॅक + - मी कोडमध्ये वाचले, परंतु कार्यान्वित केले नाही + - [ ] [सेजविक - ट्राय (3 व्हिडिओ)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. आर-वे ट्राय](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) + - [ ] [2. तेर्नरी सर्च ट्राय](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) + - [ ] [3. अक्षराधारित प्रक्रिया](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [डेटा संरचना आणि प्रोग्रामिंग तंत्रे वरचे नोंद](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] लघु कोर्स व्हिडिओ: + - [ ] [ट्राय सर्व परिचय (व्हिडिओ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] [ट्राय संचयनाची प्रदर्शनी (व्हिडिओ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] [ट्राय अंमलबजावणी कसे करावी (व्हिडिओ)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] [ट्राय: एक अवधृत डेटा संरचना](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] [टॉपकोडर - ट्रायज वापरणे](https://www.topcoder.com/thrive/articles/Using%20Tries) + - [ ] [स्टॅनफोर्ड व्हिडिओ (वास्तविक वापराची केस) (व्हिडिओ)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, प्रगत डेटा संरचना, स्ट्रिंग्स (ह्या अर्धवट विडीओमध्ये खूप अविष्कारी होतात) (व्हिडिओ)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### फ्लोटिंग पॉईंट नंबर्स + + - [ ] सोप्पा 8-बिट: [फ्लोटिंग पॉईंट नंबर्सची प्रतिस्थापन - 1 (व्हिडिओ - गणनांतरात एक त्रुटी आहे - व्हिडिओची वर्णन पहा)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### यूनिकोड + + - [ ] [प्रत्येक सॉफ्टवेअर डेव्हलपरने यूनिकोड आणि वर्णसंचार सेट्सबद्दल निश्चितपणे माहितीवान काहीच नाही](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] [प्रत्येक प्रोग्रामरने काम करण्यासाठी अवश्य असलेल्या कोडिंग्स आणि वर्णसंचार सेट्सबद्दल माहितीवान काहीच नाही](http://kunststube.net/encoding/) + +- ### एंडियनेस + + - [ ] [बिग आणि लिटिल एंडियन](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] [बिग एंडियन विरुद्ध लिटिल एंडियन (व्हिडिओ)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [बिग आणि लिटिल एंडियन इन्साइड/आउट (व्हिडिओ)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - कर्नेल डेव्हलपर्ससाठी खूप तांत्रिक चर्चा. आपल्या मागीलच्या विचारांची काळजी घ्यायला लागली तर चिंता नका. + - पहिल्या अर्धात आपल्याला सुद्धा काही काही योग्य वाटतील. + +- ### नेटवर्किंग + - **जर आपल्याकडे नेटवर्किंग अनुभव आहे किंवा संचारविज्ञानी किंवा कार्याचे प्रचार अभियंता होण्याची इच्छा आहे, तर प्रश्न अपेक्षित करा** + - इतरथील ते फक्त माहितीचे आहे + - [ ] [खान एकेडमी](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] [UDP आणि TCP: परिवहन संरचनांचा तुलनात्मक (व्हिडिओ)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP आणि OSI मॉडेल स्पष्टीकरण! (व्हिडिओ)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [इंटरनेटवर पॅकेट प्रेषण. नेटवर्किंग आणि TCP/IP ट्यूटोरियल. (व्हिडिओ)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (व्हिडिओ)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL आणि HTTPS (व्हिडिओ)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (व्हिडिओ)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (व्हिडिओ)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [व्हिडिओ सीरीज (21 व्हिडिओ) (व्हिडिओ)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [सबनेटिंगचे अनाधिकृतीकरण - भाग 5 सीआयडीआर सूची (व्हिडिओ)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] सॉकेट्स: + - [ ] [जावा - सॉकेट्स - परिचय (व्हिडिओ)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [सॉकेट प्रोग्रामिंग (व्हिडिओ)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +## अंतिम समीक्षा + + ह्या विभागात, आपल्याला प्रामुख्यांच्या अधिक महत्त्वाच्या धारणांची पुनरावलोकन करण्यासाठी लवकर लवकर पहायला मिळणारे लघु व्हिडिओ असतील. + हे खूप छान आहे जर आपल्याला अक्षरश: अक्षर वापरायला आवडते. + +- [ ] 2-3 मिनिटांचे लघु विषय व्हिडिओ सिरीज (23 व्हिडिओ) + - [व्हिडिओ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] 2-5 मिनिटांचे लघु विषय व्हिडिओ सिरीज - मायकल संबोल (48 व्हिडिओ): + - [व्हिडिओ](https://www.youtube.com/@MichaelSambol) + - [कोड उदाहरणे](https://github.com/msambol/dsa) +- [ ] [सेजविक व्हिडिओ - अल्गोरिदम्स I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [सेजविक व्हिडिओ - अल्गोरिदम्स II](https://www.coursera.org/learn/algorithms-part2) + +## तुमचा रेझ्युम अपडेट करा + +- "Cracking The Coding Interview" आणि "Programming Interviews Exposed" हे पुस्तके पहा +- ["चांगला रेझ्युम कसं दिसतं" गेल मॅकडॉनेल (Cracking the Coding Interview ची लेखिका)](https://www.careercup.com/resume), + - लेखिकेचा अभिप्राय: "हा संगणक संयंत्र युएस अँड अन्य देशांसाठी अनेक वेळा वेगवेगळ्या अपेक्षा असतात, हाताळणीच्या बाजूचे प्रमुख असतात, परंतु अनेक बिंदू सामान्य असतील." +- ["चरणावरील रेझ्युम मार्गदर्शन" टेक इंटरव्ह्यू हँडबुक](https://www.techinterviewhandbook.org/resume/guide) + - रेझ्युम सामग्री कसे तयार करायची, प्रभावी रेझ्युम सामग्री कसे लिहायची, ती ऑप्टिमाईझ कसे करायची, आणि तुमचा रेझ्युम कसं चाचणी करायचं हे मार्गदर्शित करणारं विस्तृत मार्गदर्शिका. + +## इंटरव्ह्यू प्रक्रिया आणि सामान्य प्रिपरेशन + +- [ ] [2021 मध्ये इंजिनिअरिंग इंटरव्ह्यू कशात काढायचं ते कसं पार पडायचं](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [टेक रिक्रूटिंगच्या आजवळल्या मिस्ट्री](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] बिग 4 मध्ये नोकरी कसं मिळवायचं: + - [ ] [बिग 4 - अमेझॉन, फेसबुक, गूगल आणि मायक्रोसॉफ्ट (व्हिडिओ)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [बिग 4.1 नोकरी कसं मिळवायचं (अनुसरण व्हिडिओ)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] क्रॅकिंग दि कोडिंग इंटरव्ह्यू सेट 1: + - [ ] [गेल लॅकमॅन मॅकडॉनेल - क्रॅकिंग दि कोडिंग इंटरव्ह्यू (व्हिडिओ)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [क्रॅकिंग दि कोडिंग इंटरव्ह्यू - लेखिकेसह गेल लाक्मॅन मॅकडॉनेल (व्हिडिओ)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] फेसबुक क्रॅकिंग दि कोडिंग इंटरव्ह्यू: + - [ ] [प्रस्ताव](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [समस्या चर्चा](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- प्रिप कोर्सेस: + - [पायथन फॉर डेटा स्ट्रक्चर्स, अल्गोरिदम्स, आणि इंटरव्ह्यूस (पेड कोर्स)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - डेटा स्ट्रक्चर्स, अल्गोरिदम्स, मॉक इंटरव्ह्यूस, आणि अधिक प्रकारच्या पायथनसंबंधित इंटरव्ह्यू प्रिप कोर्स. + - [पायथन वापरून डेटा स्ट्रक्चर्स आणि अल्गोरिदम्स साठी परिचय (उदासिती विनामूल्य कोर्स)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - विनामूल्य पायथन सेंट्रिक डेटा स्ट्रक्चर्स आणि अल्गोरिदम्स कोर्स. + - [डेटा स्ट्रक्चर्स आणि अल्गोरिदम्स नॅनोडिग्री! (उदासिती अनुलग्न कोर्स)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - इंटरव्ह्यूज आणि ऑन-दि-जॉब स्थित्यांसाठी तुम्हाला तयार करण्यासाठी वेळांचं मार्गदर्शन करत असलेले बोलणे आणि अल्गोरिदम्स अभ्यास घेणे. + - [बिहेव्ह्योरल इंटरव्ह्यूला ग्रोकिंग (एज्युकेटिव्ह विनामूल्य कोर्स)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - अधिकतर वेळेस तुमच्या तांत्रिक क्षमतेमध्ये तुम्हाला तुमच्या स्वप्नांच्या नोकरीला मिळवण्याचं अवरोधक नसतं, ते कसं आपण बर्तायचं ते हा बिहेव्ह्योरल इंटरव्ह्यू कसं करतात ते अभ्यास घेणे. + - [एल्गोमॉन्स्टर (विनामूल्य कोर्स सह पेड कोर्स)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - LeetCode साठी धडकधडकी असणे. हजारों प्रश्नांमधून संकल्पित सर्व पॅटर्न्सची आवृत्ती करते. + +मॉक इंटरव्ह्यू: + +- [Gainlo.co: मोक इंटरव्ह्यूअर्स सह बड्याच्या कंपनीतून](http://www.gainlo.co/#!/) - मी हे वापरलं आणि हे माझ्याला फोन स्क्रीन आणि ऑन-साइट इंटरव्ह्यूसाठी थंड करण्यास मदत केलं +- [Pramp: मोक इंटरव्ह्यूअर्स सह/सह करणार्](https://www.pramp.com/) - इंटरव्ह्यूचे सह/सह करण्यासाठी समुदायामध्ये पीर-पर-पीर मॉडेल +- [interviewing.io: वरिष्ठ इंजिनिअर्ससह मोक इंटरव्ह्यू प्रॅक्टिस](https://interviewing.io) - FAANGमधील वरिष्ठ अभियंत्यांसोबत अनामिक अल्गोरिदमिक/सिस्टम डिझाईन इंटरव्ह्यू +- [Meetapro: टॉप FAANG इंटरव्ह्यूअर्ससह मोक इंटरव्ह्यूस](https://meetapro.com/?utm_source=ciu) - एअरबीअनची अंतर्गत मोक इंटरव्ह्यू/कोचिंग प्लॅटफॉर्म. +- [Hello Interview: ऍक्सपर्ट कोचेससोबत आणि AI सोबत मोक इंटरव्ह्यूस](https://www.hellointerview.com/?utm_source=ciu) - AIसह किंवा FAANG स्टाफ अभियंते आणि व्यवस्थापकांसोबत इंटरव्ह्यू. +- [Codemia: AI किंवा समुदाय समाधानांसोबत प्रणाली डिझाईन समस्यांचे प्रॅक्टिस करा आणि मूल्यमापन घ्या](https://codemia.io/?utm_source=ciu) - सिस्टम डिझाईन समस्या AI प्रॅक्टिस टूलवर मूल्यमापन करा. समुदायातील आपले समाधान सामुदायिक हैक तपासा. + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## बारवा प्रश्न असल्यास आण्यासाठी + +माझ्यात असणारी काही (मला आधीच प्रत्युत्तरे मिळू शकतात, परंतु त्यांच्या मत वा टीमच्या दृष्टिकोनातून इच्छा आहे): + +- तुमच्या टीमचे किती वेळी? +- तुमचे डेव सायकल कसे असते? तुम्ही वॉटरफॉल / स्प्रिंट्स / एजाइल करता का? +- कालावधीला धडे सामायिक होतात का? किंवा त्यांच्यावर प्रासंगिकता आहे का? +- तुमच्या टीममध्ये निर्णय कसे घेतले जातात? +- तुमच्या टीममध्ये प्रत्येक आठवड्याला किती बैठके झाली जातात? +- तुम्हाला वातावरणात काम करण्याची मदत कसं वाटतं? +- तुम्ही काय करीत आहात? +- तुम्हाला ह्याच्यावर काय आवडतं? +- कामाचा जीवन कसं आहे? +- काम / लायफ बॅलन्स कसं आहे? + +## नोकरी मिळाल्यानंतर + +अभिनंदन! + +शिका जारी ठेवा. + +तुम्ही वास्तविकपणे समाप्त नाहीत. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + हे बद्दल काही खालील बिंदू ऐकले पाहिजे. प्रवेश स्तराच्या साक्षात्कारासाठी हे आवश्यक नाही. + परंतु, यांचे अभ्यास करण्याने, आपल्याला अधिक CS संकल्पांच्या विस्तारात विचारल्याचा संधी देते आणि + कोणत्याही सॉफ्टवेअर इंजिनियरिंग नोकरीसाठी तयार केल्यावर तुम्ही एक अधिक समर्थ सॉफ्टवेअर इंजिनियर बनणार आहात. + आपण एक काहीशे विचारातून एक अधिक वेल-राउंडेड सॉफ्टवेअर इंजिनियर आहात. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## अतिरिक्त पुस्तके + + या पुस्तकांच्यातून तुम्ही आपल्याला आवडणारा विषयांमध्ये संपलं तर काम करू शकता. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - जुना परंतु चांगला +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - आधुनिक पर्याय +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - डिझाईन पॅटर्न्सचे सोपे परिचय +- [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - गॅंग ऑफ फोर पुस्तक किंवा GOF + - गॅंग ऑफ फोर प्रमाणिक डिझाईन पॅटर्न्स पुस्तक +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - एक पुनरावलोकन आणि समस्या-ओळख + - आल्गोरिदम कॅटलॉग भागातील विषय हा साक्षात्कारात मिळवण्यास खूप मोठं आहे +- [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - हे पुस्तक 2004 मध्ये प्रकाशित झाले होते, आणि काहीवेळेस अपडेट नाहीत, परंतु एक चांगला संसाधन आहे कंप्यूटर चे समजावून +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - महत्त्वाचं: ह्या पुस्तकाची वाचने केवळ सीमित मूल्य असेल. ह्या पुस्तकात आल्गोरिदम आणि डेटा संरचना चं खूप छान समाविष्ट केलं आहे, परंतु तुम्हाला चांगलं कोड कसं लिहायला हवं आहे +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - अधिक अर्थशास्त्रिक, अधिक अद्ययावत (2017), परंतु लांब व्याख्या साठी + +## सिस्टम डिझाईन, स्केलेबिलिटी, डेटा हॅंडलिंग + +**जर तुम्हाला 4+ वर्षांचा अनुभव असेल तर तुम्हाला सिस्टम डिझाईनचे प्रश्न अपेक्षित आहेत.** + +- स्केलेबिलिटी आणि सिस्टम डिझाईन हे खूप मोठे विषय आहेत आणि त्यात काही विषय आणि संसाधने आहेत, कारण + कॉम्प्युटर / हार्डवेअर सिस्टम डिझाईन करताना अनेक गोष्टी ध्यानात ठेवण्याची आहे की कसे स्केल करावे. + यावर आपल्याला काही वेळ खर्च होणार आहे +- विचारणे: + - स्केलेबिलिटी + - मोठ्या डेटा सेटला एकदा माने घेऊन घेणे + - एक डेटा सेटला दुसर्याकडे बदलणे + - अत्यंत मोठ्या प्रमाणात डेटा संचयन + - सिस्टम डिझाईन + - सुविधा संचयन + - इंटरफेसेस + - वर्ग वर्गांचा वारसा + - निश्चित प्रतिबंधांत एका सिस्टमचा डिझाईन + - सरलता आणि प्रतिस्थापन + - तपशील विचारांची + - कार्यक्षमता विश्लेषण आणि अद्ययावधीकरण +- [ ] **इथे सुरू करा**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) +- [ ] [HiredInTech मध्ये सिस्टम डिझाईन](http://www.hiredintech.com/system-design/) +- [ ] [तकनीकी साक्षात्कारात डिझाईन प्रश्नांना कसं उत्तर द्यायचं?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) +- [ ] [सिस्टम डिझाईन साक्षात्कारासाठी 8 धडे मार्गदर्शिका](https://javascript.plainenglish.io/8-steps-guide-to-ace-a-system-design-interview-7a5a797f4d7d) +- [ ] [डेटाबेस नॉर्मलायझेशन - 1NF, 2NF, 3NF आणि 4NF (व्हिडिओ)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [सिस्टम डिझाईन साक्षात्कार](https://github.com/checkcheckzz/system-design-interview) - इथेच अनेक संसाधन आहेत. लेख आणि उदाहरण पाहा. माझ्याकडून काहीतरीही खालील आहेत +- [ ] [सिस्टम डिझाईन साक्षात्कारासाठी कसं धडे मार्गदर्शिका](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) +- [ ] [प्रत्येकाला पाहिजेल अंक](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) +- [ ] [एका संदर्भ पदलाचं तर किती वेळ लागतं?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) +- [ ] [डेटासेंटर्स व्यवस्थांना ट्रान्झॅक्शन्स (व्हिडिओ)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [CAP सिद्धांताचा एक सादर इंग्रजी परिचय](http://ksat.me/a-plain-english-introduction-to-cap-theorem) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 व्हिडिओ)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] समरसता अल्गोरिदम: + - [ ] पॅक्सोस - [Paxos सममती - Computerphile (व्हिडिओ)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] रफ्ट - [एक दावाने समरस्मीद केलेला परिचय (व्हिडिओ)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] [सोप्यासारखा कागद](https://raft.github.io/) + - [ ] [इन्फोग्राफिक](http://thesecretlivesofdata.com/raft/) +- [ ] [समरसता हॅशिंग](http://www.tom-e-white.com/2007/11/consistent-hashing.html) +- [ ] [NoSQL पॅटर्न्स](http://horicky.blogspot.com/2009/11/nosql-patterns.html) +- [ ] स्केलेबिलिटी: + - तुम्हाला हे सर्व लागेणार नाही. फक्त तुमच्याकडून आवडलेले काही निवडा. + - [ ] [महत्त्वाचा अवलोकन (व्हिडिओ)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] लहान श्रृंखला: + - [क्लोन्स](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) + - [ ] [वितारित कॉम्प्युटिंगची खोटींची धारणा स्पष्टीकरण](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) + - [ ] [जेफ डीन - Google असा सॉफ्टवेअर सिस्टम निर्माण आणि शिक्षण कसं करतो? (व्हिडिओ)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [स्केल असलेल्या प्रणालीसाठी सिस्टम डिझाईनचा परिचय](http://lethain.com/introduction-to-architecting-systems-for-scale/) + - [ ] [App Engine आणि Cloud Datastore वापरून एक जागतिक प्रेक्षक संचालनात मोबाइल गेमस कसं स्केल करायचं? (व्हिडिओ)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [Google आणि जमिनच्या आकारासाठी कसं प्लॅनेट-स्केल इंजिनियरिंग करतो? (व्हिडिओ)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [अल्गोरिदमांची महत्त्वाचीता](https://www.topcoder.com/thrive/articles/The%20Importance%20of%20Algorithms) + - [ ] [शार्डिंग](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) + - [ ] [लांडातील खेळांसाठी इंजिनियरिंग करण्याची गोष्ट](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [YouTube स्केलेबिलिटी सवय व 30 मिनिटांत दस वर्ष](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) + - [व्हिडिओ](https://www.youtube.com/watch?v=G-lGCC4KKok) + - [ ] [कसं PayPal रोजच्या गतिविधींसाठी 8VMs वापरून बिलियन व्यवहार कसं स्केल केलं?](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) + - [ ] [कसं मोठ्या डेटासेंटरमध्ये डुप्लिकेट्स काढाव्यात?](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) + - [ ] [एक Instagram च्या प्रमाणात कसं अभिप्राय सांगावं?](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [एक Patreon आर्किटेक्चर कसं टिकवून ठेवायचं हे अत्यंत कमी](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) + - [ ] [तिंडर: एकाचा पर्याय शोधाव्याचं कसं? लाखां मिळवणार कोणा पाहून?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) + - [ ] [एका आधुनिक कॅशचे डिझाईन](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) + - [ ] [फेसबुक स्केलबिलीत लाईव्ह व्हिडिओ स्ट्रिमिंग](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) + - [ ] [Amazon चा एका न्यायलेल्या आकारातील सिस्टम डिझाईनावर का पोहोच?](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.html) + - [ ] [Amazon AWS वापरून 11 मिलियन वापरकर्त्यांकडे कसं स्केल करायचं?](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) + - [ ] [नेटफ्लिक्स स्टॅकची पूर्ण 360 डिग्री पाहणी](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) + - [ ] [ल्याटेंसी सर्वत्र आहे आणि तुम्हाला विक्रींसाठी खर्च करतं](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) + - [ ] [सेल्सफोर्स आर्किटेक्चर - त्यांनी कसं दिवसात 1.3 बिलियन व्यवहार केलं?](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) + - [ ] [ESPN ची आर्किटेक्चर स्केलचा आकार - प्रतिसेकंडाला 100,000 दु नु नु आणि अधिक](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) + - [ ] सेवा संचालन करण्याच्या काही तंत्रज्ञानांसाठी "संदेशसंचार, सिरिअलायझेशन, आणि क्यूसिंग प्रणाली" हे पाहा + - [ ] Twitter: + - [ओरेली MySQL CE 2011: जेरेमी कोल, "@Twitter वरचे मोठे आणि लहान डेटा" (व्हिडिओ)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [टाइमलायन्स यातना](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) + - आणखी प्रमाणांसाठी, "व्हिडिओ सिरीज" येथील "माइनिंग मॅसिव्ह डेटासेट्स" ला पाहा +- [ ] सिस्टम डिझाईन प्रक्रियेचे अभ्यास करणे: येथे कागदावर काम करण्यासाठी काही विचारांची प्रक्रिया दिली आहे, प्रत्येकाला कसं वापरलं होतं त्याबद्दल काही कागदपत्रे आणि त्याच्या वास्तविक जगात कसं वापरलं होतं ते दिलं आहे: + - पुनरावृत्ती: [The System Design Primer](https://github.com/donnemartin/system-design-primer) + - [HiredInTech मध्ये सिस्टम डिझाईन](http://www.hiredintech.com/system-design/) + - [धोखादणीपत्र](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) + - प्रवाह: + 1. समस्या आणि परिधीचे समजा: + - वापर घटनांचे परिभाषित करा, परीक्षकाची मदत घ्या + - अतिरिक्त सुविधा सुचवा + - परीक्षक अख्खाप ठरवलेली निरीक्षित वस्तू वगळा + - उच्च प्रवलगत्ता आवश्यक आहे, ती एक वापरण्याची अपेक्षा करा + 2. प्रतिबंधांचे विचार करा: + - प्रतिमांचा म्हणजे महिन्यात किती विनंत्यांची माहिती असेल + - प्रतिमांचा म्हणजे किती विनंत्या प्रतिसेकंद असेल (ते तुम्हाला स्वतः सांगितले जाईल किव्हा तुम्ही गणना करावी) + - मागील 80/20 नियमाचा ध्यान धरा विनंत्यांची अंदाज लागू करताना + - प्रतिसेकंद लिहिलेलं डेटा आवश्यक असलेलं डेटा किती असलं + - 5 वर्षांतील कुल भंडारण आवश्यक आहे + - प्रतिसेकंद वाचलेली माहिती किती असली + 3. व्याख्यानशील डिझाईन: + - पर्याय (सेवा, डेटा, कॅशिंग) + - इंफ्रास्ट्रक्चर: लोड बॅलन्सिंग, संदेशदारी + - तंत्रज्ञान: सेवेच्या प्रवाहाची कुंडली + - बंदरघर आणि त्याचे समाधाने + - अभ्यास: + - [किसी बरची उदाहरणीकरण तंत्रज्ञान डिझाईन](https://blog.twitter.com/2010/announcing-snowflake) + - [किसी की-मूल्य डेटाबेस डिझाईन करा](http://www.slideshare.net/dvirsky/introduction-to-redis) + - [किसी चित्र सामायिक करण्याची प्रणाली डिझाईन करा](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) + - [किसी सल्लागार प्रणाली डिझाईन करा](http://ijcai13.org/files/tutorial_slides/td3.pdf) + - [किसी URL लुटिपेकरण प्रणाली डिझाईन करा: पूर्वानुमानित कियामध्ये से](http://www.hiredintech.com/system-design/the-system-design-process/) + - [किसी कॅश प्रणाली डिझाईन करा](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) + +## अतिरिक्त शिक्षण + + मी तुम्हाला एक चांगला सॉफ्टवेअर इंजिनिअर बनवण्यासाठी आणि कितीतरी तंत्रज्ञान आणि + अल्गोरिदम्सविषयी जागरूक होऊन, तुमच्याकडे एक विशाल टूलबॉक्स असावं. + +- ### कॉम्पायलर्स + + - [कसा कॉम्पायलर काम करतो (व्हिडिओ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [हार्वर्ड सीएस50 - कॉम्पायलर्स (व्हिडिओ)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [सी++ (व्हिडिओ)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [कॉम्पायलर ऑप्टिमिझेशन समजून घ्या (सी++) (व्हिडिओ)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + +- ### Emacs आणि vi(m) + + - एक UNIX-आधारित कोड संपादकाशी परिचित व्हा + - vi(m): + - [Vim 01 - स्थापना, सेटअप, आणि मोड्स संपादन (व्हिडिओ)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [VIM Adventures](http://vim-adventures.com/) + - एक सेट ऑफ 4 व्हिडिओ: + - [vi/vim संपादक - धडे 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) + - [vi/vim संपादक - धडे 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) + - [vi/vim संपादक - धडे 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) + - [vi/vim संपादक - धडे 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) + - [Emacs वापरण्यासाठी vi बदला](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) + - emacs: + - [मूल Emacs ट्यूटोरियल (व्हिडिओ)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - एक सेट ऑफ 3 (व्हिडिओ): + - [Emacs ट्यूटोरियल (प्रारंभिक) - भाग 1- फाइल कमांड, कट/कॉपी/पेस्ट, कर्सर कमांड](https://www.youtube.com/watch?v=ujODL7MD04Q) + - [Emacs ट्यूटोरियल (प्रारंभिक) - भाग 2- बफर मॅनेजमेंट, शोध, M-x grep आणि rgrep मोड्स](https://www.youtube.com/watch?v=XWpsRupJ4II) + - [Emacs ट्यूटोरियल (प्रारंभिक) - भाग 3- व्यक्तीकरण, वाक्ये, ~/.emacs फाइल, आणि पॅकेज](https://www.youtube.com/watch?v=paSgzPso-yc) + - [Evil Mode: किंवा, मी एमॅक्सला प्रेम कसं जणू शिकलं (व्हिडिओ)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Emacsसह C कार्यक्रमे लिहिणे](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) + - [Emacsसाठी नवीन प्रारंभिक पूर्ण मार्गदर्शन (व्हिडिओ द्वारा डेव्हिड विल्सन)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) + - [Emacsसाठी नवीन प्रारंभिक पूर्ण मार्गदर्शन (डेव्हिड विल्सन नोट्स)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) + +- ### UNIX कमांड पंक्ती उपकरण + + - मी खालील चांगल्या उपकरणांपासून यादी भरली. + - bash + - cat + - grep + - sed + - awk + - curl किंवा wget + - sort + - tr + - uniq + - [strace](https://en.wikipedia.org/wiki/Strace) + - [tcpdump](https://danielmiessler.com/study/tcpdump/) + +- ### माहिती सिद्धांत (व्हिडिओ) + + - [खान अकॅडेमी](https://www.khanacademy.org/computing/computer-science/informationtheory) + - अधिक मार्कोव प्रक्रियांच्याबद्दल: + - [मूळ मार्कोव मजकूर प्रक्रिया](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) + - [मूळ मार्कोव मजकूर प्रक्रिया कार्यान्वयन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) + - [प्रकल्प = मार्कोव मजकूर उत्पादन सरळ मार्गदर्शन](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - खालील MIT 6.050J माहिती आणि एंट्रोपी सिरीजमध्ये अधिक पहा + +- ### पॅरिटी आणि हॅमिंग कोड (व्हिडिओ) + + - [परिचय](https://www.youtube.com/watch?v=q-3BctoUpHE) + - [पॅरिटी](https://www.youtube.com/watch?v=DdMcAUlxh1M) + - हॅमिंग कोड: + - [त्रुटी ओळखणे](https://www.youtube.com/watch?v=1A_NcXxdoCc) + - [त्रुटी सुधारणे](https://www.youtube.com/watch?v=JAMLuxdHH8o) + - [त्रुटी कसे तपासावे](https://www.youtube.com/watch?v=wbH2VxzmoZk) + +- ### अंतवर्तीता + + - खालील व्हिडिओपणे पहा + - सूर्यप्रकाश सिद्धांत व्हिडिओंची पहिलीच वाचन करा + - [माहिती सिद्धांत, क्लोड शॅनन, अंतवर्तीता, अतिरिक्तता, डेटा संक्षेपण आणि बिट्स (व्हिडिओ)](https://youtu.be/JnJq3Py0dyM?t=176) + +- ### संरक्षणाशास्त्र + + - खालील व्हिडिओपणे पहा + - सूर्यप्रकाश सिद्धांत व्हिडिओंची पहिलीच वाचन करा + - [खान अकॅडेमी सिरीज](https://www.khanacademy.org/computing/computer-science/cryptography) + - [संरक्षणाशास्त्र: हॅश फंक्शन्स](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) + - [संरक्षणाशास्त्र: एन्क्रिप्शन](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- ### संपीढन + + - सूर्यप्रकाश सिद्धांत व्हिडिओंची पहिलीच वाचन करा + - Computerphile (व्हिडिओ): + - [संपीढन](https://www.youtube.com/watch?v=Lto-ajuqW3w) + - [संपीढनमध्ये अंतवर्तीता](https://www.youtube.com/watch?v=M5c_RFKVkko) + - [उपरोक्त झाडे (हफमन झाडे)](https://www.youtube.com/watch?v=umTbivyJoiI) + - [EXTRA BITS/TRITS - हफमन झाडे](https://www.youtube.com/watch?v=DV8efuB3h2g) + - [मजकूरातील सुंदर संपीढन (LZ 77 पद्धत)](https://www.youtube.com/watch?v=goOa3DGezUA) + - [मजकूरातील संपीढन संधीका प्रायद्विप्प्राप्ती](https://www.youtube.com/watch?v=cCDCfoHTsaU) + - [कंप्रेसर हेड व्हिडिओ](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [(पर्यायी) गूगल डेव्हलपर्स लाइव: GZIP योग्य नाही!](https://www.youtube.com/watch?v=whGwm0Lky2s) + +- ### कंप्यूटर सुरक्षा + + - [MIT (23 व्हिडिओ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [परिचय, धोका मॉडेल्स](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नियंत्रण बरळवा आच्छादन](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) + - [बफर ओव्हरफ्लो गोळा आच्छादन आणि पराधीनता](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) + - [विशेषाधिकार विभाग](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [क्षमतांची](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [सॅंडबॉक्सिंग नेटिव कोड](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) + - [वेब सुरक्षा मॉडेल](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [वेब अनुप्रयोग सुरक्षित करणे](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [प्रतिक्रियांकी निर्देश](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क सुरक्षा](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [नेटवर्क प्रोटोकॉल्स](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [साइड-चॅनल हलवा](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- ### कचऱ्या संग्रहण + + - [पायथनमध्ये GC (व्हिडिओ)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [आळवणी जावा: कचरा संग्रहण चांगले आहे!](https://www.infoq.com/presentations/garbage-collection-benefits) + - [आळवणी पायथन: CPython मधील कचरा संग्रहण (व्हिडिओ)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + +- ### पॅरलेल प्रोग्रामिंग + + - [Coursera (स्काला)](https://www.coursera.org/learn/parprog1/home/week/1) + - [उच्च-प्रदर्शन पॅरलेल संगणनासाठी पायथन (व्हिडिओ)](https://www.youtube.com/watch?v=uY85GkaYzBk) + +- ### संदेशपट, सिरिअलाइझेशन, आणि क्यूइंग प्रणाली + + - [Thrift](https://thrift.apache.org/) + - [ट्यूटोरियल](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protocol Buffers](https://developers.google.com/protocol-buffers/) + - [ट्यूटोरियल](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [Java डेव्हलपर्स साठी gRPC 101 (व्हिडिओ)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [ट्यूटोरियल](http://try.redis.io/) + - [Amazon SQS (क्यू)](https://aws.amazon.com/sqs/) + - [Amazon SNS (पब-सब)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [प्रारंभ करा](https://www.rabbitmq.com/getstarted.html) + - [Celery](http://www.celeryproject.org/) + - [सेलरीसह पहिली कदमे](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) + - [ZeroMQ](http://zeromq.org/) + - [परिचय - मॅन्युअल वाचा](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) + +- ### A\* + + - [A शोध अल्गोरिदम](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A\* पॅथफाइंडिंग (E01: अल्गोरिदम समज) (व्हिडिओ)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### फास्ट फूरियर ट्रांसफॉर्म + + - [फूरियर ट्रांसफॉर्मसाठी एक इंटरॅक्टिव्ह गायड](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [फूरियर ट्रांसफॉर्म काय आहे? ते काय वापरले जाते?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [फूरियर ट्रांसफॉर्म काय आहे? (व्हिडिओ)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [विभाजन आणि विजेक्टर: FFT (व्हिडिओ)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [FFT समज (व्हिडिओ)](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### ब्लूम फिल्टर + + - m बिट्स आणि k हॅशिंग फंक्शनसह दिलेल्या ब्लूम फिल्टरमध्ये अंचन आणि सदस्यता चाचणी O(k) आहेत + - [ब्लूम फिल्टर (व्हिडिओ)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [ब्लूम फिल्टर | महासंख्याची खाणी | स्टॅनफोर्ड युनिव्हर्सिटी (व्हिडिओ)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [ट्यूटोरियल](http://billmill.org/bloomfilter-tutorial/) + - [ब्लूम फिल्टर App कसे लिहावा](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- ### हायपरलॉगलॉग + + - [कसे 1.5KB च्या मेमरी वापरून एक बिलियन विविध ऑब्जेक्ट्स गणना करायची](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) + +- ### स्थानिकता-संबंधी हॅशिंग + + - कागदपत्रांच्या समानतेचे निर्धारण करण्यासाठी वापरले जाते + - एमडी5 किंवा एसएचएसासारख्या नावांतरीत कागदपत्रांच्या विश्वातल्या नावांची सुरक्षितता करण्यासाठी वापरले जाते + - [सिमहॅशिंग (आशा करत आहे) सोपे केले](http://ferd.ca/simhashing-hopefully-made-simple.html) + +- ### व्हॅन एम्डे बोस झाडे + + - [विभाजन आणि विजेक्टर: व्हॅन एम्डे बोस झाडे (व्हिडिओ)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT लेक्चर नोट्स](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) + +- ### अग्निवर्धनशील डेटा संरचना + + - [CS 61B लेक्चर 39: डेटा संरचना अग्निवर्धन](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + +- ### संतुलित शोध झाडे + + - कमीत कमी एक प्रकारची संतुलित दोन वनबीज झाड (आणि ते कसे अंमलात आहे हे ओळखा): + - "संतुलित शोध झाडांमध्ये, AVL आणि 2/3 झाड आता passé आहेत आणि रेड-ब्लॅक झाडांचं दिसणं अधिक प्रसिद्ध दिसतं. + विशेषतः विचारले तरी, एसप्ले झाड हे एक विशेषतः आकर्षक स्वत: संगणना संरचना आहे, जे स्पिन जोडतात + कोणत्याही पहुचताचे की निकष किंवा विस्तार त्यातील विलिन विवाहरू. मला आवडतं आहे + आपण आपल्या अंशकात्मकतेत कोणत्याही असंख्य संरचना तयार करताना विचारलं पाहिजे + खूप विचारलं जातं, रेड-ब्लॅक झाडांमध्ये पूर्णत्वसाठी आवश्यक असतात. + उदाहरणार्थ, गणितीय ज्यामितीतील विविध डेटा संरचन लागू करण्यासाठी अनेक डेटा संरचनांमध्ये आधारित + रेड-ब्लॅक झाडे, आणि वर्तमान लिनक्स करनेल्समध्ये वापरले जातात + पूर्णत्वसाठी ग्राहकांचा न्याय पाहतात. जावाच्या 8 आवृत्यात, + संगणना हॅशमॅपविजेच्या संगणकावर संरक्षण अजेंडा एसएनएसमध्ये विनिर्मित केले जाते" + - [MIT AVL झाड / AVL क्रम (व्हिडिओ)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL झाड (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) + - [AVL झाड अंमलबजावणी (व्हिडिओ)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) + - [विभाजन आणि संयोजन](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [[पुनरावलोकन] AVL झाडे (प्लेलिस्ट) 19 मिनिटंमध्ये (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) + + - **एसप्ले झाडे** + + - प्रयोगात: + स्वयं संगणना संरचनांमध्ये साधारणतः एसप्ले झाडे वापरले जातात, कॅशेस, मेमरी आवंटर, रूटर्स, कचरा संग्राहक, + डेटा संकुचन, रोप (लांबी मजकुरांसाठी वापरलेले स्ट्रिंगस चे स्थानांतरण), Windows NT (मध्ये आवृत्ती मेमरी, + नेटवर्किंग आणि फायल सिस्टम कोड) इ. - [CS 61B: एसप्ले झाडे (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT लेक्चर: एसप्ले झाडे: + - खूप मॅथी असते, परंतु आशा करा की शेवटचे 10 मिनिटं नक्की पाहा. + - [व्हिडिओ](https://www.youtube.com/watch?v=QnPl_Y6EqMo) + + - **रेड-ब्लॅक झाडे** + + - आपल्या सुरुवातीत: + रेड-ब्लॅक झाडांनी निवड करण्यासाठी अनेक अप्रत्यक्ष अनुमतियां देतात, विशेषत: एका संगणकीय ज्यामितीय अप्रत्यक्ष डेटा संरचना आहे; + उदाहरणार्थ, कॉम्प्यूटेशनल ज्यामितीमधील अनेक डेटा संरचने रेड-ब्लॅक झाडांमध्ये आधारित असू शकतात, आणि हे काही मूळ आहे + ब्लॅक स्वरुपांमध्ये रूपांतर करण्यास रेड-ब्लॅक झाडे वापरली जातात. + - [Aduni - अल्गोरिदम - लेक्चर 4 (लिंक प्रारंभिक ठिकाणी जातो) (व्हिडिओ)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - अल्गोरिदम - लेक्चर 5 (व्हिडिओ)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [रेड-ब्लॅक झाड (विकिपीडिया)](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) + - [द्विनांतर शोध आणि रेड-ब्लॅक झाड (लेख)](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) + - [[पुनरावलोकन] रेड-ब्लॅक झाडे (प्लेलिस्ट) 30 मिनिटंमध्ये (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin) + + - **2-3 शोध झाडे** + + - प्रयोगात: + 2-3 झाडे वेगवेगळ्या संरचनांमध्ये शीघ्र मजकूर देण्यासाठी वापरले जातात. + - [23-Tree Intuition आणि परिभाषा (व्हिडिओ)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [2-3 झाडे (विक्षिप्त अभ्यास) (व्हिडिओ)](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [2-3 झाडे (विद्यार्थी उपस्थिती) (व्हिडिओ)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + + - **2-3-4 झाडे (2-4 झाडे म्हणूनही)** + + - प्रयोगात: + प्रत्येक 2-4 झाडासाठी, त्यांच्या दिलेल्या डेटा घटकांसह संबंधित रेड-ब्लॅक झाडे आहेत. संग्रहणा आणि अपवाद + 2-4 झाडांवरील ऑपरेशन्सह रेड-ब्लॅक झाडांमध्ये रंग-फ्लिपिंग आणि परिस्थिती बदलार्यांसमध्ये समाविष्ट केले जाते. हे + रेड-ब्लॅक झाड्या समजण्यासाठी महत्त्वाचे उपकरण बनवतात, आणि याचं कारण अधिकांश प्रारंभिक अल्गोरिदम पुस्तके + 2-4 झाड्यांना आधी रेड-ब्लॅक झाड्यांच्या आधारावर परिचित करतात, याचं कारण **2-4 झाडे प्रयोगात कमी किंवा आत्ता नाहीत**. + - [CS 61B लेक्चर 26: संतुलित शोध झाडे (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (व्हिडिओ)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (व्हिडिओ)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + + - **N-अरे (K-अरे, M-अरे) झाडे** + + - टीप: N किंवा K हे ब्रांचिंग फॅक्टर (जास्तीत जास्त शाखा) आहे + - द्विआधार झाडे एका 2-अर्य झाड्यामध्ये शाखा किंवा ब्रांचिंग फॅक्टर = 2 सह + + - **बी-झाडे** + - मजकूर: हे एक रहस्य आहे, परंतु बी किंवा बॉईंग, संतुलित, किंवा बेयर (सहवासी विक्रेता) ची माझी असते. + - प्रयोगात: + डेटाबेसमध्ये बी-झाडे वापरले जातात. अधिक आधुनिक फायलसिस्टम्स बी-झाड्यांमध्ये वापरले जातात (किंवा वॅरिअंट्स). संग्रहणा + व्यास आणि बॉकसातील कोणत्याही एक ब्लॉकमध्ये एक विशिष्ट ब्लॉकमध्ये झपाटीपासून किंवा + (किंवा व्यासाच्या दोनदा) पर्यंतीचा डिस्क ब्लॉकमध्ये नक्ष बदलार्यांसाठी त्याची मुख्य समस्या आहे. + - [बी-झाडे](https://en.wikipedia.org/wiki/B-tree) + - [बी-झाडे डेटास्ट्रक्चर (व्हिडिओ)](http://btechsmartclass.com/data_structures/b-trees.html) + - [बी-झाड्यांच्या परिचय (व्हिडिओ)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [बी-झाडे परिभाषा आणि संयोजन (व्हिडिओ)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [बी-झाडे डिलीशन (व्हिडिओ)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - मेमरी हायरार्की मॉडेल (व्हिडिओ)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - कॅश-ओब्लिव्हिअस बी-झाड्यांवर मिंट्यात तात्पुरत्या माहितीसह पाहिलं जातं, आणि अत्यंत आकर्षक डेटा संरचने आहेत - पहिले 37 मिनिटं खूप तंत्रज्ञान असतं, आणि ते वगळा जाऊ शकतं (बी ब्लॉक आकार आहे, कॅश लायन आकार) + - [[पुनरावलोकन] बी-झाडे (प्लेलिस्ट) 26 मिनिटंमध्ये (व्हिडिओ)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz) + +- ### k-D झाडे + + - एकाच आकारातल्या किंवा उच्च-आयामी वस्तूतील किंवा अंकांचे कुठलेही नंबर शोधण्यासाठी उत्कृष्ट आहेत + - k-निकटतम पडद्या साठी एक चांगला मिळवा + - [kNN K-d झाड अल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + +- ### स्किप यादी + + - "ये काही सोसायटी डेटा संरचन आहेत" - स्कीना + - [क्रमांकवाचन: स्किप यादी (व्हिडिओ)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [अनिमेशनसह आणि थोडं अधिक तपशीलांसाठी](https://en.wikipedia.org/wiki/Skip_list) + +- ### नेटवर्क फ्लो + + - [Ford-Fulkerson in 5 minutes — Step by step example (व्हिडिओ)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (व्हिडिओ)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [नेटवर्क फ्लो (व्हिडिओ)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + +- ### विभाजित सेट्स आणि संघटना शोधा + + - [UCB 61B - विभाजित सेट्स; क्रमवारी & निवड (व्हिडिओ)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [सेजविक अल्गोरिदम - संघटना शोधा (6 व्हिडिओ)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + +- ### फास्ट प्रोसेसिंगसाठी गणित + + - [पूर्णांक अंकगणित, कारात्सुबा गुणाकार (व्हिडिओ)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [चाईनीज बाकी ठेवा उपप्रमाण (संरक्षिततेमध्ये वापरला जातो) (व्हिडिओ)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + +- ### ट्रेप + + - एक बाइनरी शोध झाड आणि एक कोळीची संरचना + - [ट्रेप](https://en.wikipedia.org/wiki/Treap) + - [डेटा संरचना: ट्रेप समजले (व्हिडिओ)](https://www.youtube.com/watch?v=6podLUYinH8) + - [सेट ऑपरेशनमध्ये अर्ज सापडले](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) + +- ### लिनिअर प्रोग्रामिंग (व्हिडिओ) + + - [लिनिअर प्रोग्रामिंग](https://www.youtube.com/watch?v=M4K6HYLHREQ) + - [किमान किंमत शोधणे](https://www.youtube.com/watch?v=2ACJ9ewUC6U) + - [किमान मौल्य शोधणे](https://www.youtube.com/watch?v=8AA_81xI3ik) + - [पायथनसह लिनिअर समीकरणे सोडा - सिम्प्लेक्स अल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=44pAWI7v5Zk) + +- ### ज्यामिती, उत्तोल घे (व्हिडिओ) + + - [ग्राफ अल्गो. IV: ज्यामिती अल्गोरिदमसाठी परिचय - व्याख्यान 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [ज्यामिती अल्गोरिदम: ग्रहाम & जार्विस - व्याख्यान 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [विभाजित आणि साधा करा: उत्तोल घे, मध्यम शोधा (व्हिडिओ)](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) + +- ### विशेष गणित + - [कॉम्प्युटर सायन्स 70, 001 - स्प्रिंग 2015 - विशेष गणित आणि प्रायद्विपकता सिद्धांत](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) + - [शाई सिमन्सन द्वारे विशेष गणित (19 व्हिडिओ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [IIT रोपर NPTEL द्वारे विशेष गणित](https://nptel.ac.in/courses/106/106/106106183/) + +## काही विषयांवर अधिक माहिती + + मी खालीलपैकी काही विचारे सुरक्षित करण्यात यावीत कारण हे अधिकाधिक सांगितले तर काही क्षेत्रात अत्यधिक आवडायला सक्तो. एक शतकात तुम्ही नोकरी सापडायला इच्छितात ना? + +- **SOLID** + + - [ ] [बॉब मार्टिन SOLID ऑब्जेक्ट ओरिएंटेड आणि एजाइल डिझायनचे सिद्धांत (व्हिडिओ)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] S - [एकल जबाबदारीवर्गीय सिद्धांत](http://www.oodesign.com/single-responsibility-principle.html) | [प्रत्येक ऑब्जेक्टवर एकल जबाबदारी](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) + - [अधिक आकार](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) + - [ ] O - [ओपन/क्लोज्ड सिद्धांत](http://www.oodesign.com/open-close-principle.html) | [तयार ऑब्जेक्ट विस्तारसाठी तयार आहेत पण संशोधनसाठी नाहीत](https://en.wikipedia.org/wiki/Open/closed_principle) + - [अधिक आकार](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) + - [ ] L - [लिस्कोव सब्स्टिट्यूशन प्रिन्सिपल](http://www.oodesign.com/liskov-s-substitution-principle.html) | [आधार क्लास आणि व्युत्पन्न क्लास 'IS A' सिद्धांतांचा पालन](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) + - [अधिक आकार](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) + - [ ] I - [इंटरफेस विभाजन सिद्धांत](http://www.oodesign.com/interface-segregation-principle.html) | ग्राहक वापरत नसलेल्या इंटरफेस्स लागू कराव्याचे प्रतिबद्ध नसावे + - [इंटरफेस विभाजन सिद्धांत 5 मिनिटांत (व्हिडिओ)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) + - [अधिक आकार](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) + - [ ] D -[डिपेंडन्सी इन्वर्शन सिद्धांत](http://www.oodesign.com/dependency-inversion-principle.html) | वस्तुदेहाच्या संरचनेत डिपेंडेन्सी कमी करा. + - [डिपेंडेन्सी इन्वर्शन प्रिन्सिपल म्हणजे काय आणि हे किती महत्वाचे आहे](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) + - [अधिक आकार](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) + +- **युनियन-फाइंड** + + - [अवलोकन](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) + - [नैव्हेज इम्प्लिमेंटेशन](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) + - [वृक्षे](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) + - [श्रेणीद्वारे एकीकरण](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) + - [पॅथ कम्प्रेशन](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) + - [विश्लेषण पर्याय](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + +- **अधिक डायनॅमिक प्रोग्रामिंग** (व्हिडिओ) + + - [6.006: डायनॅमिक प्रोग्रामिंग I: फिबोनाची, लहान फाटके](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) + - [6.006: डायनॅमिक प्रोग्रामिंग II: मजकूर ठेवणे, ब्लॅकजॅक](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) + - [6.006: DP III: पॅरेन्थेसिझेशन, एडिट डिस्टन्स, नॅप्सॅक](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) + - [6.006: DP IV: गिटार फिंगरिंग, टेट्रिस, सुपर मारियो ब्रोस.](https://www.youtube.com/watch?v=i9OAOk0CUQE&ab_channel=MITOpenCourseWare) + - [6.046: डायनॅमिक प्रोग्रामिंग आणि उन्नत DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [6.046: डायनॅमिक प्रोग्रामिंग: सर्व पॅअर्स लहान फाटके](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) + - [6.046: डायनॅमिक प्रोग्रामिंग (विद्यार्थी उच्चारण)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) + +- **उन्नत ग्राफ प्रक्रिया** (व्हिडिओ) + + - [सिंक्रोनस वितरित ऍल्गोरिदम्स: सममितीची उत्कृष्टता. सर्वात कमी फाटके स्पॅनिंग झाडे](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) + - [असिंक्रोनस वितरित ऍल्गोरिदम्स: सर्वात कमी फाटके स्पॅनिंग झाडे](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) + +- MIT **प्रायव्हाबिलिटी** (मॅथी, आणि धीरे जाऊन, ज्याने गणितीय प्राण्यांसाठी चांगलं आहे) (व्हिडिओ): + + - [MIT 6.042J - प्रायव्हाबिलिटी परिचय](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) + - [MIT 6.042J - अटील प्रायव्हाबिलिटी](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) + - [MIT 6.042J - स्वतंत्रता](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) + - [MIT 6.042J - रॅन्डम व्हेरिअबल्स](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) + - [MIT 6.042J - अपेक्षिती I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) + - [MIT 6.042J - अपेक्षिती II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) + - [MIT 6.042J - मोठी दुर्व्यासने](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) + - [MIT 6.042J - रॅन्डम वॉक्स](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) + +- [साइमन्सन: परिसंचारी ऍल्गोरिदम (व्हिडिओ)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) + +- **स्ट्रिंग मॅचिंग** + - रबिन-कार्प (व्हिडिओ): + - [रबिन कार्प ऍल्गोरिदम](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) + - [पूर्वगणना](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) + - [ऑप्टिमायझेशन: अंमलाने आणि विश्लेषण](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - [टेबल डबलिंग, कार्प-रबिन](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) + - [रोलिंग हॅशेस, अमोर्टाईज्ड विश्लेषण](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) + - क्नुथ-मोर्रिस-प्रॅट (केएमपी): + - [क्नुथ-मोर्रिस-प्रॅट (केएमपी) स्ट्रिंग मॅचिंग ऍल्गोरिदम](https://www.youtube.com/watch?v=5i7oKodCRJo) + - बॉयर-मूर स्ट्रिंग शोध ऍल्गोरिदम + - [बॉयर-मूर स्ट्रिंग शोध ऍल्गोरिदम](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) + - [अधिक स्त्रिंग शोध बॉयर-मूर-हॉर्सपूल ऍल्गोरिदम्स (व्हिडिओ)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Coursera: स्ट्रिंग्सवरील ऍल्गोरिदम](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) + - कडेवार, पण कडे केएमपी प्रोक्रियेबद्दल आधीच जात असताना हे अधिक जटिल झाले आहे. + - ट्रायज़बद्दल छान स्पष्टीकरण. + - वजनाबद्दल जाणून घेण्यात आलं. +- **क्रमवारी** + + - स्टॅनफोर्ड कक्षा याद्यासृष्टी: + - [व्याख्यान 15 | प्रोग्रामिंग अलगोरिथम्स (व्हिडिओ)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [व्याख्यान 16 | प्रोग्रामिंग अलगोरिथम्स (व्हिडिओ)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - शै साइमन्सन: + - [ऍल्गोरिदम्स - क्रमवारी - व्याख्यान 2 (व्हिडिओ)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [ऍल्गोरिदम्स - क्रमवारी II - व्याख्यान 3 (व्हिडिओ)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - स्टीवन स्कीना कक्षा याद्यासृष्टी: + - [CSE373 2020 - मर्जसॉर्ट/क्विकसॉर्ट (व्हिडिओ)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - लिनिअर क्रमवारी (व्हिडिओ)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + +- NAND टू टेट्रिस: [प्रथम सिद्धांतांपासून एक सजीव कंप्युटर बांधा](https://www.coursera.org/learn/build-a-computer) + +## व्हिडिओ सिरीज + +आराम करा आणि आनंद घ्या. + +- [व्यक्तिमत्व प्रकल्पनांची सूची (प्रत्येक लघु आहेत)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + +- [x86 आर्किटेक्चर, अ‍ॅसेंबली, अ‍ॅप्लिकेशन्स (११ व्हिडिओ)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) + +- [MIT 18.06 लिनिअर अ‍ॅल्जेब्रा, स्प्रिंग २००५ (३५ व्हिडिओ)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) + +- [उत्कृष्ट - MIT कॅलकुलस पुनरावलोकन: एकच परिवर्तक कॅलकुलस](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) + +- [Algorithm Design Manual येथून Skiena व्हिडिओंचे व्याख्यान - CSE373 २०२० - अ‍ॅनालिसिस ऑफ अ‍ॅल्गोरिदम्स (२६ व्हिडिओ)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) + +- [UC Berkeley 61B (स्प्रिंग २०१४): डेटा संरचनांचे (२५ व्हिडिओ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) + +- [UC Berkeley 61B (फॉल २००६): डेटा संरचनांचे (३९ व्हिडिओ)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) + +- [UC Berkeley 61C: मशीन संरचनांचे (२६ व्हिडिओ)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) + +- [OOSE: UML आणि जावा वापरून सॉफ्टवेअर विकास (२१ व्हिडिओ)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + +- [MIT 6.004: संगणक संरचना (४९ व्हिडिओ)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) + +- [Carnegie Mellon - कॉम्प्यूटर आर्किटेक्चर व्याख्यान (३९ व्हिडिओ)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) + +- [MIT 6.006: अ‍ॅल्गोरिदम्समध्ये परिचय (४७ व्हिडिओ)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) + +- [MIT 6.033: कॉम्प्यूटर सिस्टम इंजिनिअरिंग (२२ व्हिडिओ)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) + +- [MIT 6.034 Artificial Intelligence, फॉल २०१० (३० व्हिडिओ)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) + +- [MIT 6.042J: कॉम्प्यूटर सायन्ससाठी गणित, फॉल २०१० (२५ व्हिडिओ)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) + +- [MIT 6.046: अ‍ॅल्गोरिदम डिझाईन आणि विश्लेषण (३४ व्हिडिओ)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + +- [MIT 6.824: वितारीत प्रणाली, स्प्रिंग २०२० (२० व्हिडिओ)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) + +- [MIT 6.851: उन्नत डेटा संरचना (२२ व्हिडिओ)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) + +- [MIT 6.854: उन्नत अ‍ॅल्गोरिदम्स, स्प्रिंग २०१६ (२४ व्हिडिओ)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) + +- [हार्वर्ड COMPSCI 224: उन्नत अ‍ॅल्गोरिदम्स (२५ व्हिडिओ)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) + +- [MIT 6.858 कॉम्प्यूटर सिस्टम सुरक्षा, फॉल २०१४](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + +- [स्टॅनफोर्ड: प्रोग्रामिंग पॅरॅडाईम्स (२७ व्हिडिओ)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) + +- [क्रिप्टोग्राफीला परिचय Christof Paar यांकडून](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) + + - [पाठ्यक्रम वेबसाइट सह स्लाइड्ज आणि समस्या सेट्स](http://www.crypto-textbook.com/) + +- [Mining Massive Datasets - स्टॅनफोर्ड युनिव्हर्सिटी (९४ व्हिडिओ)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) + +- [ग्राफ थियरी Sarada Herke यांकडून (६७ व्हिडिओ)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## संगणक विज्ञान पाठ्यक्रम + +- [ऑनलाइन संगणक विज्ञान पाठ्यक्रमांची निर्देशिका](https://github.com/open-source-society/computer-science) +- [संगणक विज्ञान पाठ्यक्रमांची निर्देशिका (अनेकांसह ऑनलाइन व्याख्यान)](https://github.com/prakhar1989/awesome-courses) + +## अल्गोरिदम अमलात्मककरण + +- [प्रिंसटन विश्वविद्यालयने अनेक अल्गोरिदम अमलात्मककरण](https://algs4.cs.princeton.edu/code) + +## कागदपत्रे + +- [क्लासिक कागदपत्रांची प्रेमक्षेत्रं?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: संचारण सरलक्रम प्रक्रिया](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go मध्ये अमलात्मक](https://godoc.org/github.com/thomas11/csp) +- [2003: गूगल फाइल प्रणाली](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 मध्ये कॉलोसस स्थानांतरित +- [2004: मॅपरिड्यूस: मोठ्या क्लस्टरवर सरलीकृत डेटा प्रक्रिया](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - अधिकांशतः क्लाउड डेटाफ्लोव्हवर बदलले? +- [2006: बिगटेबल: संरचित डेटासाठी वितरित संग्रहण प्रणाली](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: छट्टी फडकन सेवा: संलग्न वितरित प्रणालीसाठी](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: डिनामो: अमेझॉनची अत्यंत उपलब्ध की-मूल्य मालमत्ता केंद्र](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - डिनामो कागदपत्राने नोएस्क्यूएल क्रांतीचे सुरवात केले +- [2007: प्रत्येक कंप्यूटर चा मेमोरीवारी जाणारा वाचनीय असलेलं काही (अत्यंत लांब, आणि लेखक काही विभागांचा कड़काट जाहीर करण्याचा प्रोत्साहन करतो)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: एक वेगवान पत्ता स्वास्थ्य तपासणीकर्ता: + - [कागदपत्र](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [व्हिडिओ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: स्पॅनर: गूगलचं जागतिकपटल डेटाबेस: + - [कागदपत्र](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [व्हिडिओ](https://www.usenix.org/node/170855) +- [2015: गूगलवरील सतत पायपलाइन्स](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: मोठ्या पैमान्यात उपलब्ध: गूगलच्या विज्ञापनांसाठी डेटा संरचना इंफ्रास्ट्रक्चर तयार करणे](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: डेव्हलपर्स कोड सारख्या शोधतात कसं: एक प्रकरण अभ्यास](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- अधिक कागदपत्र: [1,000 कागदपत्र](https://github.com/0voice/computer_expert_paper) + +## परवाना + +[CC-BY-SA-4.0](./LICENSE.txt) From 9e98396bf0b52b9b9e65d48ca70f921e63f37df8 Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 06:09:36 +0530 Subject: [PATCH 832/857] Kazakh translations From j0pgrm's Kazakh branch Co-Authored-By: j0pgrm <109052480+j0pgrm@users.noreply.github.com> --- translations/README-kk.md | 2692 +++++++++++++------------------------ 1 file changed, 936 insertions(+), 1756 deletions(-) diff --git a/translations/README-kk.md b/translations/README-kk.md index 655d241c92..b857da2ae5 100644 --- a/translations/README-kk.md +++ b/translations/README-kk.md @@ -1,37 +1,74 @@ -# Coding Interview University +# Кодтау сұхбат университеті -> I originally created this as a short to-do list of study topics for becoming a software engineer, -> but it grew to the large list you see today. After going through this study plan, [I got hired -> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> You probably won't have to study as much as I did. Anyway, everything you need is here. +> Мен мұны бастапқыда бағдарламалық жасақтама инженері болу үшін оқу тақырыптарының қысқаша тізімі ретінде жасадым, +> бірақ ол бүгін көріп отырған үлкен тізімге дейін өсті. Осы оқу жоспарын орындағаннан кейін [мен жұмысқа қабылдандым +> Amazon-да бағдарламалық жасақтаманы әзірлеу инженері ретінде](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Мен сияқты көп оқудың қажеті жоқ шығар. Қалай болғанда да, сізге қажет нәрсенің бәрі осында. > -> I studied about 8-12 hours a day, for several months. This is my story: [Why I studied full-time for 8 months for a Google interview](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +> Мен бірнеше ай бойы күніне 8-12 сағат оқыдым. Бұл менің оқиғам: [Google сұхбаты үшін неліктен мен 8 ай бойы толық уақытты оқыдым](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) > -> **Please Note:** You won't need to study as much as I did. I wasted a lot of time on things I didn't need to know. More info about that below. I'll help you get there without wasting your precious time. +> **Назар аударыңыз:** Сізге мен сияқты көп оқудың қажеті жоқ. Мен көп уақытымды қажет емес нәрселерге жұмсадым. Бұл туралы қосымша ақпарат төменде. Мен сізге қымбат уақытыңызды жоғалтпай жетуге көмектесемін. > -> The items listed here will prepare you well for a technical interview at just about any software company, -> including the giants: Amazon, Facebook, Google, and Microsoft. +> Мұнда келтірілген элементтер сізді кез келген бағдарламалық жасақтама компаниясында техникалық сұхбатқа жақсы дайындайды, +> алыптарды қоса алғанда: Amazon, Facebook, Google және Microsoft. +# Kodtaw suxbat wnïversïteti + +> Men munı bastapqıda bağdarlamalıq jasaqtama ïnjeneri bolw üşin oqw taqırıptarınıñ qısqaşa tizimi retinde jasadım, +> biraq ol bügin körip otırğan ülken tizimge deyin östi. Osı oqw josparın orındağannan keyin [men jumısqa qabıldandım +> Amazon-da bağdarlamalıq jasaqtamanı äzirlew ïnjeneri retinde](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +> Men sïyaqtı köp oqwdıñ qajeti joq şığar. Qalay bolğanda da, sizge qajet närseniñ bäri osında. > -> *Best of luck to you!* +> Men birneşe ay boyı künine 8-12 sağat oqıdım. Bul meniñ oqïğam: [Google suxbatı üşin nelikten men 8 ay boyı tolıq waqıttı oqıdım](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) +> +> **Nazar awdarıñız:** Sizge men sïyaqtı köp oqwdıñ qajeti joq. Men köp waqıtımdı qajet emes närselerge jumsadım. Bul twralı qosımşa aqparat tömende. Men sizge qımbat waqıtıñızdı joğaltpay jetwge kömektesemin. +> +> Munda keltirilgen élementter sizdi kez kelgen bağdarlamalıq jasaqtama kompanïyasında texnïkalıq suxbatqa jaqsı dayındaydı, +> alıptardı qosa alğanda: Amazon, Facebook, Google jäne Microsoft. -
-Translations: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Polish](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) -- [Japanese (日本語)](translations/README-ja.md) -- [Russian](translations/README-ru.md) -- [German](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) -- [Uzbek](translations/README-uz.md) -- [Bulgarian](translations/README-bg.md) + +> +> *Сәттілік сізге!* + +<толығырақ> +Аудармалар: + +- [中文版本](аудармалар/README-cn.md) +- [Tiếng Việt - вьетнамша](аудармалар/README-vi.md) +- [Español](аудармалар/README-es.md) +- [Português Brasileiro](аудармалар/README-ptbr.md) +- [Польша](аудармалар/README-pl.md) +- [繁體中文](аудармалар/README-tw.md) +- [Жапондық (日本語)](аудармалар/README-ja.md) +- [Орыс](аудармалар/README-ru.md) +- [Неміс](аудармалар/README-de.md) +- [Бахаса Индонезия](аудармалар/README-id.md) +- [ខ្មែរ - кхмер](аудармалар/README-kh.md) +- [Өзбек](аудармалар/README-uz.md) +- [Болгар](аудармалар/README-bg.md) - [বাংলা - Bangla](translations/README-bn.md) +
+> +> *Sättilik sizge!* + + +Awdarmalar: + +- [zhōng wén bǎn běn](awdarmalar/README-cn.md) +- [Tiếng Việt - vetnamşa](awdarmalar/README-vi.md) +- [Español](awdarmalar/README-es.md) +- [Português Brasileiro](awdarmalar/README-ptbr.md) +- [Polşa](awdarmalar/README-pl.md) +- [fán tǐ zhōng wén](awdarmalar/README-tw.md) +- [Japondıq (rì běn yǔ)](awdarmalar/README-ja.md) +- [Orıs](awdarmalar/README-ru.md) +- [Nemis](awdarmalar/README-de.md) +- [Baxasa Ïndonezïya](awdarmalar/README-id.md) +- [ខ្មែរ - kxmer](awdarmalar/README-kh.md) +- [Özbek](awdarmalar/README-uz.md) +- [Bolgar](awdarmalar/README-bg.md) +- [bānlā - Bangla](translations/README-bn.md) +
@@ -50,6 +87,7 @@ - [Greek](https://github.com/jwasham/coding-interview-university/issues/166) - [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) - [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164)
@@ -61,17 +99,6 @@

Special thanks to:

-

- -

-
- Founded in 2018, OSS Capital is the first and only venture capital platform focused
exclusively on supporting early-stage COSS (commercial open source) startup founders.
-
-
-

-

-## What is it? +## Бұл не? + +![Тақтадағы кодтау - HBO арнасының Силикон алқабынан](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) + +Бұл менің ірі компанияда бағдарламалық жасақтама инженері болу үшін көп айлық оқу жоспарым. + +**Міндетті:** +* Кодтау бойынша аз тәжірибе (айнымалылар, циклдар, әдістер/функциялар және т.б.) +* Сабыр +* Уақыт + +Бұл веб-әзірлеуге емес, **бағдарламалық қамтамасыз ету инженериясына** арналған оқу жоспары екенін ескеріңіз. Google, Amazon сияқты ірі бағдарламалық қамтамасыз ету компаниялары, +Facebook және Microsoft бағдарламалық жасақтаманы веб-әзірлеуден өзгеше деп санайды. Мысалы, Amazon бар +Frontend инженерлері (FEE) және бағдарламалық жасақтаманы әзірлеу инженерлері (SDE). Бұл 2 бөлек рөл және сұхбат +олар бірдей болмайды, өйткені әрқайсысының өз құзыреті бар. Бұл компаниялар үшін информатика білімі қажет +бағдарламалық қамтамасыз етуді әзірлеу/инженерлік рөлдер. -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) +--- + +## Мазмұны + +### Оқу жоспары -This is my multi-month study plan for becoming a software engineer for a large company. +- [Бұл не?](#не-ол) +- [Неге оны пайдалану керек?](#why-use-it) +- [Қалай пайдалану керек](#қалай-пайдалану керек) +- [Өзіңізді жеткілікті ақылды емес деп санамаңыз](#сізді жеткілікті түрде ақылды-сезінбеңіз) +- [Бейне ресурстары туралы ескертпе](#a-note-about-video-resources) +- [Бағдарламалау тілін таңдау](#choose-a-programming-language) +- [Дерек құрылымдары мен алгоритмдеріне арналған кітаптар](#деректер құрылымдары мен алгоритмдеріне арналған кітаптар) +- [Интервьюге дайындық кітаптары](#interview-prep-books) +- [Менің қателіктерімді жасамаңыз](#қателіктерімді-жасамаңыз) +- [Жабықпен сіз көрмейсіз](#сіз-көрмейтін-қамтылған) +- [Күнделікті жоспар](#күнделікті-жоспар) +- [Сұрақтарды кодтау тәжірибесі](#coding-question-practice) +- [Кодтау мәселелері](#coding-problems) +## Bul ne? -**Required:** -* A little experience with coding (variables, loops, methods/functions, etc) -* Patience -* Time +![Taqtadağı kodtaw - HBO arnasınıñ Sïlïkon alqabınan](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from web development. For example, Amazon has -Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for -them will not be the same, as each has its own competencies. These companies require computer science knowledge for -software development/engineering roles. +Bul meniñ iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolw üşin köp aylıq oqw josparım. + +**Mindetti:** +* Kodtaw boyınşa az täjirïbe (aynımalılar, cïkldar, ädister/fwnkcïyalar jäne t.b.) +* Sabır +* Waqıt + +Bul veb-äzirlewge emes, **bağdarlamalıq qamtamasız etw ïnjenerïyasına** arnalğan oqw josparı ekenin eskeriñiz. Google, Amazon sïyaqtı iri bağdarlamalıq qamtamasız etw kompanïyaları, +Facebook jäne Microsoft bağdarlamalıq jasaqtamanı veb-äzirlewden özgeşe dep sanaydı. Mısalı, Amazon bar +Frontend ïnjenerleri (FEE) jäne bağdarlamalıq jasaqtamanı äzirlew ïnjenerleri (SDE). Bul 2 bölek röl jäne suxbat +olar birdey bolmaydı, öytkeni ärqaysısınıñ öz quzıreti bar. Bul kompanïyalar üşin ïnformatïka bilimi qajet +bağdarlamalıq qamtamasız etwdi äzirlew/ïnjenerlik rölder. --- -## Table of Contents - -### The Study Plan - -- [What is it?](#what-is-it) -- [Why use it?](#why-use-it) -- [How to use it](#how-to-use-it) -- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) -- [A Note About Video Resources](#a-note-about-video-resources) -- [Choose a Programming Language](#choose-a-programming-language) -- [Books for Data Structures and Algorithms](#books-for-data-structures-and-algorithms) -- [Interview Prep Books](#interview-prep-books) -- [Don't Make My Mistakes](#dont-make-my-mistakes) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [The Daily Plan](#the-daily-plan) -- [Coding Question Practice](#coding-question-practice) -- [Coding Problems](#coding-problems) - -### Topics of Study - -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [How computers process a program](#how-computers-process-a-program) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Testing](#testing) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) +## Mazmunı + +### Oqw josparı + +- [Bul ne?](#ne-ol) +- [Nege onı paydalanw kerek?](#why-use-it) +- [Qalay paydalanw kerek](#qalay-paydalanw kerek) +- [Öziñizdi jetkilikti aqıldı emes dep sanamañız](#sizdi jetkilikti türde aqıldı-sezinbeñiz) +- [Beyne reswrstarı twralı eskertpe](#a-note-about-video-resources) +- [Bağdarlamalaw tilin tañdaw](#choose-a-programming-language) +- [Derek qurılımdarı men algorïtmderine arnalğan kitaptar](#derekter qurılımdarı men algorïtmderine arnalğan kitaptar) +- [Ïntervyuge dayındıq kitaptarı](#interview-prep-books) +- [Meniñ qatelikterimdi jasamañız](#qatelikterimdi-jasamañız) +- [Jabıqpen siz körmeysiz](#siz-körmeytin-qamtılğan) +- [Kündelikti jospar](#kündelikti-jospar) +- [Suraqtardı kodtaw täjirïbesi](#coding-question-practice) +- [Kodtaw mäseleleri](#coding-problems) + +### Оқу тақырыптары + +- [Алгоритмдік күрделілік / Үлкен-О / Асимптотикалық талдау](#алгоритмдік-күрделілік--үлкен-о--ассимптотикалық-анализ) +- [Дерек құрылымдары](#деректер құрылымдары) + - [Массивтер](#массив) + - [Байланыстырылған тізімдер](#linked-lists) + - [Стек](#стек) + - [Кезек](#кезек) + - [Хэш кестесі](#хэш-кесте) +- [Қосымша білім](#көп-білім) + - [Екілік іздеу](#екілік іздеу) + - [биттік операциялар](#биттік операциялар) +- [Ағаштар](#ағаштар) + - [Ағаштар - Жазбалар және фон](#ағаштар---жазбалар--фон) + - [Екілік іздеу ағаштары: BSTs](#binary-search-trees-bsts) + - [Үйме / Басымдық кезек / Екілік үйме](#үйме--басымдылық-кезегі--екілік-үйме) + - теңдестірілген іздеу ағаштары (детальдар емес, жалпы түсінік) + - өтулер: алдын ала тапсырыс, тапсырыс, кейінгі тапсырыс, BFS, DFS +- [Сұрыптау](#сұрыптау) + - таңдау + - кірістіру + - үйінді сұрыптау + - жылдам сұрыптау + - біріктіру сұрыптауы +- [Графиктер](#график) + - бағыттады + - бағытталмаған + - көршілестік матрицасы + - іргелес тізім + - өтулер: BFS, DFS +- [Одан да көп білім](#ven-more-bilgi) + - [Рекурсия](#рекурсия) + - [Динамикалық бағдарламалау](#динамикалық-бағдарламалау) + - [Дизайн үлгілері](#design-patterns) + - [Комбинаторика (n таңдау k) & Ықтималдық](#комбинаторика-n-таңдау-k--ықтималдық) + - [NP, NP-Толық және жуықтау алгоритмдері](#np-np-толық-және жуықтау-алгоритмдері) + - [Компьютерлер бағдарламаны қалай өңдейді](#қалай-компьютерлер-бағдарламаны өңдейді) + - [Кэштер](#кэштер) + - [Процестер мен ағындар](#processes-and-threads) + - [Тестілеу](#тестілеу) + - [Жолды іздеу және манипуляциялар](#string-searching--манипуляциялар) + - [Әрекет](# тырысады) + - [Жылжымалы нүкте сандары](#жылжымалы нүкте сандары) + - [Юникод](#уникод) - [Endianness](#endianness) - [Networking](#networking) -- [Final Review](#final-review) - -### Getting the Job - -- [Update Your Resume](#update-your-resume) -- [Find a Job](#find-a-job) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - -**---------------- Everything below this point is optional ----------------** - -### Optional Extra Topics & Resources - -- [Additional Books](#additional-books) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory-videos) - - [Parity & Hamming Code](#parity--hamming-code-videos) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) +- [Қорытынды шолу](#соңғы шолу) + +### Жұмысқа орналасу + +- [Түйіндемеңізді жаңарту](#жаңарту-өз түйіндемеңіз) +- [Жұмыс табу](#жұмыс табу) +- [Интервью процесі және жалпы сұхбатқа дайындық](#interview-process--жалпы-интервью-дайындық) +- [Сұхбат қашан келетінін ойлаңыз](#сұхбат келгенде-ойланыңыз) +- [Сұхбат алушыға сұрақтарыңыз бар](#сұхбат алушыға-сұрақтарыңыз бар) +- [Жұмысқа қол жеткізгеннен кейін](#бір рет-жұмысқа-алғаннан кейін) + +**---------------- Осы тармақтың астындағылардың барлығы міндетті емес ----------------** +### Oqw taqırıptarı + +- [Algorïtmdik kürdelilik / Ülken-O / Asïmptotïkalıq taldaw](#algorïtmdik-kürdelilik--ülken-o--assïmptotïkalıq-analïz) +- [Derek qurılımdarı](#derekter qurılımdarı) + - [Massïvter](#massïv) + - [Baylanıstırılğan tizimder](#linked-lists) + - [Stek](#stek) + - [Kezek](#kezek) + - [Xéş kestesi](#xéş-keste) +- [Qosımşa bilim](#köp-bilim) + - [Ekilik izdew](#ekilik izdew) + - [bïttik operacïyalar](#bïttik operacïyalar) +- [Ağaştar](#ağaştar) + - [Ağaştar - Jazbalar jäne fon](#ağaştar---jazbalar--fon) + - [Ekilik izdew ağaştarı: BSTs](#binary-search-trees-bsts) + - [Üyme / Basımdıq kezek / Ekilik üyme](#üyme--basımdılıq-kezegi--ekilik-üyme) + - teñdestirilgen izdew ağaştarı (detaldar emes, jalpı tüsinik) + - ötwler: aldın ala tapsırıs, tapsırıs, keyingi tapsırıs, BFS, DFS +- [Surıptaw](#surıptaw) + - tañdaw + - kiristirw + - üyindi surıptaw + - jıldam surıptaw + - biriktirw surıptawı +- [Grafïkter](#grafïk) + - bağıttadı + - bağıttalmağan + - körşilestik matrïcası + - irgeles tizim + - ötwler: BFS, DFS +- [Odan da köp bilim](#ven-more-bilgi) + - [Rekwrsïya](#rekwrsïya) + - [Dïnamïkalıq bağdarlamalaw](#dïnamïkalıq-bağdarlamalaw) + - [Dïzayn ülgileri](#design-patterns) + - [Kombïnatorïka (n tañdaw k) & Iqtïmaldıq](#kombïnatorïka-n-tañdaw-k--ıqtïmaldıq) + - [NP, NP-Tolıq jäne jwıqtaw algorïtmderi](#np-np-tolıq-jäne jwıqtaw-algorïtmderi) + - [Kompyuterler bağdarlamanı qalay öñdeydi](#qalay-kompyuterler-bağdarlamanı öñdeydi) + - [Kéşter](#kéşter) + - [Procester men ağındar](#processes-and-threads) + - [Testilew](#testilew) + - [Joldı izdew jäne manïpwlyacïyalar](#string-searching--manïpwlyacïyalar) + - [Äreket](# tırısadı) + - [Jıljımalı nükte sandarı](#jıljımalı nükte sandarı) + - [Yunïkod](#wnïkod) + - [Endianness](#endianness) + - [Networking](#networking) +- [Qorıtındı şolw](#soñğı şolw) + +### Jumısqa ornalasw + +- [Tüyindemeñizdi jañartw](#jañartw-öz tüyindemeñiz) +- [Jumıs tabw](#jumıs tabw) +- [Ïntervyu procesi jäne jalpı suxbatqa dayındıq](#interview-process--jalpı-ïntervyu-dayındıq) +- [Suxbat qaşan keletinin oylañız](#suxbat kelgende-oylanıñız) +- [Suxbat alwşığa suraqtarıñız bar](#suxbat alwşığa-suraqtarıñız bar) +- [Jumısqa qol jetkizgennen keyin](#bir ret-jumısqa-alğannan keyin) + +**---------------- Osı tarmaqtıñ astındağılardıñ barlığı mindetti emes ----------------** + +### Қосымша қосымша тақырыптар мен ресурстар + +- [Қосымша кітаптар](#қосымша кітаптар) +- [Жүйені жобалау, масштабтау, деректерді өңдеу](#жүйе дизайны-масштабтау-деректерді өңдеу) (4 жылдан астам тәжірибеңіз болса) +- [Қосымша оқыту](#қосымша-оқыту) + - [Құрастырушылар](#компиляторлар) + - [Emacs және vi(m)](#emacs-and-vim) + - [Unix пәрмен жолы құралдары](#unix-командалық жол құралдары) + - [Ақпарат теориясы](#ақпарат-теория-бейнелер) + - [Паритет және Хамминг коды](#parity--hamming-code-videos) + - [Энтропия](#энтропия) + - [Криптография](#криптография) + - [Сығу](#қысу) + - [Компьютер қауіпсіздігі](#компьютер қауіпсіздігі) + - [Қоқыс жинау](#қоқыс жинау) + - [Параллельді бағдарламалау](#параллельді бағдарламалау) + - [Хабар алмасу, сериялау және кезекке қою жүйелері](#хабарлама-серияландыру-және-кезектеу-жүйелері) - [A*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Fast Furier Transform](#fast-fourier-transform) + - [Блум сүзгісі](#блум-сүзгісі) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Disjoint Sets & Union Find](#disjoint-sets--union-find) - - [Math for Fast Processing](#math-for-fast-processing) - - [Treap](#treap) - - [Linear Programming](#linear-programming-videos) - - [Geometry, Convex hull](#geometry-convex-hull-videos) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) -- [Papers](#papers) + - [Жергілікті-сезімтал хэштеу](#жергілікті-сезімтал-хэшинг) + - [ван Эмде Боас ағаштары](#ван-емде-боас-ағаштар) + - [Толықтырылған деректер құрылымдары](#augmented-data-structures) + - [Балансталған іздеу ағаштары](#балансталған іздеу ағаштары) + - AVL ағаштары + - Ағаштар + - қызыл/қара ағаштар + - 2-3 іздеу ағаштары + - 2-3-4 ағаш (2-4 ағаш) + - N-ары (Қ-ары, М-ары) ағаштары + - В-ағаштар + - [k-D ағаштары](#k-d-ағаштар) + - [Тізімдерді өткізіп жіберу](#өткізу тізімдері) + - [Желі ағындары](#желі ағындары) + - [Ажыратылған жиындар және одақтарды табу](#disjoint-жинақтар--одақ-табу) + - [Жылдам өңдеуге арналған математика](#жылдам өңдеуге арналған математика) + - [Треап](#treap) + - [Сызықтық бағдарламалау](#linear-бағдарламалау-бейнелер) + - [Геометрия, дөңес корпус](#геометрия-дөңес-корпус-бейнелері) + - [Дискретті математика](#дискретті-математика) +- [Кейбір тақырыптар бойынша қосымша мәліметтер](кейбір тақырыптар бойынша #қосымша-деталь) +- [Бейне сериясы](#бейне сериясы) +- [Информатика курстары](#компьютер-ғылым-курстары) +- [Қағаздар](#қағаз) +### Qosımşa qosımşa taqırıptar men reswrstar + +- [Qosımşa kitaptar](#qosımşa kitaptar) +- [Jüyeni jobalaw, masştabtaw, derekterdi öñdew](#jüye dïzaynı-masştabtaw-derekterdi öñdew) (4 jıldan astam täjirïbeñiz bolsa) +- [Qosımşa oqıtw](#qosımşa-oqıtw) + - [Qurastırwşılar](#kompïlyatorlar) + - [Emacs jäne vi(m)](#emacs-and-vim) + - [Unix pärmen jolı quraldarı](#unix-komandalıq jol quraldarı) + - [Aqparat teorïyası](#aqparat-teorïya-beyneler) + - [Parïtet jäne Xammïng kodı](#parity--hamming-code-videos) + - [Éntropïya](#éntropïya) + - [Krïptografïya](#krïptografïya) + - [Sığw](#qısw) + - [Kompyuter qawipsizdigi](#kompyuter qawipsizdigi) + - [Qoqıs jïnaw](#qoqıs jïnaw) + - [Paralleldi bağdarlamalaw](#paralleldi bağdarlamalaw) + - [Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri](#xabarlama-serïyalandırw-jäne-kezektew-jüyeleri) + - [A*](#a) + - [Fast Furier Transform](#fast-fourier-transform) + - [Blwm süzgisi](#blwm-süzgisi) + - [HyperLogLog](#hyperloglog) + - [Jergilikti-sezimtal xéştew](#jergilikti-sezimtal-xéşïng) + - [van Émde Boas ağaştarı](#van-emde-boas-ağaştar) + - [Tolıqtırılğan derekter qurılımdarı](#augmented-data-structures) + - [Balanstalğan izdew ağaştarı](#balanstalğan izdew ağaştarı) + - AVL ağaştarı + - Ağaştar + - qızıl/qara ağaştar + - 2-3 izdew ağaştarı + - 2-3-4 ağaş (2-4 ağaş) + - N-arı (Q-arı, M-arı) ağaştarı + - V-ağaştar + - [k-D ağaştarı](#k-d-ağaştar) + - [Tizimderdi ötkizip jiberw](#ötkizw tizimderi) + - [Jeli ağındarı](#jeli ağındarı) + - [Ajıratılğan jïındar jäne odaqtardı tabw](#disjoint-jïnaqtar--odaq-tabw) + - [Jıldam öñdewge arnalğan matematïka](#jıldam öñdewge arnalğan matematïka) + - [Treap](#treap) + - [Sızıqtıq bağdarlamalaw](#linear-bağdarlamalaw-beyneler) + - [Geometrïya, döñes korpws](#geometrïya-döñes-korpws-beyneleri) + - [Dïskretti matematïka](#dïskretti-matematïka) +- [Keybir taqırıptar boyınşa qosımşa mälimetter](keybir taqırıptar boyınşa #qosımşa-detal) +- [Beyne serïyası](#beyne serïyası) +- [Ïnformatïka kwrstarı](#kompyuter-ğılım-kwrstarı) +- [Qağazdar](#qağaz) + +## Оны не үшін қолдану керек? + +Егер сіз ірі компанияда бағдарламалық жасақтама инженері болып жұмыс істегіңіз келсе, бұл сізге білу керек нәрселер. + +Егер сіз мен сияқты информатика бойынша ғылыми дәреже алуды жіберіп алсаңыз, бұл сізді қуып жетіп, өміріңіздің төрт жылын сақтайды. + +Мен бұл жобаны бастаған кезде, мен үйіндіден стекті білмедім, Big-O ештеңе білмедім, ағаштар туралы ештеңе білмедім немесе қалай істеу керектігін білмедім. +графикті айналып өту. Егер мен сұрыптау алгоритмін кодтауым керек болса, бұл қорқынышты болар еді деп айта аламын. +Мен пайдаланған әрбір деректер құрылымы тілге салынған және мен олардың қалай жұмыс істейтінін білмедім +мүлде капюшонның астында. Мен іске қосып жатқан процесс «шығын» бермейінше, жадты ешқашан басқаруға тура келмеді +жад» қатесі пайда болды, содан кейін уақытша шешім табуым керек еді. Мен өмірімде бірнеше көп өлшемді массивтерді қолдандым және +мыңдаған ассоциативті массивтер, бірақ мен ешқашан деректер құрылымдарын нөлден жасаған емеспін. + +Бұл ұзақ жоспар. Бұл сізге айлар алуы мүмкін. Егер сіз мұның көп бөлігімен таныс болсаңыз, бұл сізге әлдеқайда аз уақыт алады. + +## Оны қалай пайдалануға болады + +Төмендегілердің бәрі контур, сондықтан элементтерді жоғарыдан төменге қарай ретімен шешу керек. + +Мен GitHub-тың арнайы белгілеу дәмін, соның ішінде орындалу барысын бақылау үшін тапсырмалар тізімдерін пайдаланамын. + - [GitHub-flavored markdown туралы толығырақ](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + +### Егер сіз git қолданбасын пайдаланғыңыз келмесе + +Бұл бетте жоғарғы жағындағы Код түймесін басыңыз, содан кейін «ZIP жүктеп алу» түймесін басыңыз. Файлды ашыңыз және мәтіндік файлдармен жұмыс істей аласыз. + +Белгілеуді түсінетін код өңдегішінде ашық болсаңыз, барлығы жақсы пішімделгенін көресіз. + +![Репоны zip файлы ретінде қалай жүктеп алуға болады](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) + +### Егер сіз gitпен ыңғайлы болсаңыз + +Мынадай элементтерді тексеру үшін жаңа тармақ жасаңыз, жақшаға x белгісін қойыңыз: [x] + +1. ***GitHub репосын ашыңыз:*** `https://github.com/jwasham/coding-interview-university` Fork түймесін басу арқылы. +## Onı ne üşin qoldanw kerek? + +Eger siz iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolıp jumıs istegiñiz kelse, bul sizge bilw kerek närseler. ---- +Eger siz men sïyaqtı ïnformatïka boyınşa ğılımï däreje alwdı jiberip alsañız, bul sizdi qwıp jetip, ömiriñizdiñ tört jılın saqtaydı. -## Why use it? +Men bul jobanı bastağan kezde, men üyindiden stekti bilmedim, Big-O eşteñe bilmedim, ağaştar twralı eşteñe bilmedim nemese qalay istew kerektigin bilmedim. +grafïkti aynalıp ötw. Eger men surıptaw algorïtmin kodtawım kerek bolsa, bul qorqınıştı bolar edi dep ayta alamın. +Men paydalanğan ärbir derekter qurılımı tilge salınğan jäne men olardıñ qalay jumıs isteytinin bilmedim +mülde kapyuşonnıñ astında. Men iske qosıp jatqan process «şığın» bermeyinşe, jadtı eşqaşan basqarwğa twra kelmedi +jad» qatesi payda boldı, sodan keyin waqıtşa şeşim tabwım kerek edi. Men ömirimde birneşe köp ölşemdi massïvterdi qoldandım jäne +mıñdağan assocïatïvti massïvter, biraq men eşqaşan derekter qurılımdarın nölden jasağan emespin. -If you want to work as a software engineer for a large company, these are the things you have to know. +Bul uzaq jospar. Bul sizge aylar alwı mümkin. Eger siz munıñ köp böligimen tanıs bolsañız, bul sizge äldeqayda az waqıt aladı. -If you missed out on getting a degree in computer science, like I did, this will catch you up and save four years of your life. +## Onı qalay paydalanwğa boladı -When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, or anything about trees, or how to -traverse a graph. If I had to code a sorting algorithm, I can tell ya it would have been terrible. -Every data structure I had ever used was built into the language, and I didn't know how they worked -under the hood at all. I never had to manage memory unless a process I was running would give an "out of -memory" error, and then I'd have to find a workaround. I used a few multidimensional arrays in my life and -thousands of associative arrays, but I never created data structures from scratch. +Tömendegilerdiñ bäri kontwr, sondıqtan élementterdi joğarıdan tömenge qaray retimen şeşw kerek. -It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +Men GitHub-tıñ arnayı belgilew dämin, sonıñ işinde orındalw barısın baqılaw üşin tapsırmalar tizimderin paydalanamın. + - [GitHub-flavored markdown twralı tolığıraq](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) -## How to use it +### Eger siz git qoldanbasın paydalanğıñız kelmese -Everything below is an outline, and you should tackle the items in order from top to bottom. +Bul bette joğarğı jağındağı Kod tüymesin basıñız, sodan keyin «ZIP jüktep alw» tüymesin basıñız. Fayldı aşıñız jäne mätindik fayldarmen jumıs istey alasız. -I'm using GitHub's special markdown flavor, including tasks lists to track progress. +Belgilewdi tüsinetin kod öñdegişinde aşıq bolsañız, barlığı jaqsı pişimdelgenin köresiz. -**Create a new branch so you can check items like this, just put an x in the brackets: [x]** +![Reponı zip faylı retinde qalay jüktep alwğa boladı](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - Fork a branch and follow the commands below +### Eger siz gitpen ıñğaylı bolsañız -Fork the GitHub repo https://github.com/jwasham/coding-interview-university by clicking on the Fork button. +Mınaday élementterdi tekserw üşin jaña tarmaq jasañız, jaqşağa x belgisin qoyıñız: [x] -Clone to your local repo: +1. ***GitHub reposın aşıñız:*** `https://github.com/jwasham/coding-interview-university` Fork tüymesin basw arqılı. + +![GitHub репосын ашыңыз](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) + +1. Жергілікті репоға клондау: + + ``` git clone git@github.com:/coding-interview-university.git - git checkout -b progress - git remote add jwasham https://github.com/jwasham/coding-interview-university - git fetch --all + CD кодтау-сұхбат-университет + git checkout -b прогресс + git қашықтан jwasham қосу https://github.com/jwasham/coding-interview-university + git fetch --барлығы + ``` -Mark all boxes with X after you completed your changes: +1. Өзгерістерді аяқтағаннан кейін барлық ұяшықтарды X белгісімен белгілеңіз: - git add . - git commit -m "Marked x" + ``` + git қосу. + git commit -m «X белгіленген» git rebase jwasham/main - git push --set-upstream origin progress + git push --set-upstream бастапқы прогресті git push --force + ``` + +## Өзіңді жеткілікті ақылды емес деп санама + +- Табысты бағдарламалық жасақтама инженерлері ақылды, бірақ олардың көпшілігі жеткілікті ақылды емес деген сенімсіздікке ие. +- Келесі бейнелер осы сенімсіздікті жеңуге көмектесуі мүмкін: + - [Данышпан программист туралы миф](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [Жалғыз жүру қауіпті: технологиядағы көрінбейтін құбыжықтармен күресу](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Бейне ресурстар туралы ескертпе + +Кейбір бейнелер Coursera немесе EdX сыныбына тіркелу арқылы ғана қолжетімді. Бұлар MOOC деп аталады. +Кейде сабақтар сессияда болмайды, сондықтан сізге бірнеше ай күтуге тура келеді, сондықтан сізде кіру мүмкіндігі болмайды. + +Онлайн курс ресурстарын тегін және әрқашан қолжетімді жалпыға қолжетімді көздермен алмастыру тамаша болар еді, +мысалы, YouTube бейнелері (жақсырақ университет лекциялары), сондықтан сіз кез келген уақытта оларды оқи аласыз, +белгілі бір онлайн курс сессияда болғанда ғана емес. + +## Бағдарламалау тілін таңдаңыз + +Сізге кодтау сұхбаттары үшін бағдарламалау тілін таңдау керек, +бірақ сізге информатика ұғымдарын зерттеу үшін қолдануға болатын тілді табу қажет болады. + +Тіл бірдей болғаны дұрыс, сондықтан сізге тек біреуін білу керек. + +### Осы оқу жоспары үшін + +Мен оқу жоспарын жасаған кезде оның көп бөлігінде 2 тілді қолдандым: C және Python -[More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +* C: Өте төмен деңгей. Көрсеткіштермен және жадты бөлу/бөлумен жұмыс істеуге мүмкіндік береді, осылайша деректер құрылымдарын сезінесіз + және сүйектеріңіздегі алгоритмдер. Python немесе Java сияқты жоғары деңгейлі тілдерде олар сізден жасырылады. Күнделікті жұмыста бұл керемет, + бірақ сіз осы төмен деңгейлі деректер құрылымдарының қалай салынғанын үйреніп жатқанда, металға жақын сезіну өте жақсы. + - C барлық жерде бар. Сіз оқу кезінде мысалдарды кітаптардан, лекциялардан, бейнелерден, *барлық жерде* көресіз. + - [The C бағдарламалау тілі, 2-том](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) +![GitHub reposın aşıñız](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -## Don't feel you aren't smart enough +1. Jergilikti repoğa klondaw: -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + ``` + git clone git@github.com:/coding-interview-university.git + CD kodtaw-suxbat-wnïversïtet + git checkout -b progress + git qaşıqtan jwasham qosw https://github.com/jwasham/coding-interview-university + git fetch --barlığı + ``` -## A Note About Video Resources +1. Özgeristerdi ayaqtağannan keyin barlıq uyaşıqtardı X belgisimen belgileñiz: -Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. + ``` + git qosw. + git commit -m «X belgilengen» + git rebase jwasham/main + git push --set-upstream bastapqı progresti + git push --force + ``` -It would be great to replace the online course resources with free and always-available public sources, -such as YouTube videos (preferably university lectures), so that you people can study these anytime, -not just when a specific online course is in session. +## Öziñdi jetkilikti aqıldı emes dep sanama -## Choose a Programming Language +- Tabıstı bağdarlamalıq jasaqtama ïnjenerleri aqıldı, biraq olardıñ köpşiligi jetkilikti aqıldı emes degen senimsizdikke ïe. +- Kelesi beyneler osı senimsizdikti jeñwge kömekteswi mümkin: + - [Danışpan programmïst twralı mïf](https://www.youtube.com/watch?v=0SARbwvhupQ) + - [Jalğız jürw qawipti: texnologïyadağı körinbeytin qubıjıqtarmen küresw](https://www.youtube.com/watch?v=1i8ylq4j_EY) -You'll need to choose a programming language for the coding interviews you do, -but you'll also need to find a language that you can use to study computer science concepts. +## Beyne reswrstar twralı eskertpe -Preferably the language would be the same, so that you only need to be proficient in one. +Keybir beyneler Coursera nemese EdX sınıbına tirkelw arqılı ğana qoljetimdi. Bular MOOC dep ataladı. +Keyde sabaqtar sessïyada bolmaydı, sondıqtan sizge birneşe ay kütwge twra keledi, sondıqtan sizde kirw mümkindigi bolmaydı. -### For this Study Plan +Onlayn kwrs reswrstarın tegin jäne ärqaşan qoljetimdi jalpığa qoljetimdi közdermen almastırw tamaşa bolar edi, +mısalı, YouTube beyneleri (jaqsıraq wnïversïtet lekcïyaları), sondıqtan siz kez kelgen waqıtta olardı oqï alasız, +belgili bir onlayn kwrs sessïyada bolğanda ğana emes. -When I did the study plan, I used 2 languages for most of it: C and Python +## Bağdarlamalaw tilin tañdañız -* C: Very low level. Allows you to deal with pointers and memory allocation/deallocation, so you feel the data structures - and algorithms in your bones. In higher level languages like Python or Java, these are hidden from you. In day to day work, that's terrific, - but when you're learning how these low-level data structures are built, it's great to feel close to the metal. - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - You don't need to go super deep in the book (or even finish it). Just get to where you're comfortable reading and writing in C. - - [Answers to questions in the book](https://github.com/lekkas/c-algorithms) -* Python: Modern and very expressive, I learned it because it's just super useful and also allows me to write less code in an interview. +Sizge kodtaw suxbattarı üşin bağdarlamalaw tilin tañdaw kerek, +biraq sizge ïnformatïka uğımdarın zerttew üşin qoldanwğa bolatın tildi tabw qajet boladı. -This is my preference. You do what you like, of course. +Til birdey bolğanı durıs, sondıqtan sizge tek birewin bilw kerek. -You may not need it, but here are some sites for learning a new language: -- [Exercism](https://exercism.org/tracks) +### Osı oqw josparı üşin + +Men oqw josparın jasağan kezde onıñ köp böliginde 2 tildi qoldandım: C jäne Python + +* C: Öte tömen deñgey. Körsetkiştermen jäne jadtı bölw/bölwmen jumıs istewge mümkindik beredi, osılayşa derekter qurılımdarın sezinesiz + jäne süyekteriñizdegi algorïtmder. Python nemese Java sïyaqtı joğarı deñgeyli tilderde olar sizden jasırıladı. Kündelikti jumısta bul keremet, + biraq siz osı tömen deñgeyli derekter qurılımdarınıñ qalay salınğanın üyrenip jatqanda, metalğa jaqın sezinw öte jaqsı. + - C barlıq jerde bar. Siz oqw kezinde mısaldardı kitaptardan, lekcïyalardan, beynelerden, *barlıq jerde* köresiz. + - [The C bağdarlamalaw tili, 2-tom](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + + - Бұл қысқа кітап, бірақ ол сізге Си тілін жақсы меңгеруге мүмкіндік береді және егер сіз оны аздап үйренсеңіз + тез шеберлікке ие боласыз. Си түсіну бағдарламалар мен жадтың қалай жұмыс істейтінін түсінуге көмектеседі. + - Кітаптың тереңіне барудың (тіпті оны аяқтаудың) қажеті жоқ. Си тілінде оқуға және жазуға ыңғайлы жерге жетіңіз. + - [Кітаптағы сұрақтарға жауаптар](https://github.com/lekkas/c-algorithms) +* Python: Заманауи және өте мәнерлі, мен оны білдім, себебі бұл өте пайдалы және сұхбатта азырақ код жазуға мүмкіндік береді. + +Бұл менің басымдылығым. Сіз өзіңізге ұнайтын нәрсені жасайсыз, әрине. + +Бұл сізге қажет болмауы мүмкін, бірақ жаңа тілді үйренуге арналған бірнеше сайттар: +- [Жаттығу](https://exercism.org/tracks) - [Codewars](http://www.codewars.com) - [Codility](https://codility.com/programmers/) - [HackerEarth](https://www.hackerearth.com/) - [Sphere Online Judge (spoj)](http://www.spoj.com/) - [Codechef](https://www.codechef.com/) -- [Codeforces](https://codeforces.com/) +- [Код күштері](https://codeforces.com/) +- [Scaler тақырыптары](https://www.scaler.com/topics/) -### For your Coding Interview +### Кодтау сұхбаты үшін -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +Сұхбаттың кодтау бөлігін орындау үшін өзіңізге ыңғайлы тілді пайдалануға болады, бірақ ірі компаниялар үшін бұл дұрыс таңдау: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Сіз оларды да пайдалана аласыз, бірақ алдымен оқып шығыңыз. Ескертулер болуы мүмкін: - JavaScript -- Ruby +- Рубин -Here is an article I wrote about choosing a language for the interview: -[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -This is the original article my post was based on: http://blog.codingforinterviews.com/best-programming-language-jobs/ +Сұхбат үшін тілді таңдау туралы жазған мақалам: +[Кодтау сұхбаты үшін бір тілді таңдаңыз](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Бұл менің постыма негізделген түпнұсқа мақала: [Сұхбаттар үшін бағдарламалау тілін таңдау](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- жұмыс/) -You need to be very comfortable in the language and be knowledgeable. +Сіз тілде өте ыңғайлы және білімді болуыңыз керек. +- Bul qısqa kitap, biraq ol sizge Sï tilin jaqsı meñgerwge mümkindik beredi jäne eger siz onı azdap üyrenseñiz + tez şeberlikke ïe bolasız. Sï tüsinw bağdarlamalar men jadtıñ qalay jumıs isteytinin tüsinwge kömektesedi. + - Kitaptıñ tereñine barwdıñ (tipti onı ayaqtawdıñ) qajeti joq. Sï tilinde oqwğa jäne jazwğa ıñğaylı jerge jetiñiz. + - [Kitaptağı suraqtarğa jawaptar](https://github.com/lekkas/c-algorithms) +* Python: Zamanawï jäne öte mänerli, men onı bildim, sebebi bul öte paydalı jäne suxbatta azıraq kod jazwğa mümkindik beredi. -Read more about choices: -- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) +Bul meniñ basımdılığım. Siz öziñizge unaytın närseni jasaysız, ärïne. -[See language-specific resources here](programming-language-resources.md) +Bul sizge qajet bolmawı mümkin, biraq jaña tildi üyrenwge arnalğan birneşe sayttar: +- [Jattığw](https://exercism.org/tracks) +- [Codewars](http://www.codewars.com) +- [Codility](https://codility.com/programmers/) +- [HackerEarth](https://www.hackerearth.com/) +- [Sphere Online Judge (spoj)](http://www.spoj.com/) +- [Codechef](https://www.codechef.com/) +- [Kod küşteri](https://codeforces.com/) +- [Scaler taqırıptarı](https://www.scaler.com/topics/) -## Books for Data Structures and Algorithms +### Kodtaw suxbatı üşin -This book will form your foundation for computer science. +Suxbattıñ kodtaw böligin orındaw üşin öziñizge ıñğaylı tildi paydalanwğa boladı, biraq iri kompanïyalar üşin bul durıs tañdaw: -Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. +- C++ +- Java +- Python -### C +Siz olardı da paydalana alasız, biraq aldımen oqıp şığıñız. Eskertwler bolwı mümkin: -- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms +- JavaScript +- Rwbïn -### Python +Suxbat üşin tildi tañdaw twralı jazğan maqalam: +[Kodtaw suxbatı üşin bir tildi tañdañız](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). +Bul meniñ postıma negizdelgen tüpnusqa maqala: [Suxbattar üşin bağdarlamalaw tilin tañdaw](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- jumıs/) -- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +Siz tilde öte ıñğaylı jäne bilimdi bolwıñız kerek. -### Java -Your choice: +Таңдау туралы толығырақ оқыңыз: +- [Кодтау сұхбаты үшін дұрыс тілді таңдаңыз](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -- Goodrich, Tamassia, Goldwasser - - [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) -- Sedgewick and Wayne: - - [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Free Coursera course that covers the book (taught by the authors!): - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) +[Тілге қатысты ресурстарды осы жерден қараңыз](programming-language-resources.md) -### C++ +## Деректер құрылымдары мен алгоритмдерге арналған кітаптар -Your choice: +Бұл кітап сіздің информатика ғылымының негізін қалады. -- Goodrich, Tamassia, and Mount - - [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- Sedgewick and Wayne - - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +Сізге ыңғайлы тілде біреуін ғана таңдаңыз. Сіз көп оқумен және кодтаумен айналысатын боласыз. -## Interview Prep Books +### C -You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, -but I bought more to give myself more practice. But I always do too much. +- [C тіліндегі алгоритмдер, 1-5 бөліктері (бума), 3-ші басылым](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Негіздер, деректер құрылымдары, сұрыптау, іздеу және графикалық алгоритмдер -I bought both of these. They gave me plenty of practice. +### Python -- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - Answers in C++ and Java - - This is a good warm-up for Cracking the Coding Interview - - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) -- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +- [Python тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Гудрих, Тамассия, Голдвассер + - Маған бұл кітап ұнады. Ол барлығын және т.б. қамтыды. + - Питоникалық код + - менің жарқыраған кітабым туралы есеп: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -### If you have tons of extra time: +### Java -Choose one: +Сенің таңдауың: -- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +- Гудрих, Тамассия, Голдвассер + - [Java тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Седжвик пен Уэйн: + - [Алгоритмдер](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Кітапты қамтитын тегін Coursera курсы (авторлар үйретеді!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Алгоритмдер II](https://www.coursera.org/learn/algorithms-part2) -## Don't Make My Mistakes +### C++ +Tañdaw twralı tolığıraq oqıñız: +- [Kodtaw suxbatı üşin durıs tildi tañdañız](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -This list grew over many months, and yes, it got out of hand. +[Tilge qatıstı reswrstardı osı jerden qarañız](programming-language-resources.md) -Here are some mistakes I made so you'll have a better experience. And you'll save months of time. +## Derekter qurılımdarı men algorïtmderge arnalğan kitaptar -### 1. You Won't Remember it All +Bul kitap sizdiñ ïnformatïka ğılımınıñ negizin qaladı. -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards, so I could review. I didn't need all of that knowledge. +Sizge ıñğaylı tilde birewin ğana tañdañız. Siz köp oqwmen jäne kodtawmen aynalısatın bolasız. -Please, read so you won't make my mistakes: +### C -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/). +- [C tilindegi algorïtmder, 1-5 bölikteri (bwma), 3-şi basılım](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Negizder, derekter qurılımdarı, surıptaw, izdew jäne grafïkalıq algorïtmder -### 2. Use Flashcards +### Python -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. I made a mobile-first website, so I could review on my phone or tablet, wherever I am. +- [Python tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - Gwdrïx, Tamassïya, Goldvasser + - Mağan bul kitap unadı. Ol barlığın jäne t.b. qamtıdı. + - Pïtonïkalıq kod + - meniñ jarqırağan kitabım twralı esep: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -Make your own for free: +### Java -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) +Seniñ tañdawıñ: -**I DON'T RECOMMEND using my flashcards.** There are too many and many of them are trivia that you don't need. +- Gwdrïx, Tamassïya, Goldvasser + - [Java tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedjvïk pen Wéyn: + - [Algorïtmder](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Kitaptı qamtïtın tegin Coursera kwrsı (avtorlar üyretedi!): + - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - [Algorïtmder II](https://www.coursera.org/learn/algorithms-part2) -But if you don't want to listen to me, here you go: -- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +### C++ -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. -It's way too much for what's required. +Сенің таңдауың: -**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. +- Гудрих, Тамассия және тау + - [C++ тіліндегі деректер құрылымдары мен алгоритмдері, 2-ші басылым](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Седжвик пен Уэйн + - [C++ тіліндегі алгоритмдер, 1-4 бөлімдер: негіздері, деректер құрылымы, сұрыптау, іздеу](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [C++ тіліндегі алгоритмдер 5-бөлім: Графикалық алгоритмдер](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. -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. +## Сұхбатқа дайындық кітаптары -My flashcard database in Anki format: 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. +Мен бұл екеуін де сатып алдым. Олар маған көп тәжірибе берді. -### 3. Do Coding Interview Questions While You're Learning +- [Ашық болған сұхбаттарды бағдарламалау: сұхбат арқылы жолыңызды кодтау, 4-ші басылым](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ және Java тілінде жауаптар + - Бұл кодтау сұхбатын бұзу үшін жақсы қыздыру + - Өте қиын емес. Көптеген мәселелер сұхбатта көретіннен оңай болуы мүмкін (мен оқығанымнан) +- [Кодтау сұхбатын бұзу, 6-шы басылым](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java тілінде жауаптар -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. +- [Бағдарламалау сұхбаттарының элементтері (C++ нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Python тіліндегі сұхбаттарды бағдарламалау элементтері](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Бағдарламалау сұхбаттарының элементтері (Java нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) +Seniñ tañdawıñ: -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. Do 2 or 3 questions regarding linked lists. -1. Move on to the next learning topic. -1. Later, go back and do another 2 or 3 linked list problems. -1. Do this with each new topic you learn. +- Gwdrïx, Tamassïya jäne taw + - [C++ tilindegi derekter qurılımdarı men algorïtmderi, 2-şi basılım](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedjvïk pen Wéyn + - [C++ tilindegi algorïtmder, 1-4 bölimder: negizderi, derekter qurılımı, surıptaw, izdew](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - [C++ tilindegi algorïtmder 5-bölim: Grafïkalıq algorïtmder](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -**Keep doing problems while you're learning all this stuff, not after.** +## Suxbatqa dayındıq kitaptarı -You're not being hired for knowledge, but how you apply the knowledge. +Sizge bulardıñ jïıntığın satıp alwdıñ qajeti joq. Şınımdı aytsam, «kodtaw suxbatın buzw» jetkilikti şığar, +biraq men özime köbirek täjirïbe berw üşin köbirek satıp aldım. Biraq men ärqaşan tım köp isteymin. -There are many resources for this, listed below. Keep going. +Men bul ekewin de satıp aldım. Olar mağan köp täjirïbe berdi. -### 4. Focus +- [Aşıq bolğan suxbattardı bağdarlamalaw: suxbat arqılı jolıñızdı kodtaw, 4-şi basılım](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - C++ jäne Java tilinde jawaptar + - Bul kodtaw suxbatın buzw üşin jaqsı qızdırw + - Öte qïın emes. Köptegen mäseleler suxbatta köretinnen oñay bolwı mümkin (men oqığanımnan) +- [Kodtaw suxbatın buzw, 6-şı basılım](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - Java tilinde jawaptar -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. +### Eger sizde qosımşa waqıt bolsa: -## What you won't see covered +Birewin tañdañız: -These are prevalent technologies but not part of this study plan: +- [Bağdarlamalaw suxbattarınıñ élementteri (C++ nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- [Python tilindegi suxbattardı bağdarlamalaw élementteri](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- [Bağdarlamalaw suxbattarınıñ élementteri (Java nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) -- SQL -- Javascript -- HTML, CSS, and other front-end technologies +- [Компаньон жобасы - Кітаптағы әрбір мәселеге арналған әдістемелер мен сынақ жағдайлары](https://github.com/gardncl/elements-of-programming-interviews) -## 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-cpp) - - [Python](https://github.com/jwasham/practice-python) +### 1. Сіз мұның бәрін есте сақтамайсыз -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) - -Why you need to practice doing programming problems: -- Problem recognition, and where the right data structures and algorithms fit in -- Gathering requirements for the problem -- Talking your way through the problem like you will in the interview -- Coding on a whiteboard or paper, not a computer -- Coming up with time and space complexity for your solutions (see Big-O below) -- 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/) - -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) - -**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). - -Solving Problems: -- [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/) - -Coding Interview Question Videos: -- [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) - - Super for walkthroughs of problem solutions -- [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 -- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) - -Challenge sites: -- [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. - - See Nick White and FisherCoder Videos above for code walk-throughs. -- [HackerRank](https://www.hackerrank.com/) -- [TopCoder](https://www.topcoder.com/) -- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) -- [InterviewBit](https://www.interviewbit.com/) -- [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 - -- 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. -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](https://archive.org/details/lecture2_202008) -- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) -- [ ] [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 -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) - - [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) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold - - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds - - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - -- ### Linked Lists - - [ ] Description: - - [ ] [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 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation - - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] Implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) - - No need to implement - -- ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) - - [ ] Will not implement. Implementing with array is trivial - -- ### Queue - - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) - - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element - - empty() - - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) - -- ### Hash table - - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Online Courses: - - [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [ ] Implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value - - exists(key) - - get(key) - - remove(key) - -## More Knowledge - -- ### Binary search - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) - - [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) - - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) - - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) - - [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] Count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - - [ ] Swap values: - - [Swap](https://bits.stephan-brumme.com/swap.html) - - [ ] Absolute value: - - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) - -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) - - basic tree construction - - traversal - - manipulation algorithms - - [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) - - BFS notes: - - level order (BFS, using queue) - - time complexity: O(n) - - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS notes: - - time complexity: O(n) - - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) - - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max - - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree - - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] Implement a max-heap: - - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(x) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap or min heap - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] Stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable - -- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) - - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) - - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) - - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) - -- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) - - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) - - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) - -- [ ] UC Berkeley: - - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) - - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) - - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) - - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above - -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) - - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none - -- [ ] MIT(videos): - - [ ] [Breadth-First Search](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - [ ] [Depth-First Search](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] ~~[CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)~~ - - [ ] [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - When it is appropriate to use it? - - How is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - -- ### Dynamic Programming - - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a - problem as being a candidate for dynamic programming. - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state - - [ ] memento - - [ ] iterator - - [ ] composite - - [ ] flyweight - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: - - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. - -- ### How computers process a program - - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) - -- ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - Difference between processes and threads - - Processes - - Threads - - Locks - - Mutexes - - Semaphores - - Monitors - - How they work? - - Deadlock - - Livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware? - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects). - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path - - I read through code, but will not implement - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - -- ### Endianness - - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. - -- ### Networking - - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - - Otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) +Мен бірнеше сағат бейнелерді көрдім және көптеген жазбалар алдым, ал бірнеше ай өткен соң есімде жоқ көп нәрсе болды. Мен 3 күн жүрдім +Жазбаларым арқылы және флешкарталар жасау арқылы, мен қарап шығу үшін. Маған бұл білімнің бәрі қажет емес еді. ---- +Менің қателіктерімді жібермеу үшін оқыңыз: -## Final Review +[Информатика білімін сақтау](https://startupnextdoor.com/retaining-computer-science-knowledge/). - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. +### 2. Flashcards пайдаланыңыз -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) +Мәселені шешу үшін мен шағын флэшкарталар сайтын жасадым, онда мен 2 түрдегі флэшкарталарды қоса аламын: жалпы және код. +Әр картаның пішімі әртүрлі. Мен қай жерде болсам да, телефонда немесе планшетте қарап шығу үшін мобильді веб-сайт жасадым. ---- +Өзіңізді тегін жасаңыз: -## Update Your Resume - -- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" -- I don't know how important this is (you can do your own research) but here is an article on making your resume ATS Compliant: - - [How to Create or Check if your Resume is ATS Compliant](https://ayedot.com/97/MiniBlog/Meaning-of-ATS-compliant-resume-and-How-to-create-ATS-Resume-for-Free) -- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), - - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." - - -## Find a Job - -- [Sites for Finding Jobs](https://ayedot.com/151/MiniBlog/Top-10-Best-Websites-for-Careers--Jobs) - -## Interview Process & General Interview Prep - -- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] Cracking the Facebook Coding Interview: - - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) -- Prep Courses: - - [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. - - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): - - A free Python centric data structures and algorithms course. - - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): - - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. - - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): - - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. - -Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews -- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously - -## Be thinking of for when the interview comes - -Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. -Have a story, not just data, about something you accomplished. - -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? - -- If you find it hard to come up with good answers of these types of interview questions, here are some ideas: - - [General Interview Questions and their Answers](https://ayedot.com/119/MiniBlog/General-Interview-Questions-and-their-Answers-for-Tech-Jobs) - -## Have questions for the interviewer - -Some of mine (I already may know the answers, but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? -- How is the work/life balance? - -## Once You've Got The Job - -Congratulations! - -Keep learning. - -You're never really done. +- [Flashcards сайтының репосы](https://github.com/jwasham/computer-science-flash-cards) ---- +**Флешкарталарымды пайдалануды ұсынбаймын.** Олардың саны тым көп және олардың көпшілігі сізге қажет емес ұсақ-түйектер. - ***************************************************************************************************** - ***************************************************************************************************** +Бірақ мені тыңдағың келмесе, мынаны айтасың: +- [Менің флэш карталарымның дерекқорым (1200 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Менің флэш карталарымның дерекқорым (экстремалды - 1800 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +- [Kompanon jobası - Kitaptağı ärbir mäselege arnalğan ädistemeler men sınaq jağdayları](https://github.com/gardncl/elements-of-programming-interviews) - Everything below this point is optional. It is NOT needed for an entry-level interview. - However, by studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. - - ***************************************************************************************************** - ***************************************************************************************************** +## Meniñ qatelikterimdi jasama ---- +Bul tizim birneşe ay boyı östi jäne ïä, ol baqılawdan şıqtı. -## Additional Books - - These are here so you can dive into a topic you find interesting. - -- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) - - An oldie but a goodie -- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - A modern option -- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - A gentle introduction to design patterns -- [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - AKA the "Gang Of Four" book, or GOF - - The canonical design patterns book -- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview - - This book has 2 parts: - - Class textbook on data structures and algorithms - - Pros: - - Is a good review as any algorithms textbook would be - - Nice stories from his experiences solving problems in industry and academia - - Code examples in C - - Cons: - - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - Chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material - - Algorithm catalog: - - This is the real reason you buy this book. - - This book is better as an algorithm reference, and not something you read cover to cover. - - Can rent it on Kindle - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) -- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief - - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization -- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently - - AKA CLR, sometimes CLRS, because Stein was late to the game -- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - - For a richer, more up-to-date (2017), but longer treatment - -## System Design, Scalability, Data Handling - -**You can expect system design questions if you have 4+ years of experience.** - -- Scalability and System Design are very large topics with many topics and resources, since - there is a lot to consider when designing a software/hardware system that can scale. - Expect to spend quite a bit of time on this -- Considerations: - - Scalability - - Distill large data sets to single values - - Transform one data set to another - - Handling obscenely large amounts of data - - System design - - features sets - - interfaces - - class hierarchies - - designing a system under certain constraints - - simplicity and robustness - - tradeoffs - - performance analysis and optimization -- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) -- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) -- [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) -- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) -- [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below -- [ ] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) -- [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) -- [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) -- [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - - [ ] [Easy-to-read paper](https://raft.github.io/) - - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) -- [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) -- [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) -- [ ] Scalability: - - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) - - [ ] Short series: - - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) - - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache) - - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) - - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - - [ ] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html) - - [video](https://www.youtube.com/watch?v=G-lGCC4KKok) - - [ ] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html) - - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) - - [ ] [Google's Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture]( http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html) - - [ ] [The Image Optimization Technology That Serves Millions Of Requests Per Day](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html) - - [ ] [A Patreon Architecture Short](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html) - - [ ] [Tinder: How Does One Of The Largest Recommendation Engines Decide Who You'll See Next?](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html) - - [ ] [Design Of A Modern Cache](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html) - - [ ] [Live Video Streaming At Facebook Scale](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html) - - [ ] [A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html) - - [ ] [A 360 Degree View Of The Entire Netflix Stack](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html) - - [ ] [Latency Is Everywhere And It Costs You Sales - How To Crush It](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it) - - [ ] [What Powers Instagram: Hundreds of Instances, Dozens of Technologies](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances) - - [ ] [Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html) - - [ ] [ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html) - - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) - - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section -- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: - - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) - - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf) - - flow: - 1. Understand the problem and scope: - - Define the use cases, with interviewer's help - - Suggest additional features - - Remove items that interviewer deems out of scope - - Assume high availability is required, add as a use case - 2. Think about constraints: - - Ask how many requests per month - - Ask how many requests per second (they may volunteer it or make you do the math) - - Estimate reads vs. writes percentage - - Keep 80/20 rule in mind when estimating - - How much data written per second - - Total storage required over 5 years - - How much data read per second - 3. Abstract design: - - Layers (service, data, caching) - - Infrastructure: load balancing, messaging - - Rough overview of any key algorithm that drives the service - - Consider bottlenecks and determine solutions - - Exercises: - - [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake) - - [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis) - - [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html) - - [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf) - - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) - -## Additional Learning - - I added them to help you become a well-rounded software engineer, and to be aware of certain - technologies and algorithms, so you'll have a bigger toolbox. - -- ### Compilers - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - -- ### Emacs and vi(m) - - Familiarize yourself with a unix-based code editor - - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: - - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): - - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) - -- ### Unix command line tools - - I filled in the list below from good tools. - - bash - - cat - - grep - - sed - - awk - - curl or wget - - sort - - tr - - uniq - - [strace](https://en.wikipedia.org/wiki/Strace) - - [tcpdump](https://danielmiessler.com/study/tcpdump/) - -- ### Information theory (videos) - - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - - More about Markov processes: - - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) - - See more in MIT 6.050J Information and Entropy series below - -- ### Parity & Hamming Code (videos) - - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - - Hamming Code: - - [Error detection](https://www.youtube.com/watch?v=1A_NcXxdoCc) - - [Error correction](https://www.youtube.com/watch?v=JAMLuxdHH8o) - - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - -- ### Entropy - - Also see videos below - - Make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) - -- ### Cryptography - - Also see videos below - - Make sure to watch information theory videos first - - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - -- ### Compression - - Make sure to watch information theory videos first - - Computerphile (videos): - - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - -- ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) - - [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6) - - [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - -- ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - -- ### Parallel Programming - - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) - -- ### Messaging, Serialization, and Queueing Systems - - [Thrift](https://thrift.apache.org/) - - [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [Redis](http://redis.io/) - - [Tutorial](http://try.redis.io/) - - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) - - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [RabbitMQ](https://www.rabbitmq.com/) - - [Get Started](https://www.rabbitmq.com/getstarted.html) - - [Celery](http://www.celeryproject.org/) - - [First Steps With Celery](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html) - - [ZeroMQ](http://zeromq.org/) - - [Intro - Read The Manual](http://zeromq.org/intro:read-the-manual) - - [ActiveMQ](http://activemq.apache.org/) - - [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [MessagePack](http://msgpack.org/index.html) - - [Avro](https://avro.apache.org/) +Sizge jaqsıraq täjirïbe alw üşin men birneşe qatelikter jiberdim. Al siz aylar waqıtıñızdı ünemdeysiz. -- ### A* - - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### Fast Fourier Transform - - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Bloom Filter - - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - -- ### HyperLogLog - - [How To Count A Billion Distinct Objects Using Only 1.5KB Of Memory](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html) - -- ### Locality-Sensitive Hashing - - Used to determine the similarity of documents - - The opposite of MD5 or SHA which are used to determine if 2 documents/strings are exactly the same - - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - -- ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](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) - -- ### Augmented Data Structures - - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - -- ### Balanced search trees - - Know at least one type of balanced binary tree (and know how it's implemented): - - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. - A particularly interesting self-organizing data structure is the splay tree, which uses rotations - to move any accessed key to the root." - Skiena - - Of these, I chose to implement a splay tree. From what I've read, you won't implement a - balanced search tree in your interview. But I wanted exposure to coding one up - and let's face it, splay trees are the bee's knees. I did read a lot of red-black tree code - - Splay tree: insert, search, delete functions - If you end up implementing red/black tree try just these: - - Search and insertion functions, skipping delete - - I want to learn more about B-Tree since it's used so widely with very large data sets - - [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree) - - - **AVL trees** - - In practice: - From what I can tell, these aren't used much in practice, but I could see where they would be: - The AVL tree is another structure supporting O(log n) search, insertion, and removal. It is more rigidly - balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it - attractive for data structures that may be built once and loaded without reconstruction, such as language - dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) - - - **Splay trees** - - In practice: - Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, - data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, - networking and file system code) etc - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: - - Gets very mathy, but watch the last 10 minutes for sure. - - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) - - - **Red/black trees** - - These are a translation of a 2-3 tree (see below). - - In practice: - Red–black trees offer worst-case guarantees for insertion time, deletion time, and search time. - Not only does this make them valuable in time-sensitive applications such as real-time applications, - but it makes them valuable building blocks in other data structures which provide worst-case guarantees; - for example, many data structures used in computational geometry can be based on red–black trees, and - the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, - the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor - hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) - - - **2-3 search trees** - - In practice: - 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - - **2-3-4 Trees (aka 2-4 trees)** - - In practice: - For every 2-4 tree, there are corresponding red–black trees with data elements in the same order. The insertion and deletion - operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an - important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce - 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - - - **N-ary (K-ary, M-ary) trees** - - note: the N or K is the branching factor (max branches) - - binary trees are a 2-ary tree, with branching factor = 2 - - 2-3 trees are 3-ary - - [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree) - - - **B-Trees** - - Fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor). - - In Practice: - B-Trees are widely used in databases. Most modern filesystems use B-trees (or Variants). In addition to - its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary - block in a particular file. The basic problem is turning the file block i address into a disk block - (or perhaps to a cylinder-head-sector) address - - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - - covers cache-oblivious B-Trees, very interesting data structures - - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) - - -- ### k-D Trees - - Great for finding number of points in a rectangle or higher dimension object - - A good fit for k-nearest neighbors - - [Kd Trees (video)](https://www.youtube.com/watch?v=W94M9D_yXKk) - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - -- ### Skip lists - - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - -- ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - -- ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - -- ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - -- ### Treap - - Combination of a binary search tree and a heap - - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) - - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) - -- ### Linear Programming (videos) - - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) - -- ### Geometry, Convex hull (videos) - - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - -- ### Discrete math - - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - -- ### Machine Learning - - Why ML? - - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) - - [Tensorflow Tutorials](https://www.tensorflow.org/versions/r0.11/tutorials/index.html) - - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - - Courses: - - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) - - [Neural Networks for Machine Learning](https://www.coursera.org/learn/neural-networks) - - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - - [Google/Kaggle Machine Learning Engineer Nanodegree](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009) - - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) - - [Metis Online Course ($99 for 2 months)](http://www.thisismetis.com/explore-data-science) - - Resources: - - Books: - - [Python Machine Learning](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/) - - [Data Science from Scratch: First Principles with Python](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X) - - [Introduction to Machine Learning with Python](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/) - - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers) - - Data School: http://www.dataschool.io/ +### 1. Siz munıñ bärin este saqtamaysız ---- +Men birneşe sağat beynelerdi kördim jäne köptegen jazbalar aldım, al birneşe ay ötken soñ esimde joq köp närse boldı. Men 3 kün jürdim +Jazbalarım arqılı jäne fleşkartalar jasaw arqılı, men qarap şığw üşin. Mağan bul bilimniñ bäri qajet emes edi. + +Meniñ qatelikterimdi jibermew üşin oqıñız: + +[Ïnformatïka bilimin saqtaw](https://startupnextdoor.com/retaining-computer-science-knowledge/). -## Additional Detail on Some Subjects - - I added these to reinforce some ideas already presented above, but didn't want to include them - above because it's just too much. It's easy to overdo it on a subject. - You want to get hired in this century, right? - -- **SOLID** - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principle](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) +### 2. Flashcards paydalanıñız +Mäseleni şeşw üşin men şağın fléşkartalar saytın jasadım, onda men 2 türdegi fléşkartalardı qosa alamın: jalpı jäne kod. +Är kartanıñ pişimi ärtürli. Men qay jerde bolsam da, telefonda nemese planşette qarap şığw üşin mobïldi veb-sayt jasadım. -- **Union-Find** - - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) +Öziñizdi tegin jasañız: -- **More Dynamic Programming** (videos) - - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19) - - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20) - - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21) - - [6.006: DP IV: Guitar Fingering, Tetris, Super Mario Bros.](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [6.046: Dynamic Programming & Advanced DP](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) +- [Flashcards saytınıñ reposı](https://github.com/jwasham/computer-science-flash-cards) -- **Advanced Graph Processing** (videos) - - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) +**Fleşkartalarımdı paydalanwdı usınbaymın.** Olardıñ sanı tım köp jäne olardıñ köpşiligi sizge qajet emes usaq-tüyekter. -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): - - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) - - [MIT 6.042J - Random Variables](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21) - - [MIT 6.042J - Expectation I](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B) - - [MIT 6.042J - Expectation II](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B) - - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) +Biraq meni tıñdağıñ kelmese, mınanı aytasıñ: +- [Meniñ fléş kartalarımnıñ derekqorım (1200 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- [Meniñ fléş kartalarımnıñ derekqorım (ékstremaldı - 1800 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +Есіңізде болсын, мен шектен шығып кеттім және ассемблер тілі мен Python тривиасынан бастап машиналық оқыту мен статистикаға дейін барлығын қамтитын карталарым бар. +Бұл талап етілетін нәрсе үшін тым көп. -- **String Matching** - - Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) - - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - - Knuth-Morris-Pratt (KMP): - - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - - Boyer–Moore string search algorithm - - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) - - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - - nice explanation of tries - - can be skipped +**Флешкарталар туралы ескертпе:** Жауапты білетіндігіңізді бірінші рет танысаңыз, оны белгілі деп белгілемеңіз. Сіз көруіңіз керек +сол картаны және оны шынымен білмей тұрып, оған бірнеше рет дұрыс жауап беріңіз. Қайталау бұл білімді тереңдетеді +сіздің миыңыз. -- **Sorting** +Менің флэшкарта сайтымды пайдаланудың баламасы [Anki](http://ankisrs.net/), ол маған бірнеше рет ұсынылды. +Ол есте сақтауға көмектесу үшін қайталау жүйесін пайдаланады. Бұл пайдаланушыға ыңғайлы, барлық платформаларда қол жетімді және бұлтты синхрондау жүйесі бар. +Оның құны iOS жүйесінде $25, бірақ басқа платформаларда тегін. - - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600) - - [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10) +Anki пішіміндегі флэшкарта дерекқорым: https://ankiweb.net/shared/info/25173560 (рахмет [@xiewenya](https://github.com/xiewenya)). -## Video Series +Кейбір студенттер бос орынмен пішімдеу мәселелерін атап өтті, оларды келесі әрекеттерді орындау арқылы шешуге болады: палубаны ашу, картаны өңдеу, карталарды басу, «стильдеу» радио түймешігін таңдау, «ақ кеңістік: pre;» мүшесін қосу. карта класына. -Sit back and enjoy. +### 3. Оқу барысында сұхбат сұрақтарын кодтаңыз -- [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) +БҰЛ ӨТЕ МАҢЫЗДЫ. -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +Деректер құрылымдары мен алгоритмдерін үйрену кезінде сұхбат сұрақтарын кодтауды бастаңыз. -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +Сіз үйреніп жатқан нәрсені мәселелерді шешуге қолдануыңыз керек, әйтпесе ұмытып кетесіз. Мен бұл қателік жасадым. -- [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) +Тақырыпты біліп болғаннан кейін және онымен өзіңізді біршама ыңғайлы сезінесіз, мысалы, **байланысты тізімдер**: +1. [кодтау сұхбат кітаптарының] (#interview-prep-books) бірін ашыңыз (немесе төменде берілген кодтау мәселесіне арналған веб-сайттар) +1. Байланыстырылған тізімдерге қатысты 2 немесе 3 сұрақ қойыңыз. +1. Келесі оқу тақырыбына көшу. +1. Кейінірек кері оралып, басқа 2 немесе 3 байланыстырылған тізім мәселесін орындаңыз. +1. Мұны әрбір жаңа тақырыпты үйренген сайын орындаңыз. -- CSE373 - Analysis of Algorithms (25 videos) - - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) +**Мәселелерді кейін емес, осының бәрін үйреніп жатқанда жасай беріңіз.** -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +Сіз білім үшін емес, білімді қалай қолданасыз. -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +Бұл үшін төменде келтірілген көптеген ресурстар бар. Жалғастыру. -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +### 4. Фокус -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +Қымбат уақытты алатын көптеген алаңдаушылықтар бар. Фокус пен шоғырлану қиын. Музыканы қосыңыз +мәтінсіз және сіз өте жақсы назар аудара аласыз. -- ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ +## Нені көрмейсіз -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +Бұл кең таралған технологиялар, бірақ осы зерттеу жоспарының бөлігі емес: -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- SQL +- Javascript +- HTML, CSS және басқа интерфейстік технологиялар -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +## Күнделікті жоспар -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +Бұл курс көптеген тақырыптарды қамтиды. Олардың әрқайсысы сізге бірнеше күн немесе тіпті бір апта немесе одан да көп уақытты алады. Бұл сіздің кестеңізге байланысты. -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +Күн сайын тізімдегі келесі тақырыпты алыңыз, сол тақырып бойынша бірнеше бейнелерді қараңыз, содан кейін іске асыруды жазыңыз +осы курс үшін таңдаған тілдегі деректер құрылымы немесе алгоритм. +Esiñizde bolsın, men şekten şığıp kettim jäne assembler tili men Python trïvïasınan bastap maşïnalıq oqıtw men statïstïkağa deyin barlığın qamtïtın kartalarım bar. +Bul talap etiletin närse üşin tım köp. -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +**Fleşkartalar twralı eskertpe:** Jawaptı biletindigiñizdi birinşi ret tanısañız, onı belgili dep belgilemeñiz. Siz körwiñiz kerek +sol kartanı jäne onı şınımen bilmey turıp, oğan birneşe ret durıs jawap beriñiz. Qaytalaw bul bilimdi tereñdetedi +sizdiñ mïıñız. -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +Meniñ fléşkarta saytımdı paydalanwdıñ balaması [Anki](http://ankisrs.net/), ol mağan birneşe ret usınıldı. +Ol este saqtawğa kömektesw üşin qaytalaw jüyesin paydalanadı. Bul paydalanwşığa ıñğaylı, barlıq platformalarda qol jetimdi jäne bulttı sïnxrondaw jüyesi bar. +Onıñ qunı iOS jüyesinde $25, biraq basqa platformalarda tegin. -- [MIT 6.050J: Information and Entropy, Spring 2008 (19 videos)](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7) +Anki pişimindegi fléşkarta derekqorım: https://ankiweb.net/shared/info/25173560 (raxmet [@xiewenya](https://github.com/xiewenya)). -- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +Keybir stwdentter bos orınmen pişimdew mäselelerin atap ötti, olardı kelesi äreketterdi orındaw arqılı şeşwge boladı: palwbanı aşw, kartanı öñdew, kartalardı basw, «stïldew» radïo tüymeşigin tañdaw, «aq keñistik: pre;» müşesin qosw. karta klasına. -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +### 3. Oqw barısında suxbat suraqtarın kodtañız -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +BUL ÖTE MAÑIZDI. -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +Derekter qurılımdarı men algorïtmderin üyrenw kezinde suxbat suraqtarın kodtawdı bastañız. -- [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) +Siz üyrenip jatqan närseni mäselelerdi şeşwge qoldanwıñız kerek, äytpese umıtıp ketesiz. Men bul qatelik jasadım. -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +Taqırıptı bilip bolğannan keyin jäne onımen öziñizdi birşama ıñğaylı sezinesiz, mısalı, **baylanıstı tizimder**: +1. [kodtaw suxbat kitaptarınıñ] (#interview-prep-books) birin aşıñız (nemese tömende berilgen kodtaw mäselesine arnalğan veb-sayttar) +1. Baylanıstırılğan tizimderge qatıstı 2 nemese 3 suraq qoyıñız. +1. Kelesi oqw taqırıbına köşw. +1. Keyinirek keri oralıp, basqa 2 nemese 3 baylanıstırılğan tizim mäselesin orındañız. +1. Munı ärbir jaña taqırıptı üyrengen sayın orındañız. -- [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) +**Mäselelerdi keyin emes, osınıñ bärin üyrenip jatqanda jasay beriñiz.** -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +Siz bilim üşin emes, bilimdi qalay qoldanasız. -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +Bul üşin tömende keltirilgen köptegen reswrstar bar. Jalğastırw. -## Computer Science Courses +### 4. Fokws -- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +Qımbat waqıttı alatın köptegen alañdawşılıqtar bar. Fokws pen şoğırlanw qïın. Mwzıkanı qosıñız +mätinsiz jäne siz öte jaqsı nazar awdara alasız. -## Algorithms implementation +## Neni körmeysiz -- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) +Bul keñ taralğan texnologïyalar, biraq osı zerttew josparınıñ böligi emes: +- SQL +- Javascript +- HTML, CSS jäne basqa ïnterfeystik texnologïyalar + +## Kündelikti jospar + +Bul kwrs köptegen taqırıptardı qamtïdı. Olardıñ ärqaysısı sizge birneşe kün nemese tipti bir apta nemese odan da köp waqıttı aladı. Bul sizdiñ kesteñizge baylanıstı. + +Kün sayın tizimdegi kelesi taqırıptı alıñız, sol taqırıp boyınşa birneşe beynelerdi qarañız, sodan keyin iske asırwdı jazıñız +osı kwrs üşin tañdağan tildegi derekter qurılımı nemese algorïtm. + +- ### Хэш кестесі + - [ ] Бейнелер: + - [ ] [Тізбекпен хэштеу (бейне)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Кестені еселеу, Карп-Рабин (бейне)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Ашық адрестеу, криптографиялық хэштеу (бейне)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: Құдіретті сөздік (бейне)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (бейне)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Жетілдірілген) рандомизация: әмбебап және тамаша хэштеу (бейне)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Жетілдірілген) Керемет хэштеу (бейне)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Онлайн курстар: + - [ ] [Негізгі хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Дерек құрылымдары (бейне)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Телефон кітапшасының мәселесі (бейне)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] таратылған хэш кестелері: + - [Dropbox жүйесінде жылдам жүктеп салулар және жадты оңтайландыру (бейне)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Таратылған хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Сызықтық зондтау арқылы массивпен орындаңыз + - хэш(k, m) - m хэш кестесінің өлшемі + - қосу(кілт, мән) - кілт бұрыннан бар болса, мәнді жаңартыңыз + - бар (кілт) + - алу (кілт) + - жою (кілт) +- ### Xéş kestesi + - [ ] Beyneler: + - [ ] [Tizbekpen xéştew (beyne)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) + - [ ] [Kesteni eselew, Karp-Rabïn (beyne)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Aşıq adrestew, krïptografïyalıq xéştew (beyne)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [PyCon 2010: Qudiretti sözdik (beyne)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] [PyCon 2017: The Dictionary Even Mightier (beyne)](https://www.youtube.com/watch?v=66P5FMkWoVU) + - [ ] [(Jetildirilgen) randomïzacïya: ämbebap jäne tamaşa xéştew (beyne)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] [(Jetildirilgen) Keremet xéştew (beyne)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + + - [ ] Onlayn kwrstar: + - [ ] [Negizgi xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Derek qurılımdarı (beyne)](https://www.coursera.org/learn/data-structures/home/week/4) + - [ ] [Telefon kitapşasınıñ mäselesi (beyne)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] taratılğan xéş kesteleri: + - [Dropbox jüyesinde jıldam jüktep salwlar jäne jadtı oñtaylandırw (beyne)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Taratılğan xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + + - [ ] Sızıqtıq zondtaw arqılı massïvpen orındañız + - xéş(k, m) - m xéş kestesiniñ ölşemi + - qosw(kilt, män) - kilt burınnan bar bolsa, mändi jañartıñız + - bar (kilt) + - alw (kilt) + - joyu (kilt) + +- ### Хабар алмасу, сериялау және кезекке қою жүйелері + - [Үнемдеу](https://thrift.apache.org/) + - [Оқулық](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Протокол буферлері](https://developers.google.com/protocol-buffers/) + - [Оқулықтар](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [Java әзірлеушілеріне арналған gRPC 101 (бейне)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Оқулық](http://try.redis.io/) + - [Amazon SQS (кезек)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Бастау](https://www.rabbitmq.com/getstarted.html) + - [Сельдерей](http://www.celeryproject.org/) + - [Сельдереймен алғашқы қадамдар](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) + - [ZeroMQ](http://zeromq.org/) + - [Кіріспе - Нұсқаулықты оқу](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Кафка](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) -## Papers +- ### A* + - [Іздеу алгоритмі](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Жолды табу (E01: алгоритмді түсіндіру) (бейне)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Жылдам Фурье түрлендіруі + - [Фурье түрлендіруіне арналған интерактивті нұсқаулық](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Фурье түрлендіруі дегеніміз не? Ол не үшін қолданылады?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Фурье түрлендіруі дегеніміз не? (бейне)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Бөліңіз және жеңіңіз: FFT (бейне)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [ФФТ-ны түсіну](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Блум сүзгісі + - m бит және k хэштеу функциялары бар Блум сүзгісін ескере отырып, кірістіру және мүшелік сынағы O(k) болып табылады. + - [Блум сүзгілері (бейне)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Блум сүзгілері | Жаппай деректер жиынын өндіру | Стэнфорд университеті (бейне)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Оқулық](http://billmill.org/bloomfilter-tutorial/) + - [Блум сүзгісі қолданбасын қалай жазуға болады](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) +- ### Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri + - [Ünemdew](https://thrift.apache.org/) + - [Oqwlıq](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) + - [Protokol bwferleri](https://developers.google.com/protocol-buffers/) + - [Oqwlıqtar](https://developers.google.com/protocol-buffers/docs/tutorials) + - [gRPC](http://www.grpc.io/) + - [Java äzirlewşilerine arnalğan gRPC 101 (beyne)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [Redis](http://redis.io/) + - [Oqwlıq](http://try.redis.io/) + - [Amazon SQS (kezek)](https://aws.amazon.com/sqs/) + - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) + - [RabbitMQ](https://www.rabbitmq.com/) + - [Bastaw](https://www.rabbitmq.com/getstarted.html) + - [Selderey](http://www.celeryproject.org/) + - [Seldereymen alğaşqı qadamdar](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) + - [ZeroMQ](http://zeromq.org/) + - [Kirispe - Nusqawlıqtı oqw](http://zeromq.org/intro:read-the-manual) + - [ActiveMQ](http://activemq.apache.org/) + - [Kafka](http://kafka.apache.org/documentation.html#introduction) + - [MessagePack](http://msgpack.org/index.html) + - [Avro](https://avro.apache.org/) -- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) -- [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) -- [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 -- [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? -- [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -- [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - The Dynamo paper kicked off the NoSQL revolution -- [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) -- 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) -- [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) -- [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) -- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) +- ### A* + - [Izdew algorïtmi](https://en.wikipedia.org/wiki/A*_search_algorithm) + - [A* Joldı tabw (E01: algorïtmdi tüsindirw) (beyne)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + +- ### Jıldam Fwre türlendirwi + - [Fwre türlendirwine arnalğan ïnteraktïvti nusqawlıq](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) + - [Fwre türlendirwi degenimiz ne? Ol ne üşin qoldanıladı?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) + - [Fwre türlendirwi degenimiz ne? (beyne)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Böliñiz jäne jeñiñiz: FFT (beyne)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [FFT-nı tüsinw](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) + +- ### Blwm süzgisi + - m bït jäne k xéştew fwnkcïyaları bar Blwm süzgisin eskere otırıp, kiristirw jäne müşelik sınağı O(k) bolıp tabıladı. + - [Blwm süzgileri (beyne)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Blwm süzgileri | Jappay derekter jïının öndirw | Sténford wnïversïteti (beyne)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Oqwlıq](http://billmill.org/bloomfilter-tutorial/) + - [Blwm süzgisi qoldanbasın qalay jazwğa boladı](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) + +- [Сарада Херкенің графикалық теориясы (67 бейне)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Информатика курстары + +- [Онлайн CS курстары каталогы](https://github.com/open-source-society/computer-science) +- [CS курстарының каталогы (көптеген онлайн дәрістер бар)](https://github.com/prakhar1989/awesome-courses) + +## Алгоритмдерді енгізу + +- [Принстон университетінің бірнеше алгоритмдерді енгізуі](https://algs4.cs.princeton.edu/code) + + +## Қағаздар + +- [Классикалық қағаздарды ұнатасыз ба?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Тізбекті процестермен байланысу](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go жүйесінде жүзеге асырылды](https://godoc.org/github.com/thomas11/csp) +- [2003: Google файлдық жүйесі](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 жылы Колосспен ауыстырылды +- [2004: MapReduce: Үлкен кластерлерде оңайлатылған деректерді өңдеу]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - негізінен Cloud Dataflow ауыстырылды ма? +- [2006: Bigtable: құрылымдық деректерге арналған таратылған сақтау жүйесі](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: Біріктірілген таратылған жүйелерге арналған Chubby Lock қызметі](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Динамо: Amazon-ның жоғары қолжетімді кілттер дүкені](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Динамо қағазы NoSQL революциясын бастады +- [2007: Әрбір бағдарламашы жад туралы не білуі керек (өте ұзақ және автор кейбір бөлімдерді өткізіп жіберуді ұсынады)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: жылдам мекенжай санитарлық тексерушісі: + - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [бейне](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google-дың ғаламдық таралған дерекқоры: + - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [бейне](https://www.usenix.org/node/170855) +- [2015: Google-дағы үздіксіз құбырлар](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Жаппай ауқымда жоғары қолжетімділік: Google-дың жарнамалар үшін деректер инфрақұрылымын құру](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Әзірлеушілер кодты қалай іздейді: жағдайды зерттеу](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- Қосымша қағаздар: [1000 қағаз](https://github.com/0voice/computer_expert_paper) + +## ЛИЦЕНЗИЯ -## LICENSE +[CC-BY-SA-4.0](./LICENSE.txt) +- [Sarada Xerkeniñ grafïkalıq teorïyası (67 beyne)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) + +## Ïnformatïka kwrstarı + +- [Onlayn CS kwrstarı katalogı](https://github.com/open-source-society/computer-science) +- [CS kwrstarınıñ katalogı (köptegen onlayn därister bar)](https://github.com/prakhar1989/awesome-courses) + +## Algorïtmderdi engizw + +- [Prïnston wnïversïtetiniñ birneşe algorïtmderdi engizwi](https://algs4.cs.princeton.edu/code) + + +## Qağazdar + +- [Klassïkalıq qağazdardı unatasız ba?](https://www.cs.cmu.edu/~crary/819-f09/) +- [1978: Tizbekti procestermen baylanısw](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) + - [Go jüyesinde jüzege asırıldı](https://godoc.org/github.com/thomas11/csp) +- [2003: Google fayldıq jüyesi](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) + - 2012 jılı Kolosspen awıstırıldı +- [2004: MapReduce: Ülken klasterlerde oñaylatılğan derekterdi öñdew]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) + - negizinen Cloud Dataflow awıstırıldı ma? +- [2006: Bigtable: qurılımdıq derekterge arnalğan taratılğan saqtaw jüyesi](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) +- [2006: Biriktirilgen taratılğan jüyelerge arnalğan Chubby Lock qızmeti](https://research.google.com/archive/chubby-osdi06.pdf) +- [2007: Dïnamo: Amazon-nıñ joğarı qoljetimdi kiltter dükeni](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) + - Dïnamo qağazı NoSQL revolyucïyasın bastadı +- [2007: Ärbir bağdarlamaşı jad twralı ne bilwi kerek (öte uzaq jäne avtor keybir bölimderdi ötkizip jiberwdi usınadı)](https://www.akkadia.org/drepper/cpumemory.pdf) +- 2012: AddressSanitizer: jıldam mekenjay sanïtarlıq tekserwşisi: + - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) + - [beyne](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) +- 2013: Spanner: Google-dıñ ğalamdıq taralğan derekqorı: + - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) + - [beyne](https://www.usenix.org/node/170855) +- [2015: Google-dağı üzdiksiz qubırlar](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) +- [2015: Jappay awqımda joğarı qoljetimdilik: Google-dıñ jarnamalar üşin derekter ïnfraqurılımın qurw](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) +- [2015: Äzirlewşiler kodtı qalay izdeydi: jağdaydı zerttew](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) +- Qosımşa qağazdar: [1000 qağaz](https://github.com/0voice/computer_expert_paper) + +## LÏCENZÏYa [CC-BY-SA-4.0](./LICENSE.txt) From 0cb930e95371afffc1a919375a810756a8c65ab5 Mon Sep 17 00:00:00 2001 From: John Washam Date: Sat, 27 Apr 2024 17:46:37 -0700 Subject: [PATCH 833/857] Added link to Marathi translation. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e31e5b01c9..644c53da3e 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ - [Español](translations/README-es.md) - [German](translations/README-de.md) - [Japanese (日本語)](translations/README-ja.md) +- [Marathi](translations/README-mr.md) - [Polish](translations/README-pl.md) - [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) From f847fecac75af33f58e89637fa30b9cbeb240bf3 Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 06:36:42 +0530 Subject: [PATCH 834/857] Isolating Dutch Translation & renaming to README-nl.md Co-Authored-By: j0pgrm <109052480+j0pgrm@users.noreply.github.com> --- README_KAZAKH.md | 1171 ------------------ README_DUTCH.md => translations/README-nl.md | 0 2 files changed, 1171 deletions(-) delete mode 100644 README_KAZAKH.md rename README_DUTCH.md => translations/README-nl.md (100%) diff --git a/README_KAZAKH.md b/README_KAZAKH.md deleted file mode 100644 index b857da2ae5..0000000000 --- a/README_KAZAKH.md +++ /dev/null @@ -1,1171 +0,0 @@ -# Кодтау сұхбат университеті - -> Мен мұны бастапқыда бағдарламалық жасақтама инженері болу үшін оқу тақырыптарының қысқаша тізімі ретінде жасадым, -> бірақ ол бүгін көріп отырған үлкен тізімге дейін өсті. Осы оқу жоспарын орындағаннан кейін [мен жұмысқа қабылдандым -> Amazon-да бағдарламалық жасақтаманы әзірлеу инженері ретінде](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> Мен сияқты көп оқудың қажеті жоқ шығар. Қалай болғанда да, сізге қажет нәрсенің бәрі осында. -> -> Мен бірнеше ай бойы күніне 8-12 сағат оқыдым. Бұл менің оқиғам: [Google сұхбаты үшін неліктен мен 8 ай бойы толық уақытты оқыдым](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) -> -> **Назар аударыңыз:** Сізге мен сияқты көп оқудың қажеті жоқ. Мен көп уақытымды қажет емес нәрселерге жұмсадым. Бұл туралы қосымша ақпарат төменде. Мен сізге қымбат уақытыңызды жоғалтпай жетуге көмектесемін. -> -> Мұнда келтірілген элементтер сізді кез келген бағдарламалық жасақтама компаниясында техникалық сұхбатқа жақсы дайындайды, -> алыптарды қоса алғанда: Amazon, Facebook, Google және Microsoft. -# Kodtaw suxbat wnïversïteti - -> Men munı bastapqıda bağdarlamalıq jasaqtama ïnjeneri bolw üşin oqw taqırıptarınıñ qısqaşa tizimi retinde jasadım, -> biraq ol bügin körip otırğan ülken tizimge deyin östi. Osı oqw josparın orındağannan keyin [men jumısqa qabıldandım -> Amazon-da bağdarlamalıq jasaqtamanı äzirlew ïnjeneri retinde](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> Men sïyaqtı köp oqwdıñ qajeti joq şığar. Qalay bolğanda da, sizge qajet närseniñ bäri osında. -> -> Men birneşe ay boyı künine 8-12 sağat oqıdım. Bul meniñ oqïğam: [Google suxbatı üşin nelikten men 8 ay boyı tolıq waqıttı oqıdım](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a -google-interview-cc662ce9bb13) -> -> **Nazar awdarıñız:** Sizge men sïyaqtı köp oqwdıñ qajeti joq. Men köp waqıtımdı qajet emes närselerge jumsadım. Bul twralı qosımşa aqparat tömende. Men sizge qımbat waqıtıñızdı joğaltpay jetwge kömektesemin. -> -> Munda keltirilgen élementter sizdi kez kelgen bağdarlamalıq jasaqtama kompanïyasında texnïkalıq suxbatqa jaqsı dayındaydı, -> alıptardı qosa alğanda: Amazon, Facebook, Google jäne Microsoft. - - -> -> *Сәттілік сізге!* - -<толығырақ> -Аудармалар: - -- [中文版本](аудармалар/README-cn.md) -- [Tiếng Việt - вьетнамша](аудармалар/README-vi.md) -- [Español](аудармалар/README-es.md) -- [Português Brasileiro](аудармалар/README-ptbr.md) -- [Польша](аудармалар/README-pl.md) -- [繁體中文](аудармалар/README-tw.md) -- [Жапондық (日本語)](аудармалар/README-ja.md) -- [Орыс](аудармалар/README-ru.md) -- [Неміс](аудармалар/README-de.md) -- [Бахаса Индонезия](аудармалар/README-id.md) -- [ខ្មែរ - кхмер](аудармалар/README-kh.md) -- [Өзбек](аудармалар/README-uz.md) -- [Болгар](аудармалар/README-bg.md) -- [বাংলা - Bangla](translations/README-bn.md) - - -> -> *Sättilik sizge!* - - -Awdarmalar: - -- [zhōng wén bǎn běn](awdarmalar/README-cn.md) -- [Tiếng Việt - vetnamşa](awdarmalar/README-vi.md) -- [Español](awdarmalar/README-es.md) -- [Português Brasileiro](awdarmalar/README-ptbr.md) -- [Polşa](awdarmalar/README-pl.md) -- [fán tǐ zhōng wén](awdarmalar/README-tw.md) -- [Japondıq (rì běn yǔ)](awdarmalar/README-ja.md) -- [Orıs](awdarmalar/README-ru.md) -- [Nemis](awdarmalar/README-de.md) -- [Baxasa Ïndonezïya](awdarmalar/README-id.md) -- [ខ្មែរ - kxmer](awdarmalar/README-kh.md) -- [Özbek](awdarmalar/README-uz.md) -- [Bolgar](awdarmalar/README-bg.md) -- [bānlā - Bangla](translations/README-bn.md) - - - -
-Translations in progress: - -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) - -
- -
- -## Бұл не? - -![Тақтадағы кодтау - HBO арнасының Силикон алқабынан](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -Бұл менің ірі компанияда бағдарламалық жасақтама инженері болу үшін көп айлық оқу жоспарым. - -**Міндетті:** -* Кодтау бойынша аз тәжірибе (айнымалылар, циклдар, әдістер/функциялар және т.б.) -* Сабыр -* Уақыт - -Бұл веб-әзірлеуге емес, **бағдарламалық қамтамасыз ету инженериясына** арналған оқу жоспары екенін ескеріңіз. Google, Amazon сияқты ірі бағдарламалық қамтамасыз ету компаниялары, -Facebook және Microsoft бағдарламалық жасақтаманы веб-әзірлеуден өзгеше деп санайды. Мысалы, Amazon бар -Frontend инженерлері (FEE) және бағдарламалық жасақтаманы әзірлеу инженерлері (SDE). Бұл 2 бөлек рөл және сұхбат -олар бірдей болмайды, өйткені әрқайсысының өз құзыреті бар. Бұл компаниялар үшін информатика білімі қажет -бағдарламалық қамтамасыз етуді әзірлеу/инженерлік рөлдер. - ---- - -## Мазмұны - -### Оқу жоспары - -- [Бұл не?](#не-ол) -- [Неге оны пайдалану керек?](#why-use-it) -- [Қалай пайдалану керек](#қалай-пайдалану керек) -- [Өзіңізді жеткілікті ақылды емес деп санамаңыз](#сізді жеткілікті түрде ақылды-сезінбеңіз) -- [Бейне ресурстары туралы ескертпе](#a-note-about-video-resources) -- [Бағдарламалау тілін таңдау](#choose-a-programming-language) -- [Дерек құрылымдары мен алгоритмдеріне арналған кітаптар](#деректер құрылымдары мен алгоритмдеріне арналған кітаптар) -- [Интервьюге дайындық кітаптары](#interview-prep-books) -- [Менің қателіктерімді жасамаңыз](#қателіктерімді-жасамаңыз) -- [Жабықпен сіз көрмейсіз](#сіз-көрмейтін-қамтылған) -- [Күнделікті жоспар](#күнделікті-жоспар) -- [Сұрақтарды кодтау тәжірибесі](#coding-question-practice) -- [Кодтау мәселелері](#coding-problems) -## Bul ne? - -![Taqtadağı kodtaw - HBO arnasınıñ Sïlïkon alqabınan](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -Bul meniñ iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolw üşin köp aylıq oqw josparım. - -**Mindetti:** -* Kodtaw boyınşa az täjirïbe (aynımalılar, cïkldar, ädister/fwnkcïyalar jäne t.b.) -* Sabır -* Waqıt - -Bul veb-äzirlewge emes, **bağdarlamalıq qamtamasız etw ïnjenerïyasına** arnalğan oqw josparı ekenin eskeriñiz. Google, Amazon sïyaqtı iri bağdarlamalıq qamtamasız etw kompanïyaları, -Facebook jäne Microsoft bağdarlamalıq jasaqtamanı veb-äzirlewden özgeşe dep sanaydı. Mısalı, Amazon bar -Frontend ïnjenerleri (FEE) jäne bağdarlamalıq jasaqtamanı äzirlew ïnjenerleri (SDE). Bul 2 bölek röl jäne suxbat -olar birdey bolmaydı, öytkeni ärqaysısınıñ öz quzıreti bar. Bul kompanïyalar üşin ïnformatïka bilimi qajet -bağdarlamalıq qamtamasız etwdi äzirlew/ïnjenerlik rölder. - ---- - -## Mazmunı - -### Oqw josparı - -- [Bul ne?](#ne-ol) -- [Nege onı paydalanw kerek?](#why-use-it) -- [Qalay paydalanw kerek](#qalay-paydalanw kerek) -- [Öziñizdi jetkilikti aqıldı emes dep sanamañız](#sizdi jetkilikti türde aqıldı-sezinbeñiz) -- [Beyne reswrstarı twralı eskertpe](#a-note-about-video-resources) -- [Bağdarlamalaw tilin tañdaw](#choose-a-programming-language) -- [Derek qurılımdarı men algorïtmderine arnalğan kitaptar](#derekter qurılımdarı men algorïtmderine arnalğan kitaptar) -- [Ïntervyuge dayındıq kitaptarı](#interview-prep-books) -- [Meniñ qatelikterimdi jasamañız](#qatelikterimdi-jasamañız) -- [Jabıqpen siz körmeysiz](#siz-körmeytin-qamtılğan) -- [Kündelikti jospar](#kündelikti-jospar) -- [Suraqtardı kodtaw täjirïbesi](#coding-question-practice) -- [Kodtaw mäseleleri](#coding-problems) - -### Оқу тақырыптары - -- [Алгоритмдік күрделілік / Үлкен-О / Асимптотикалық талдау](#алгоритмдік-күрделілік--үлкен-о--ассимптотикалық-анализ) -- [Дерек құрылымдары](#деректер құрылымдары) - - [Массивтер](#массив) - - [Байланыстырылған тізімдер](#linked-lists) - - [Стек](#стек) - - [Кезек](#кезек) - - [Хэш кестесі](#хэш-кесте) -- [Қосымша білім](#көп-білім) - - [Екілік іздеу](#екілік іздеу) - - [биттік операциялар](#биттік операциялар) -- [Ағаштар](#ағаштар) - - [Ағаштар - Жазбалар және фон](#ағаштар---жазбалар--фон) - - [Екілік іздеу ағаштары: BSTs](#binary-search-trees-bsts) - - [Үйме / Басымдық кезек / Екілік үйме](#үйме--басымдылық-кезегі--екілік-үйме) - - теңдестірілген іздеу ағаштары (детальдар емес, жалпы түсінік) - - өтулер: алдын ала тапсырыс, тапсырыс, кейінгі тапсырыс, BFS, DFS -- [Сұрыптау](#сұрыптау) - - таңдау - - кірістіру - - үйінді сұрыптау - - жылдам сұрыптау - - біріктіру сұрыптауы -- [Графиктер](#график) - - бағыттады - - бағытталмаған - - көршілестік матрицасы - - іргелес тізім - - өтулер: BFS, DFS -- [Одан да көп білім](#ven-more-bilgi) - - [Рекурсия](#рекурсия) - - [Динамикалық бағдарламалау](#динамикалық-бағдарламалау) - - [Дизайн үлгілері](#design-patterns) - - [Комбинаторика (n таңдау k) & Ықтималдық](#комбинаторика-n-таңдау-k--ықтималдық) - - [NP, NP-Толық және жуықтау алгоритмдері](#np-np-толық-және жуықтау-алгоритмдері) - - [Компьютерлер бағдарламаны қалай өңдейді](#қалай-компьютерлер-бағдарламаны өңдейді) - - [Кэштер](#кэштер) - - [Процестер мен ағындар](#processes-and-threads) - - [Тестілеу](#тестілеу) - - [Жолды іздеу және манипуляциялар](#string-searching--манипуляциялар) - - [Әрекет](# тырысады) - - [Жылжымалы нүкте сандары](#жылжымалы нүкте сандары) - - [Юникод](#уникод) - - [Endianness](#endianness) - - [Networking](#networking) -- [Қорытынды шолу](#соңғы шолу) - -### Жұмысқа орналасу - -- [Түйіндемеңізді жаңарту](#жаңарту-өз түйіндемеңіз) -- [Жұмыс табу](#жұмыс табу) -- [Интервью процесі және жалпы сұхбатқа дайындық](#interview-process--жалпы-интервью-дайындық) -- [Сұхбат қашан келетінін ойлаңыз](#сұхбат келгенде-ойланыңыз) -- [Сұхбат алушыға сұрақтарыңыз бар](#сұхбат алушыға-сұрақтарыңыз бар) -- [Жұмысқа қол жеткізгеннен кейін](#бір рет-жұмысқа-алғаннан кейін) - -**---------------- Осы тармақтың астындағылардың барлығы міндетті емес ----------------** -### Oqw taqırıptarı - -- [Algorïtmdik kürdelilik / Ülken-O / Asïmptotïkalıq taldaw](#algorïtmdik-kürdelilik--ülken-o--assïmptotïkalıq-analïz) -- [Derek qurılımdarı](#derekter qurılımdarı) - - [Massïvter](#massïv) - - [Baylanıstırılğan tizimder](#linked-lists) - - [Stek](#stek) - - [Kezek](#kezek) - - [Xéş kestesi](#xéş-keste) -- [Qosımşa bilim](#köp-bilim) - - [Ekilik izdew](#ekilik izdew) - - [bïttik operacïyalar](#bïttik operacïyalar) -- [Ağaştar](#ağaştar) - - [Ağaştar - Jazbalar jäne fon](#ağaştar---jazbalar--fon) - - [Ekilik izdew ağaştarı: BSTs](#binary-search-trees-bsts) - - [Üyme / Basımdıq kezek / Ekilik üyme](#üyme--basımdılıq-kezegi--ekilik-üyme) - - teñdestirilgen izdew ağaştarı (detaldar emes, jalpı tüsinik) - - ötwler: aldın ala tapsırıs, tapsırıs, keyingi tapsırıs, BFS, DFS -- [Surıptaw](#surıptaw) - - tañdaw - - kiristirw - - üyindi surıptaw - - jıldam surıptaw - - biriktirw surıptawı -- [Grafïkter](#grafïk) - - bağıttadı - - bağıttalmağan - - körşilestik matrïcası - - irgeles tizim - - ötwler: BFS, DFS -- [Odan da köp bilim](#ven-more-bilgi) - - [Rekwrsïya](#rekwrsïya) - - [Dïnamïkalıq bağdarlamalaw](#dïnamïkalıq-bağdarlamalaw) - - [Dïzayn ülgileri](#design-patterns) - - [Kombïnatorïka (n tañdaw k) & Iqtïmaldıq](#kombïnatorïka-n-tañdaw-k--ıqtïmaldıq) - - [NP, NP-Tolıq jäne jwıqtaw algorïtmderi](#np-np-tolıq-jäne jwıqtaw-algorïtmderi) - - [Kompyuterler bağdarlamanı qalay öñdeydi](#qalay-kompyuterler-bağdarlamanı öñdeydi) - - [Kéşter](#kéşter) - - [Procester men ağındar](#processes-and-threads) - - [Testilew](#testilew) - - [Joldı izdew jäne manïpwlyacïyalar](#string-searching--manïpwlyacïyalar) - - [Äreket](# tırısadı) - - [Jıljımalı nükte sandarı](#jıljımalı nükte sandarı) - - [Yunïkod](#wnïkod) - - [Endianness](#endianness) - - [Networking](#networking) -- [Qorıtındı şolw](#soñğı şolw) - -### Jumısqa ornalasw - -- [Tüyindemeñizdi jañartw](#jañartw-öz tüyindemeñiz) -- [Jumıs tabw](#jumıs tabw) -- [Ïntervyu procesi jäne jalpı suxbatqa dayındıq](#interview-process--jalpı-ïntervyu-dayındıq) -- [Suxbat qaşan keletinin oylañız](#suxbat kelgende-oylanıñız) -- [Suxbat alwşığa suraqtarıñız bar](#suxbat alwşığa-suraqtarıñız bar) -- [Jumısqa qol jetkizgennen keyin](#bir ret-jumısqa-alğannan keyin) - -**---------------- Osı tarmaqtıñ astındağılardıñ barlığı mindetti emes ----------------** - -### Қосымша қосымша тақырыптар мен ресурстар - -- [Қосымша кітаптар](#қосымша кітаптар) -- [Жүйені жобалау, масштабтау, деректерді өңдеу](#жүйе дизайны-масштабтау-деректерді өңдеу) (4 жылдан астам тәжірибеңіз болса) -- [Қосымша оқыту](#қосымша-оқыту) - - [Құрастырушылар](#компиляторлар) - - [Emacs және vi(m)](#emacs-and-vim) - - [Unix пәрмен жолы құралдары](#unix-командалық жол құралдары) - - [Ақпарат теориясы](#ақпарат-теория-бейнелер) - - [Паритет және Хамминг коды](#parity--hamming-code-videos) - - [Энтропия](#энтропия) - - [Криптография](#криптография) - - [Сығу](#қысу) - - [Компьютер қауіпсіздігі](#компьютер қауіпсіздігі) - - [Қоқыс жинау](#қоқыс жинау) - - [Параллельді бағдарламалау](#параллельді бағдарламалау) - - [Хабар алмасу, сериялау және кезекке қою жүйелері](#хабарлама-серияландыру-және-кезектеу-жүйелері) - - [A*](#a) - - [Fast Furier Transform](#fast-fourier-transform) - - [Блум сүзгісі](#блум-сүзгісі) - - [HyperLogLog](#hyperloglog) - - [Жергілікті-сезімтал хэштеу](#жергілікті-сезімтал-хэшинг) - - [ван Эмде Боас ағаштары](#ван-емде-боас-ағаштар) - - [Толықтырылған деректер құрылымдары](#augmented-data-structures) - - [Балансталған іздеу ағаштары](#балансталған іздеу ағаштары) - - AVL ағаштары - - Ағаштар - - қызыл/қара ағаштар - - 2-3 іздеу ағаштары - - 2-3-4 ағаш (2-4 ағаш) - - N-ары (Қ-ары, М-ары) ағаштары - - В-ағаштар - - [k-D ағаштары](#k-d-ағаштар) - - [Тізімдерді өткізіп жіберу](#өткізу тізімдері) - - [Желі ағындары](#желі ағындары) - - [Ажыратылған жиындар және одақтарды табу](#disjoint-жинақтар--одақ-табу) - - [Жылдам өңдеуге арналған математика](#жылдам өңдеуге арналған математика) - - [Треап](#treap) - - [Сызықтық бағдарламалау](#linear-бағдарламалау-бейнелер) - - [Геометрия, дөңес корпус](#геометрия-дөңес-корпус-бейнелері) - - [Дискретті математика](#дискретті-математика) -- [Кейбір тақырыптар бойынша қосымша мәліметтер](кейбір тақырыптар бойынша #қосымша-деталь) -- [Бейне сериясы](#бейне сериясы) -- [Информатика курстары](#компьютер-ғылым-курстары) -- [Қағаздар](#қағаз) -### Qosımşa qosımşa taqırıptar men reswrstar - -- [Qosımşa kitaptar](#qosımşa kitaptar) -- [Jüyeni jobalaw, masştabtaw, derekterdi öñdew](#jüye dïzaynı-masştabtaw-derekterdi öñdew) (4 jıldan astam täjirïbeñiz bolsa) -- [Qosımşa oqıtw](#qosımşa-oqıtw) - - [Qurastırwşılar](#kompïlyatorlar) - - [Emacs jäne vi(m)](#emacs-and-vim) - - [Unix pärmen jolı quraldarı](#unix-komandalıq jol quraldarı) - - [Aqparat teorïyası](#aqparat-teorïya-beyneler) - - [Parïtet jäne Xammïng kodı](#parity--hamming-code-videos) - - [Éntropïya](#éntropïya) - - [Krïptografïya](#krïptografïya) - - [Sığw](#qısw) - - [Kompyuter qawipsizdigi](#kompyuter qawipsizdigi) - - [Qoqıs jïnaw](#qoqıs jïnaw) - - [Paralleldi bağdarlamalaw](#paralleldi bağdarlamalaw) - - [Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri](#xabarlama-serïyalandırw-jäne-kezektew-jüyeleri) - - [A*](#a) - - [Fast Furier Transform](#fast-fourier-transform) - - [Blwm süzgisi](#blwm-süzgisi) - - [HyperLogLog](#hyperloglog) - - [Jergilikti-sezimtal xéştew](#jergilikti-sezimtal-xéşïng) - - [van Émde Boas ağaştarı](#van-emde-boas-ağaştar) - - [Tolıqtırılğan derekter qurılımdarı](#augmented-data-structures) - - [Balanstalğan izdew ağaştarı](#balanstalğan izdew ağaştarı) - - AVL ağaştarı - - Ağaştar - - qızıl/qara ağaştar - - 2-3 izdew ağaştarı - - 2-3-4 ağaş (2-4 ağaş) - - N-arı (Q-arı, M-arı) ağaştarı - - V-ağaştar - - [k-D ağaştarı](#k-d-ağaştar) - - [Tizimderdi ötkizip jiberw](#ötkizw tizimderi) - - [Jeli ağındarı](#jeli ağındarı) - - [Ajıratılğan jïındar jäne odaqtardı tabw](#disjoint-jïnaqtar--odaq-tabw) - - [Jıldam öñdewge arnalğan matematïka](#jıldam öñdewge arnalğan matematïka) - - [Treap](#treap) - - [Sızıqtıq bağdarlamalaw](#linear-bağdarlamalaw-beyneler) - - [Geometrïya, döñes korpws](#geometrïya-döñes-korpws-beyneleri) - - [Dïskretti matematïka](#dïskretti-matematïka) -- [Keybir taqırıptar boyınşa qosımşa mälimetter](keybir taqırıptar boyınşa #qosımşa-detal) -- [Beyne serïyası](#beyne serïyası) -- [Ïnformatïka kwrstarı](#kompyuter-ğılım-kwrstarı) -- [Qağazdar](#qağaz) - -## Оны не үшін қолдану керек? - -Егер сіз ірі компанияда бағдарламалық жасақтама инженері болып жұмыс істегіңіз келсе, бұл сізге білу керек нәрселер. - -Егер сіз мен сияқты информатика бойынша ғылыми дәреже алуды жіберіп алсаңыз, бұл сізді қуып жетіп, өміріңіздің төрт жылын сақтайды. - -Мен бұл жобаны бастаған кезде, мен үйіндіден стекті білмедім, Big-O ештеңе білмедім, ағаштар туралы ештеңе білмедім немесе қалай істеу керектігін білмедім. -графикті айналып өту. Егер мен сұрыптау алгоритмін кодтауым керек болса, бұл қорқынышты болар еді деп айта аламын. -Мен пайдаланған әрбір деректер құрылымы тілге салынған және мен олардың қалай жұмыс істейтінін білмедім -мүлде капюшонның астында. Мен іске қосып жатқан процесс «шығын» бермейінше, жадты ешқашан басқаруға тура келмеді -жад» қатесі пайда болды, содан кейін уақытша шешім табуым керек еді. Мен өмірімде бірнеше көп өлшемді массивтерді қолдандым және -мыңдаған ассоциативті массивтер, бірақ мен ешқашан деректер құрылымдарын нөлден жасаған емеспін. - -Бұл ұзақ жоспар. Бұл сізге айлар алуы мүмкін. Егер сіз мұның көп бөлігімен таныс болсаңыз, бұл сізге әлдеқайда аз уақыт алады. - -## Оны қалай пайдалануға болады - -Төмендегілердің бәрі контур, сондықтан элементтерді жоғарыдан төменге қарай ретімен шешу керек. - -Мен GitHub-тың арнайы белгілеу дәмін, соның ішінде орындалу барысын бақылау үшін тапсырмалар тізімдерін пайдаланамын. - - [GitHub-flavored markdown туралы толығырақ](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -### Егер сіз git қолданбасын пайдаланғыңыз келмесе - -Бұл бетте жоғарғы жағындағы Код түймесін басыңыз, содан кейін «ZIP жүктеп алу» түймесін басыңыз. Файлды ашыңыз және мәтіндік файлдармен жұмыс істей аласыз. - -Белгілеуді түсінетін код өңдегішінде ашық болсаңыз, барлығы жақсы пішімделгенін көресіз. - -![Репоны zip файлы ретінде қалай жүктеп алуға болады](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - -### Егер сіз gitпен ыңғайлы болсаңыз - -Мынадай элементтерді тексеру үшін жаңа тармақ жасаңыз, жақшаға x белгісін қойыңыз: [x] - -1. ***GitHub репосын ашыңыз:*** `https://github.com/jwasham/coding-interview-university` Fork түймесін басу арқылы. -## Onı ne üşin qoldanw kerek? - -Eger siz iri kompanïyada bağdarlamalıq jasaqtama ïnjeneri bolıp jumıs istegiñiz kelse, bul sizge bilw kerek närseler. - -Eger siz men sïyaqtı ïnformatïka boyınşa ğılımï däreje alwdı jiberip alsañız, bul sizdi qwıp jetip, ömiriñizdiñ tört jılın saqtaydı. - -Men bul jobanı bastağan kezde, men üyindiden stekti bilmedim, Big-O eşteñe bilmedim, ağaştar twralı eşteñe bilmedim nemese qalay istew kerektigin bilmedim. -grafïkti aynalıp ötw. Eger men surıptaw algorïtmin kodtawım kerek bolsa, bul qorqınıştı bolar edi dep ayta alamın. -Men paydalanğan ärbir derekter qurılımı tilge salınğan jäne men olardıñ qalay jumıs isteytinin bilmedim -mülde kapyuşonnıñ astında. Men iske qosıp jatqan process «şığın» bermeyinşe, jadtı eşqaşan basqarwğa twra kelmedi -jad» qatesi payda boldı, sodan keyin waqıtşa şeşim tabwım kerek edi. Men ömirimde birneşe köp ölşemdi massïvterdi qoldandım jäne -mıñdağan assocïatïvti massïvter, biraq men eşqaşan derekter qurılımdarın nölden jasağan emespin. - -Bul uzaq jospar. Bul sizge aylar alwı mümkin. Eger siz munıñ köp böligimen tanıs bolsañız, bul sizge äldeqayda az waqıt aladı. - -## Onı qalay paydalanwğa boladı - -Tömendegilerdiñ bäri kontwr, sondıqtan élementterdi joğarıdan tömenge qaray retimen şeşw kerek. - -Men GitHub-tıñ arnayı belgilew dämin, sonıñ işinde orındalw barısın baqılaw üşin tapsırmalar tizimderin paydalanamın. - - [GitHub-flavored markdown twralı tolığıraq](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) - -### Eger siz git qoldanbasın paydalanğıñız kelmese - -Bul bette joğarğı jağındağı Kod tüymesin basıñız, sodan keyin «ZIP jüktep alw» tüymesin basıñız. Fayldı aşıñız jäne mätindik fayldarmen jumıs istey alasız. - -Belgilewdi tüsinetin kod öñdegişinde aşıq bolsañız, barlığı jaqsı pişimdelgenin köresiz. - -![Reponı zip faylı retinde qalay jüktep alwğa boladı](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) - -### Eger siz gitpen ıñğaylı bolsañız - -Mınaday élementterdi tekserw üşin jaña tarmaq jasañız, jaqşağa x belgisin qoyıñız: [x] - -1. ***GitHub reposın aşıñız:*** `https://github.com/jwasham/coding-interview-university` Fork tüymesin basw arqılı. - - -![GitHub репосын ашыңыз](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) - -1. Жергілікті репоға клондау: - - ``` - git clone git@github.com:/coding-interview-university.git - CD кодтау-сұхбат-университет - git checkout -b прогресс - git қашықтан jwasham қосу https://github.com/jwasham/coding-interview-university - git fetch --барлығы - ``` - -1. Өзгерістерді аяқтағаннан кейін барлық ұяшықтарды X белгісімен белгілеңіз: - - ``` - git қосу. - git commit -m «X белгіленген» - git rebase jwasham/main - git push --set-upstream бастапқы прогресті - git push --force - ``` - -## Өзіңді жеткілікті ақылды емес деп санама - -- Табысты бағдарламалық жасақтама инженерлері ақылды, бірақ олардың көпшілігі жеткілікті ақылды емес деген сенімсіздікке ие. -- Келесі бейнелер осы сенімсіздікті жеңуге көмектесуі мүмкін: - - [Данышпан программист туралы миф](https://www.youtube.com/watch?v=0SARbwvhupQ) - - [Жалғыз жүру қауіпті: технологиядағы көрінбейтін құбыжықтармен күресу](https://www.youtube.com/watch?v=1i8ylq4j_EY) - -## Бейне ресурстар туралы ескертпе - -Кейбір бейнелер Coursera немесе EdX сыныбына тіркелу арқылы ғана қолжетімді. Бұлар MOOC деп аталады. -Кейде сабақтар сессияда болмайды, сондықтан сізге бірнеше ай күтуге тура келеді, сондықтан сізде кіру мүмкіндігі болмайды. - -Онлайн курс ресурстарын тегін және әрқашан қолжетімді жалпыға қолжетімді көздермен алмастыру тамаша болар еді, -мысалы, YouTube бейнелері (жақсырақ университет лекциялары), сондықтан сіз кез келген уақытта оларды оқи аласыз, -белгілі бір онлайн курс сессияда болғанда ғана емес. - -## Бағдарламалау тілін таңдаңыз - -Сізге кодтау сұхбаттары үшін бағдарламалау тілін таңдау керек, -бірақ сізге информатика ұғымдарын зерттеу үшін қолдануға болатын тілді табу қажет болады. - -Тіл бірдей болғаны дұрыс, сондықтан сізге тек біреуін білу керек. - -### Осы оқу жоспары үшін - -Мен оқу жоспарын жасаған кезде оның көп бөлігінде 2 тілді қолдандым: C және Python - -* C: Өте төмен деңгей. Көрсеткіштермен және жадты бөлу/бөлумен жұмыс істеуге мүмкіндік береді, осылайша деректер құрылымдарын сезінесіз - және сүйектеріңіздегі алгоритмдер. Python немесе Java сияқты жоғары деңгейлі тілдерде олар сізден жасырылады. Күнделікті жұмыста бұл керемет, - бірақ сіз осы төмен деңгейлі деректер құрылымдарының қалай салынғанын үйреніп жатқанда, металға жақын сезіну өте жақсы. - - C барлық жерде бар. Сіз оқу кезінде мысалдарды кітаптардан, лекциялардан, бейнелерден, *барлық жерде* көресіз. - - [The C бағдарламалау тілі, 2-том](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) -![GitHub reposın aşıñız](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) - -1. Jergilikti repoğa klondaw: - - ``` - git clone git@github.com:/coding-interview-university.git - CD kodtaw-suxbat-wnïversïtet - git checkout -b progress - git qaşıqtan jwasham qosw https://github.com/jwasham/coding-interview-university - git fetch --barlığı - ``` - -1. Özgeristerdi ayaqtağannan keyin barlıq uyaşıqtardı X belgisimen belgileñiz: - - ``` - git qosw. - git commit -m «X belgilengen» - git rebase jwasham/main - git push --set-upstream bastapqı progresti - git push --force - ``` - -## Öziñdi jetkilikti aqıldı emes dep sanama - -- Tabıstı bağdarlamalıq jasaqtama ïnjenerleri aqıldı, biraq olardıñ köpşiligi jetkilikti aqıldı emes degen senimsizdikke ïe. -- Kelesi beyneler osı senimsizdikti jeñwge kömekteswi mümkin: - - [Danışpan programmïst twralı mïf](https://www.youtube.com/watch?v=0SARbwvhupQ) - - [Jalğız jürw qawipti: texnologïyadağı körinbeytin qubıjıqtarmen küresw](https://www.youtube.com/watch?v=1i8ylq4j_EY) - -## Beyne reswrstar twralı eskertpe - -Keybir beyneler Coursera nemese EdX sınıbına tirkelw arqılı ğana qoljetimdi. Bular MOOC dep ataladı. -Keyde sabaqtar sessïyada bolmaydı, sondıqtan sizge birneşe ay kütwge twra keledi, sondıqtan sizde kirw mümkindigi bolmaydı. - -Onlayn kwrs reswrstarın tegin jäne ärqaşan qoljetimdi jalpığa qoljetimdi közdermen almastırw tamaşa bolar edi, -mısalı, YouTube beyneleri (jaqsıraq wnïversïtet lekcïyaları), sondıqtan siz kez kelgen waqıtta olardı oqï alasız, -belgili bir onlayn kwrs sessïyada bolğanda ğana emes. - -## Bağdarlamalaw tilin tañdañız - -Sizge kodtaw suxbattarı üşin bağdarlamalaw tilin tañdaw kerek, -biraq sizge ïnformatïka uğımdarın zerttew üşin qoldanwğa bolatın tildi tabw qajet boladı. - -Til birdey bolğanı durıs, sondıqtan sizge tek birewin bilw kerek. - -### Osı oqw josparı üşin - -Men oqw josparın jasağan kezde onıñ köp böliginde 2 tildi qoldandım: C jäne Python - -* C: Öte tömen deñgey. Körsetkiştermen jäne jadtı bölw/bölwmen jumıs istewge mümkindik beredi, osılayşa derekter qurılımdarın sezinesiz - jäne süyekteriñizdegi algorïtmder. Python nemese Java sïyaqtı joğarı deñgeyli tilderde olar sizden jasırıladı. Kündelikti jumısta bul keremet, - biraq siz osı tömen deñgeyli derekter qurılımdarınıñ qalay salınğanın üyrenip jatqanda, metalğa jaqın sezinw öte jaqsı. - - C barlıq jerde bar. Siz oqw kezinde mısaldardı kitaptardan, lekcïyalardan, beynelerden, *barlıq jerde* köresiz. - - [The C bağdarlamalaw tili, 2-tom](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - - Бұл қысқа кітап, бірақ ол сізге Си тілін жақсы меңгеруге мүмкіндік береді және егер сіз оны аздап үйренсеңіз - тез шеберлікке ие боласыз. Си түсіну бағдарламалар мен жадтың қалай жұмыс істейтінін түсінуге көмектеседі. - - Кітаптың тереңіне барудың (тіпті оны аяқтаудың) қажеті жоқ. Си тілінде оқуға және жазуға ыңғайлы жерге жетіңіз. - - [Кітаптағы сұрақтарға жауаптар](https://github.com/lekkas/c-algorithms) -* Python: Заманауи және өте мәнерлі, мен оны білдім, себебі бұл өте пайдалы және сұхбатта азырақ код жазуға мүмкіндік береді. - -Бұл менің басымдылығым. Сіз өзіңізге ұнайтын нәрсені жасайсыз, әрине. - -Бұл сізге қажет болмауы мүмкін, бірақ жаңа тілді үйренуге арналған бірнеше сайттар: -- [Жаттығу](https://exercism.org/tracks) -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) -- [Код күштері](https://codeforces.com/) -- [Scaler тақырыптары](https://www.scaler.com/topics/) - -### Кодтау сұхбаты үшін - -Сұхбаттың кодтау бөлігін орындау үшін өзіңізге ыңғайлы тілді пайдалануға болады, бірақ ірі компаниялар үшін бұл дұрыс таңдау: - -- C++ -- Java -- Python - -Сіз оларды да пайдалана аласыз, бірақ алдымен оқып шығыңыз. Ескертулер болуы мүмкін: - -- JavaScript -- Рубин - -Сұхбат үшін тілді таңдау туралы жазған мақалам: -[Кодтау сұхбаты үшін бір тілді таңдаңыз](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -Бұл менің постыма негізделген түпнұсқа мақала: [Сұхбаттар үшін бағдарламалау тілін таңдау](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- жұмыс/) - -Сіз тілде өте ыңғайлы және білімді болуыңыз керек. -- Bul qısqa kitap, biraq ol sizge Sï tilin jaqsı meñgerwge mümkindik beredi jäne eger siz onı azdap üyrenseñiz - tez şeberlikke ïe bolasız. Sï tüsinw bağdarlamalar men jadtıñ qalay jumıs isteytinin tüsinwge kömektesedi. - - Kitaptıñ tereñine barwdıñ (tipti onı ayaqtawdıñ) qajeti joq. Sï tilinde oqwğa jäne jazwğa ıñğaylı jerge jetiñiz. - - [Kitaptağı suraqtarğa jawaptar](https://github.com/lekkas/c-algorithms) -* Python: Zamanawï jäne öte mänerli, men onı bildim, sebebi bul öte paydalı jäne suxbatta azıraq kod jazwğa mümkindik beredi. - -Bul meniñ basımdılığım. Siz öziñizge unaytın närseni jasaysız, ärïne. - -Bul sizge qajet bolmawı mümkin, biraq jaña tildi üyrenwge arnalğan birneşe sayttar: -- [Jattığw](https://exercism.org/tracks) -- [Codewars](http://www.codewars.com) -- [Codility](https://codility.com/programmers/) -- [HackerEarth](https://www.hackerearth.com/) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) -- [Codechef](https://www.codechef.com/) -- [Kod küşteri](https://codeforces.com/) -- [Scaler taqırıptarı](https://www.scaler.com/topics/) - -### Kodtaw suxbatı üşin - -Suxbattıñ kodtaw böligin orındaw üşin öziñizge ıñğaylı tildi paydalanwğa boladı, biraq iri kompanïyalar üşin bul durıs tañdaw: - -- C++ -- Java -- Python - -Siz olardı da paydalana alasız, biraq aldımen oqıp şığıñız. Eskertwler bolwı mümkin: - -- JavaScript -- Rwbïn - -Suxbat üşin tildi tañdaw twralı jazğan maqalam: -[Kodtaw suxbatı üşin bir tildi tañdañız](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -Bul meniñ postıma negizdelgen tüpnusqa maqala: [Suxbattar üşin bağdarlamalaw tilin tañdaw](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language- jumıs/) - -Siz tilde öte ıñğaylı jäne bilimdi bolwıñız kerek. - - -Таңдау туралы толығырақ оқыңыз: -- [Кодтау сұхбаты үшін дұрыс тілді таңдаңыз](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) - -[Тілге қатысты ресурстарды осы жерден қараңыз](programming-language-resources.md) - -## Деректер құрылымдары мен алгоритмдерге арналған кітаптар - -Бұл кітап сіздің информатика ғылымының негізін қалады. - -Сізге ыңғайлы тілде біреуін ғана таңдаңыз. Сіз көп оқумен және кодтаумен айналысатын боласыз. - -### C - -- [C тіліндегі алгоритмдер, 1-5 бөліктері (бума), 3-ші басылым](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Негіздер, деректер құрылымдары, сұрыптау, іздеу және графикалық алгоритмдер - -### Python - -- [Python тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - Гудрих, Тамассия, Голдвассер - - Маған бұл кітап ұнады. Ол барлығын және т.б. қамтыды. - - Питоникалық код - - менің жарқыраған кітабым туралы есеп: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - -### Java - -Сенің таңдауың: - -- Гудрих, Тамассия, Голдвассер - - [Java тіліндегі деректер құрылымдары мен алгоритмдері](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) -- Седжвик пен Уэйн: - - [Алгоритмдер](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Кітапты қамтитын тегін Coursera курсы (авторлар үйретеді!): - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Алгоритмдер II](https://www.coursera.org/learn/algorithms-part2) - -### C++ -Tañdaw twralı tolığıraq oqıñız: -- [Kodtaw suxbatı üşin durıs tildi tañdañız](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) - -[Tilge qatıstı reswrstardı osı jerden qarañız](programming-language-resources.md) - -## Derekter qurılımdarı men algorïtmderge arnalğan kitaptar - -Bul kitap sizdiñ ïnformatïka ğılımınıñ negizin qaladı. - -Sizge ıñğaylı tilde birewin ğana tañdañız. Siz köp oqwmen jäne kodtawmen aynalısatın bolasız. - -### C - -- [C tilindegi algorïtmder, 1-5 bölikteri (bwma), 3-şi basılım](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - - Negizder, derekter qurılımdarı, surıptaw, izdew jäne grafïkalıq algorïtmder - -### Python - -- [Python tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - Gwdrïx, Tamassïya, Goldvasser - - Mağan bul kitap unadı. Ol barlığın jäne t.b. qamtıdı. - - Pïtonïkalıq kod - - meniñ jarqırağan kitabım twralı esep: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - -### Java - -Seniñ tañdawıñ: - -- Gwdrïx, Tamassïya, Goldvasser - - [Java tilindegi derekter qurılımdarı men algorïtmderi](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) -- Sedjvïk pen Wéyn: - - [Algorïtmder](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - Kitaptı qamtïtın tegin Coursera kwrsı (avtorlar üyretedi!): - - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) - - [Algorïtmder II](https://www.coursera.org/learn/algorithms-part2) - -### C++ - -Сенің таңдауың: - -- Гудрих, Тамассия және тау - - [C++ тіліндегі деректер құрылымдары мен алгоритмдері, 2-ші басылым](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- Седжвик пен Уэйн - - [C++ тіліндегі алгоритмдер, 1-4 бөлімдер: негіздері, деректер құрылымы, сұрыптау, іздеу](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - - [C++ тіліндегі алгоритмдер 5-бөлім: Графикалық алгоритмдер](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -## Сұхбатқа дайындық кітаптары - -Сізге бұлардың жиынтығын сатып алудың қажеті жоқ. Шынымды айтсам, «кодтау сұхбатын бұзу» жеткілікті шығар, -бірақ мен өзіме көбірек тәжірибе беру үшін көбірек сатып алдым. Бірақ мен әрқашан тым көп істеймін. - -Мен бұл екеуін де сатып алдым. Олар маған көп тәжірибе берді. - -- [Ашық болған сұхбаттарды бағдарламалау: сұхбат арқылы жолыңызды кодтау, 4-ші басылым](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - C++ және Java тілінде жауаптар - - Бұл кодтау сұхбатын бұзу үшін жақсы қыздыру - - Өте қиын емес. Көптеген мәселелер сұхбатта көретіннен оңай болуы мүмкін (мен оқығанымнан) -- [Кодтау сұхбатын бұзу, 6-шы басылым](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Java тілінде жауаптар - -### Егер сізде қосымша уақыт болса: - -Біреуін таңдаңыз: - -- [Бағдарламалау сұхбаттарының элементтері (C++ нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [Python тіліндегі сұхбаттарды бағдарламалау элементтері](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [Бағдарламалау сұхбаттарының элементтері (Java нұсқасы)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) -Seniñ tañdawıñ: - -- Gwdrïx, Tamassïya jäne taw - - [C++ tilindegi derekter qurılımdarı men algorïtmderi, 2-şi basılım](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) -- Sedjvïk pen Wéyn - - [C++ tilindegi algorïtmder, 1-4 bölimder: negizderi, derekter qurılımı, surıptaw, izdew](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - - [C++ tilindegi algorïtmder 5-bölim: Grafïkalıq algorïtmder](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) - -## Suxbatqa dayındıq kitaptarı - -Sizge bulardıñ jïıntığın satıp alwdıñ qajeti joq. Şınımdı aytsam, «kodtaw suxbatın buzw» jetkilikti şığar, -biraq men özime köbirek täjirïbe berw üşin köbirek satıp aldım. Biraq men ärqaşan tım köp isteymin. - -Men bul ekewin de satıp aldım. Olar mağan köp täjirïbe berdi. - -- [Aşıq bolğan suxbattardı bağdarlamalaw: suxbat arqılı jolıñızdı kodtaw, 4-şi basılım](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - - C++ jäne Java tilinde jawaptar - - Bul kodtaw suxbatın buzw üşin jaqsı qızdırw - - Öte qïın emes. Köptegen mäseleler suxbatta köretinnen oñay bolwı mümkin (men oqığanımnan) -- [Kodtaw suxbatın buzw, 6-şı basılım](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - Java tilinde jawaptar - -### Eger sizde qosımşa waqıt bolsa: - -Birewin tañdañız: - -- [Bağdarlamalaw suxbattarınıñ élementteri (C++ nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [Python tilindegi suxbattardı bağdarlamalaw élementteri](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) -- [Bağdarlamalaw suxbattarınıñ élementteri (Java nusqası)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - -- [Компаньон жобасы - Кітаптағы әрбір мәселеге арналған әдістемелер мен сынақ жағдайлары](https://github.com/gardncl/elements-of-programming-interviews) - -## Менің қателіктерімді жасама - -Бұл тізім бірнеше ай бойы өсті және иә, ол бақылаудан шықты. - -Сізге жақсырақ тәжірибе алу үшін мен бірнеше қателіктер жібердім. Ал сіз айлар уақытыңызды үнемдейсіз. - -### 1. Сіз мұның бәрін есте сақтамайсыз - -Мен бірнеше сағат бейнелерді көрдім және көптеген жазбалар алдым, ал бірнеше ай өткен соң есімде жоқ көп нәрсе болды. Мен 3 күн жүрдім -Жазбаларым арқылы және флешкарталар жасау арқылы, мен қарап шығу үшін. Маған бұл білімнің бәрі қажет емес еді. - -Менің қателіктерімді жібермеу үшін оқыңыз: - -[Информатика білімін сақтау](https://startupnextdoor.com/retaining-computer-science-knowledge/). - -### 2. Flashcards пайдаланыңыз - -Мәселені шешу үшін мен шағын флэшкарталар сайтын жасадым, онда мен 2 түрдегі флэшкарталарды қоса аламын: жалпы және код. -Әр картаның пішімі әртүрлі. Мен қай жерде болсам да, телефонда немесе планшетте қарап шығу үшін мобильді веб-сайт жасадым. - -Өзіңізді тегін жасаңыз: - -- [Flashcards сайтының репосы](https://github.com/jwasham/computer-science-flash-cards) - -**Флешкарталарымды пайдалануды ұсынбаймын.** Олардың саны тым көп және олардың көпшілігі сізге қажет емес ұсақ-түйектер. - -Бірақ мені тыңдағың келмесе, мынаны айтасың: -- [Менің флэш карталарымның дерекқорым (1200 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [Менің флэш карталарымның дерекқорым (экстремалды - 1800 карта)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -- [Kompanon jobası - Kitaptağı ärbir mäselege arnalğan ädistemeler men sınaq jağdayları](https://github.com/gardncl/elements-of-programming-interviews) - -## Meniñ qatelikterimdi jasama - -Bul tizim birneşe ay boyı östi jäne ïä, ol baqılawdan şıqtı. - -Sizge jaqsıraq täjirïbe alw üşin men birneşe qatelikter jiberdim. Al siz aylar waqıtıñızdı ünemdeysiz. - -### 1. Siz munıñ bärin este saqtamaysız - -Men birneşe sağat beynelerdi kördim jäne köptegen jazbalar aldım, al birneşe ay ötken soñ esimde joq köp närse boldı. Men 3 kün jürdim -Jazbalarım arqılı jäne fleşkartalar jasaw arqılı, men qarap şığw üşin. Mağan bul bilimniñ bäri qajet emes edi. - -Meniñ qatelikterimdi jibermew üşin oqıñız: - -[Ïnformatïka bilimin saqtaw](https://startupnextdoor.com/retaining-computer-science-knowledge/). - -### 2. Flashcards paydalanıñız - -Mäseleni şeşw üşin men şağın fléşkartalar saytın jasadım, onda men 2 türdegi fléşkartalardı qosa alamın: jalpı jäne kod. -Är kartanıñ pişimi ärtürli. Men qay jerde bolsam da, telefonda nemese planşette qarap şığw üşin mobïldi veb-sayt jasadım. - -Öziñizdi tegin jasañız: - -- [Flashcards saytınıñ reposı](https://github.com/jwasham/computer-science-flash-cards) - -**Fleşkartalarımdı paydalanwdı usınbaymın.** Olardıñ sanı tım köp jäne olardıñ köpşiligi sizge qajet emes usaq-tüyekter. - -Biraq meni tıñdağıñ kelmese, mınanı aytasıñ: -- [Meniñ fléş kartalarımnıñ derekqorım (1200 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [Meniñ fléş kartalarımnıñ derekqorım (ékstremaldı - 1800 karta)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): - -Есіңізде болсын, мен шектен шығып кеттім және ассемблер тілі мен Python тривиасынан бастап машиналық оқыту мен статистикаға дейін барлығын қамтитын карталарым бар. -Бұл талап етілетін нәрсе үшін тым көп. - -**Флешкарталар туралы ескертпе:** Жауапты білетіндігіңізді бірінші рет танысаңыз, оны белгілі деп белгілемеңіз. Сіз көруіңіз керек -сол картаны және оны шынымен білмей тұрып, оған бірнеше рет дұрыс жауап беріңіз. Қайталау бұл білімді тереңдетеді -сіздің миыңыз. - -Менің флэшкарта сайтымды пайдаланудың баламасы [Anki](http://ankisrs.net/), ол маған бірнеше рет ұсынылды. -Ол есте сақтауға көмектесу үшін қайталау жүйесін пайдаланады. Бұл пайдаланушыға ыңғайлы, барлық платформаларда қол жетімді және бұлтты синхрондау жүйесі бар. -Оның құны iOS жүйесінде $25, бірақ басқа платформаларда тегін. - -Anki пішіміндегі флэшкарта дерекқорым: https://ankiweb.net/shared/info/25173560 (рахмет [@xiewenya](https://github.com/xiewenya)). - -Кейбір студенттер бос орынмен пішімдеу мәселелерін атап өтті, оларды келесі әрекеттерді орындау арқылы шешуге болады: палубаны ашу, картаны өңдеу, карталарды басу, «стильдеу» радио түймешігін таңдау, «ақ кеңістік: pre;» мүшесін қосу. карта класына. - -### 3. Оқу барысында сұхбат сұрақтарын кодтаңыз - -БҰЛ ӨТЕ МАҢЫЗДЫ. - -Деректер құрылымдары мен алгоритмдерін үйрену кезінде сұхбат сұрақтарын кодтауды бастаңыз. - -Сіз үйреніп жатқан нәрсені мәселелерді шешуге қолдануыңыз керек, әйтпесе ұмытып кетесіз. Мен бұл қателік жасадым. - -Тақырыпты біліп болғаннан кейін және онымен өзіңізді біршама ыңғайлы сезінесіз, мысалы, **байланысты тізімдер**: -1. [кодтау сұхбат кітаптарының] (#interview-prep-books) бірін ашыңыз (немесе төменде берілген кодтау мәселесіне арналған веб-сайттар) -1. Байланыстырылған тізімдерге қатысты 2 немесе 3 сұрақ қойыңыз. -1. Келесі оқу тақырыбына көшу. -1. Кейінірек кері оралып, басқа 2 немесе 3 байланыстырылған тізім мәселесін орындаңыз. -1. Мұны әрбір жаңа тақырыпты үйренген сайын орындаңыз. - -**Мәселелерді кейін емес, осының бәрін үйреніп жатқанда жасай беріңіз.** - -Сіз білім үшін емес, білімді қалай қолданасыз. - -Бұл үшін төменде келтірілген көптеген ресурстар бар. Жалғастыру. - -### 4. Фокус - -Қымбат уақытты алатын көптеген алаңдаушылықтар бар. Фокус пен шоғырлану қиын. Музыканы қосыңыз -мәтінсіз және сіз өте жақсы назар аудара аласыз. - -## Нені көрмейсіз - -Бұл кең таралған технологиялар, бірақ осы зерттеу жоспарының бөлігі емес: - -- SQL -- Javascript -- HTML, CSS және басқа интерфейстік технологиялар - -## Күнделікті жоспар - -Бұл курс көптеген тақырыптарды қамтиды. Олардың әрқайсысы сізге бірнеше күн немесе тіпті бір апта немесе одан да көп уақытты алады. Бұл сіздің кестеңізге байланысты. - -Күн сайын тізімдегі келесі тақырыпты алыңыз, сол тақырып бойынша бірнеше бейнелерді қараңыз, содан кейін іске асыруды жазыңыз -осы курс үшін таңдаған тілдегі деректер құрылымы немесе алгоритм. -Esiñizde bolsın, men şekten şığıp kettim jäne assembler tili men Python trïvïasınan bastap maşïnalıq oqıtw men statïstïkağa deyin barlığın qamtïtın kartalarım bar. -Bul talap etiletin närse üşin tım köp. - -**Fleşkartalar twralı eskertpe:** Jawaptı biletindigiñizdi birinşi ret tanısañız, onı belgili dep belgilemeñiz. Siz körwiñiz kerek -sol kartanı jäne onı şınımen bilmey turıp, oğan birneşe ret durıs jawap beriñiz. Qaytalaw bul bilimdi tereñdetedi -sizdiñ mïıñız. - -Meniñ fléşkarta saytımdı paydalanwdıñ balaması [Anki](http://ankisrs.net/), ol mağan birneşe ret usınıldı. -Ol este saqtawğa kömektesw üşin qaytalaw jüyesin paydalanadı. Bul paydalanwşığa ıñğaylı, barlıq platformalarda qol jetimdi jäne bulttı sïnxrondaw jüyesi bar. -Onıñ qunı iOS jüyesinde $25, biraq basqa platformalarda tegin. - -Anki pişimindegi fléşkarta derekqorım: https://ankiweb.net/shared/info/25173560 (raxmet [@xiewenya](https://github.com/xiewenya)). - -Keybir stwdentter bos orınmen pişimdew mäselelerin atap ötti, olardı kelesi äreketterdi orındaw arqılı şeşwge boladı: palwbanı aşw, kartanı öñdew, kartalardı basw, «stïldew» radïo tüymeşigin tañdaw, «aq keñistik: pre;» müşesin qosw. karta klasına. - -### 3. Oqw barısında suxbat suraqtarın kodtañız - -BUL ÖTE MAÑIZDI. - -Derekter qurılımdarı men algorïtmderin üyrenw kezinde suxbat suraqtarın kodtawdı bastañız. - -Siz üyrenip jatqan närseni mäselelerdi şeşwge qoldanwıñız kerek, äytpese umıtıp ketesiz. Men bul qatelik jasadım. - -Taqırıptı bilip bolğannan keyin jäne onımen öziñizdi birşama ıñğaylı sezinesiz, mısalı, **baylanıstı tizimder**: -1. [kodtaw suxbat kitaptarınıñ] (#interview-prep-books) birin aşıñız (nemese tömende berilgen kodtaw mäselesine arnalğan veb-sayttar) -1. Baylanıstırılğan tizimderge qatıstı 2 nemese 3 suraq qoyıñız. -1. Kelesi oqw taqırıbına köşw. -1. Keyinirek keri oralıp, basqa 2 nemese 3 baylanıstırılğan tizim mäselesin orındañız. -1. Munı ärbir jaña taqırıptı üyrengen sayın orındañız. - -**Mäselelerdi keyin emes, osınıñ bärin üyrenip jatqanda jasay beriñiz.** - -Siz bilim üşin emes, bilimdi qalay qoldanasız. - -Bul üşin tömende keltirilgen köptegen reswrstar bar. Jalğastırw. - -### 4. Fokws - -Qımbat waqıttı alatın köptegen alañdawşılıqtar bar. Fokws pen şoğırlanw qïın. Mwzıkanı qosıñız -mätinsiz jäne siz öte jaqsı nazar awdara alasız. - -## Neni körmeysiz - -Bul keñ taralğan texnologïyalar, biraq osı zerttew josparınıñ böligi emes: - -- SQL -- Javascript -- HTML, CSS jäne basqa ïnterfeystik texnologïyalar - -## Kündelikti jospar - -Bul kwrs köptegen taqırıptardı qamtïdı. Olardıñ ärqaysısı sizge birneşe kün nemese tipti bir apta nemese odan da köp waqıttı aladı. Bul sizdiñ kesteñizge baylanıstı. - -Kün sayın tizimdegi kelesi taqırıptı alıñız, sol taqırıp boyınşa birneşe beynelerdi qarañız, sodan keyin iske asırwdı jazıñız -osı kwrs üşin tañdağan tildegi derekter qurılımı nemese algorïtm. - -- ### Хэш кестесі - - [ ] Бейнелер: - - [ ] [Тізбекпен хэштеу (бейне)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [Кестені еселеу, Карп-Рабин (бейне)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Ашық адрестеу, криптографиялық хэштеу (бейне)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: Құдіретті сөздік (бейне)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier (бейне)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(Жетілдірілген) рандомизация: әмбебап және тамаша хэштеу (бейне)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Жетілдірілген) Керемет хэштеу (бейне)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Онлайн курстар: - - [ ] [Негізгі хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Дерек құрылымдары (бейне)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Телефон кітапшасының мәселесі (бейне)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] таратылған хэш кестелері: - - [Dropbox жүйесінде жылдам жүктеп салулар және жадты оңтайландыру (бейне)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Таратылған хэш кестелері (бейне)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [ ] Сызықтық зондтау арқылы массивпен орындаңыз - - хэш(k, m) - m хэш кестесінің өлшемі - - қосу(кілт, мән) - кілт бұрыннан бар болса, мәнді жаңартыңыз - - бар (кілт) - - алу (кілт) - - жою (кілт) -- ### Xéş kestesi - - [ ] Beyneler: - - [ ] [Tizbekpen xéştew (beyne)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8) - - [ ] [Kesteni eselew, Karp-Rabïn (beyne)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Aşıq adrestew, krïptografïyalıq xéştew (beyne)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: Qudiretti sözdik (beyne)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [PyCon 2017: The Dictionary Even Mightier (beyne)](https://www.youtube.com/watch?v=66P5FMkWoVU) - - [ ] [(Jetildirilgen) randomïzacïya: ämbebap jäne tamaşa xéştew (beyne)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Jetildirilgen) Keremet xéştew (beyne)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - - [ ] Onlayn kwrstar: - - [ ] [Negizgi xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) - - [ ] [Derek qurılımdarı (beyne)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Telefon kitapşasınıñ mäselesi (beyne)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) - - [ ] taratılğan xéş kesteleri: - - [Dropbox jüyesinde jıldam jüktep salwlar jäne jadtı oñtaylandırw (beyne)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Taratılğan xéş kesteleri (beyne)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) - - - [ ] Sızıqtıq zondtaw arqılı massïvpen orındañız - - xéş(k, m) - m xéş kestesiniñ ölşemi - - qosw(kilt, män) - kilt burınnan bar bolsa, mändi jañartıñız - - bar (kilt) - - alw (kilt) - - joyu (kilt) - -- ### Хабар алмасу, сериялау және кезекке қою жүйелері - - [Үнемдеу](https://thrift.apache.org/) - - [Оқулық](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [Протокол буферлері](https://developers.google.com/protocol-buffers/) - - [Оқулықтар](https://developers.google.com/protocol-buffers/docs/tutorials) - - [gRPC](http://www.grpc.io/) - - [Java әзірлеушілеріне арналған gRPC 101 (бейне)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [Redis](http://redis.io/) - - [Оқулық](http://try.redis.io/) - - [Amazon SQS (кезек)](https://aws.amazon.com/sqs/) - - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [RabbitMQ](https://www.rabbitmq.com/) - - [Бастау](https://www.rabbitmq.com/getstarted.html) - - [Сельдерей](http://www.celeryproject.org/) - - [Сельдереймен алғашқы қадамдар](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) - - [ZeroMQ](http://zeromq.org/) - - [Кіріспе - Нұсқаулықты оқу](http://zeromq.org/intro:read-the-manual) - - [ActiveMQ](http://activemq.apache.org/) - - [Кафка](http://kafka.apache.org/documentation.html#introduction) - - [MessagePack](http://msgpack.org/index.html) - - [Avro](https://avro.apache.org/) - -- ### A* - - [Іздеу алгоритмі](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Жолды табу (E01: алгоритмді түсіндіру) (бейне)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### Жылдам Фурье түрлендіруі - - [Фурье түрлендіруіне арналған интерактивті нұсқаулық](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [Фурье түрлендіруі дегеніміз не? Ол не үшін қолданылады?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [Фурье түрлендіруі дегеніміз не? (бейне)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Бөліңіз және жеңіңіз: FFT (бейне)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [ФФТ-ны түсіну](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Блум сүзгісі - - m бит және k хэштеу функциялары бар Блум сүзгісін ескере отырып, кірістіру және мүшелік сынағы O(k) болып табылады. - - [Блум сүзгілері (бейне)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Блум сүзгілері | Жаппай деректер жиынын өндіру | Стэнфорд университеті (бейне)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Оқулық](http://billmill.org/bloomfilter-tutorial/) - - [Блум сүзгісі қолданбасын қалай жазуға болады](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) -- ### Xabar almasw, serïyalaw jäne kezekke qoyu jüyeleri - - [Ünemdew](https://thrift.apache.org/) - - [Oqwlıq](http://thrift-tutorial.readthedocs.io/en/latest/intro.html) - - [Protokol bwferleri](https://developers.google.com/protocol-buffers/) - - [Oqwlıqtar](https://developers.google.com/protocol-buffers/docs/tutorials) - - [gRPC](http://www.grpc.io/) - - [Java äzirlewşilerine arnalğan gRPC 101 (beyne)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - - [Redis](http://redis.io/) - - [Oqwlıq](http://try.redis.io/) - - [Amazon SQS (kezek)](https://aws.amazon.com/sqs/) - - [Amazon SNS (pub-sub)](https://aws.amazon.com/sns/) - - [RabbitMQ](https://www.rabbitmq.com/) - - [Bastaw](https://www.rabbitmq.com/getstarted.html) - - [Selderey](http://www.celeryproject.org/) - - [Seldereymen alğaşqı qadamdar](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-cellery.html) - - [ZeroMQ](http://zeromq.org/) - - [Kirispe - Nusqawlıqtı oqw](http://zeromq.org/intro:read-the-manual) - - [ActiveMQ](http://activemq.apache.org/) - - [Kafka](http://kafka.apache.org/documentation.html#introduction) - - [MessagePack](http://msgpack.org/index.html) - - [Avro](https://avro.apache.org/) - -- ### A* - - [Izdew algorïtmi](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Joldı tabw (E01: algorïtmdi tüsindirw) (beyne)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - -- ### Jıldam Fwre türlendirwi - - [Fwre türlendirwine arnalğan ïnteraktïvti nusqawlıq](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - - [Fwre türlendirwi degenimiz ne? Ol ne üşin qoldanıladı?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [Fwre türlendirwi degenimiz ne? (beyne)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Böliñiz jäne jeñiñiz: FFT (beyne)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - - [FFT-nı tüsinw](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - -- ### Blwm süzgisi - - m bït jäne k xéştew fwnkcïyaları bar Blwm süzgisin eskere otırıp, kiristirw jäne müşelik sınağı O(k) bolıp tabıladı. - - [Blwm süzgileri (beyne)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Blwm süzgileri | Jappay derekter jïının öndirw | Sténford wnïversïteti (beyne)](https://www.youtube.com/watch?v=qBTdukbzc78) - - [Oqwlıq](http://billmill.org/bloomfilter-tutorial/) - - [Blwm süzgisi qoldanbasın qalay jazwğa boladı](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) - -- [Сарада Херкенің графикалық теориясы (67 бейне)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) - -## Информатика курстары - -- [Онлайн CS курстары каталогы](https://github.com/open-source-society/computer-science) -- [CS курстарының каталогы (көптеген онлайн дәрістер бар)](https://github.com/prakhar1989/awesome-courses) - -## Алгоритмдерді енгізу - -- [Принстон университетінің бірнеше алгоритмдерді енгізуі](https://algs4.cs.princeton.edu/code) - - -## Қағаздар - -- [Классикалық қағаздарды ұнатасыз ба?](https://www.cs.cmu.edu/~crary/819-f09/) -- [1978: Тізбекті процестермен байланысу](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Go жүйесінде жүзеге асырылды](https://godoc.org/github.com/thomas11/csp) -- [2003: Google файлдық жүйесі](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - 2012 жылы Колосспен ауыстырылды -- [2004: MapReduce: Үлкен кластерлерде оңайлатылған деректерді өңдеу]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - негізінен Cloud Dataflow ауыстырылды ма? -- [2006: Bigtable: құрылымдық деректерге арналған таратылған сақтау жүйесі](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -- [2006: Біріктірілген таратылған жүйелерге арналған Chubby Lock қызметі](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: Динамо: Amazon-ның жоғары қолжетімді кілттер дүкені](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - Динамо қағазы NoSQL революциясын бастады -- [2007: Әрбір бағдарламашы жад туралы не білуі керек (өте ұзақ және автор кейбір бөлімдерді өткізіп жіберуді ұсынады)](https://www.akkadia.org/drepper/cpumemory.pdf) -- 2012: AddressSanitizer: жылдам мекенжай санитарлық тексерушісі: - - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [бейне](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: Spanner: Google-дың ғаламдық таралған дерекқоры: - - [қағаз](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [бейне](https://www.usenix.org/node/170855) -- [2015: Google-дағы үздіксіз құбырлар](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: Жаппай ауқымда жоғары қолжетімділік: Google-дың жарнамалар үшін деректер инфрақұрылымын құру](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: Әзірлеушілер кодты қалай іздейді: жағдайды зерттеу](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- Қосымша қағаздар: [1000 қағаз](https://github.com/0voice/computer_expert_paper) - -## ЛИЦЕНЗИЯ - -[CC-BY-SA-4.0](./LICENSE.txt) -- [Sarada Xerkeniñ grafïkalıq teorïyası (67 beyne)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) - -## Ïnformatïka kwrstarı - -- [Onlayn CS kwrstarı katalogı](https://github.com/open-source-society/computer-science) -- [CS kwrstarınıñ katalogı (köptegen onlayn därister bar)](https://github.com/prakhar1989/awesome-courses) - -## Algorïtmderdi engizw - -- [Prïnston wnïversïtetiniñ birneşe algorïtmderdi engizwi](https://algs4.cs.princeton.edu/code) - - -## Qağazdar - -- [Klassïkalıq qağazdardı unatasız ba?](https://www.cs.cmu.edu/~crary/819-f09/) -- [1978: Tizbekti procestermen baylanısw](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [Go jüyesinde jüzege asırıldı](https://godoc.org/github.com/thomas11/csp) -- [2003: Google fayldıq jüyesi](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - 2012 jılı Kolosspen awıstırıldı -- [2004: MapReduce: Ülken klasterlerde oñaylatılğan derekterdi öñdew]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - negizinen Cloud Dataflow awıstırıldı ma? -- [2006: Bigtable: qurılımdıq derekterge arnalğan taratılğan saqtaw jüyesi](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) -- [2006: Biriktirilgen taratılğan jüyelerge arnalğan Chubby Lock qızmeti](https://research.google.com/archive/chubby-osdi06.pdf) -- [2007: Dïnamo: Amazon-nıñ joğarı qoljetimdi kiltter dükeni](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - Dïnamo qağazı NoSQL revolyucïyasın bastadı -- [2007: Ärbir bağdarlamaşı jad twralı ne bilwi kerek (öte uzaq jäne avtor keybir bölimderdi ötkizip jiberwdi usınadı)](https://www.akkadia.org/drepper/cpumemory.pdf) -- 2012: AddressSanitizer: jıldam mekenjay sanïtarlıq tekserwşisi: - - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [beyne](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) -- 2013: Spanner: Google-dıñ ğalamdıq taralğan derekqorı: - - [qağaz](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [beyne](https://www.usenix.org/node/170855) -- [2015: Google-dağı üzdiksiz qubırlar](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) -- [2015: Jappay awqımda joğarı qoljetimdilik: Google-dıñ jarnamalar üşin derekter ïnfraqurılımın qurw](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) -- [2015: Äzirlewşiler kodtı qalay izdeydi: jağdaydı zerttew](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) -- Qosımşa qağazdar: [1000 qağaz](https://github.com/0voice/computer_expert_paper) - -## LÏCENZÏYa - -[CC-BY-SA-4.0](./LICENSE.txt) diff --git a/README_DUTCH.md b/translations/README-nl.md similarity index 100% rename from README_DUTCH.md rename to translations/README-nl.md From c70402ec56a754d1412a4aa4c09bda3d74e561cc Mon Sep 17 00:00:00 2001 From: abhijeetsatpute Date: Sun, 28 Apr 2024 06:42:26 +0530 Subject: [PATCH 835/857] Delete README-bu.md --- translations/README-bu.md | 106 -------------------------------------- 1 file changed, 106 deletions(-) delete mode 100644 translations/README-bu.md diff --git a/translations/README-bu.md b/translations/README-bu.md deleted file mode 100644 index 63f499b8af..0000000000 --- a/translations/README-bu.md +++ /dev/null @@ -1,106 +0,0 @@ -# Кодиране Интервю университет - -> Първоначално създадох това като кратък списък с учебни теми за ставане на софтуерен инженер, -> но той се разрасна до големия списък, който виждате днес. След като преминах през този учебен план, [ме наеха на работа -> като инженер по разработка на софтуер в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! -> Вероятно няма да ви се наложи да учите толкова много, колкото на мен. Така или иначе, всичко, от което се нуждаете, е тук. -> -> Учех по около 8-12 часа на ден в продължение на няколко месеца. Това е моята история: [Защо учих 8 месеца на пълен работен ден за интервю в Google](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) -> -> **Забележете:** Няма да ви се наложи да учите толкова много, колкото на мен. Изгубих много време за неща, които не трябваше да знам. Повече информация за това ще намерите по-долу. Ще ви помогна да стигнете дотам, без да губите ценното си време. -> -> Изброените тук елементи ще ви подготвят добре за техническо интервю в почти всяка софтуерна компания, -> включително гигантите: Amazon, Facebook, Google и Microsoft. -> -> *Най-добър късмет за вас!* - -
-Преводи: - -- [中文版本](translations/README-cn.md) -- [Tiếng Việt - Виетнамски](translations/README-vi.md) -- [Español](translations/README-es.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Полски](translations/README-pl.md) -- [繁體中文](translations/README-tw.md) -- [Японски (日本語)](translations/README-ja.md) -- [Руски](translations/README-ru.md) -- [Немски](translations/README-de.md) -- [Bahasa Indonesia](translations/README-id.md) -- [ខ្មែរ - Кхмер](translations/README-kh.md) -- [узбекски](translations/README-uz.md) -- [Български](translations/README-bg.md) -- [বাংলা - Bangla](translations/README-bn.md) - -
- -
-Преводите в процес на изпълнение: - -- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -- [עברית](https://github.com/jwasham/coding-interview-university/issues/82) -- [арабски](https://github.com/jwasham/coding-interview-university/issues/98) -- [турски](https://github.com/jwasham/coding-interview-university/issues/90) -- [Френски](https://github.com/jwasham/coding-interview-university/issues/89) -- [Українська](https://github.com/jwasham/coding-interview-university/issues/106) -- [Корейски(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Телугу](https://github.com/jwasham/coding-interview-university/issues/117) -- [Урду](https://github.com/jwasham/coding-interview-university/issues/519) -- [Тайландски](https://github.com/jwasham/coding-interview-university/issues/156) -- [Гръцки](https://github.com/jwasham/coding-interview-university/issues/166) -- [Малаялам](https://github.com/jwasham/coding-interview-university/issues/239) -- [персийски - фарси](https://github.com/jwasham/coding-interview-university/issues/186) -- [африканс](https://github.com/jwasham/coding-interview-university/issues/1164) - -
- - - -## What is it? - -![Coding at the whiteboard - from HBO's Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) - -This is my multi-month study plan for becoming a software engineer for a large company. - -**Required:** -* A little experience with coding (variables, loops, methods/functions, etc) -* Patience -* Time - -Note this is a study plan for **software engineering**, not web development. Large software companies like Google, Amazon, -Facebook and Microsoft view software engineering as different from web development. For example, Amazon has -Frontend Engineers (FEE) and Software Development Engineers (SDE). These are 2 separate roles and the interviews for -them will not be the same, as each has its own competencies. These companies require computer science knowledge for -software development/engineering roles. - ---- - -## Table of Contents - -### The Study Plan - -- [Какво е това?] (#what-is \ No newline at end of file From a0f2dd262583fab8b0857b5cb582c79f59a79958 Mon Sep 17 00:00:00 2001 From: awalrujaa Date: Mon, 13 May 2024 16:28:49 +0545 Subject: [PATCH 836/857] Added Programiz PRO Community Challenges where you can practice coding challenges for free --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 644c53da3e..d98ba66927 100644 --- a/README.md +++ b/README.md @@ -306,6 +306,7 @@ You may not need it, but here are some sites for learning a new language: - [Codewars](http://www.codewars.com) - [HackerEarth](https://www.hackerearth.com/for-developers/) - [Scaler Topics (Java, C++)](https://www.scaler.com/topics/) +- [Programiz PRO Community Challenges)](https://app.programiz.pro/community-challenges) ### For your Coding Interview From d66e8f3c36435d8eb1205dfaac3ea1a21d71d468 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 13 May 2024 11:24:01 -0700 Subject: [PATCH 837/857] Updates link. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d98ba66927..b7f93c0b9f 100644 --- a/README.md +++ b/README.md @@ -306,7 +306,7 @@ You may not need it, but here are some sites for learning a new language: - [Codewars](http://www.codewars.com) - [HackerEarth](https://www.hackerearth.com/for-developers/) - [Scaler Topics (Java, C++)](https://www.scaler.com/topics/) -- [Programiz PRO Community Challenges)](https://app.programiz.pro/community-challenges) +- [Programiz PRO Community Challenges)](https://programiz.pro/) ### For your Coding Interview From dc34e01954f1105e70e402525e670305c39edd94 Mon Sep 17 00:00:00 2001 From: hashcookie Date: Fri, 17 May 2024 17:30:15 +0800 Subject: [PATCH 838/857] docs: Add Programiz PRO Community Challenges to list of coding platforms --- translations/README-cn.md | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/README-cn.md b/translations/README-cn.md index 1d29ed3813..ed67588f09 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -262,6 +262,7 @@ - [Codewars](http://www.codewars.com) - [HackerEarth](https://www.hackerearth.com/for-developers/) - [Scaler Topics (Java, C++)](https://www.scaler.com/topics/) +- [Programiz PRO Community Challenges)](https://programiz.pro/) ### 对于你的编程面试 From 9f604c6ac4df3d123a8821e006e95ea1d6abb604 Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Mon, 3 Jun 2024 18:59:26 +0400 Subject: [PATCH 839/857] add ukrainian translation --- translations/README-uk.md | 733 ++++++++++++++++++++------------------ 1 file changed, 378 insertions(+), 355 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 4fba162e4e..4798277fab 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -1,16 +1,18 @@ # Coding Interview University -Original in [English](README.md) +Оригінал [англійською](../README.md) > Спочатку я створив це як короткий список завдань для вивчення тем, щоб стати -інженером-програмістом, але він збільшився до великого списку, який ви бачите +інженером програмного забезпечення, але він збільшився до великого списку, який ви бачите сьогодні. Пройшовши цей навчальний план, -[мене найняли розробником програмного забезпечення в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! +[мене найняли розробником програмного забезпечення в Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)! Можливо, вам не доведеться вчитися так багато, як мені. У будь-якому випадку, все, що тобі потрібно, є тут. > > Я навчався приблизно 8-12 годин на день, протягом декількох місяців. Це моя історія: [Чому я навчався очно протягом 8 місяців для інтерв’ю в Google](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13). > +> **Зверніть Увагу:** вам не потрібно буде вчитися так багато, як мені. Я витратив багато часу на речі, які мені не потрібно було знати. Більше інформації про це нижче. Я допоможу вам досягти мети, не витрачаючи ваш дорогоцінний час. +> > Перелічені тут ресурси добре підготують вас до технічної співбесіди практично в будь-якій компанії, включаючи гігантів: Amazon, Facebook, Google та Microsoft. @@ -20,37 +22,38 @@ Microsoft.
Переклади: -- [Bahasa Indonesia](translations/README-id.md) -- [Bulgarian](translations/README-bg.md) -- [Español](translations/README-es.md) -- [German](translations/README-de.md) -- [Japanese (日本語)](translations/README-ja.md) -- [Polish](translations/README-pl.md) -- [Português Brasileiro](translations/README-ptbr.md) -- [Russian](translations/README-ru.md) -- [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Urdu - اردو](tanslations/README-ur.md) -- [Uzbek](translations/README-uz.md) -- [বাংলা - Bangla](translations/README-bn.md) -- [ខ្មែរ - Khmer](translations/README-kh.md) -- [简体中文](translations/README-cn.md) -- [繁體中文](translations/README-tw.md) +- [Бахаса Індонезія](translations/README-id.md) +- [Болгарська](translations/README-bg.md) +- [Іспанська](translations/README-es.md) +- [Німецька](translations/README-de.md) +- [Японська (日本語)](translations/README-ja.md) +- [Маратхі](translations/README-mr.md) +- [Польська](translations/README-pl.md) +- [Бразильська португальська](translations/README-ptbr.md) +- [Російська](translations/README-ru.md) +- [Tiếng Việt - В'єтнамська](translations/README-vi.md) +- [Урду - اردو](tanslations/README-ur.md) +- [Узбецька](translations/README-uz.md) +- [বাংলা - Бангла](translations/README-bn.md) +- [ខ្មែរ - Кхмерська](translations/README-kh.md) +- [简体中文 - Спрощена Китайська](translations/README-cn.md) +- [繁體中文 - Традиційна Китайська](translations/README-tw.md)
Переклади в процесі: -- [Afrikaans](https://github.com/jwasham/coding-interview-university/issues/1164) -- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98) -- [French](https://github.com/jwasham/coding-interview-university/issues/89) -- [Greek](https://github.com/jwasham/coding-interview-university/issues/166) -- [Italian](https://github.com/jwasham/coding-interview-university/issues/1030) -- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118) -- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239) -- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) -- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117) -- [Thai](https://github.com/jwasham/coding-interview-university/issues/156) -- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90) +- [Африка́анс](https://github.com/jwasham/coding-interview-university/issues/1164) +- [Арабська](https://github.com/jwasham/coding-interview-university/issues/98) +- [Французька](https://github.com/jwasham/coding-interview-university/issues/89) +- [Грецька](https://github.com/jwasham/coding-interview-university/issues/166) +- [Італійська](https://github.com/jwasham/coding-interview-university/issues/1030) +- [Корейська (한국어)](https://github.com/jwasham/coding-interview-university/issues/118) +- [Малайська](https://github.com/jwasham/coding-interview-university/issues/239) +- [Перська - Farsi](https://github.com/jwasham/coding-interview-university/issues/186) +- [Телугу](https://github.com/jwasham/coding-interview-university/issues/117) +- [Тайська](https://github.com/jwasham/coding-interview-university/issues/156) +- [Турецька](https://github.com/jwasham/coding-interview-university/issues/90) - [Українська](https://github.com/jwasham/coding-interview-university/issues/106) - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) @@ -59,470 +62,490 @@ Microsoft. ## Що це? -Це мій багатомісячний план навчання для переходу від веб-розробника (самоука, -без ступеня з комп'ютерних наук) до інженера програмного забезпечення для -великої компанії. - ![Програмування у дошки — з серіалу «Silicon Valley» HBO](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) -Цей список призначено -**для піонерів у сфері розробки програмного забезпечення** або -тих, хто переходить від кодування/веб-розробки до більш архітектурних, -інженерних рішень (де потрібні знання комп'ютерних наук). Якщо у вас -багаторічний досвід і ви стверджуєте, що він таким є, очікуйте більш важкого -інтерв’ю. +Це мій багатомісячний план навчання, щоб стати інженером програмного забезпечення у великій компанії. + +**Необхідно:** +* Невеликий досвід кодування (змінні, цикли, методи/функції тощо) +* Терпіння +* Час -Також якщо у вас є багаторічний досвід кодування/веб-розробки, зверніть увагу, -що великі компанії-розробники програмного забезпечення, такі як Google, Amazon, -Facebook та Microsoft, відрізняють розробку програмного забезпечення -від веб-розробки, і вони потребують знання комп'ютерних наук. +Зверніть увагу, що це навчальний план з **інженерії програмного забезпечення**, не фронтенд-разробки чи фуллстек-розробки. Для цих кар'єрних шляхів існують дійсно чудові дорожні карти та курси із завданнями в інших місцях (дивись https://roadmap.sh/ для отримання додаткової інформації). -Якщо ви хочете бути інженером з надійності або системним інженером, вчіть -більше за опціональним списком (мережі, безпека). +На університетській програмі з комп'ютерних наук можна багато чому навчитися, але для проходження співбесіди достатньо знати лише 75%, тож саме про це я розповідаю тут. Для повної програми самонавчання компʼютерним наукам, ресурси для мого навчального плану були включені в дорожню карту курса з комп'ютерних наук Камран Ахмеда: https://roadmap.sh/computer-science. --- ## Зміст +### Навчальний план + - [Що це?](#Що-це) - [Чому це використовувати?](#Чому-це-використовувати) - [Як це використовувати](#Як-це-використовувати) - [Не почувайтесь недостатньо розумними](#Не-почувайтесь-недостатньо-розумними) -- [Про відео-ресурси](#about-video-resources) -- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) -- [Pick One Language for the Interview](#pick-one-language-for-the-interview) -- [Book List](#book-list) -- [Before you Get Started](#before-you-get-started) -- [What you Won't See Covered](#what-you-wont-see-covered) -- [Prerequisite Knowledge](#prerequisite-knowledge) -- [The Daily Plan](#the-daily-plan) -- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Data Structures](#data-structures) - - [Arrays](#arrays) - - [Linked Lists](#linked-lists) - - [Stack](#stack) - - [Queue](#queue) - - [Hash table](#hash-table) -- [More Knowledge](#more-knowledge) - - [Binary search](#binary-search) - - [Bitwise operations](#bitwise-operations) -- [Trees](#trees) - - [Trees - Notes & Background](#trees---notes--background) - - [Binary search trees: BSTs](#binary-search-trees-bsts) - - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap) - - balanced search trees (general concept, not details) - - traversals: preorder, inorder, postorder, BFS, DFS -- [Sorting](#sorting) - - selection - - insertion - - heapsort - - quicksort - - merge sort -- [Graphs](#graphs) - - directed - - undirected - - adjacency matrix - - adjacency list - - traversals: BFS, DFS -- [Even More Knowledge](#even-more-knowledge) - - [Recursion](#recursion) - - [Dynamic Programming](#dynamic-programming) - - [Object-Oriented Programming](#object-oriented-programming) - - [Design Patterns](#design-patterns) - - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability) - - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms) - - [Caches](#caches) - - [Processes and Threads](#processes-and-threads) - - [Papers](#papers) - - [Testing](#testing) - - [Scheduling](#scheduling) - - [Implement system routines](#implement-system-routines) - - [String searching & manipulations](#string-searching--manipulations) - - [Tries](#tries) - - [Floating Point Numbers](#floating-point-numbers) - - [Unicode](#unicode) - - [Endianness](#endianness) -- [Networking](#networking) -- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience) -- [Final Review](#final-review) -- [Coding Question Practice](#coding-question-practice) -- [Coding exercises/challenges](#coding-exerciseschallenges) -- [Once you're closer to the interview](#once-youre-closer-to-the-interview) -- [Your Resume](#your-resume) -- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) -- [Have questions for the interviewer](#have-questions-for-the-interviewer) -- [Once You've Got The Job](#once-youve-got-the-job) - ----------------- Everything below this point is optional ---------------- - -- [Additional Books](#additional-books) -- [Additional Learning](#additional-learning) - - [Compilers](#compilers) - - [Emacs and vi(m)](#emacs-and-vim) - - [Unix command line tools](#unix-command-line-tools) - - [Information theory](#information-theory) - - [Parity & Hamming Code](#parity--hamming-code) - - [Entropy](#entropy) - - [Cryptography](#cryptography) - - [Compression](#compression) - - [Computer Security](#computer-security) - - [Garbage collection](#garbage-collection) - - [Parallel Programming](#parallel-programming) - - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems) +- [Про відео-ресурси](#Про-відеоресурси) +- [Оберіть мову програмування](#Оберіть-мову-програмування) +- [Книги про структури даних та алгоритми](#Книги-про-структури-даних-та-алгоритми) +- [Книги з підготовки до співбесіди](#Книги-з-підготовки-до-співбесіди) +- [Не робіть моїх помилок](#Не-робіть-моїх-помилок) +- [Що не буде охоплено](#Що-не-буде-охоплено) +- [Щоденний план](#Щоденний-план) +- [Практика з питань кодування](#Практика-з-питань-кодування) +- [Проблеми кодування](#Проблеми-кодування) + +### Теми для вивчення + +- [Складність алгоритмів / Big-O / Асимптотичний аналіз](#algorithmic-complexity--big-o--asymptotic-analysis) +- [Структури даних](#data-structures) + - [Масив](#arrays) + - [Зв'язаний список](#linked-lists) + - [Стек](#stack) + - [Черга](#queue) + - [Геш-таблиця](#hash-table) +- [Більше знань](#more-knowledge) + - [Двійковий пошук](#binary-search) + - [Бітові операції](#bitwise-operations) +- [Дерева](#trees) + - [Дерева - примітки та передумови](#trees---notes--background) + - [Бінарні дерева пошуку: BSTs](#binary-search-trees-bsts) + - [Купа / Пріоритетна черга / Бінарна купа](#heap--priority-queue--binary-heap) + - Збалансовані дерева пошуку (загальна концепція, не деталі) + - Обходи: preorder, inorder, postorder, BFS, DFS +- [Сортування](#sorting) + - вибір (selection) + - вставка (insertion) + - купчасте сортування (heapsort) + - швидке сортування (quicksort) + - злиття (merge sort) +- [Графи](#graphs) + - спрямовані (directed) + - неспрямовані (undirected) + - матриця суміжності (adjacency matrix) + - список суміжності (adjacency list) + - обходи: BFS, DFS (traversals: BFS, DFS) +- [Ще більше знань](#even-more-knowledge) + - [Рекурсія](#recursion) + - [Динамічне програмування](#dynamic-programming) + - [Шаблони проектування](#design-patterns) + - [Комбінаторика (n choose k) та ймовірність](#combinatorics-n-choose-k--probability) + - [NP, NP-повні та Апроксимаційні Алгоритми](#np-np-complete-and-approximation-algorithms) + - [Як комп'ютери опрацьовують програму](#how-computers-process-a-program) + - [Кеші](#caches) + - [Процеси та Треди](#processes-and-threads) + - [Тестування](#testing) + - [Пошук та маніпуляції з рядками](#string-searching--manipulations) + - [Спроби](#tries) + - [Числа з рухомою комою](#floating-point-numbers) + - [Юнікод](#unicode) + - [Ендіанність](#endianness) + - [Нетворкінг (мережі)](#networking) +- [Фінальний огляд](#final-review) + +### Отримання роботи + +- [Оновіть своє резюме](#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 та vi(m)](#emacs-and-vim) + - [Засоби командного рядка Unix (Unix CLI tools)](#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*](#a) - - [Fast Fourier Transform](#fast-fourier-transform) - - [Bloom Filter](#bloom-filter) + - [Швидке перетворення Фур'є](#fast-fourier-transform) + - [фільтр Блума (Bloom Filter)](#bloom-filter) - [HyperLogLog](#hyperloglog) - - [Locality-Sensitive Hashing](#locality-sensitive-hashing) - - [van Emde Boas Trees](#van-emde-boas-trees) - - [Augmented Data Structures](#augmented-data-structures) - - [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees) - - [Balanced search trees](#balanced-search-trees) - - AVL trees - - Splay trees - - Red/black trees - - 2-3 search trees - - 2-3-4 Trees (aka 2-4 trees) - - N-ary (K-ary, M-ary) trees - - B-Trees - - [k-D Trees](#k-d-trees) - - [Skip lists](#skip-lists) - - [Network Flows](#network-flows) - - [Math for Fast Processing](#math-for-fast-processing) + - [Локально-чутливе Хешування (Locality-Sensitive Hashing)](#locality-sensitive-hashing) + - [Дерева ван Емде Боаса](#van-emde-boas-trees) + - [Доповнені (аугментовані) структури даних](#augmented-data-structures) + - [N-ary (K-ary, M-ary) дерева](#n-ary-k-ary-m-ary-trees) + - [Збалансовані дерева пошуку (Balanced search trees)](#balanced-search-trees) + - AVL дерева + - Splay дерева + - Red/black дерева + - 2-3 search дерева + - 2-3-4 дерева (aka 2-4 дерева) + - N-ary (K-ary, M-ary) дерева + - B-дерева + - [k-D дерева](#k-d-trees) + - [Списки пропуску (Skip lists)](#skip-lists) + - [Мережеві потоки](#network-flows) + - [Математика для Швидкої Обробки](#math-for-fast-processing) - [Treap](#treap) - - [Linear Programming](#linear-programming) - - [Geometry, Convex hull](#geometry-convex-hull) - - [Discrete math](#discrete-math) - - [Machine Learning](#machine-learning) -- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -- [Video Series](#video-series) -- [Computer Science Courses](#computer-science-courses) + - [Лінійне програмування](#linear-programming-videos) + - [Геометрія, Випуклий корпус](#geometry-convex-hull-videos) + - [Дискретна математика](#discrete-math) +- [Додаткова інформація про деякі теми](#additional-detail-on-some-subjects) +- [Відео](#video-series) +- [Курси комп'ютерних наук](#computer-science-courses) +- [Статті](#papers) --- ## Чому це використовувати? -Я слідую цьому плану, аби підготуватись до мого інтерв'ю в Google. Я займався веб-розробкою, створенням сервісів та запуском стартапів з 1997. У мене економічна освіта, не комп'ютерна. -Я досяг успіху в своїй кар'єрі, але я хочу працювати в Google. Я хочу розвиватись, досліджувати більші системи та отримати реальне розуміння комп'ютерних систем, ефективності алгоритмів та структур даних, низько-рівневих мов, і як це все працює. І якщо ви не знаєте чогось з цього списку, Google не найме вас. +Якщо ви хочете працювати інженером програмного забезпечення у великій компанії, це те, що вам потрібно знати. + +Якщо ви, як і я, не встигли отримати ступінь з комп'ютерних наук, цей курс допоможе вам надолужити згаяне і заощадити чотири роки вашого життя. -Коли я розпочинав цей проект, я не міг відрізнити стек від купи, нічого не знав про Big-O, дерева, або як розглянути граф. Якби мені тоді довелось написати алгоритм сортування, то легко можу вас запевнити - він не був би найкращим. -Всі структури даних, які я колись використовував, були вже вбудовані в мову програмування, а я навіть не знав, як вони працюють "під капотом". Мені ніколи не доводилось розбиратись з пам'яттю, окрім випадків, коли я отримував "OutOfMemoryException", тоді мені доводилось шукати вихід з ситуації. -Я використовував кілька багатовимірних масивів та тисячі звичайних масивів, проте я ніколи не створював структури даних з нуля. +Коли я починав цей проект, я не знав, як відрізнити стек від купи, не знав нічого про Big-O, або про дерева, або про те, як обходити граф. Якби мені довелося писати алгоритм сортування, можу сказати, що він був би жахливим. Кожна структура даних, яку я коли-небудь використовував, була вбудована в мову, і я взагалі не знав, як вони працюють під капотом. Мені ніколи не доводилося керувати пам'яттю, хіба що процес, який я запускав, видавав помилку «не вистачило пам'яті», і тоді мені доводилося шукати обхідний шлях. У своєму житті я використовував кілька багатовимірних масивів і тисячі асоціативних масивів, але я ніколи не створював структури даних з нуля. -Але, пройшовши цей план навчання, я впевнений, що мене візьмуть на цю роботу. Це дійсно великий план. Він займе місяці, але якщо ви вже знайомі з багатьма речами з цього списку, то, очевидно, ви витратите значно менше часу. +Це довгий план. Це може зайняти кілька місяців. Якщо ви вже знайомі з багатьма з цих питань, це займе набагато менше часу. ## Як це використовувати Весь текст нижче - це список, а вам потрібно пройти всі його елементи зверху вниз. -Я використовую спеціальну Github розмітку, щоб відслідковувати свій прогрес. +Я використовую спеціальну Github розмітку - markdown, щоб відслідковувати свій прогрес. + + - [Більше про markdown розмітку GitHub](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) +### Якщо ви не хочете використовувати git -**Створіть нову гілку, аби ви могли теж відмічати зроблені задачі, поміщаючи x в квадратні дужки: [x]** +На цій сторінці натисніть кнопку «Код» ("Code") вгорі, а потім натисніть «Завантажити ZIP» ("Download ZIP"). Розпакуйте файл, і ви зможете працювати з текстовими файлами. - Форкніть собі гілку та введіть команди нижче +Якщо ви відкриваєте код у редакторі коду, який розуміє розмітку, ви побачите, що все відформатовано правильно. -`git checkout -b progress` +![How to download the repo as a zip file](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png) -`git remote add jwasham https://github.com/jwasham/coding-interview-university` +### Якщо вам зручно працювати з git -`git fetch --all` +Створіть нову гілку, аби ви могли відмічати зроблені задачі, поміщаючи x в квадратні дужки: [x] - Відмітьте всі елементи X після того, як завершите свої зміни +1. ***Форкніть репозиторій GitHub:*** `https://github.com/jwasham/coding-interview-university` натиснувши на кнопку Форк (Fork). -`git add . ` + ![Fork the GitHub repo](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png) -`git commit -m "Marked x" ` +1. Клонуйте в локальний репозиторій: -`git rebase jwasham/main ` + ```bash + git clone https://github.com//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 # so that you don't push your personal progress back to the original repo + ``` -`git push --force ` +1. Позначте всі поля X після того, як ви внесли зміни: -[Більше про Github розмітку](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) + ```bash + git commit -am "Marked personal progress" + git pull upstream main # keep your fork up-to-date with changes from the original repo + + git push # just pushes to your fork + ``` ## Не почувайтесь недостатньо розумними -- Successful software engineers are smart, but many have an insecurity that they aren't smart enough. -- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) -- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) -## About Video Resources +- Успішні інженери програмного забезпечення розумні, але багато хто з них відчуває невпевненість у тому, що вони недостатньо розумні. +- Наступні відео можуть допомогти вам подолати цю невпевненість: + - Міф про геніального програміста [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) + - Небезпечно йти наодинці: Боротьба з невидимими монстрами в технологіях [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) + +## Про відеоресурси + +Деякі відео доступні лише за умови реєстрації на курсах Coursera або EdX. Це так звані масові відкриті курси (MOOCs). Іноді заняття не проводяться, тому вам доведеться чекати кілька місяців, і ви не матимете доступу. -Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs. -Sometimes the classes are not in session so you have to wait a couple of months, so you have no access. Lynda.com courses are not free. +Було б чудово замінити ресурси онлайн-курсів безкоштовними і завжди доступними публічними джерелами, такими як відео на YouTube (бажано університетські лекції), щоб ви могли вивчати їх у будь-який час, а не лише під час сесії конкретного онлайн-курсу. - I'd appreciate your help to add free and always-available public sources, such as YouTube videos to accompany the online course videos. - I like using university lectures. +## Оберіть мову програмування +Вам потрібно буде обрати мову програмування для співбесід з кодування, але вам також потрібно буде знайти мову, яку ви зможете використовувати для вивчення концепцій комп'ютерних наук. -## Interview Process & General Interview Prep +Бажано, щоб мова була однаковою, щоб вам потрібно було володіти лише однією мовою. -- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4) -- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1) -- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) -- [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) -- [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) +### Для цього навчального плану -- [ ] Prep Course: - - [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed): - - Learn how to make yourself ready for software engineer interviews from a former Google interviewer. - - [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): - - A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more. +Коли я складав навчальний план, я використовував 2 мови для більшої його частини: C та Python -## Pick One Language for the Interview +Ви можете використовувати мову, якою вам зручно виконувати завдання +на написання коду, але для великих компаній ці мови є найкращим вибором: -You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices: +* С: Дуже низький рівень. Дозволяє працювати з покажчиками та розподілом/виділенням пам'яті, тому ви відчуваєте структури даних та алгоритми до мозку кісток. У мовах вищого рівня, таких як Python або Java, вони приховані від вас. У повсякденній роботі це чудово, але коли ви вивчаєте, як побудовані ці низькорівневі структури даних, чудово відчувати себе ближче до металу. + - C є скрізь. Ви побачите приклади в книгах, лекціях, відео, *всюди* під час навчання. + - Мова програмування C, 2-е видання [The C Programming Language, 2nd Edition](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) + - Це коротка книжка, але вона дасть вам чудові знання про мову C, і якщо ви трохи попрактикуєтесь + ви швидко станете вправним. Розуміння C допоможе вам зрозуміти, як працюють програми та пам'ять. + - Вам не потрібно заглиблюватися в книгу (або навіть дочитувати її). Просто дійдіть до того рівня, на якому вам буде комфортно читати і писати C. +* Python: 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/) +- [Programiz PRO Community Challenges)](https://programiz.pro/) + +### Для співбесіди з кодування + +Ви можете використовувати мову, якою вам зручно писати код під час співбесіди, але для великих компаній ці мови є найкращим вибором: - C++ - Java - Python -You could also use these, but read around first. There may be caveats: +Ви також можете скористатися цими, але спочатку почитайте навколо. Можуть бути застереження: - JavaScript - Ruby -You need to be very comfortable in the language and be knowledgeable. +Ось стаття, яку я написав про вибір мови для співбесіди: +[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/). -Read more about choices: -- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ -- http://blog.codingforinterviews.com/best-programming-language-jobs/ +Це оригінальна стаття, на якій ґрунтується мій пост: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/) -[See language resources here](programming-language-resources.md) +Ви повинні дуже добре володіти мовою і бути обізнаним. -You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. +Дізнайтеся більше про вибір: +- [Оберіть правильну мову для вашої співбесіди з кодування](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/) -## Book List +[Дивіться мовні ресурси тут](programming-language-resources.md) -This is a shorter list than what I used. This is abbreviated to save you time. +## Книги про структури даних та алгоритми -### Interview Prep +Ця книга стане вашим фундаментом у вивченні компʼютерних наук. -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C++ and Java - - this is a good warm-up for Cracking the Coding Interview - - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java +Просто виберіть одну, мовою, яка вам буде зручна. Вам доведеться багато читати і кодувати. + +### C + +- Алгоритми на C, частини 1-5 (комплект), 3-тє видання [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) + - Основи, структури даних, алгоритми сортування, пошуку та побудови графів + +### Python -If you have tons of extra time: +- Структури даних та алгоритми в Python [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) + - by Goodrich, Tamassia, Goldwasser + - Мені сподобалася ця книга. Вона охоплює все і навіть більше. + - Пітонівський код + - мій яскравий книжковий звіт: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) -- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) +### Java -### Computer Architecture +Ваш вибір: -If short on time: +- Goodrich, Tamassia, Goldwasser + - Структури даних та алгоритми в Java [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) +- Sedgewick and Wayne: + - Алгоритми [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) + - Безкоштовний курс на Coursera, який охоплює книгу (викладається авторами!): + - Алгоритми I [Algorithms I](https://www.coursera.org/learn/algorithms-part1) + - Алгоритми II [Algorithms II](https://www.coursera.org/learn/algorithms-part2) -- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) - - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief. - - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. - - These chapters are worth the read to give you a nice foundation: - - Chapter 2 - Numeric Representation - - Chapter 3 - Binary Arithmetic and Bit Operations - - Chapter 4 - Floating-Point Representation - - Chapter 5 - Character Representation - - Chapter 6 - Memory Organization and Access - - Chapter 7 - Composite Data Types and Memory Objects - - Chapter 9 - CPU Architecture - - Chapter 10 - Instruction Set Architecture - - Chapter 11 - Memory Architecture and Organization +### C++ -If you have more time (I want this book): +Ваш вибір: -- [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) - - For a richer, more up-to-date (2011), but longer treatment +- Goodrich, Tamassia, and Mount + - Структури даних та алгоритми в C++, 2-е видання [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275) +- Sedgewick and Wayne + - Алгоритми в C++, частини 1-4: Основи, структура даних, сортування, пошук [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) + - Алгоритми в C++ Частина 5: Графові алгоритми [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) -### Language Specific +## Книги з підготовки до співбесіди -**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions. +Вам не потрібно купувати купу цих книг. Чесно кажучи, "Проходження співбесіди з кодування" ("Cracking the Coding Interview"), мабуть, достатньо, +але я купив ще, щоб мати більше практики. Але я завжди роблю забагато. -If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems. -**You can skip all the video lectures in this project**, unless you'd like a review. +Я купив обидві наступни книжки. Вони дали мені багато практики. -[Additional language-specific resources here.](programming-language-resources.md) +- Програмування співбесіди розкрито: Кодування вашого шляху через співбесіду, 4-е видання [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) + - Відповіді на C++ та Java + - Це хороша розминка перед Cracking the Coding Interview + - Не надто складно. Більшість проблем можуть бути простішими, ніж ті, що ви побачите на співбесіді (з того, що я читав) +- Проходження співбесіди з кодування, 6-й випуск [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) + - відповіді на Java -### C++ +### Якщо у вас багато вільного часу: -I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome. +Оберіть одну: -- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) -- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +- Елементи співбесід з програмування (версія на C++) [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) +- Елементи співбесід з програмування (версія на Python) [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/) +- Елементи співбесід з програмування (версія на Java) [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) + - [Супутній проект - заглушки методів та тестові кейси для кожної проблеми в книзі](https://github.com/gardncl/elements-of-programming-interviews) -If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource. -### Java -- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) - - videos with book content (and Sedgewick!): - - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) - - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) +## Не робіть моїх помилок -OR: +Цей список зростав протягом багатьох місяців, і так, він трохи вийшов з-під контролю. -- [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) - - by Goodrich, Tamassia, Goldwasser - - used as optional text for CS intro course at UC Berkeley - - see my book report on the Python version below. This book covers the same topics. +Ось кілька помилок, яких я припустився, щоб у вас був кращий досвід. І ви заощадите місяці часу. -### Python +### 1. Ви не запам'ятаєте всього. -- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ +Я дивився години відео і робив численні нотатки, і через місяці багато чого не пам'ятав. Я провів 3 дні, переглядаючи +свої нотатки і роблячи флеш-картки, щоб мати змогу повторити. Мені не потрібні були всі ці знання. +Прочитайте, будь ласка, щоб не робити моїх помилок: -### Optional Books +Збереження знань з комп'ютерних наук [Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) -**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** +### 2. Використовуйте флеш-картки -- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) - - As a review and problem recognition - - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. - - This book has 2 parts: - - class textbook on data structures and algorithms - - pros: - - is a good review as any algorithms textbook would be - - nice stories from his experiences solving problems in industry and academia - - code examples in C - - cons: - - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects - - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have - - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. - - algorithm catalog: - - this is the real reason you buy this book. - - about to get to this part. Will update here once I've made my way through it. - - Can rent it on kindle - - Half.com is a great resource for textbooks at good prices. - - Answers: - - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) - - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) - - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +Щоб вирішити цю проблему, я зробив невеличкий сайт флеш-карток, на який можна було додавати флеш-картки 2 типів: загальні та кодові. +Кожна картка має свій формат. Я створив сайт для мобільних пристроїв, щоб я міг переглядати його на телефоні та планшеті, де б я не був. -- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) - - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. - - Half.com is a great resource for textbooks at good prices. - - aka CLR, sometimes CLRS, because Stein was late to the game +Зробіть свій власний безкоштовно: -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but - that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. +- Репозиторій сайту з флеш-картками [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~ - - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results. - - Would rather spend time on coding problems from another book or online coding problems. +**Я НЕ РЕКОМЕНДУЮ використовувати мої картки.** Їх занадто багато, і більшість з них - тривіальні дрібниці, які вам не потрібні. +Але якщо ви не хочете мене слухати, то ось вам: +- Моя база даних флеш-карток (1200 карток) [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): +- Моя база даних флеш-карток (екстрім - 1800 карток) [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): -## Before you Get Started +Майте на увазі, що я переборщив і маю картки, що охоплюють все - від асемблера і дрібниць Python до машинного навчання і статистики. Це занадто багато за те, що потрібно. -This list grew over many months, and yes, it kind of got out of hand. +**Нотатки на флеш-картках:** Коли ви вперше зрозумієте, що знаєте відповідь, не позначайте її як відому. Ви повинні побачити +одну й ту саму картку і відповісти на неї кілька разів правильно, перш ніж ви дійсно дізнаєтесь її. Повторення поглибить +ці знання у вашому мозку. -Here are some mistakes I made so you'll have a better experience. +Альтернативою використанню мого сайту є [Anki](http://ankisrs.net/), який мені неодноразово рекомендували. Там використовується система повторень, щоб допомогти вам запам'ятати. +Він зручний у використанні, доступний на всіх платформах і має систему синхронізації в Cloud. Коштує $25 на iOS, але безкоштовно на інших платформах. -### 1. You Won't Remember it All +Моя база даних флеш-карт у форматі Anki: https://ankiweb.net/shared/info/25173560 (дякую [@xiewenya](https://github.com/xiewenya)) -I watched hours of videos and took copious notes, and months later there was much I didn't remember. I spent 3 days going -through my notes and making flashcards so I could review. +Деякі студенти згадували про проблеми з форматуванням пробілів, які можна виправити наступним чином: відкрийте колоду, відредагуйте картку, клацніть на картки (Cards), виберіть радіо-кнопку «стилі» (Styles) і додайте до класу картки стиль "white-space: pre;". -Read please so you won't make my mistakes: +### 3. Складайте питання для співбесіди під час навчання кодуванню -[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/) +ЦЕ ДУЖЕ ВАЖЛИВО. -### 2. Use Flashcards +Почніть кодувати питання для співбесіди, поки вивчаєте структури даних та алгоритми. -To solve the problem, I made a little flashcards site where I could add flashcards of 2 types: general and code. -Each card has different formatting. +Вам потрібно застосовувати те, що ви вивчаєте, для вирішення проблем, інакше ви забудете. Я зробив цю помилку. -I made a mobile-first website so I could review on my phone and tablet, wherever I am. +Після того, як ви вивчили тему і відчуваєте себе комфортно з нею, наприклад, **зв'язані списки**: +1. Відкрийте одну з [книг для підготовки до співбесіди з кодування](#interview-prep-books) (або веб-сайти з проблем кодування, перелічені нижче) +1. Поставте (зробіть) 2-3 запитання (задачі) про зв'язані списки. +1. Перейдіть до наступної навчальної теми. +1. Пізніше поверніться і розв'яжіть ще 2-3 задачі зі зв'язаними списками. +1. Робіть це з кожною новою темою, яку ви вивчаєте. -Make your own for free: +**Виконуйте завдання під час навчання, а не після.** -- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards) -- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db): -- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db): +Вас наймають не за знання, а за те, як ви їх застосовуєте. -Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required. +Для цього є багато ресурсів, перелічених нижче. Не зупиняйтеся. -**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. +### 4. Зосередьтеся -An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. 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. +Існує багато відволікаючих чинників, які можуть забирати дорогоцінний час. Зосередитися і сконцентруватися важко. Увімкніть музику без слів, і ви зможете досить добре зосередитися. -My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya)) +## Що не буде охоплено -### 3. Review, review, review +Це поширені технології, але вони не є частиною цього навчального плану: -I keep a set of cheat sheets on ASCII, OSI stack, Big-O notations, and more. I study them when I have some spare time. +- Javascript +- HTML, CSS, та інші фронтенд технології +- SQL -Take a break from programming problems for a half hour and go through your flashcards. +## Щоденний план -### 4. Focus +Цей курс охоплює багато тем. Кожна з них, ймовірно, займе у вас кілька днів, а може навіть тиждень чи більше. Це залежить від вашого графіку. -There are a lot of distractions that can take up valuable time. Focus and concentration are hard. +Кожного дня обирайте наступну тему зі списку, переглядайте відео на цю тему, а потім напишіть реалізацію +цієї структури даних або алгоритму мовою, яку ви обрали для цього курсу. -## What you won't see covered +Ви можете побачити мій код тут: + - [C](https://github.com/jwasham/practice-c) + - [C++](https://github.com/jwasham/practice-cpp) + - [Python](https://github.com/jwasham/practice-python) -These are prevalent technologies but not part of this study plan: +Вам не потрібно запам'ятовувати кожен алгоритм. Ви просто повинні розуміти його достатньо, щоб мати можливість написати власну реалізацію. -- SQL -- Javascript -- HTML, CSS, and other front-end technologies +## Практика з питань кодування + + Чому це тут? Я не готовий до співбесіди. + +[Тоді поверніться і прочитайте це.](#3-do-coding-interview-questions-while-youre-learning) + +Чому потрібно практикуватись у розв'язуванні задач з програмування: +- Розпізнавання проблеми, і де потрібні правильні структури даних та алгоритми +- Збір вимог до задачі +- Обговорення проблеми так, як ви будете говорити на співбесіді +- Кодування на дошці або папері, а не на комп'ютері +- Визначення часової та просторової складності ваших рішень (див. Big-O нижче) +- Тестування ваших рішень + +Існує чудовий вступ для методичного, комунікативного вирішення проблем під час співбесіди. Ви можете знайти це в книгах із співбесід з програмування, але я вважаю, що цей посібник є видатним: +[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/) -## The Daily Plan +Пишіть код на дошці або папері, а не на комп'ютері. Протестуйте з деякими зразками вхідних даних. Потім надрукуйте його та протестуйте на комп'ютері. -Some subjects take one day, and some will take multiple days. Some are just learning with nothing to implement. +Якщо у вас вдома немає дошки, візьміть великий блокнот для малювання в художньому магазині. Ви можете сидіти на дивані і практикуватись. +Це моя «диванна дошка». Я додав ручку на фото лише для масштабу. Якщо ви використовуєте ручку, ви пошкодуєте, що не можете її стерти. +Швидко стає брудно. **Я використовую олівець і гумку.** -Each day I take one subject from the list below, watch videos about that subject, and write an implementation in: -- C - using structs and functions that take a struct * and something else as args. -- C++ - without using built-in types -- C++ - using built-in types, like STL's std::list for a linked list -- Python - using built-in types (to keep practicing Python) -- and write tests to ensure I'm doing it right, sometimes just using simple assert() statements -- You may do Java or something else, this is just my thing. +![моя диванна дошка](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg) -You don't need all these. You need only [one language for the interview](#pick-one-language-for-the-interview). +**Практика з питань кодування - це не про запам'ятовування відповідей на задачі програмування.** -Why code in all of these? -- Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember) -- Work within the raw constraints (allocating/freeing memory without help of garbage collection (except Python)) -- Make use of built-in types so I have experience using the built-in tools for real-world use (not going to write my own linked list implementation in production) +## Проблеми кодування -I may not have time to do all of these for every subject, but I'll try. +Не забудьте свої ключові книги по співбесідам з кодування [тут](#interview-prep-books). -You can see my code here: - - [C] (https://github.com/jwasham/practice-c) - - [C++] (https://github.com/jwasham/practice-cpp) - - [Python] (https://github.com/jwasham/practice-python) +Вирішення проблем: +- Як знайти рішення [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution) +- Як розібрати постановку задачі для топкодерів [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content) -You don't need to memorize the guts of every algorithm. +Відео з питаннями до співбесіди на кодування: +- ЯЗаслуговую (88 відео) [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) +- Тушар Рой (5 плейлистів) [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) + - Чудово підходить для покрокового вирішення проблем +- Нік Уайт - Рішення на LeetCode (187 відео) [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-) + - Гарні пояснення рішення та коду + - Ви можете переглянути декілька за короткий час +- ФішерКодер - Рішення на LeetCode [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder) -Write code on a whiteboard or paper, not a computer. Test with some sample inputs. Then test it out on a computer. +Сайти викликів/практик: +- [LeetCode](https://leetcode.com/) + - Мій улюблений сайт із завданнями на кодування. Він вартий того, щоб заплатити гроші за підписку на 1-2 місяці, які ви, ймовірно, витратите на підготовку. + - Дивіться відео Ніка Уайта та ФішерКодера вище для покрокового вивчення коду. +- [HackerRank](https://www.hackerrank.com/) +- [TopCoder](https://www.topcoder.com/) +- [Codeforces](https://codeforces.com/) +- [Codility](https://codility.com/programmers/) +- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1) +- [AlgoExpert](https://www.algoexpert.io/product) + - Створений інженерами Google, це також чудовий ресурс для відточування навичок. +- [Project Euler](https://projecteuler.net/) + - дуже математично орієнтований і не дуже підходить для співбесід з кодування -## Prerequisite Knowledge +## Давайте починати! -- [ ] **Learn C** - - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying. - - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628) - - This is a short book, but it will give you a great handle on the C language and if you practice it a little - you'll quickly get proficient. Understanding C helps you understand how programs and memory work. - - [answers to questions](https://github.com/lekkas/c-algorithms) +Гаразд, досить розмов, давайте вчитися! -- [ ] **How computers process a program:** - - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) - - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) +Але не забувайте виконувати завдання з кодування зверху, поки будете вчитися! ## Algorithmic complexity / Big-O / Asymptotic analysis - nothing to implement From 2f641ac4d65432fbad4bf4c6c2a13aff8f640e1d Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Fri, 7 Jun 2024 23:59:02 +0400 Subject: [PATCH 840/857] update ukrainian translation up to ## Graphs --- translations/README-uk.md | 674 +++++++++++++++++++------------------- 1 file changed, 345 insertions(+), 329 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 4798277fab..612d2342b5 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -104,29 +104,29 @@ Microsoft. ### Теми для вивчення -- [Складність алгоритмів / Big-O / Асимптотичний аналіз](#algorithmic-complexity--big-o--asymptotic-analysis) -- [Структури даних](#data-structures) - - [Масив](#arrays) - - [Зв'язаний список](#linked-lists) - - [Стек](#stack) - - [Черга](#queue) - - [Геш-таблиця](#hash-table) -- [Більше знань](#more-knowledge) - - [Двійковий пошук](#binary-search) - - [Бітові операції](#bitwise-operations) -- [Дерева](#trees) - - [Дерева - примітки та передумови](#trees---notes--background) - - [Бінарні дерева пошуку: BSTs](#binary-search-trees-bsts) - - [Купа / Пріоритетна черга / Бінарна купа](#heap--priority-queue--binary-heap) +- [Складність алгоритмів / Big-O / Асимптотичний аналіз](#складність-алгоритмів--big-o--асимптотичний-аналіз) +- [Структури даних](#Структури-даних) + - [Масив](#Масив) + - [Зв'язаний список](#Зв'язаний-список) + - [Стек](#Стек) + - [Черга](#Черга) + - [Геш-таблиця](#Геш-таблиця) +- [Більше знань](#Більше-знань) + - [Двійковий пошук](#Двійковий-пошук) + - [Бітові операції](#Бітові-операції) +- [Дерева](#Дерева) + - [Дерева - Вступ](#Дерева-Вступ) + - [Бінарні дерева пошуку: BSTs](#бінарні-дерева-пошуку-binary-search-trees-bsts) + - [Купа / Пріоритетна черга / Бінарна купа](#купа--пріоритетна-черга--бінарна-купа) - Збалансовані дерева пошуку (загальна концепція, не деталі) - Обходи: preorder, inorder, postorder, BFS, DFS -- [Сортування](#sorting) +- [Сортування](#Сортування) - вибір (selection) - вставка (insertion) - купчасте сортування (heapsort) - швидке сортування (quicksort) - - злиття (merge sort) -- [Графи](#graphs) + - злиття (mergesort) +- [Графи](#Graphs) - спрямовані (directed) - неспрямовані (undirected) - матриця суміжності (adjacency matrix) @@ -547,337 +547,353 @@ Microsoft. Але не забувайте виконувати завдання з кодування зверху, поки будете вчитися! -## Algorithmic complexity / Big-O / Asymptotic analysis -- nothing to implement -- [ ] [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 Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] Skiena: - - [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf) -- [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) -- [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) -- [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) +## Складність алгоритмів / Big-O / Асимптотичний аналіз + +- Тут не потрібно нічого впроваджувати, ви просто дивитеся відео та робите нотатки! Ура! +- Тут багато відео. Просто дивіться достатньо, поки не зрозумієте. Ви завжди можете повернутися і переглянути. +- Не хвилюйтеся, якщо ви не розумієте всієї математики, що стоїть за цим. +- Вам просто потрібно зрозуміти, як виразити складність алгоритму в термінах Big-O. +- [ ] Гарвард CS50 - асимптотичне позначення (відео) [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4) +- [ ] Позначення Big O (загальний короткий посібник) (відео) [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU) +- [ ] Позначення Big O (а також Омега і Тета) - найкраще математичне пояснення (відео) [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] Скієна (Skiena) [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) -- [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) -- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) -- [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) -- [ ] TopCoder (includes recurrence relations and master theorem): - - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) - - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) -- [ ] [Cheat sheet](http://bigocheatsheet.com/) -- [ ] [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) - - - If some of the lectures are too mathy, you can jump down to the bottom and - watch the discrete mathematics videos to get the background knowledge. - -## Data Structures - -- ### Arrays - - Implement an automatically resizing vector. - - [ ] Description: - - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays) - - [UCBerkley CS61B - Linear and Multi-Dim Arrays (video)](https://youtu.be/Wp8oiO_CZZE?t=15m32s) - - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays) - - [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - - [ ] Implement a 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 - - 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 - - [ ] size() - number of items - - [ ] capacity() - number of items it can hold - - [ ] is_empty() - - [ ] at(index) - returns item at given index, blows up if index out of bounds - - [ ] push(item) - - [ ] insert(index, item) - inserts item at index, shifts that index's value and trailing elements to the right - - [ ] prepend(item) - can use insert above at index 0 - - [ ] pop() - remove from end, return value - - [ ] delete(index) - delete item at index, shifting all trailing elements left - - [ ] remove(item) - looks for value and removes index holding it (even if in multiple places) - - [ ] find(item) - looks for value and returns first index with that value, -1 if not found - - [ ] resize(new_capacity) // private function - - when you reach capacity, resize to double the size - - when popping an item, if size is 1/4 of capacity, resize to half - - [ ] Time - - O(1) to add/remove at end (amortized for allocations for more space), index, or update - - O(n) to insert/remove elsewhere - - [ ] Space - - contiguous in memory, so proximity helps performance - - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) - -- ### Linked Lists - - [ ] Description: - - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) - - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) - - [ ] [[Review] Linked lists in 4 minutes (video)](https://youtu.be/F8AbOfQwl1c) - - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - - not the whole video, just portions about Node struct and memory allocation. - - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays) - - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays) - - [ ] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - - [ ] Gotcha: you need pointer to pointer knowledge: - (for when you pass a pointer to a function that may change the address where that pointer points) - This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness. - - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) - - [ ] implement (I did with tail pointer & without): - - [ ] size() - returns number of data elements in list - - [ ] empty() - bool returns true if empty - - [ ] value_at(index) - returns the value of the nth item (starting at 0 for first) - - [ ] push_front(value) - adds an item to the front of the list - - [ ] pop_front() - remove front item and return its value - - [ ] push_back(value) - adds an item at the end - - [ ] pop_back() - removes end item and returns its value - - [ ] front() - get value of front item - - [ ] back() - get value of end item - - [ ] insert(index, value) - insert value at index, so current item at that index is pointed to by new item at index - - [ ] erase(index) - removes node at given index - - [ ] value_n_from_end(n) - returns the value of the node at nth position from the end of the list - - [ ] reverse() - reverses the list - - [ ] remove_value(value) - removes the first item in the list with this value - - [ ] Doubly-linked List - - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists) - - No need to implement - -- ### Stack - - [ ] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) - - [ ] [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) - - [ ] Will not implement. Implementing with array is trivial. - -- ### Queue - - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) - - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - - [ ] [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) - - [ ] Implement using linked-list, with tail pointer: - - enqueue(value) - adds value at position at tail - - dequeue() - returns value and removes least recently added element (front) +- [ ] Амортизаційний аналіз (відео) [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) +- [ ] TopCoder (включає рекурентні співвідношення та основну теорему): + - Обчислювальна складність: Розділ 1 [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) + - Обчислювальна складність: Розділ 2 [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) +- [ ] Шпаргалка [Cheat sheet](http://bigocheatsheet.com/) +- [ ] [Огляд] Аналіз алгоритмів (плейлист) за 18 хвилин (відео) [[Review] Analyzing Algorithms (playlist) in 18 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZMxejjIyFHWa-4nKg6sdoIv) + +Що ж, цього вже достатньо. + +Коли ви проходите "Cracking the Coding Interview", там є розділ про це, а в кінці є тест, щоб перевірити, чи можете ви визначити складність виконання різних алгоритмів. Це супер огляд і тест. + +## Структури даних + +### Масив + +- [ ] Про масиви: + - Масиви CS50 Гарвардського університету [Arrays CS50 Harvard University](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s) + - Масиви (відео) [Arrays (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) + - Динамічні масиви (відео) [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - Нерівні масиви (відео) [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g) + +- [ ] Реалізувати вектор (змінний масив з автоматичною зміною розміру): + - [ ] Практика кодування з використанням масивів і вказівників, а також математики вказівників для переходу до індексу замість використання індексації. + - [ ] Новий масив вихідних даних з виділеною пам'яттю + - можна виділити масив int під капотом, просто не використовувати його можливості + - починати з 16, або якщо початкове число більше, використовувати степінь 2 - 16, 32, 64, 128 + - [ ] size() - кількість елементів + - [ ] capacity() - кількість елементів, які він може вмістити + - [ ] is_empty() + - [ ] at(index) - повертає елемент за заданим індексом, зникає, якщо індекс виходить за межі + - [ ] push(item) + - [ ] insert(index, item) - вставляє елемент за індексом, зсуває значення цього індексу та наступні елементи праворуч + - [ ] prepend(item) - може використовувати вставку вище з індексом 0 + - [ ] pop() - видалити з кінця, повернути значення + - [ ] delete(index) - видаляє елемент за індексом, зсуваючи всі кінцеві елементи вліво + - [ ] remove(item) - шукає значення і видаляє індекс, що його містить (навіть якщо в декількох місцях) + - [ ] find(item) - шукає значення і повертає перший індекс з цим значенням, -1, якщо не знайдено + - [ ] resize(new_capacity) // приватна функція + - при досягненні ємності, змінює розмір на подвійний + - при видаленні елементу, якщо розмір становить 1/4 від ємності, зменшити розмір до половини +- [ ] Час + - O(1) для додавання/видалення в кінці (амортизується для виділення більшого простору), індексації або оновлення + - O(n) для вставки/видалення в іншому місці +- [ ] Простір + - суміжні у пам'яті, тому близькість допомагає продуктивності + - необхідний простір = (ємність масиву, яка >= n) * розмір елемента, але навіть якщо 2n, все одно O(n) + +- ### Зв'язаний список + +- [ ] Опис: + - [ ] Зв'язані списки CS50 Гарвардський університет [Linked Lists CS50 Harvard University](https://www.youtube.com/watch?v=2T-A_GFuoTo&t=650s) - це розвиває інтуїцію. + - [ ] Однозв'язні списки (відео) [Singly Linked Lists (video)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] CS 61B - Зв'язані списки 1 (відео) [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) + - [ ] CS 61B - Зв'язані списки 2 (відео) [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) + - [ ] [[Огляд] Зв'язані списки за 4 хвилини (відео)](https://youtu.be/F8AbOfQwl1c) +- [ ] C Code (відео) [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) + - не все відео, лише фрагменти про Node struct та виділення пам'яті +- [ ] Звʼязані списки vs масиви: + - Основне про зв'язані списки проти масивів (відео) [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - У реальному світі зв'язані списки проти масивів (відео) [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) +- [ ] Чому слід уникати зв'язаних списків (відео) [Why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo) +- [ ] Пастка: вам потрібні знання про вказівник на вказівник: + (на випадок, якщо ви передаєте вказівник у функцію, яка може змінити адресу, на яку вказує цей вказівник) + Я не рекомендую цей стиль обходу списків. Читабельність і обслуговуваємість страждають через складність. + - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html) +- [ ] Реалізувати (я зробив з хвостовим вказівником та без): + - [ ] size() - повертає кількість елементів даних у списку + - [ ] empty() - bool повертає true, якщо пусто + - [ ] value_at(index) - повертає значення n-го елемента (починаючи з 0 для першого) + - [ ] push_front(value) - додає елемент на початок списку + - [ ] pop_front() - видаляє перший елемент і повертає його значення + - [ ] push_back(value) - додає елемент в кінець списку + - [ ] pop_back() - видаляє кінцевий елемент і повертає його значення + - [ ] front() - отримати значення переднього елементу + - [ ] back() - отримати значення кінцевого елементу + - [ ] insert(index, value) - вставити значення за індексом так, щоб на поточний елемент за цим індексом вказував новий елемент за індексом + - [ ] erase(index) - видаляє вузол за заданим індексом + - [ ] value_n_from_end(n) - повертає значення вузла на n-ій позиції від кінця списку + - [ ] reverse() - реверсує список + - [ ] remove_value(value) - видаляє перший елемент списку з цим значенням +- [ ] Подвійно зв'язаний список + - Опис (відео) [Description (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - Не потрібно реалізовувати + +- ### Стек + - [ ] Стеки (відео) [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks) + - [ ] [Огляд] Стеки за 3 хвилини (відео) [[Review] Stacks in 3 minutes (video)](https://youtu.be/KcT3aVgrrpU) + - [ ] Не буде реалізовано. Реалізація з масивом тривіальна. + +- ### Черга + - [ ] Черга (відео) [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) + - [ ] Циклічний буфер/FIFO [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) + - [ ] [Огляд] Черги за 3 хвилини (відео) [[Review] Queues in 3 minutes (video)](https://youtu.be/D6gu-_tmEpQ) + - [ ] Реалізувати за допомогою звʼязаного списка, з хвостовим вказівником: + - enqueue(value) - додає значення до позиції у хвості + - dequeue() - повертає значення і видаляє останній доданий елемент (передній) - empty() - - [ ] Implement using fixed-sized array: - - enqueue(value) - adds item at end of available storage - - dequeue() - returns value and removes least recently added element + - [ ] Реалізація з використанням масиву фіксованого розміру: + - enqueue(value) - додає елемент в кінець доступного сховища + - dequeue() - повертає значення і видаляє останній доданий елемент - empty() - full() - - [ ] Cost: - - a bad implementation using linked list where you enqueue at head and dequeue at tail would be O(n) - because you'd need the next to last element, causing a full traversal each dequeue - - enqueue: O(1) (amortized, linked list and array [probing]) - - dequeue: O(1) (linked list and array) - - empty: O(1) (linked list and array) - -- ### Hash table + - [ ] Вартість: + - погана реалізація з використанням зв'язаного списку, де ви створюєте чергу в голові та чергу в хвості, буде O(n) + тому що вам потрібен передостанній елемент, що призводить до повного обходу кожної черги + - enqueue: O(1) (амортизований, зв'язаний список і масив [зондування]) + - dequeue: O(1) (зв'язаний список та масив) + - empty: O(1) (зв'язаний список та масив) + +- ### Геш-таблиця - [ ] Videos: - - [ ] [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) - - [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) - - [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) - - [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - - [ ] [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) - - - [ ] Online Courses: - - [ ] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) - - [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) - - [ ] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) - - [ ] distributed hash tables: - - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) - - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) - - - [ ] implement with array using linear probing - - hash(k, m) - m is size of hash table - - add(key, value) - if key already exists, update value + - [ ] Хешування з Привʼязуванням (відео) [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) + - [ ] Відкрита адресація, криптографічне хешування (відео) [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] PyCon 2010: Могутній словник (відео) [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68) + - [ ] (Просунута) рандомізація: Універсальне та досконале хешування (відео) [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11) + - [ ] (Просунутий) Ідеальне хешування (відео) [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) + - [ ] [Огляд] Хеш-таблиці за 4 хвилини (відео) [[Review] Hash tables in 4 minutes (video)](https://youtu.be/knV86FlSXJ8) + + - [ ] Онлайн-курси: + - [ ] Основні хеш-таблиці (відео) [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables) + - [ ] Структури даних (відео) [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3) + - [ ] Проблема телефонної книги (відео) [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem) + - [ ] розподілені хеш-таблиці: + - Миттєві завантаження та оптимізація сховища в Dropbox (відео) [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox) + - Розподілені хеш-таблиці (відео) [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables) + + - [ ] реалізувати з масивом за допомогою лінійного зондування + - hash(k, m) - m - розмір хеш-таблиці + - add(key, value) - якщо ключ вже існує, оновити значення - exists(key) - get(key) - remove(key) -## More Knowledge - -- ### Binary search - - [ ] [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) - - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) - - [ ] [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) - - [ ] Implement: - - binary search (on sorted array of integers) - - binary search using recursion - -- ### Bitwise operations - - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) - - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << - - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) - - [ ] Good intro: - [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I) - - [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0) - - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) - - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) +## Більше знань + +- ### Двійковий пошук + - [ ] Двійковий пошук (відео) [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) + - [ ] деталі [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [ ] [Огляд] Бінарний пошук за 4 хвилини (відео) [[Review] Binary search in 4 minutes (video)](https://youtu.be/fDKIpRe8GW4) + - [ ] Реалізувати: + - бінарний пошук (у відсортованому масиві цілих чисел) + - бінарний пошук з використанням рекурсії + +- ### Бітові операції + - [ ] Шпаргалка з бітів [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - ви повинні знати багато степенів 2 від (2^1 to 2^16 and 2^32) + - [ ] Отримати дійсно хороше розуміння маніпуляцій з бітами за допомогою: &, |, ^, ~, >>, << + - [ ] [слова](https://en.wikipedia.org/wiki/Word_(computer_architecture)) + - [ ] Гарне введення: + [Маніпуляції з бітами (відео)](https://www.youtube.com/watch?v=7jkIUgLC29I) + - [ ] [Підручник з програмування мовою C 2-10: Бітові оператори (відео)](https://www.youtube.com/watch?v=d0AwjSpNXR0) + - [ ] [Маніпуляції з бітами](https://en.wikipedia.org/wiki/Bit_manipulation) + - [ ] [Побітові операції](https://en.wikipedia.org/wiki/Bitwise_operation) - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - - [ ] count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) - - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) + - Двійковий код: плюси та мінуси (чому ми використовуємо доповнення до двох) (відео) [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - Перше доповнення [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) + - Друге доповнення [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) + - [ ] підрахунок встановлених бітів + - 4 способи підрахунку бітів у байті (відео) [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - Підрахунок бітів [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) + - Як порахувати кількість встановлених бітів у 32-бітному цілому числі [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] round to next power of 2: - - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) - - [ ] swap values: - - [Swap](http://bits.stephan-brumme.com/swap.html) - - [ ] absolute value: - - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) - -## Trees - -- ### Trees - Notes & Background - - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees) - - basic tree construction - - traversal - - manipulation algorithms - - BFS (breadth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) - - level order (BFS, using queue) - time complexity: O(n) - space complexity: best: O(1), worst: O(n/2)=O(n) - - DFS (depth-first search) - - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) - - notes: - time complexity: O(n) - space complexity: - best: O(log n) - avg. height of tree - worst: O(n) - - inorder (DFS: left, self, right) - - postorder (DFS: left, right, self) - - preorder (DFS: self, left, right) - - [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) - - [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) - - [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) - -- ### Binary search trees: BSTs - - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees) - - starts with symbol table and goes through BST applications - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) - - [ ] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68) + - округлити до наступного степеня 2 [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) + - [ ] обмін значеннями: + - Обмін [Swap](http://bits.stephan-brumme.com/swap.html) + - [ ] абсолютні значення: + - Абсолютне ціле число [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) + +## Дерева + +- ### Дерева - Вступ + - [ ] Введення до Дерев (відео) [Intro to Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] Обхід дерев (відео) [Tree Traversal (video)](https://www.coursera.org/lecture/data-structures/tree-traversal-fr51b) + - [ ] BFS (пошук в ширину) та DFS (пошук в глибину) (відео) [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM) + - Нотатки про BFS: + - порядок рівнів (BFS, з використанням черги) + - часова складність: O(n) + - просторова складність: найкраща: O(1), найгірша: O(n/2)=O(n) + - Нотатки про DFS: + - часова складність: O(n) + - просторова складність: + найкраща: O(log n) - середня висота дерева + найгірша: O(n) + - inorder (DFS: left, self, right) + - postorder (DFS: left, right, self) + - preorder (DFS: self, left, right) + - [ ] [Огляд] Пошук в ширину за 4 хвилини (відео) [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE) + - [ ] [Огляд] Пошук в глибину за 4 хвилини (відео) [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c) + - [ ] [Огляд] Обхід дерева (плейлист) за 11 хвилин (відео) [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b) + +- ### Бінарні дерева пошуку (Binary search trees: BSTs) + + - [ ] Огляд бінарних дерев пошуку (відео) [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [ ] Вступ (відео) [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] MIT (відео) [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - - [ ] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) - - [ ] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) - - [ ] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) - - [ ] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) - - [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) - - [ ] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) - - [ ] Implement: - - [ ] insert // insert value into tree - - [ ] get_node_count // get count of values stored - - [ ] print_values // prints the values in the tree, from min to max + - [ ] Бінарне дерево пошуку - реалізація у C/C++ (відео) [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) + - [ ] Реалізація BST - розподіл пам'яті у стеку та купі (відео) [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29) + - [ ] Знаходження мінімального та максимального елементів у бінарному дереві пошуку (відео) [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Знаходження висоти бінарного дерева (відео) [Find the height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31) + - [ ] Обхід бінарного дерева - стратегії в ширину та в глибину (відео) [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32) + - [ ] Бінарне дерево: обхід за рівнем порядку (відео) [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Обхід бінарного дерева: попередній порядок, наступний порядок, пост-порядок (відео) [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Перевірка, чи є бінарне дерево бінарним деревом пошуку (відео) [Check if a binary tree is a binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Видалення вузла з бінарного дерева пошуку (відео) [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36) + - [ ] Наступник в порядку обходу в дереві пошуку [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P) + - [ ] Реалізувати: + - [ ] [insert // вставка значення у дерево](https://leetcode.com/problems/insert-into-a-binary-search-tree/submissions/987660183/) + - [ ] get_node_count // отримання кількості збережених значень + - [ ] print_values // виведення на екран значень в дереві, від min до max - [ ] delete_tree - - [ ] is_in_tree // returns true if given value exists in the tree - - [ ] get_height // returns the height in nodes (single node's height is 1) - - [ ] get_min // returns the minimum value stored in the tree - - [ ] get_max // returns the maximum value stored in the tree - - [ ] is_binary_search_tree + - [ ] is_in_tree // повертає true, якщо задане значення існує в дереві + - [ ] [get_height](https://www.geeksforgeeks.org/find-the-maximum-depth-or-height-of-a-tree/) // повертає висоту у вузлах (висота одного вузла дорівнює 1) + - [ ] get_min // повертає мінімальне значення, що зберігається в дереві + - [ ] get_max // повертає максимальне значення, що зберігається в дереві + - [ ] [is_binary_search_tree](https://leetcode.com/problems/validate-binary-search-tree/) - [ ] delete_value - - [ ] get_successor // returns next-highest value in tree after given value, -1 if none - -- ### Heap / Priority Queue / Binary Heap - - visualized as a tree, but is usually linear in storage (array, linked list) - - [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction) - - [ ] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) - - [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) - - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) - - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) + - [ ] get_successor // повертає наступника за величиною значення у дереві після заданого, -1 якщо такого немає + +- ### Купа / Пріоритетна черга / Бінарна купа + + - візуалізується у вигляді дерева, але зазвичай є лінійною у сховищі (масив, зв'язаний список) + - [ ] Купа [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure)) + - [ ] Вступ (відео) [Introduction (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) + - [ ] Бінарні дерева (відео) [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] Зауваження щодо висоти дерева (відео) [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) + - [ ] Основні операції (відео) [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) + - [ ] Повні бінарні дерева (відео) [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) + - [ ] Псевдокод (відео) [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] Сортування купою - переходи до початку (відео) [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) + - [ ] Сортування купою (відео) [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) + - [ ] Створення купи (відео) [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] MIT: Купи та сортування купою (відео) [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] CS 61B Лекція 24: Черги пріоритетів (відео) [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) - - [ ] Implement a max-heap: + - [ ] [Огляд] Купа (плейлист) за 13 хвилин (відео) [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) + - [ ] Реалізувати максимальну купу: - [ ] insert - - [ ] sift_up - needed for insert - - [ ] get_max - returns the max item, without removing it - - [ ] get_size() - return number of elements stored - - [ ] is_empty() - returns true if heap contains no elements - - [ ] extract_max - returns the max item, removing it - - [ ] sift_down - needed for extract_max - - [ ] remove(i) - removes item at index x - - [ ] heapify - create a heap from an array of elements, needed for heap_sort - - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap - - note: using a min heap instead would save operations, but double the space needed (cannot do in-place). - -## Sorting - -- [ ] Notes: - - Implement sorts & know best case/worst case, average complexity of each: - - no bubble sort - it's terrible - O(n^2), except when n <= 16 - - [ ] stability in sorting algorithms ("Is Quicksort stable?") - - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) - - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) - - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) - - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) - - [ ] Which algorithms can be used on linked lists? Which on arrays? Which on both? - - I wouldn't recommend sorting a linked list, but merge sort is doable. - - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) - -- For heapsort, see Heap data structure above. Heap sort is great, but not stable. - -- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) -- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) -- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) -- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) -- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) -- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) -- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) - -- [ ] Merge sort code: - - [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) - - [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) - - [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) -- [ ] Quick sort code: - - [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - - [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) - - [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) - -- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) - - [ ] [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) - - [ ] [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) - - [ ] [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) - - [ ] [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) - - [ ] [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) - - [ ] [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) - -- [ ] Implement: - - [ ] Mergesort: O(n log n) average and worst case - - [ ] Quicksort O(n log n) average case - - Selection sort and insertion sort are both O(n^2) average and worst case - - For heapsort, see Heap data structure above. - -- [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) - - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) - - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) - - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) - -As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). -If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) + - [ ] sift_up - необхідно для insert + - [ ] get_max - повертає максимальний елемент, не видаляючи його + - [ ] get_size() - повертає кількість елементів + - [ ] is_empty() - повертає true, якщо в купі немає елементів + - [ ] extract_max - повертає максимальний елемент, видаляючи його + - [ ] sift_down - необхідний для extract_max + - [ ] remove(x) - видаляє елемент за індексом x + - [ ] heapify - створює купу з масиву елементів, необхідно для heap_sort + - [ ] heap_sort() - бере невідсортований масив і перетворює його на відсортований на місці, використовуючи max heap або min heap + +## Сортування + +- [ ] Примітки: + - Реалізуйте сортування і знайте найкращий/найгірший випадок, середню складність кожного з них: + - ніяких бульбашкових сортувань - це жахливо - O(n^2), за винятком випадків, коли n <= 16 + - [ ] Стабільність алгоритмів сортування ("Чи є Quicksort стабільним?") + - Стабільність алгоритмів сортування [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability) + - Стабільність в алгоритмах сортування (StackOverflow) [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms) + - Стабільність в алгоритмах сортування (GeeksForGeeks) [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/) + - Алгоритми сортування - стабільність [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf) + - [ ] Які алгоритми можна використовувати на зв'язаних списках? Які на масивах? Які на обох? + - Я б не рекомендував сортувати зв'язаний список, але сортування злиттям цілком можливо. + - Сортування злиттям для зв'язаного списку [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/) + +- Про сортування купою (heapsort) дивіться структуру даних Heap вище. Сортування купою - це чудово, але не стабільно + +- [ ] Седжвік - Сортування злиттям (5 відео) [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] Сортування злиттям [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) + - [ ] 2. Висхідний Mergesort [2. Bottom-up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) + - [ ] 3. Складність сортування [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) + - [ ] 4. Компаратори [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) + - [ ] 5. Стабільність [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + +- [ ] Седжвік - Сортування злиттям (5 відео) [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) + - [ ] Швидке сортування [1. Quicksort](https://www.coursera.org/lecture/algorithms-part1/quicksort-vjvnC) + - [ ] Вибір [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) + - [ ] Повторні ключі [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) + - [ ] Системні сортування [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + +- [ ] Університет Каліфорнії (Берклі) (UC Berkeley): + - [ ] CS 61B Лекція 29: Сортування I (відео) [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) + - [ ] CS 61B Лекція 30: Сортування II (відео) [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) + - [ ] CS 61B Лекція 32: Сортування III (відео) [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) + - [ ] CS 61B Лекція 33: Сортування V (відео) [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) + - [ ] CS 61B 2014-04-21: Сортування за розрядами (відео) [CS 61B 2014-04-21: Radix Sort(video)](https://archive.org/details/ucberkeley_webcast_pvbBMd-3NoI) + +- [ ] Бульбашкове сортування (відео) [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) +- [ ] Аналіз бульбашкового сортування (відео) [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) +- [ ] Сортування вставками, злиттям (відео) [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) +- [ ] Сортування вставками (відео) [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB) +- [ ] Сортування злиттям (відео) [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB) +- [ ] Швидке сортування (відео) [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB) +- [ ] Сортування вибором (відео) [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB) + +- [ ] Код сортування злиттям: + - [ ] Використання вихідного масиву (C) [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c) + - [ ] Використання вихідного масиву (Python) [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py) + - [ ] На місці (C++) [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc) +- [ ] Код швидкого сортування: + - [ ] Реалізація (C) [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) + - [ ] Реалізація (C) [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c) + - [ ] Реалізація (Python) [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) + +- [ ] [Огляд] Сортування (плейлист) за 18 хвилин [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl) + - [ ] Швидке сортування за 4 хвилини (відео) [Quick sort in 4 minutes (video)](https://youtu.be/Hoixgm4-P4M) + - [ ] Сортування купою за 4 хвилини (відео) [Heap sort in 4 minutes (video)](https://youtu.be/2DmK_H7IdTo) + - [ ] Сортування злиттям за 3 хвилини (відео) [Merge sort in 3 minutes (video)](https://youtu.be/4VqmGXwpLqc) + - [ ] Сортування бульбашками за 2 хвилини (відео) [Bubble sort in 2 minutes (video)](https://youtu.be/xli_FI7CuzA) + - [ ] Сортування вибором за 3 хвилини (відео) [Selection sort in 3 minutes (video)](https://youtu.be/g-PGLbMth_g) + - [ ] Сортування вставками за 2 хвилини (відео) [Insertion sort in 2 minutes (video)](https://youtu.be/JU767SDMDvA) + +- [ ] Реалізувати: + - [ ] Сортування злиттям: O(n log n) середній та найгірший випадок + - [ ] Швидке сортування O(n log n) середній випадок + - Сортування вибором та сортування вставкою мають середній та найгірший випадок O(n^2) + - Про сортування купою даних дивіться вище у розділі Структури даних - Купа + +- [ ] Не обов'язково, але я рекомендую їх: + - [ ] Седжвік - Радікс-сортування (6 відео) [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] 1. Рядки в Java [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) + - [ ] 2. Індексований підрахунок ключів [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] 3. Сортування за розрядами за найменш значущою цифрою першого рядка [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) + - [ ] 3. Сортування за розрядами за найбільш значущою цифрою першого рядка [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) + - [ ] 5. 3-бічне cортування за розрядами [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] 6. Масиви суфіксів [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] Сортування за розрядами [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) + - [ ] Сортування за розрядами (відео) [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] Сортування за розрядами, лічильне сортування (лінійні обмеження за часом) (відео) [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] Рандомізація: матричне множення, швидке сортування, алгоритм Фрейвальдса (відео) [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] Сортування за лінійний час (відео) [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) + +Як підсумок, ось візуальне представлення [15 алгоритмів сортування](https://www.youtube.com/watch?v=kPRA0W1kECg). +Якщо вам потрібна більш детальна інформація на цю тему, зверніться до розділу "Сортування" у [Додаткова інформація про деякі теми](#additional-detail-on-some-subjects) ## Graphs From aede3d6c5c37fff0dc51de16b56027c95faf557c Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Sat, 8 Jun 2024 21:02:57 +0400 Subject: [PATCH 841/857] update ukrainian translation up to ### Combinatorics & Probability --- translations/README-uk.md | 311 ++++++++++++++++++-------------------- 1 file changed, 150 insertions(+), 161 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 612d2342b5..8d8a60406d 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -126,17 +126,17 @@ Microsoft. - купчасте сортування (heapsort) - швидке сортування (quicksort) - злиття (mergesort) -- [Графи](#Graphs) +- [Графи](#Графи) - спрямовані (directed) - неспрямовані (undirected) - матриця суміжності (adjacency matrix) - список суміжності (adjacency list) - обходи: BFS, DFS (traversals: BFS, DFS) -- [Ще більше знань](#even-more-knowledge) - - [Рекурсія](#recursion) - - [Динамічне програмування](#dynamic-programming) - - [Шаблони проектування](#design-patterns) - - [Комбінаторика (n choose k) та ймовірність](#combinatorics-n-choose-k--probability) +- [Ще більше знань](#Ще-більше-знань) + - [Рекурсія](#Рекурсія) + - [Динамічне програмування](#Динамічне-програмування) + - [Шаблони проектування](#Шаблони-проектування) + - [Комбінаторика (n choose k) та ймовірність](#комбінаторика-n-choose-k-та-ймовірність) - [NP, NP-повні та Апроксимаційні Алгоритми](#np-np-complete-and-approximation-algorithms) - [Як комп'ютери опрацьовують програму](#how-computers-process-a-program) - [Кеші](#caches) @@ -895,164 +895,153 @@ Microsoft. Як підсумок, ось візуальне представлення [15 алгоритмів сортування](https://www.youtube.com/watch?v=kPRA0W1kECg). Якщо вам потрібна більш детальна інформація на цю тему, зверніться до розділу "Сортування" у [Додаткова інформація про деякі теми](#additional-detail-on-some-subjects) -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -You'll get more graph practice in Skiena's book (see Books section below) and the interview books - -## Even More Knowledge - -- ### Recursion - - [ ] Stanford lectures on recursion & backtracking: - - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) - - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) - - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) - - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) - - when it is appropriate to use it - - how is tail recursion better than not? - - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) - - [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - -- ### Dynamic Programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) +## Графи + +Графи можна використовувати для представлення багатьох проблем у комп'ютерних науках, тому цей розділ довгий, як і розділ про дерева та сортування. + +- Примітки: + - Існує 4 основних способи представлення графів у пам'яті: + - об'єкти та вказівники (objects and pointers) + - матриця суміжності (adjacency matrix) + - список суміжності (adjacency list) + - карта суміжності (adjacency map) + - Ознайомтеся з кожним способом представлення та його перевагами і недоліками + - BFS та DFS - знайте їх обчислювальну складність, компроміси та як їх реалізувати в реальному коді + - Коли вам ставлять запитання, спочатку шукайте рішення на основі графів, а потім рухайтеся далі, якщо його немає + +- [ ] MIT (відео): + - [ ] Пошук в ширину [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] Пошук в глибину [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Лекції Скієна - чудовий вступ: + - [ ] CSE373 2020 - Лекція 10 - Графові структури даних (відео) [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] CSE373 2020 - Лекція 11 - Обхід графів (відео) [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] CSE373 2020 - Лекція 12 - Пошук у глибину (відео) [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] CSE373 2020 - Лекція 13 - Мінімальні остовні дерева (відео) [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] CSE373 2020 - Лекція 14 - Мінімальні остовні дерева (відео) [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] CSE373 2020 - Лекція 15 - Графові алгоритми (частина 2) (відео) [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Графи (огляд та інше): + + - [ ] 6.006 Задача про найкоротші шляхи з одним джерелом (відео) [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] 6.006 Дейкстра (відео) [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ]6.006 Беллман-Форд (відео) [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] 6.006 Прискорення Дейкстра (відео) [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] Адуні: Графові алгоритми I - Топологічне сортування, Мінімальне остовне дерево, Алгоритм Прима - лекція 6 (відео) [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] Адуні: Графові алгоритми II - DFS, BFS, алгоритм Крускала, Структура даних Об'єднаний Пошук - Лекція 7 (відео) [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] Адуні: Графові алгоритми III: Найкоротший шлях - Лекція 8 (відео) [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] Адуні: Графові алгоритми IV: Вступ до геометричних алгоритмів - Лекція 9 (відео) [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] CS 61B 2014: Зважені графи (відео) [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] Жадібні алгоритми: мінімальне остовне дерево (відео) [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] Сильно зв'язані компоненти алгоритму Косараджу: алгоритм графів (відео) [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [Огляд] Алгоритми найкоротшого шляху (плейлист) за 16 хвилин (відео) [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [Огляд] Мінімальні остовні дерева (плейліст) за 4 хвилини (відео) [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + +- Повний курс на Coursera: + - [ ] Алгоритми на графах (відео) [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Я реалізую: + - [ ] DFS зі списком суміжності (рекурсивний) + - [ ] DFS зі списком суміжності (ітеративний зі стеком) + - [ ] DFS з матрицею суміжності (рекурсивний) + - [ ] DFS з матрицею суміжності (ітеративний зі стеком) + - [ ] BFS зі списком суміжності + - [ ] BFS з матрицею суміжності + - [ ] найкоротший шлях з одним джерелом (Дейкстра) + - [ ] мінімальне остовне дерево + - Алгоритми на основі DFS (див. відео Aduni вище): + - [ ] перевірка на цикл (потрібна для топологічного сортування, оскільки ми будемо перевіряти цикл перед початком) + - [ ] топологічне сортування + - [ ] підрахунок зв'язних компонентів у графі + - [ ] перелік списку сильно зв'язаних компонентів + - [ ] перевірка на дводольний граф + +## Ще більше знань + +- ### Рекурсія + - [ ] Стенфордські лекції про рекурсію та відстеження: + - [ ] Лекція 8 | Програмування абстракцій (відео) [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] Лекція 9 | Програмні абстракції (відео) [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] Лекція 10 | Програмування абстракцій (відео) [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] Лекція 11 | Програмування абстракцій (відео) [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Коли доцільно її використовувати? + - Чим хвостова рекурсія краща ніж ніякої? + - [ ] Що таке хвостова рекурсія і чому вона така погана? [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] Хвостова рекурсія (відео) [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] 5 простих кроків для вирішення будь-якої рекурсивної задачі (відео) [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) + + Схема зворотного відстеження: + + - [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + - [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) + +- ### Динамічне програмування + + - Ви, ймовірно, не побачите жодної проблеми з динамічним програмуванням на співбесіді, але варто вміти розпізнавати + задачу, яка може бути кандидатом на динамічне програмування. + - Ця тема може бути досить складною, оскільки кожна задача, що розв'язується ДП, повинна бути визначена як рекурсивне відношення, а придумати його може бути непросто. + - Я пропоную розглянути багато прикладів задач на ДП, доки ви не матимете чіткого уявлення про закономірності, що використовуються. + - [ ] Відео: + - [ ] Скієна: CSE373 2020 - Лекція 19 - Вступ до динамічного програмування (відео) [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] Скієна: CSE373 2020 - Лекція 20 - Редагування відстані (відео) [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] Скієна: CSE373 2020 - Лекція 20 - Редагування відстані (продовження) (відео) [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] Скієна: CSE373 2020 - Лекція 21 - Динамічне програмування (відео) [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] Скієна: CSE373 2020 - Лекція 22 - Динамічне програмування та огляд (відео) [Skiena: CSE373 2020 - Lecture 22 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) + - [ ] Саймонсон: Динамічне програмування 0 (починається з 59:18) (відео) [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] Саймонсон: Динамічне програмування I - Лекція 11 (відео) [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] Саймонсон: Динамічне програмування II - Лекція 12 (відео) [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Список окремих задач з ДП (кожна з них коротка): + Динамічне програмування (відео) [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Єльський конспект лекцій: + - [ ] Динамічне програмування [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### Object-Oriented Programming - - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos): - - Can skip this if you have a great grasp of OO and OO design practices. - - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] SOLID OOP Principles: - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) - - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) - - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) - - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) - - [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en) - - [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en) - - [ ] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use - - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en) - - [ ] D -[Dependency Inversion principle](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects. - - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important) - - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en) - -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - - [ ] Learn these patterns: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state + - [ ] Проблема вторинної структури РНК (відео) [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] Алгоритм динамічного програмування (відео) [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] Ілюстрація алгоритму ДП (відео) [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] Час роботи алгоритму DP (відео) [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] DP проти рекурсивної реалізації (відео) [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] Глобальне попарне вирівнювання послідовностей (відео) [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] Локальне попарне вирівнювання послідовностей (відео) [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Шаблони проектування + - [ ] [Короткий огляд UML (відео)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Вивчіть ці патерни: + - [ ] синглтон (strategy) + - [ ] синглтон (singleton) + - [ ] адаптер (adapter) + - [ ] прототип (prototype) + - [ ] декоратор (decorator) + - [ ] відвідувач (visitor) + - [ ] фабрика, абстрактна фабрика (factory, abstract factory) + - [ ] фасад (facade) + - [ ] спостерігач (observer) + - [ ] проксі (proxy) + - [ ] делегат (delegate) + - [ ] команда (command) + - [ ] стан (state) - [ ] memento - - [ ] iterator - - [ ] composite + - [ ] ітератор (iterator) + - [ ] композит (composite) - [ ] flyweight - - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) - - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) - - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. - - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - - -- ### Combinatorics (n choose k) & Probability - - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) - - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) - - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) - - [ ] Khan Academy: - - Course layout: - - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) - - Just the videos - 41 (each are simple and each are short): - - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) + - [ ] Розділ 6 (частина 1) - Патерни (відео) [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] Розділ 6 (частина 2) - Абстракція-випадок, Загальна Ієрархія, Гравець-Роль, Синглтон, Спостерігач, Делегування (відео) [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] Розділ 6 (частина 3) - Адаптер, Фасад, Незмінний, Інтерфейс тільки для читання, Проксі (відео) [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) + - [ ] Серія відео (27 відео) [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] Шаблони проектування з нуля [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) + - Я знаю, що канонічною книгою є "Патерни проектування: Elements of Reusable Object-Oriented Software", але Head First чудово підходить для початківців в ООП. + - [ ] [Зручне посилання: 101 патерн проектування та поради для розробників](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Патерни проектування для людей](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Комбінаторика (n choose k) та ймовірність + - [ ] Математичні навички: Як знайти факторіал, перестановку та комбінацію (на вибір) (відео) [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] Make School: Ймовірність (відео) [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] Make School: більше про ймовірності та ланцюжки Маркова [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Академія Хана (Khan Academy): + - Структура курсу: + - [ ] Основи теоретичної ймовірності [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Всього відео - 41 (кожне просте і кожне коротке): + - [ ] Пояснення теорії ймовірностей (відео) [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) - ### NP, NP-Complete and Approximation Algorithms - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, From 0dceb917d95c16c857ab39ad2ba5ab409e4d8eb7 Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Sun, 9 Jun 2024 06:48:39 +0400 Subject: [PATCH 842/857] update ukrainian translation up to ###Testing --- translations/README-uk.md | 212 +++++++++++++++++--------------------- 1 file changed, 92 insertions(+), 120 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 8d8a60406d..32320f72e9 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -137,10 +137,10 @@ Microsoft. - [Динамічне програмування](#Динамічне-програмування) - [Шаблони проектування](#Шаблони-проектування) - [Комбінаторика (n choose k) та ймовірність](#комбінаторика-n-choose-k-та-ймовірність) - - [NP, NP-повні та Апроксимаційні Алгоритми](#np-np-complete-and-approximation-algorithms) - - [Як комп'ютери опрацьовують програму](#how-computers-process-a-program) - - [Кеші](#caches) - - [Процеси та Треди](#processes-and-threads) + - [NP, NP-повні та Апроксимаційні Алгоритми](#np-np-повні-та-апроксимаційні-алгоритми) + - [Як комп'ютер виконує програму](#як-комп'ютер-виконує-програму) + - [Кеші](#Кеші) + - [Процеси та потоки](#процеси-та-потоки) - [Тестування](#testing) - [Пошук та маніпуляції з рядками](#string-searching--manipulations) - [Спроби](#tries) @@ -1043,123 +1043,95 @@ Microsoft. - Всього відео - 41 (кожне просте і кожне коротке): - [ ] Пояснення теорії ймовірностей (відео) [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms - - Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, - and be able to recognize them when an interviewer asks you them in disguise. - - Know what NP-complete means. - - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) - - [ ] Simonson: - - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) - - [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - - [ ] Skiena: - - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) - - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - - [ ] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) - - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - Peter Norvig discusses near-optimal solutions to traveling salesman problem: +- ### NP, NP-повні та Апроксимаційні Алгоритми + - Знати про найвідоміші класи NP-повних задач, такі як задача комівояжера та задача про рюкзак, + та вміти розпізнавати їх, коли інтерв'юер задає їх у завуальованій формі. + - Знати, що означає NP-повні задачі. + - [ ] Обчислювальна складність (відео) [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23) + - [ ] Саймонсон: + - [ ] Жадібні алгоритми II та вступ до NP-повноти (відео) [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] NP-повнота II та скорочення (відео) [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] NP-повнота III (відео) [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] NP-повнота IV (відео) [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) + - [ ] Скієна: + - [ ] CSE373 2012 - Лекція 23 - Вступ до NP-повноти (відео) [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508) + - [ ] CSE373 2012 - Лекція 24 - Доведення NP-повноти (відео) [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] CSE373 2012 - Лекція 25 - Виклик NP-повноти (відео) [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) + - [ ] Складність: P, NP, NP-повнота, редукції (відео) [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] Складність: Апроксимаційні алгоритми (відео) [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] Складність: алгоритми з фіксованими параметрами (відео) [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - Пітер Норвіг обговорює близькі до оптимальних розв'язки задачі комівояжера: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) - - Pages 1048 - 1140 in CLRS if you have it. - -- ### Caches - - [ ] LRU cache: - - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) - - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) - - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) - - [ ] CPU cache: - - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) - - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) - -- ### Processes and Threads - - [ ] Computer Science 162 - Operating Systems (25 videos): - - for processes and threads see videos 1-11 - - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) - - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) - - Covers: - - Processes, Threads, Concurrency issues - - difference between processes and threads - - processes - - threads - - locks - - mutexes - - semaphores - - monitors - - how they work - - deadlock - - livelock - - CPU activity, interrupts, context switching - - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) - - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) - - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) - - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. - - Context switching - - How context switching is initiated by the operating system and underlying hardware - - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - - [ ] concurrency in Python (videos): - - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) - - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) - - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) - - [reference](http://www.dabeaz.com/GIL) - - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) - - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) - - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) - -- ### Papers - - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. - - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) - - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) - - [implemented in Go](https://godoc.org/github.com/thomas11/csp) - - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) - - replaced by Colossus in 2012 - - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - - mostly replaced by Cloud Dataflow? - - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) - - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) - - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) - - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf) - - The Dynamo paper kicked off the NoSQL revolution - - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) - - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) - - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) - - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/) - - paper not available - - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf) - - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany) - - [ ] 2013: Spanner: Google’s Globally-Distributed Database: - - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) - - [video](https://www.usenix.org/node/170855) - - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf) - - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf) - - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf) - - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf ) - - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf) - -- ### Testing - - To cover: - - how unit testing works - - what are mock objects - - what is integration testing - - what is dependency injection - - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) - - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) - - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) - - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html) - - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo) - - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g) - - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc) - - [ ] Dependency injection: - - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) - - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) + - Сторінки 1048 - 1140 у CLRS, якщо у вас є. + +- ### Як комп'ютер виконує програму + + - [ ] Як процесор виконує програму (відео) [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] Як комп'ютери обчислюють - ALU (відео) [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) + - [ ] Регістри та оперативна пам'ять (відео) [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) + - [ ] Центральний процесор (CPU) (відео) [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) + - [ ] Інструкції та програми (відео) [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + +- ### Кеші + - [ ] Кеш-пам'ять останнього використання (LRU cache): + - [ ] Магія кешу LRU (100 днів Google Dev) (відео) [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] Впровадження LRU (відео) [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] LeetCode - 146 LRU кеш (C++) (відео) [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU) + - [ ] Кеш-пам'ять процесора (CPU cache): + - [ ] MIT 6.004 L15: Ієрархія пам'яті (відео) [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] MIT 6.004 L16: Проблеми з кешем (відео) [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) + +- ### Процеси та потоки + - [ ] Computer Science 162 - Операційні системи (25 відео): + - про процеси та потоки див. відео 1-11 + - Операційні системи та системне програмування (відео) [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) + - Яка різниця між процесом і потоком? [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) + - Охоплює: + - Процеси, потоки, проблеми паралелізму + - різниця між процесами та потоками (processes and threads) + - процеси (processes) + - потоки (threads) + - замки (locks) + - м'ютекси (mutexes) + - семафори (semaphores) + - монітори (monitors) + - як вони працюють (how they work) + - глухий кут (deadlock) + - живий кут (livelock) + - Активність процесора, переривання, перемикання контексту + - Сучасні конструкції паралелізму з багатоядерними процесорами + - Пагінація, сегментація та віртуальна пам'ять (відео) [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) + - Переривання (відео) [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Планування (відео) [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) + - Потреби процесу в ресурсах (пам'ять: код, статична пам'ять, стек, купа, а також дескриптори файлів, ввід/вивід) + - Потреби потоку в ресурсах (ділить вищеперелічене (крім стеку) з іншими потоками у тому ж самому процесі, але у кожного є свій PC, лічильник стеку, регістри та стек) + - Розгалуження - це фактично копіювання на запис (тільки для читання), поки новий процес не запише в пам'ять, після чого він робить повну копію. + - Перемикання контексту + - Як перемикання контексту ініціюється операційною системою та базовим обладнанням + - [ ] потоки в C++ (серія - 10 відео) [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) + - [ ] паралелізм у Python (відео): + - [ ] Короткий плейліст про потоки [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) + - [ ] Потоки Python [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM) + - [ ] Розуміння Python GIL (2010) [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s) + - [посилання](http://www.dabeaz.com/GIL) + - [ ] David Beazley - Паралелізм на Python з нуля: LIVE! - PyCon 2015 [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4) + - [ ] Доповідь Девіда Бізлі - Теми, що нас цікавлять (Python Asyncio) [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU) + - [ ] Mutex у Python [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY) + +- ### Тестування + - Охопити: + - як працює модульне тестування + - що таке макетні об'єкти + - що таке інтеграційне тестування + - що таке впровадження залежностей + - [ ] Гнучке тестування програмного забезпечення з Джеймсом Бахом (відео) [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] Відкрита лекція Джеймса Баха про тестування програмного забезпечення (відео) [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] Стів Фрімєн - Розробка, керована тестами (це не те, що ми мали на увазі) (відео) [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706) + - слайди [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) + - [ ] Впровадження залежностей: + - [ ] відео [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ) + - [ ] Дао Тестування [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) + - [ ] Як писати тести [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) - ### Scheduling - in an OS, how it works From 5ee4390480e10bcace191707b6d1737bb5b95ceb Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Sun, 9 Jun 2024 23:34:03 +0400 Subject: [PATCH 843/857] update ukrainian translation up to ## Final Review --- translations/README-uk.md | 474 +++++++++++++++++++------------------- 1 file changed, 233 insertions(+), 241 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 32320f72e9..fe5db2181a 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -141,14 +141,14 @@ Microsoft. - [Як комп'ютер виконує програму](#як-комп'ютер-виконує-програму) - [Кеші](#Кеші) - [Процеси та потоки](#процеси-та-потоки) - - [Тестування](#testing) - - [Пошук та маніпуляції з рядками](#string-searching--manipulations) - - [Спроби](#tries) - - [Числа з рухомою комою](#floating-point-numbers) - - [Юнікод](#unicode) - - [Ендіанність](#endianness) - - [Нетворкінг (мережі)](#networking) -- [Фінальний огляд](#final-review) + - [Тестування](#Тестування) + - [Пошук та маніпуляції з рядками](#Пошук-та-маніпуляції-з-рядками) + - [Префіксні дерева](#Префіксні-дерева) + - [Числа з рухомою комою](#Числа-з-рухомою-комою) + - [Юнікод](#Юнікод) + - [Ендіанність (Порядок байтів)](#ендіанність-порядок-байтів) + - [Робота з мережами](#Робота-з-мережами) +- [Фінальний огляд](#Фінальний-огляд) ### Отримання роботи @@ -391,8 +391,6 @@ Microsoft. - Елементи співбесід з програмування (версія на Java) [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Супутній проект - заглушки методів та тестові кейси для кожної проблеми в книзі](https://github.com/gardncl/elements-of-programming-interviews) - - ## Не робіть моїх помилок Цей список зростав протягом багатьох місяців, і так, він трохи вийшов з-під контролю. @@ -1133,75 +1131,231 @@ Microsoft. - [ ] Дао Тестування [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html) - [ ] Як писати тести [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html) -- ### Scheduling - - in an OS, how it works - - can be gleaned from Operating System videos - -- ### Implement system routines - - understand what lies beneath the programming APIs you use - - can you implement them? - -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) - - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) - - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) - - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) - - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) - - If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - -- ### Tries - - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits - to track the path. - - I read through code, but will not implement. - - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) - - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) - - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) - - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - -- ### Floating Point Numbers - - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) - -- ### Unicode - - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) - -- ### Endianness - - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - - Very technical talk for kernel devs. Don't worry if most is over your head. - - The first half is enough. - -- ### Networking - - **if you have networking experience or want to be a systems engineer, expect questions** - - otherwise, this is just good to know - - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) - - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) - - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) +- ### Пошук та маніпуляції з рядками + - [ ] Седжвік - Масиви суфіксів (відео) [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) + - [ ] Седжвік - Пошук у підрядках (відео) [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] 1. Вступ до пошуку підрядків [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) + - [ ] 2. Пошук у підрядках методом грубої сили [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) + - [ ] 3. Кнут-Морріс Пратт [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] 4. Бойєра-Мура [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) + - [ ] 5. Рабін-Карп [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) + - [ ] Шаблон пошуку в тексті (відео) [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) + + Якщо вам потрібна додаткова інформація з цієї теми, зверніться до розділу "Співставлення рядків" у [Додаткова інформація з деяких тем](#additional-detail-on-some-subjects). + +- ### Префіксні дерева + - Зверніть увагу, що існують різні типи спроб. Деякі з них мають префікси, деякі ні, а деякі використовують рядок замість бітів + для відстеження шляху. + - Переглядаю код, але не буду реалізовувати. + - [ ] Седжвік - Префіксні дерева (3 відео) [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] 1. Префіксні дерева R Way [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] 2. Префіксні дерева тернарного пошуку [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) + - [ ] 3. Символьні операції [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) + - [ ] Примітки про структури даних та методи програмування [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) + - [ ] Відео короткого курсу: + - [ ] Вступ до префіксних дерев (відео) [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) + - [ ] Ефективність префіксних дерев (відео) [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) + - [ ] Реалізація префіксного дерева (відео) [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] Префіксне дерево: занедбана структура даних [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) + - [ ] TopCoder - Використання префіксних дерев [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) + - [ ] Стенфордська лекція (реальний приклад використання) (відео) [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] MIT, Просунуті структури даних, Рядки (може стати досить незрозумілим приблизно на півдорозі) [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + +- ### Числа з рухомою комою + - [ ] просте 8-бітне: Представлення чисел з рухомою комою - 1 (відео - є помилка в обчисленнях - дивись опис відео) [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) + +- ### Юнікод + - [ ] Абсолютний мінімум, який кожен розробник програмного забезпечення обов'язково повинен знати про юнікод та набори символів [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets](http://www.joelonsoftware.com/articles/Unicode.html) + - [ ] Що обов'язково потрібно знати кожному програмісту про кодування та набори символів для роботи з текстом [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) + +- ### Ендіанність (Порядок байтів) + - [ ] Старший та молодший порядок байтів [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) + - [ ] Старший порядок байтів vs Молодший порядок байтів [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] Старший та молодший порядок байтів у подробицях (відео) [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - Дуже технічна розмова для розробників ядра. Не хвилюйтеся, якщо більшість з них вам не під силу. + - Першої половини достатньо. + +- ### Робота з мережами + - **Якщо у вас є досвід роботи з мережами або ви хочете стати інженером з надійності або інженером з експлуатації, чекайте на запитання** + - В іншому випадку, це просто корисно знати + - [ ] Академія Хана [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) + - [ ] UDP і TCP: порівняння транспортних протоколів (відео) [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] Пояснення TCP/IP та моделі OSI (відео) [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] Передача пакетів через Інтернет. Підручник по роботі в мережі та TCP/IP. (відео) [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] HTTP (відео) [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] SSL та HTTPS (відео) [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] SSL/TLS (відео) [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] HTTP 2.0 (відео) [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] Серія відео (21 відео) [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] Демістифікація підмережі - частина 5 Нотація CIDR (відео) [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] Сокети: + - [ ] Java - Сокети - вступ (відео) [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] Програмування сокетів (відео) [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + +--- + +## Фінальний огляд + + У цьому розділі зібрані короткі відео, які ви можете переглянути досить швидко, щоб повторити більшість важливих понять. + Це дуже зручно, якщо ви часто хочете повторити матеріал. + +- [ ] Серія 2-3-хвилинних коротких тематичних відеороликів (23 відео) + - Відео [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Серія 2-5-хвилинних тематичних відеороликів - Майкл Самбол (48 відео): + - Відео [Videos](https://www.youtube.com/@MichaelSambol) + - Приклади коду [Code Examples](https://github.com/msambol/dsa) + +--- + +## Update Your Resume + +- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" +- ["This Is What A GOOD Resume Should Look Like" by Gayle McDowell (author of Cracking the Coding Interview)](https://www.careercup.com/resume), + - Note by the author: "This is for a US-focused resume. CVs for India and other countries have different expectations, although many of the points will be the same." +- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) + - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume + +## Interview Process & General Interview Prep + +- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) +- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) +- [ ] How to Get a Job at the Big 4: + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) +- [ ] Cracking The Coding Interview Set 1: + - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) +- [ ] Cracking the Facebook Coding Interview: + - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) + - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) +- Prep Courses: + - [Python for Data Structures, Algorithms, and Interviews (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/): + - A Python-centric interview prep course that covers data structures, algorithms, mock interviews, and much more. + - [Intro to Data Structures and Algorithms using Python (Udacity free course)](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513): + - A free Python-centric data structures and algorithms course. + - [Data Structures and Algorithms Nanodegree! (Udacity paid Nanodegree)](https://www.udacity.com/course/data-structures-and-algorithms-nanodegree--nd256): + - Get hands-on practice with over 100 data structures and algorithm exercises and guidance from a dedicated mentor to help prepare you for interviews and on-the-job scenarios. + - [Grokking the Behavioral Interview (Educative free course)](https://www.educative.io/courses/grokking-the-behavioral-interview): + - Many times, it’s not your technical competency that holds you back from landing your dream job, it’s how you perform on the behavioral interview. + - [AlgoMonster (paid course with free content)](https://algo.monster/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github): + - The crash course for LeetCode. Covers all the patterns condensed from thousands of questions. + +Mock Interviews: +- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) - I used this and it helped me relax for the phone screen and on-site interview +- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - a peer-to-peer model to practice interviews +- [interviewing.io: Practice mock interview with senior engineers](https://interviewing.io) - anonymous algorithmic/systems design interviews with senior engineers from FAANG anonymously +- [Meetapro: Mock interviews with top FAANG interviewers](https://meetapro.com/?utm_source=ciu) - an Airbnb-style mock interview/coaching platform. +- [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers. +- [Codemia: Practice system design problems with AI or community solutions and feedback](https://codemia.io/?utm_source=ciu) - Practice system design problems via AI practice tool. Share your solution with the community to get human feedback as well. + +## Be thinking of for when the interview comes + +Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. +Have a story, not just data, about something you accomplished. + +- Why do you want this job? +- What's a tough problem you've solved? +- Biggest challenges faced? +- Best/worst designs seen? +- Ideas for improving an existing product. +- How do you work best, as an individual and as part of a team? +- Which of your skills or experiences would be assets in the role and why? +- What did you most enjoy at [job x / project y]? +- What was the biggest challenge you faced at [job x / project y]? +- What was the hardest bug you faced at [job x / project y]? +- What did you learn at [job x / project y]? +- What would you have done better at [job x / project y]? + +## Have questions for the interviewer + +Some of mine (I already may know the answers, but want their opinion or team perspective): + +- How large is your team? +- What does your dev cycle look like? Do you do waterfall/sprints/agile? +- Are rushes to deadlines common? Or is there flexibility? +- How are decisions made in your team? +- How many meetings do you have per week? +- Do you feel your work environment helps you concentrate? +- What are you working on? +- What do you like about it? +- What is the work life like? +- How is the work/life balance? + +## Once You've Got The Job + +Congratulations! + +Keep learning. + +You're never really done. + +--- + + ***************************************************************************************************** + ***************************************************************************************************** + + Everything below this point is optional. It is NOT needed for an entry-level interview. + However, by studying these, you'll get greater exposure to more CS concepts and will be better prepared for + any software engineering job. You'll be a much more well-rounded software engineer. + + ***************************************************************************************************** + ***************************************************************************************************** + +--- + +## Additional Books + + These are here so you can dive into a topic you find interesting. + +- [The Unix Programming Environment](https://www.amazon.com/dp/013937681X) + - An oldie but a goodie +- [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) + - A modern option +- [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) +- [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) + - A gentle introduction to design patterns +- [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) + - AKA the "Gang Of Four" book or GOF + - The canonical design patterns book +- [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) + - As a review and problem-recognition + - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview + - This book has 2 parts: + - Class textbook on data structures and algorithms + - Pros: + - Is a good review as any algorithms textbook would be + - Nice stories from his experiences solving problems in industry and academia + - Code examples in C + - Cons: + - Can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects + - Chapters 7, 8, and 9 can be painful to try to follow, as some items are not explained well or require more brain than I have + - Don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material + - Algorithm catalog: + - This is the real reason you buy this book. + - This book is better as an algorithm reference, and not something you read cover to cover. + - Can rent it on Kindle + - Answers: + - [Solutions](https://web.archive.org/web/20150404194210/http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) + - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) +- [Algorithm](http://jeffe.cs.illinois.edu/teaching/algorithms/) (Jeff Erickson) +- [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) + - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief + - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like + - These chapters are worth the read to give you a nice foundation: + - Chapter 2 - Numeric Representation + - Chapter 3 - Binary Arithmetic and Bit Operations + - Chapter 4 - Floating-Point Representation + - Chapter 5 - Character Representation + - Chapter 6 - Memory Organization and Access + - Chapter 7 - Composite Data Types and Memory Objects + - Chapter 9 - CPU Architecture + - Chapter 10 - Instruction Set Architecture + - Chapter 11 - Memory Architecture and Organization +- [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen/dp/026204630X) + - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently + - AKA CLR, sometimes CLRS, because Stein was late to the game +- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) + - For a richer, more up-to-date (2017), but longer treatment ## System Design, Scalability, Data Handling - **You can expect system design questions if you have 4+ years of experience.** @@ -1327,168 +1481,6 @@ Microsoft. - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/) ---- - -## Final Review - - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. - It's nice if you want a refresher often. - -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (48 videos): - - [Videos](https://www.youtube.com/@MichaelSambol) - - [Code Examples](https://github.com/msambol/dsa) - ---- - -## Coding Question Practice - -Now that you know all the computer science topics above, it's time to practice answering coding problems. - -**Coding question practice is not about memorizing answers to programming problems.** - -Why you need to practice doing programming problems: -- problem recognition, and where the right data structures and algorithms fit in -- gathering requirements for the problem -- talking your way through the problem like you will in the interview -- coding on a whiteboard or paper, not a computer -- coming up with time and space complexity for 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/) - -No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, 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 for scale. If you use a pen, you'll wish you could erase. Gets messy quick. - -![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg) - -Supplemental: - -- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) -- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) -- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) - -**Read and Do Programming Problems (in this order):** - -- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) - - answers in C, C++ and Java -- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - - answers in Java - -See [Book List above](#book-list) - -## Coding exercises/challenges - -Once you've learned your brains out, put those brains to work. -Take coding challenges every day, as many as you can. - -- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) -- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) - -Coding Interview Question Videos: -- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) -- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) - -Challenge sites: -- [LeetCode](https://leetcode.com/) -- [TopCoder](https://www.topcoder.com/) -- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) -- [Codewars](http://www.codewars.com) -- [HackerRank](https://www.hackerrank.com/) -- [Codility](https://codility.com/programmers/) -- [InterviewCake](https://www.interviewcake.com/) -- [Geeks for Geeks](http://www.geeksforgeeks.org/) -- [InterviewBit](https://www.interviewbit.com) -- [Sphere Online Judge (spoj)](http://www.spoj.com/) - -Mock Interviews: -- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/#!/) -- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - -## Once you're closer to the interview - -- [ ] Cracking The Coding Interview Set 2 (videos): - - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) - - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) - - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) - -## Your Resume - -- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed - - -## Be thinking of for when the interview comes - -Think of about 20 interview questions you'll get, along with the lines of the items below. Have 2-3 answers for each. -Have a story, not just data, about something you accomplished. - -- Why do you want this job? -- What's a tough problem you've solved? -- Biggest challenges faced? -- Best/worst designs seen? -- Ideas for improving an existing product. -- How do you work best, as an individual and as part of a team? -- Which of your skills or experiences would be assets in the role and why? -- What did you most enjoy at [job x / project y]? -- What was the biggest challenge you faced at [job x / project y]? -- What was the hardest bug you faced at [job x / project y]? -- What did you learn at [job x / project y]? -- What would you have done better at [job x / project y]? - -## Have questions for the interviewer - - Some of mine (I already may know answer to but want their opinion or team perspective): - -- How large is your team? -- What does your dev cycle look like? Do you do waterfall/sprints/agile? -- Are rushes to deadlines common? Or is there flexibility? -- How are decisions made in your team? -- How many meetings do you have per week? -- Do you feel your work environment helps you concentrate? -- What are you working on? -- What do you like about it? -- What is the work life like? - -## Once You've Got The Job - -Congratulations! - -Keep learning. - -You're never really done. - ---- - - ***************************************************************************************************** - ***************************************************************************************************** - - Everything below this point is optional. - By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for - any software engineering job. You'll be a much more well-rounded software engineer. - - ***************************************************************************************************** - ***************************************************************************************************** - ---- - -## Additional Books - -- [ ] [The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info) - - an oldie but a goodie -- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/) - - a modern option -- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated) -- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/) - - a gentle introduction to design patterns -- [ ] [Design Patterns: Elements of Reusable Object-Oriente​d Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) - - aka the "Gang Of Four" book, or GOF - - the canonical design patterns book -- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) - ## Additional Learning These topics will likely not come up in an interview, but I added them to help you become a well-rounded From 26bde0ca4b412492ef4697443fa2426d06b7a54b Mon Sep 17 00:00:00 2001 From: Ronny Pacheco Date: Wed, 12 Jun 2024 01:34:47 -0400 Subject: [PATCH 844/857] Typo on "translations" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b7f93c0b9f..5ca71098f6 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ - [Português Brasileiro](translations/README-ptbr.md) - [Russian](translations/README-ru.md) - [Tiếng Việt - Vietnamese](translations/README-vi.md) -- [Urdu - اردو](tanslations/README-ur.md) +- [Urdu - اردو](translations/README-ur.md) - [Uzbek](translations/README-uz.md) - [বাংলা - Bangla](translations/README-bn.md) - [ខ្មែរ - Khmer](translations/README-kh.md) From ed8ef705ce4318d8d244c676716471f33ba58a64 Mon Sep 17 00:00:00 2001 From: zerone0x Date: Thu, 20 Jun 2024 14:24:03 +0800 Subject: [PATCH 845/857] Add Binary Heaps MIT into Heap Part --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5ca71098f6..b16d699beb 100644 --- a/README.md +++ b/README.md @@ -802,6 +802,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [MIT 6.006 Introduction to Algorithms:Binary Heaps](https://www.youtube.com/watch?v=Xnpo1atN-Iw&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=12) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) From b4be60c3e737e7cbeb438e9c9f4ccde523996cbb Mon Sep 17 00:00:00 2001 From: zerone0x Date: Thu, 20 Jun 2024 14:28:24 +0800 Subject: [PATCH 846/857] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b16d699beb..0d5f6010f2 100644 --- a/README.md +++ b/README.md @@ -802,7 +802,7 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [MIT 6.006 Introduction to Algorithms:Binary Heaps](https://www.youtube.com/watch?v=Xnpo1atN-Iw&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=12) + - [ ] [MIT 6.006 Introduction to Algorithms: Binary Heaps](https://www.youtube.com/watch?v=Xnpo1atN-Iw&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=12) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) - [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6) From 43d0746973d849b2652611a3a30007c845b241e8 Mon Sep 17 00:00:00 2001 From: zerone0x Date: Fri, 21 Jun 2024 17:00:19 +0800 Subject: [PATCH 847/857] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0d5f6010f2..135102c949 100644 --- a/README.md +++ b/README.md @@ -801,7 +801,6 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - [ ] [Building a heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) - - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [MIT 6.006 Introduction to Algorithms: Binary Heaps](https://www.youtube.com/watch?v=Xnpo1atN-Iw&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY&index=12) - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) From 782553adcbfddb5305baa10964125eca4e7473d2 Mon Sep 17 00:00:00 2001 From: John Washam Date: Wed, 31 Jul 2024 17:21:55 -0700 Subject: [PATCH 848/857] Update links_checker.yml Decreased concurrency --- .github/workflows/links_checker.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index 4d582c0740..f796ee6cb3 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -28,12 +28,13 @@ jobs: fail: false ## Allow pages replying with 200 (Ok), 204 (No Content), ## 206 (Partial Content) in at most 20 seconds with HTML content. + ## max-concurrency was 20, getting network errors args: >- --verbose --accept 200,204,206 --headers "accept=text/html" --timeout 20 - --max-concurrency 10 + --max-concurrency 3 --no-progress README.md env: From 8d572ad4c7e316b9c9a9daa6a65d016fb0f27172 Mon Sep 17 00:00:00 2001 From: Sofwan Aldi Rikhaldi <156644449+sofwanaldirikhaldi@users.noreply.github.com> Date: Thu, 15 Aug 2024 14:08:05 +0700 Subject: [PATCH 849/857] Add back to top --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/README.md b/README.md index 135102c949..15901b768c 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,8 @@ thousands of associative arrays, but I never created data structures from scratc It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time. +**[⬆ back to top](#table-of-contents)** + ## How to use it Everything below is an outline, and you should tackle the items in order from top to bottom. @@ -262,6 +264,8 @@ Create a new branch so you can check items like this, just put an x in the brack git push # just pushes to your fork ``` +**[⬆ back to top](#table-of-contents)** + ## Don't feel you aren't smart enough - Successful software engineers are smart, but many have an insecurity that they aren't smart enough. @@ -269,6 +273,8 @@ Create a new branch so you can check items like this, just put an x in the brack - [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ) - [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY) +**[⬆ back to top](#table-of-contents)** + ## A Note About Video Resources Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs. @@ -278,6 +284,8 @@ It would be great to replace the online course resources with free and always-av such as YouTube videos (preferably university lectures), so that you people can study these anytime, not just when a specific online course is in session. +**[⬆ back to top](#table-of-contents)** + ## Choose a Programming Language You'll need to choose a programming language for the coding interviews you do, @@ -332,6 +340,8 @@ Read more about choices: [See language-specific resources here](programming-language-resources.md) +**[⬆ back to top](#table-of-contents)** + ## Books for Data Structures and Algorithms This book will form your foundation for computer science. @@ -373,6 +383,8 @@ Your choice: - [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/) - [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/) +**[⬆ back to top](#table-of-contents)** + ## Interview Prep Books You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, @@ -396,6 +408,8 @@ Choose one: - [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) +**[⬆ back to top](#table-of-contents)** + ## Don't Make My Mistakes This list grew over many months, and yes, it got out of hand. @@ -467,6 +481,8 @@ There are many resources for this, listed below. Keep going. 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. +**[⬆ back to top](#table-of-contents)** + ## What you won't see covered These are prevalent technologies but not part of this study plan: @@ -475,6 +491,8 @@ These are prevalent technologies but not part of this study plan: - HTML, CSS, and other front-end technologies - SQL +**[⬆ back to top](#table-of-contents)** + ## 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. @@ -489,6 +507,8 @@ You can see my code here: 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. +**[⬆ back to top](#table-of-contents)** + ## Coding Question Practice Why is this here? I'm not ready to interview. @@ -517,6 +537,8 @@ Gets messy quickly. **I use a pencil and eraser.** **Coding question practice is not about memorizing answers to programming problems.** +**[⬆ back to top](#table-of-contents)** + ## Coding Problems Don't forget your key coding interview books [here](#interview-prep-books). @@ -548,6 +570,8 @@ Challenge/Practice sites: - [Project Euler](https://projecteuler.net/) - very math-focused, and not really suited for coding interviews +**[⬆ back to top](#table-of-contents)** + ## Let's Get Started Alright, enough talk, let's learn! @@ -577,6 +601,8 @@ 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 if you can identify the runtime complexity of different algorithms. It's a super review and test. +**[⬆ back to top](#table-of-contents)** + ## Data Structures - ### Arrays @@ -699,6 +725,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - get(key) - remove(key) +**[⬆ back to top](#table-of-contents)** + ## More Knowledge - ### Binary search @@ -739,6 +767,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] Absolute value: - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) +**[⬆ back to top](#table-of-contents)** + ## Trees - ### Trees - Intro @@ -817,6 +847,8 @@ if you can identify the runtime complexity of different algorithms. It's a super - [ ] heapify - create a heap from an array of elements, needed for heap_sort - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in place using a max heap or min heap +**[⬆ back to top](#table-of-contents)** + ## Sorting - [ ] Notes: @@ -901,6 +933,8 @@ if you can identify the runtime complexity of different algorithms. It's a super As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). If you need more detail on this subject, see the "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) +**[⬆ back to top](#table-of-contents)** + ## Graphs Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting. @@ -962,6 +996,8 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] list strongly connected components - [ ] check for bipartite graph +**[⬆ back to top](#table-of-contents)** + ## Even More Knowledge - ### Recursion @@ -1193,6 +1229,8 @@ Graphs can be used to represent many problems in computer science, so this secti --- +**[⬆ back to top](#table-of-contents)** + ## Final Review This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. @@ -1208,6 +1246,8 @@ Graphs can be used to represent many problems in computer science, so this secti --- +**[⬆ back to top](#table-of-contents)** + ## Update Your Resume - See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed" @@ -1216,6 +1256,8 @@ Graphs can be used to represent many problems in computer science, so this secti - ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide) - Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume +**[⬆ back to top](#table-of-contents)** + ## Interview Process & General Interview Prep - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) @@ -1249,6 +1291,8 @@ Mock Interviews: - [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers. - [Codemia: Practice system design problems with AI or community solutions and feedback](https://codemia.io/?utm_source=ciu) - Practice system design problems via AI practice tool. Share your solution with the community to get human feedback as well. +**[⬆ back to top](#table-of-contents)** + ## Be thinking of for when the interview comes Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each. @@ -1267,6 +1311,8 @@ Have a story, not just data, about something you accomplished. - What did you learn at [job x / project y]? - What would you have done better at [job x / project y]? +**[⬆ back to top](#table-of-contents)** + ## Have questions for the interviewer Some of mine (I already may know the answers, but want their opinion or team perspective): @@ -1282,6 +1328,8 @@ Some of mine (I already may know the answers, but want their opinion or team per - What is the work life like? - How is the work/life balance? +**[⬆ back to top](#table-of-contents)** + ## Once You've Got The Job Congratulations! @@ -1304,6 +1352,8 @@ You're never really done. --- +**[⬆ back to top](#table-of-contents)** + ## Additional Books These are here so you can dive into a topic you find interesting. @@ -1358,6 +1408,8 @@ You're never really done. - [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055) - For a richer, more up-to-date (2017), but longer treatment +**[⬆ back to top](#table-of-contents)** + ## System Design, Scalability, Data Handling **You can expect system design questions if you have 4+ years of experience.** @@ -1470,6 +1522,8 @@ You're never really done. - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/) - [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/) +**[⬆ back to top](#table-of-contents)** + ## Additional Learning I added them to help you become a well-rounded software engineer and to be aware of certain @@ -1778,6 +1832,8 @@ You're never really done. --- +**[⬆ back to top](#table-of-contents)** + ## Additional Detail on Some Subjects I added these to reinforce some ideas already presented above, but didn't want to include them @@ -1864,6 +1920,8 @@ You're never really done. - NAND To Tetris: [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer) +**[⬆ back to top](#table-of-contents)** + ## Video Series Sit back and enjoy. @@ -1919,15 +1977,20 @@ Sit back and enjoy. - [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +**[⬆ back to top](#table-of-contents)** + ## Computer Science Courses - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) - [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +**[⬆ back to top](#table-of-contents)** + ## Algorithms implementation - [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code) +**[⬆ back to top](#table-of-contents)** ## Papers @@ -1954,6 +2017,8 @@ Sit back and enjoy. - [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf) - More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper) +**[⬆ back to top](#table-of-contents)** + ## LICENSE [CC-BY-SA-4.0](./LICENSE.txt) From 69ecb92da510b33178d5c002ddc9c18552ec4e12 Mon Sep 17 00:00:00 2001 From: HUI XU Date: Thu, 29 Aug 2024 22:58:20 -0700 Subject: [PATCH 850/857] Fix translation errors in README-cn.md file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrected two translation errors in README-cn.md file: - Fixed translation of ''Do 2 or 3 questions regarding linked lists'' from ''关于链表的问题,请提出2或3个'' to ''请先做2或3个关于链表的问题''. - Fixed translation of ''but how you apply the knowledge'' from ''而是因为你如何应用这些知识'' to ''而是因为你知道如何应用这些知识''. This correction improves clarity and better aligns with the intended meaning of the original text. --- translations/README-cn.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/README-cn.md b/translations/README-cn.md index ed67588f09..d40f1832b4 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -407,14 +407,14 @@ 一旦你学完一个主题,并且对它有了一定的掌握,比如 **链表(linked lists)**: 1. 打开其中一本[编程面试书籍](#interview-prep-books)(或下方列出的编程问题网站之一)。 -1. 关于链表的问题,请提出2或3个。 +1. 请先做2或3个关于链表的问题。 1. 继续学习下一个主题。 1. 稍后,回来再做另外2或3个链表问题。 1. 使用这种方法来学习每个新主题。 **在学习这些内容的过程中不断做问题,而不是之后。** -你被雇佣的不是因为你的知识,而是因为你如何应用这些知识。 +你被雇佣的不是因为你的知识,而是因为你知道如何应用这些知识。 下面列出了许多资源供你参考。继续前进吧。 From a6a4564de514afaecee1187219f26f765f9f893a Mon Sep 17 00:00:00 2001 From: John Washam Date: Fri, 13 Sep 2024 13:40:15 -0700 Subject: [PATCH 851/857] Removes sponsorship file. --- .github/FUNDING.yml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 1cf53a951a..0000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: jwasham From 45e2f51b843ea59fc5340b397d6ff12a381d0ac0 Mon Sep 17 00:00:00 2001 From: Winnd11 Date: Tue, 8 Oct 2024 11:05:35 -0300 Subject: [PATCH 852/857] Fix PT-BR translations errors --- translations/README-ptbr.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index c1ebca0c38..ee06f6f49d 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -846,8 +846,8 @@ Grafos podem ser usados para representar muitos problemas na Ciência da Computa - matriz de adjacência - lista de adjacência - mapa de adjacência - - Famialirize-se com cada representação e seus prós e contras. - - Busca em Largura (BFS) e Busca em Profundidade (DFS) - saiba a complexidade computacional deles, seus perde-e-ganhas (tradeoffs), e como implementar eles em código real. + - Familiarize-se com cada representação e seus prós e contras. + - Busca em Largura (BFS) e Busca em Profundidade (DFS) - saiba a complexidade computacional deles, dos seus prós e contras (tradeoffs), e como implementar eles em código real. - Quando for perguntado uma questão, busque por uma solução baseada em grafos primeiro, depois se não houver nenhuma, siga em frente. - [ ] Aulas do Skiena - ótima introdução: @@ -887,7 +887,7 @@ Grafos podem ser usados para representar muitos problemas na Ciência da Computa - [ ] Busca em Largura (BFS) com matriz de adjacência - [ ] menor caminho de fonte-única (Dijkstra) - [ ] árvore de extensão mínima - - Algoritmos baseados em busca em profundidade (DFS) (ver vídeos da Aduni acima): + - Algoritmos baseados em busca em profundidade (DFS) (veja os vídeos do Aduni acima): - [ ] checar por ciclos (necessário para ordenação topológica, já que nós iremos checar por ciclos antes de começar) - [ ] ordenação topológica - [ ] contar componentes conectados em um grafo @@ -1014,7 +1014,7 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) (Complexidade: Algorítmos de Parâmetro-Fixado - vídeo) - Peter Norvig debate soluções tão boas quanto possível para o problema do vendedor viajante: - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb) (Caderno de Júpiter) - - Páginas 1048 - 1140 em CLRS (livro Introdução à Algoritmos) se você o tive.r + - Páginas 1048 - 1140 em CLRS (livro Introdução à Algoritmos) se você o tiver - ### Caches - [ ] Cache LRU: @@ -1045,13 +1045,12 @@ Você ganhará mais prática com grafos no livro do Skiena (veja a seção de li - atividade, interrupções e troca de contexto de CPU - Construtos de simultaneidade modernos com processadores de múltiplos núcleos. - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) (Paginação, segmentação e memória virtual - vídeo) - - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) (Interruoções - vídeo) - - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) (Agendamento - vídeo) - - Necessidades de recurso de processos (memória: código, armazenamento estático, memória estática (stack), memória dinâmica (heap), e também descritores de arquivo, i/o + - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) + - Necessidades de recurso de processos (memória: código, armazenamento estático, memória estática (stack), memória dinâmica (heap), e também descritores de arquivo, i/o) - Necessidades de recurso de threads (o mesmo que acima (menos stack) com outras threads no mesmo processo, mas cada um tem seu próprio pc, contador de stack, registros, e stack) - Bifurcação nada mais é que COW (copy-on-write) (somente leitura) até que o novo processo escreva na memória, depois ela faz uma cópia completa. - Troca de contexto - - Como a troca de contexto é iniciada pelo sistema operacional e componentes de hardware subjacentes + - [Como a troca de contexto é iniciada pelo sistema operacional e componentes de hardware subjacentes](https://www.javatpoint.com/what-is-the-context-switching-in-the-operating-system) - [ ] [threads em C++ (série- 10 vídeos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] simultaneidade (ou concorrência) em Python (vídeos): - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1) (Pequena série sobre threads) From 2d7b049f48bc88a7b7fc6668f9d17b249fe971ab Mon Sep 17 00:00:00 2001 From: Lei Shi Date: Wed, 16 Oct 2024 14:32:07 +0800 Subject: [PATCH 853/857] Add free linux commands tutorials and DevOps section --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 15901b768c..dda26fde56 100644 --- a/README.md +++ b/README.md @@ -1557,7 +1557,7 @@ You're never really done. - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) -- ### Unix command line tools +- ### Unix/Linux command line tools - I filled in the list below from good tools. - bash - cat @@ -1570,6 +1570,10 @@ You're never really done. - uniq - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) + - [Essential Linux Commands Tutorial](https://labex.io/tutorials/practice-linux-commands-hands-on-labs-398420) + +- ### DevOps + - [DevOps Roadmap](https://roadmap.sh/devops) - ### Information theory (videos) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) From 39d8165fb1be2c3f2d5d038ec156abac7d76a521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=E2=99=A1M=2E=2E=2E=E2=88=9E?= <18311071+ru44@users.noreply.github.com> Date: Tue, 22 Oct 2024 14:21:59 +0300 Subject: [PATCH 854/857] Update README-ar.md fix some Arabic typos --- translations/README-ar.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/translations/README-ar.md b/translations/README-ar.md index 14d7b3e293..2050650dfa 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -1,19 +1,18 @@ -# الإعداد لمقابلة البرمجة +# جامعة المقابلات البرمجية
-> لقد قمت بأنشاء هذا في الأصل كلائحة صغيرة تحتوي على مواضيع دراسية الغرض من دراستها ان أصبح مهندس برامجيات، -> لكنها توسعت الى قائمة كبيرة التي تراها اليوم. بعد ان قمتُ بدراسة لائحة المواضيع هذه وحسب الخطة، [حصلت على عمل كمهندس برامجيات في شركة امازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) +> لقد قمت بإنشاء هذا المشروع في الأصل كلائحة صغيرة تحتوي على مواضيع دراسية الغرض من دراستها أن أصبح مهندس برمجيات، +> لكنها توسعت إلى قائمة كبيرة كالتي تراها اليوم. بعد أن قمتُ بدراسة هذه الخطة الدراسية [حصلت على عمل كمهندس برمجيات في شركة أمازون](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu) >! على الأغلب لن تحتاج إلى ان تدرس بالقدر الذي درسته أنا. لكن على كل حال كل ما تحتاج إليه موجود هنا. > ->درستُ لمدة ٨-١٢ ساعة في اليوم, لعدة أشهر. هذه هي قصتي: [لماذا كرستُ كل وقتي لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) +>درستُ لمدة ٨-١٢ ساعة خلال اليوم الواحد, لعدة أشهر. هذه هي قصتي: [لماذا كرستُ كل وقتي لمدة ثمانية أشهر من أجل مقابلة لدا قوقل](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13) > -> **ملاحظة:** لن تحتاج للدراسة بقدر ما فعلت انا، لقد اهدرت المزيد من الوقت والجهد على مواضيع لم اكن بحاجة الى معرفتها، مزيد حول ذلك ادناه، سوف اساعدك بالوصول الى هناك دون اضاعة وقتك الثمين. +> **ملاحظة:** لن تحتاج للدراسة بقدر ما فعلت أنا، لقد اهدرت المزيد من الوقت والجهد على مواضيع لم أكن بحاجة إلى معرفتها، مزيد حول ذلك أدناه، سوف أساعدك بالوصول إلى هناك دون إضاعة وقتك الثمين. > -> المواضيع المدرجة في هذه اللائحة ستجهزك جيدا لاجراء مقابلة تقنية مع اي شركة برمجية تقريبا، حتى الشركات العملاقة: أمازون، فيسبوك، قوقل، وميكروسوفت. -> ->بالتوفيق. +> المواضيع المدرجة في هذه اللائحة ستجهزك جيدا لإجراء مقابلة تقنية مع أي شركة برمجية تقريبا، حتى الشركات العملاقة: أمازون، فيسبوك، قوقل، ومايكروسوفت. > +>حظاً موفقاً
@@ -67,19 +66,19 @@
-## ما هذا! +## ما هذا؟

Coding at the whiteboard - from HBO's Silicon Valley

-هذه خطتي الدراسية التي تستغرق عدة اشهر من اجل ان اصبح مهندس برامجيات في شركة عملاقة. +هذه خطتي الدراسية التي تستغرق عدة أشهر من أجل أن أصبح مهندس برامجيات في شركة عملاقة. **المتطلبات:** * خبرة قليلة في البرمجة (المتغيرات، التكرارات، الدوال، الخ). * صبر. * وقت. -ملاحظة: هذه الخطة الدراسية هي من اجل ان تصبح مهندس برامجيات وليس من اجل ان تصبح مطور تطبيقات للويب. كبرى الشركات التقنية مثل كوكل، امازون، مايكروسوفت، فيسبوك ينظرون الى مهندس البرامجيات بنظرة مختلفة عن مطور البرامجيات/الويب، على سبيل المثال شركة امازون لديها مهندس الواجهات (Frontend Engineers) ولديها مهندس تطوير برامجيات (Software Development Engineers) ولكل منها دور مختلف والمقابلة التقنية لكل منها مختلفة تماما، لكن بصورة عام تتطلب هذه الشركات معرفة بعلوم الحاسوب للمتقدمين لشغل ادوار تخص تطوير البرامجيات او هندسة البرامجيات. +ملاحظة: هذه الخطة الدراسية هي من أجل أن تصبح مهندس برامجيات وليس من أجل أن تصبح مطور تطبيقات للويب. كبرى الشركات التقنية مثل قوقل، أمازون، مايكروسوفت، فيسبوك ينظرون إلى مهندس البرمجيات بنظرة مختلفة عن مطور البرمجيات/الويب، على سبيل المثال شركة أمازون لديها مهندس الواجهات (Frontend Engineers) ولديها مهندس تطوير برامجيات (Software Development Engineers) ولكل منها دور مختلف والمقابلة التقنية لكل منها مختلفة تماما، لكن بصورة عامة تتطلب هذه الشركات معرفة بعلوم الحاسب للمتقدمين لشغل أدوار تخص تطوير البرمجيات أو هندسة البرمجيات.
@@ -207,7 +206,7 @@ ## لماذا استخدم هذه الخطة الدراسية؟ -أقوم بمتابعة هذه الخطة لتحضير إلى المقابلة الشخصية بجوجل. لقد قمت بناء مواقع ويب، وتقديم خدمات ذات صلة، وبناء شركات ناشئة منذ 1997. لدي درجة علمية في الاقتصاد، وليس في علوم الحاسب. أنا شخص ناجح في مجال عملي، ولكنني أريد أن أعمل بجوجل. أريد أن أعمل على أنظمة كبيرة والحصول على فهم كبير في أنظمة الحاسوب، كفاءة الخوارزميات، كقاءة الهياكل البيانية، اللغات الأقرب إلى الآلة وكيفية عملها. وإذ لم تعرف أين منها لن تعينك جوجل. +أقوم بمتابعة هذه الخطة لتحضير إلى المقابلة الشخصية بقوقل. لقد قمت بناء مواقع إلكترونية، وتقديم خدمات ذات صلة، وبناء شركات ناشئة منذ 1997. لدي درجة علمية في الاقتصاد، وليس في علوم الحاسب. أنا شخص ناجح في مجال عملي، ولكنني أريد أن أعمل بقوقل. أريد أن أعمل على أنظمة كبيرة والحصول على فهم كبير في أنظمة الحاسب، كفاءة الخوارزميات، كفاءة الهياكل البيانية، اللغات الأقرب إلى الآلة وكيفية عملها. وإذا لم تعرف أين منها لن تعينك قوقل. عندما بدأت هذا المشروع، لم أكن أعرف الإستاك "stack" من الهيب "heap"، ولم أكن أعرف المعامل الأعلى في قياس كفاءة الخوارزميات "Big-O"، ولا عن التري "tree"، أو عن زيارة الجراف "graph". إذا كان عليا أن أصنع برنامج عن الترتيب، سأخبرك أنه ليس على درجة عالية من الكقاءة. @@ -221,7 +220,7 @@ سأستخدم خاصية تعليم ماأنجز من الجيت هب "Github" لمتابعة التقدم. -**اصنع مسار جديد يمكن من خلاله أن تضع علامة [x]** +**أصنع مسار جديد يمكن من خلاله أن تضع علامة [x]** احصل على نسخة خاصة "fork" بك واتبع هذه الأوامر 1- Clone to your local repo ``` From 1cea0663056506b833c567a1a1ea47084707fbdf Mon Sep 17 00:00:00 2001 From: Shaun Gunawardane <65139543+shaungunaw@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:30:42 +1100 Subject: [PATCH 855/857] Update README.md Coding Interview Patterns is included as a recommended book to supplement learning. --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dda26fde56..633ca5cd1c 100644 --- a/README.md +++ b/README.md @@ -387,15 +387,20 @@ Your choice: ## Interview Prep Books -You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough, -but I bought more to give myself more practice. But I always do too much. +Here are some recommended books to supplement your learning. -I bought both of these. They gave me plenty of practice. + +- [Coding Interview Patterns: Nail Your Next Coding Interview](https://geni.us/q7svoz) (**Main recommendation**) + - An insider’s perspective on what interviewers are truly looking for and why. + - 101 real coding interview problems with detailed solutions. + - Intuitive explanations that guide you through each problem as if you were solving it in a live interview. + - 1000+ diagrams to illustrate key concepts and patterns. - [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - Answers in C++ and Java - This is a good warm-up for Cracking the Coding Interview - Not too difficult. Most problems may be easier than what you'll see in an interview (from what I've read) + - [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) - answers in Java From 6f9e1db97ec9a8d1ef1ef47c3046f797e6120447 Mon Sep 17 00:00:00 2001 From: Shaun Gunawardane <65139543+shaungunaw@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:35:29 +1100 Subject: [PATCH 856/857] Update README.md Updated Python book recommendation to Coding Interview Patterns. --- README.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 633ca5cd1c..6fdfddb548 100644 --- a/README.md +++ b/README.md @@ -348,19 +348,19 @@ This book will form your foundation for computer science. Just choose one, in a language that you will be comfortable with. You'll be doing a lot of reading and coding. +### Python + +- [Coding Interview Patterns: Nail Your Next Coding Interview](https://geni.us/q7svoz) (**Main Recommendation**) + - An insider’s perspective on what interviewers are truly looking for and why. + - 101 real coding interview problems with detailed solutions. + - Intuitive explanations that guide you through each problem as if you were solving it in a live interview. + - 1000+ diagrams to illustrate key concepts and patterns. + ### C - [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080) - Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms -### Python - -- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) - - by Goodrich, Tamassia, Goldwasser - - I loved this book. It covered everything and more. - - Pythonic code - - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ - ### Java Your choice: @@ -389,12 +389,7 @@ Your choice: Here are some recommended books to supplement your learning. - -- [Coding Interview Patterns: Nail Your Next Coding Interview](https://geni.us/q7svoz) (**Main recommendation**) - - An insider’s perspective on what interviewers are truly looking for and why. - - 101 real coding interview problems with detailed solutions. - - Intuitive explanations that guide you through each problem as if you were solving it in a live interview. - - 1000+ diagrams to illustrate key concepts and patterns. +- [Coding Interview Patterns: Nail Your Next Coding Interview](https://geni.us/q7svoz) - [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/) - Answers in C++ and Java From 717298bf219a30d7fb0671285c5f057b1bb74b27 Mon Sep 17 00:00:00 2001 From: Shaun Gunawardane <65139543+GoAheadShaun@users.noreply.github.com> Date: Fri, 6 Dec 2024 10:46:51 +1100 Subject: [PATCH 857/857] Removed the sponsorship option from all README files. --- README.md | 7 ------- translations/README-af.md | 7 ------- translations/README-ar.md | 6 ------ translations/README-bg.md | 7 ------- translations/README-bn.md | 7 ------- translations/README-cn.md | 7 ------- translations/README-de.md | 7 ------- translations/README-es.md | 7 ------- translations/README-fa.md | 7 ------- translations/README-fr.md | 7 ------- translations/README-he.md | 8 -------- translations/README-hi.md | 8 -------- translations/README-id.md | 7 ------- translations/README-it.md | 7 ------- translations/README-ja.md | 8 -------- translations/README-kh.md | 7 ------- translations/README-kk.md | 25 ------------------------- translations/README-ko.md | 7 ------- translations/README-mr.md | 7 ------- translations/README-nl.md | 25 +------------------------ translations/README-pl.md | 8 +------- translations/README-ptbr.md | 7 ------- translations/README-ru.md | 7 ------- translations/README-th.md | 8 +------- translations/README-tr.md | 7 ------- translations/README-tw.md | 7 ------- translations/README-uk.md | 7 ------- translations/README-ur.md | 7 ------- translations/README-uz.md | 7 ------- translations/README-vi.md | 7 ------- 30 files changed, 3 insertions(+), 247 deletions(-) diff --git a/README.md b/README.md index 6fdfddb548..95a0d31a93 100644 --- a/README.md +++ b/README.md @@ -54,13 +54,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## What is it? diff --git a/translations/README-af.md b/translations/README-af.md index 41d8f57fb0..f270da48c2 100644 --- a/translations/README-af.md +++ b/translations/README-af.md @@ -53,13 +53,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## Wat is dit? diff --git a/translations/README-ar.md b/translations/README-ar.md index 2050650dfa..059e10d47c 100644 --- a/translations/README-ar.md +++ b/translations/README-ar.md @@ -59,12 +59,6 @@
- ## ما هذا؟

diff --git a/translations/README-bg.md b/translations/README-bg.md index 0ac2b95a7d..8bdea1ebd3 100644 --- a/translations/README-bg.md +++ b/translations/README-bg.md @@ -49,13 +49,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) -

## Какво е това? diff --git a/translations/README-bn.md b/translations/README-bn.md index de98566ffb..0480213a1a 100644 --- a/translations/README-bn.md +++ b/translations/README-bn.md @@ -53,13 +53,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## এটি কি diff --git a/translations/README-cn.md b/translations/README-cn.md index d40f1832b4..26d1b0966f 100644 --- a/translations/README-cn.md +++ b/translations/README-cn.md @@ -9,13 +9,6 @@ > > **祝你好运!** - ## 这是? diff --git a/translations/README-de.md b/translations/README-de.md index d3479e6bb3..091454f2d8 100644 --- a/translations/README-de.md +++ b/translations/README-de.md @@ -51,13 +51,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## Worum es geht diff --git a/translations/README-es.md b/translations/README-es.md index d4a3600884..4780f5f54d 100644 --- a/translations/README-es.md +++ b/translations/README-es.md @@ -50,13 +50,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## ¿Qué es esto? diff --git a/translations/README-fa.md b/translations/README-fa.md index 2a4e5296db..d4373af1f3 100644 --- a/translations/README-fa.md +++ b/translations/README-fa.md @@ -53,13 +53,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## این چیه؟ diff --git a/translations/README-fr.md b/translations/README-fr.md index 964d90bab6..3de6f1d991 100644 --- a/translations/README-fr.md +++ b/translations/README-fr.md @@ -5,13 +5,6 @@ Traductions: - [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/coding-interview-university/issues/80) - मानक हिन्दी (in progress) [Issue #81](https://github.com/jwasham/coding-interview-university/issues/81) - ## C'est quoi? diff --git a/translations/README-he.md b/translations/README-he.md index 2b02e12859..73c5349d90 100644 --- a/translations/README-he.md +++ b/translations/README-he.md @@ -17,14 +17,6 @@

שיהיה המון בהצלחה!

- - חלק גדול מהתכנים לקוחים מהאתר המצויין של סטיב יגיי: המשרה הזו בגוגל? שלך! "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" diff --git a/translations/README-hi.md b/translations/README-hi.md index 7b19b2296c..9d43d92b90 100644 --- a/translations/README-hi.md +++ b/translations/README-hi.md @@ -55,14 +55,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## यह क्या है? diff --git a/translations/README-id.md b/translations/README-id.md index 5c480e3bce..7f35ebbb50 100644 --- a/translations/README-id.md +++ b/translations/README-id.md @@ -2,13 +2,6 @@ Versi asli: [Bahasa Inggris](../README.md) - ## Ringkasan apa ini? diff --git a/translations/README-it.md b/translations/README-it.md index d3c97f1e97..f2f587e15e 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -59,13 +59,6 @@ Traduzione in Italiano a Cura di [@volpoh](https://github.com/volpoh) - ## Che cos'e'? diff --git a/translations/README-ja.md b/translations/README-ja.md index 4b85e59a5f..0e2b7f08b9 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -34,14 +34,6 @@ - [タイ語](https://github.com/jwasham/coding-interview-university/issues/156) - [ギリシャ語](https://github.com/jwasham/coding-interview-university/issues/166) - - ## これは何? ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) diff --git a/translations/README-kh.md b/translations/README-kh.md index 23a2a16df0..c1d113a220 100644 --- a/translations/README-kh.md +++ b/translations/README-kh.md @@ -53,13 +53,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - --- diff --git a/translations/README-kk.md b/translations/README-kk.md index b857da2ae5..0deb91cb6a 100644 --- a/translations/README-kk.md +++ b/translations/README-kk.md @@ -91,31 +91,6 @@ - ## Бұл не? diff --git a/translations/README-ko.md b/translations/README-ko.md index 3329d429df..a4836edd36 100644 --- a/translations/README-ko.md +++ b/translations/README-ko.md @@ -51,13 +51,6 @@ - ## 이건 대체 뭐하는 건가요? diff --git a/translations/README-mr.md b/translations/README-mr.md index 567e08705a..a937e003aa 100644 --- a/translations/README-mr.md +++ b/translations/README-mr.md @@ -53,13 +53,6 @@ - [मराठी](https://github.com/jwasham/coding-interview-university/issues/1002) - ## हे काय आहे? diff --git a/translations/README-nl.md b/translations/README-nl.md index 5b07b61f7e..27f99cb454 100644 --- a/translations/README-nl.md +++ b/translations/README-nl.md @@ -54,30 +54,7 @@ - ## Wat is het? diff --git a/translations/README-pl.md b/translations/README-pl.md index 56e964f107..556f40fca6 100644 --- a/translations/README-pl.md +++ b/translations/README-pl.md @@ -49,13 +49,7 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - + ## Co to jest? To jest mój wielomiesięczny plan nauki od przejścia od programisty (samouka, bez dyplomu CS - informatyki) do inżyniera oprogramowania dla dużej firmy. diff --git a/translations/README-ptbr.md b/translations/README-ptbr.md index ee06f6f49d..b4c065d959 100644 --- a/translations/README-ptbr.md +++ b/translations/README-ptbr.md @@ -49,13 +49,6 @@ Traduções em progresso: - [עברית](https://github.com/jwasham/coding-interview-university/issues/82) - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## O que é isso? diff --git a/translations/README-ru.md b/translations/README-ru.md index 0b6f308c9d..06ab577b0f 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -2,13 +2,6 @@ Оригинальная версия: [Английский](../README.md) - ## Для кого это? diff --git a/translations/README-th.md b/translations/README-th.md index 32e4acea79..234399b8db 100644 --- a/translations/README-th.md +++ b/translations/README-th.md @@ -26,13 +26,7 @@ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140) - [Thai](https://github.com/jwasham/coding-interview-university/issues/156) - + ## นี่คืออะไร ? diff --git a/translations/README-tr.md b/translations/README-tr.md index a7dd4dd3e0..255b71f9b9 100644 --- a/translations/README-tr.md +++ b/translations/README-tr.md @@ -52,13 +52,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## Nedir? diff --git a/translations/README-tw.md b/translations/README-tw.md index 05c156f84a..4dc016f993 100644 --- a/translations/README-tw.md +++ b/translations/README-tw.md @@ -50,13 +50,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## What is it? diff --git a/translations/README-uk.md b/translations/README-uk.md index fe5db2181a..1807b4fd9d 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -59,13 +59,6 @@ Microsoft. - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## Що це? diff --git a/translations/README-ur.md b/translations/README-ur.md index a50f85c88f..7406bf52d5 100644 --- a/translations/README-ur.md +++ b/translations/README-ur.md @@ -50,13 +50,6 @@ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81) - ## یہ کیا ہے؟ diff --git a/translations/README-uz.md b/translations/README-uz.md index ed9e722d13..12097da14a 100644 --- a/translations/README-uz.md +++ b/translations/README-uz.md @@ -12,13 +12,6 @@ Asl versiyasi: [Inglizcha](../README.md) > > *Sizga omad tilayman!* - ## Bu nima uchun kerak? diff --git a/translations/README-vi.md b/translations/README-vi.md index 3e14a27829..9b26fe0408 100644 --- a/translations/README-vi.md +++ b/translations/README-vi.md @@ -37,13 +37,6 @@ Ghi chú riêng cho việc duy trì và cập nhật bản dịch tiếng Việt > > *Chúc may mắn!* - ## Giới thiệu